주요 사항
v1.4.167
IME & 터미널 (6) — macOS 한글 조합 보존; 다음 조합 전에 한글 자음·모음 플러시; 조합 종료 시 IME 삭제 채택; 실시간 macOS 한글 자음·모음 플러시 및 초성 한글 자음 테스트 커버리지; Windows IME Shift 커밋 커버
v1.4.166
IME & 터미널 (8) — 취소된 IME 조합이 더 이상 오래된 프리에딧을 재생하지 않음; Windows IME Shift 셰이프 재생; IME 소유권 근거명시; Enter 누름당 프레스 증거 보관; IME Enter-keyup 줄바꿈은 누름 시간 증거 필요; IME 소유 Process 단축키 차단; IME Process 키와 Enter 구분; 오래된 Windows IME 수정자 초기화
v1.4.165
SSH & 안정성 (7) — FIDO2 트랜스포트가 OpenSSH 바이너리에 대해 게이트됨; SSH 대상이 네트워크 끊김 후 자동 복구; 소비자 복구가 더 이상 메인 스레드를 고정하지 않음; 호스팅된 리뷰 조회가 제한됨; 원격 ref 프로브 팬아웃 제한; relay HOST_OFFLINE 라이프사이클 수정; 디렉터 재연결 고속 경로 선언
터미널 (3) — 전체 화면 아틀라스 복구 제한; Pi CSI-u Shift+Enter가 Windows에서 신뢰됨; 쌍을 이룬 클라이언트 렌더러 작업 제한
에이전트 상태 (3) — 사이드바에 백그라운드 작업 보존; 이스케이프 누름 시 질문 표시기 초기화; 재사용된 터미널 창에서 상태 복원
브라우저 (3) — Windows 전체 검정색 창 수정; 안전하지 않은 닫기 우회 제거; 워크트리 전환 시 탭이 렌더링된 상태로 유지
워크트리 & 워크스페이스 (2) — 원격 삭제가 멱등성을 만족함; 새로 고침 중 사이드바 재정렬 보존
에디터 (1) — lazy-chunk 복구가 자동으로 거부되지 않고 다시 로드됨
종료 & 성능 (3) — 앱이 네트워크 마운트 프로필과 함께 종료할 때 더 이상 고정되지 않음; 워크트리 삭제 중 중복 페치 스킵; 음성 모델 다운로드 진행률 통합
개발 (1) — Fast Refresh가 수락할 수 있도록 확인 대화 분할 (ChecksPanel 충돌 수정)
모바일 (3) — OMP 아이콘 그래디언트 수정; 보조 텍스트 대비 개선; 지원 모듈이 더 이상 경로로 등록되지 않음
국제화 (2) — es/ja/ko/zh에 대한 에디터 글꼴 족 번역 추가; 설정 및 통계에서 상태 레이블 현지화
테스트 & 문서 (2) — Azure DevOps/Bitbucket 원격 URL 프로브 어설션 복원; 검색 창 오류 패턴 주석 정리
기타
- 불필요한 코드 정리:
knip을 통해 제거된 접근 불가능한 내보내기 ~2k줄
- FrameDecoder 중복 제거, push-target 재사용, Codex/OpenCode 폴드 공유, GitHub 컴포넌트 추출 (-1324줄)
- 모바일에서 마린 크리처 코퍼스를 미러링하는 대신 가져옴
- 린트 규칙 활성화:
no-useless-call, no-accumulating-spread
- 이슈 템플릿이 보고자에게 영어로 작성하도록 요청
변경 사항
v1.4.167
- fix(terminal): preserve macOS Korean composition (#12280) by @nwparker
- fix(terminal): flush Hangul syllables before the next composition (#12278) by @nwparker
- fix(native-chat): adopt IME deletions at composition end (#12281) by @nwparker
- test(terminal): cover live macOS Korean syllable flush (#12284) by @nwparker
- test(terminal): cover leading Korean vowels (#12282) by @nwparker
- test(terminal): preserve Windows IME Shift commits (#12276) by @nwparker
v1.4.166
- fix(terminal): stop cancelled IME compositions replaying stale preedit by @nwparker
- fix(terminal): keep press evidence per Enter press, not per code by @nwparker
- fix(terminal): require press-time evidence before synthesizing an IME Enter-keyup newline by @nwparker
- fix(terminal): block IME-owned Process shortcuts by @nwparker
- fix(terminal): distinguish IME Process keys from Enter by @nwparker
- fix(terminal): clear stale Windows IME modifiers (#12259) by @nwparker
- test(terminal): replay the native Windows IME Shift shape by @nwparker
- style(terminal): keep IME ownership rationale concise by @nwparker
v1.4.165
- fix(i18n): add missing Editor Font Family translations for es, ja, ko, zh (#11573) by @qiuyongjin
- Add first user prompt to AI Vault session history row (#12006) by @AmethystLiang
- fix(P1-C): gate FIDO2 system-SSH transport on an OpenSSH binary (#12029) by @AmethystLiang
- fix(quit): stop durable state writes from parking the main thread on quit (#11931) by @nwparker
- fix(windows): keep browser close marker URL absolute (#12038) by @nwparker
- fix(browser): remove unsafe window close bypass (#12040) by @nwparker
- fix(agent-status): preserve Claude background work (#11838) by @nwparker
- perf(worktrees): avoid redundant fetch during deletion (#11918) by @nwparker
- fix(P1-D): bound hosted-review in-flight lookups so a wedged provider cannot pin a branch (#12030) by @AmethystLiang
- fix(P1-B): recover SSH targets and remote file watchers after a network drop (#12032) by @AmethystLiang
- fix(P1-A): async SSH consumer-recovery persistence and detach on failed connect (#12026) by @AmethystLiang
- chore: ask issue reporters to write in English (#12066) by @nwparker
- fix(terminal): bound fullscreen atlas recovery (#12061) by @OrcaWin
- fix(agent-status): clear Claude question indicator after Escape (#12064) by @nwparker
- fix(workspaces): make remote workspace deletion idempotent (#11684) by @AmethystLiang
- chore(lint): enable safe performance guard rules (#12073) by @nwparker
- fix(agent-status): restore status in reused terminal panes (#12074) by @nwparker
- fix(P1-D): coalesce remote-ref probes, TTL negatives, and bound unsettled keys (#12065) by @AmethystLiang
- chore(dead-code): drop ~2k lines of unreachable exports and orphan modules (#12077) by @nwparker
- fix(relay): desktop control lifecycle — truthful registration, silence watchdog, named-check host proof (#12076) by @Jinwoo-H
- fix(sidebar): preserve manual order during refresh (#12072) by @Jinwoo-H
- fix(test): restore Azure DevOps and Bitbucket remote-url probe assertions (#12080) by @nwparker
- refactor(relay): collapse the duplicated FrameDecoder into one shared module (#12078) by @nwparker
- fix(terminal): trust Pi CSI-u Shift+Enter on Windows (#9703) (#11769) by @itisvincent
- fix(dev): split the confirmation dialog so Fast Refresh can accept it (#11980) by @nwparker
- fix(terminal): bound paired-client renderer work (#12081) by @OrcaWin
- fix(speech): coalesce model download progress churn on the Settings/Voice path (#11962) by @nwparker
- fix(i18n): localize status labels in settings and stats (#11826) by @smwbev
- fix(editor): make lazy-chunk recovery actually reload instead of being silently vetoed (#11929) by @nwparker
- fix(relay): declare reconnection to the director's verified fast lane (#12086) by @Jinwoo-H
- chore(mobile): import the shared marine-creature corpus instead of mirroring it (#12090) by @nwparker
- feat(updater): add an adhoc release channel for branch builds (#12051) by @nwparker
- refactor(worktrees): reuse the shared push-target helpers on the SSH path (#12091) by @nwparker
- refactor(usage): share the Codex/OpenCode scan fold behind a provider contract (#12082) by @nwparker
- refactor(github): extract shared GitHubItemDialog/PullRequestPage code (#12092) by @nwparker
- Allow clearing all agents from AI Vault session history filter (#12128) by @AmethystLiang
- fix(tasks): make GitHub pagination honest — cap unreachable pages, survive background refreshes, explain empty pages (#11584) by @brennanb2025
- docs(tasks): trim the search-window error pattern comment (#12130) by @AmethystLiang
- fix(browser): keep browser tabs rendering across worktree switches (STA-3228) (#12137) by @brennanb2025
- fix(mobile): correct OMP icon gradient stop (#11650) by @brennanb2025
- fix(mobile): improve secondary text contrast (#11651) by @brennanb2025
- fix(mobile): stop support modules from registering as routes (#11652) by @brennanb2025
새로운 기여자
전체 변경 로그: v1.4.164...v1.4.167