v2.8.2 — Session Cap Headroom + Silent-Failure Fix
@alphabeen 이 v2.8.1 출시 직후 PR #25 로 보고한 두 문제를 한 patch 에 묶는다. v2.8.1 의 startup brick 픽스 이후에도 runtime accumulation 시나리오 (X close 후 daemon 이 유지하는 detached 세션이 며칠에 걸쳐 누적) 에서는 hard cap 50 에 다시 도달했고, 더 나쁜 건 cap throw 가 renderer 의 Ctrl+T 핸들러에서 silent 하게 묻혀 단축키가 무반응처럼 보이던 결함이다. v2.8.1 사용자는 즉시 업그레이드 권장.
What's fixed
🟡 데몬 세션 hard cap 50 → 200 상향 (#25, by @alphabeen)
v2.8.0 의 세션 영속화 이후 cap 의 의미가 "한 세션 동안 최대 동시 PTY" → "lifetime 누적 detached PTY 총합" 으로 바뀐 결과, multi-workspace + 빈번한 split 사용자는 며칠 내 50 에 재도달. 50 자체는 commit 989dd8a 의 보안 하드닝 단계에서 정한 DoS 휴리스틱이었고 200 도 같은 카테고리 안 (둘 다 fork bomb 막기엔 헐겁고 일반 사용자 PTY 메모리 한계 안).
- soft cap 40 (recovery) / 7-day suspended TTL 정책은 무변경
- 헤드룸 10 → 160
- 근본 해결 (orphan detached GC) 은 v2.9 트랙으로 별도 검토
🔴 `pty.create` rejection 이 묻혀 단축키 무반응처럼 보이던 회귀
@alphabeen 이 PR #25 description 에서 짚어준 두 번째 문제. cap 도달 시 daemon 이 actionable 에러 (`Cannot create new terminal: 200 active sessions already running. Close some panes (or restart wmux) and try again.`) 를 throw 하는데 renderer 의 세 호출 지점 — `useKeyboard` Ctrl+T 핸들러, `AppLayout` empty-leaf 자동 PTY, `FloatingPane` 첫 열림 — 모두 `.then()` 만 달고 `.catch()` 누락 (또는 silent catch) 이라 rejection 이 묻히고 단축키가 무반응처럼 보였다. v2.8.1 Bug 1 의 actionable error 의도가 무력화되던 결함.
- 신규 IPC 에러 코드
RESOURCE_EXHAUSTED—wrapHandler.classifyError가 cap 메시지 패턴 (cannot create new terminal+active sessions already running) 을 감지해 분류, 메시지에[RESOURCE_EXHAUSTED]prefix stamp. useIpc매핑 —DEFAULT_MESSAGES['RESOURCE_EXHAUSTED']= "터미널 세션 한도에 도달했습니다. 일부 pane을 닫거나 wmux를 재시작한 뒤 다시 시도해주세요.", level'warn'.- 세 호출 지점 모두
ipcInvokewrap 으로 통일 —result.ok분기 + 실패 시 toast 자동 게재. - Electron invoke envelope wrap 처리 —
/codex reviewP2:ipcRenderer.invoke가 main side 에러를 renderer 로 전달할 때 메시지를Error invoking remote method 'X': Error: <orig>형태로 감싸서MESSAGE_CODE_PREFIX가 `^` anchor 인 한 stamp 가 envelope 뒤로 밀려 매칭 실패 → 모든 coded error 가 다시 UNKNOWN 으로 떨어지던 path 차단. renderer regex 만 anchor 제거 (main side 는 자기 raw output 매칭이라 anchor 유지). 회귀 테스트 추가.
Migration
자동. 클라이언트 / 외부 MCP 통합 측에 변경 없음. 신규 RESOURCE_EXHAUSTED 코드는 내부 IPC 경계 안쪽 (renderer ↔ main) 에서만 사용.
Reviews & Tests
- @alphabeen PR #25 (외부 컨트리뷰터의 첫 PR — 정확한 진단 + 깔끔한 변경)
/codex review— P2 (Electron envelope path) 잡힘. 같은 patch 에 fold-in- 934 tests passing (+5 vs v2.8.1)
- typecheck + daemon (158.4kb) + mcp build 모두 clean
🤖 Generated with Claude Code
Full Changelog: v2.8.1...v2.8.2
What's Changed
- fix(daemon): raise MAX_SESSIONS 50 → 200 by @alphabeen in #25
- fix(v2.8.2): RESOURCE_EXHAUSTED toast + Electron envelope match by @openwong2kim in #26
New Contributors
- @alphabeen made their first contribution in #25
Full Changelog: v2.8.1...v2.8.2