Skip to content

v2.8.2 — Session Cap Headroom + Silent-Failure Fix

Choose a tag to compare

@openwong2kim openwong2kim released this 10 May 22:40
· 261 commits to main since this release
33fb70c

@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_EXHAUSTEDwrapHandler.classifyError 가 cap 메시지 패턴 (cannot create new terminal + active sessions already running) 을 감지해 분류, 메시지에 [RESOURCE_EXHAUSTED] prefix stamp.
  • useIpc 매핑DEFAULT_MESSAGES['RESOURCE_EXHAUSTED'] = "터미널 세션 한도에 도달했습니다. 일부 pane을 닫거나 wmux를 재시작한 뒤 다시 시도해주세요.", level 'warn'.
  • 세 호출 지점 모두 ipcInvoke wrap 으로 통일result.ok 분기 + 실패 시 toast 자동 게재.
  • Electron invoke envelope wrap 처리/codex review P2: 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

Full Changelog: v2.8.1...v2.8.2