2026-07-26
요약 (AI 작성)
외부 터미널에서 영속 세션에 붙는 public attach 경로를 완성한 날입니다. 계약을 고정하고 attach 정책 파서와 controller 전환 capability 협상을 넣은 뒤, attachment 요청을 canonical 하게 조립하고 원격 attachment 권위를 엄격히 해석하도록 했으며, attach host 결정을 완전증거로 제한하고 동일 TTY 를 사전 검증하도록 해 권위 경계를 닫았습니다. 외부 raw TTY 는 수명 계약을 테스트로 고정한 뒤 안전한 복원, signal 전환 경합 차단, 복원 실패의 적대적 종료까지 처리했고, 컨트롤러 전환을 원자화했습니다. 외부 resize 도 완료 계약을 고정하고 상태를 추가해 모든 클라이언트에 원자 전파하며, 선예약 경계를 테스트로 못박고 ABA 를 차단했습니다. 외부 attach 용 ANSI 투영기도 함께 들어왔습니다.
데몬 쪽은 자원 압박과 수명을 정리했습니다. runtime 수명주기를 수렴시키고 daemon poll owner 를 배선했으며 runtime 예산을 강제하고, retained projection base 를 예산에 포함시켰습니다. pressure 회수는 실제로 관측된 stall 이 있을 때만 일어나도록 조건을 좁히고 backoff 게이트를 강화했으며, global observer pressure 를 격리하고 batch·base 회수 경계를 테스트로 고정했습니다. 운영 도구로 read-only admin CLI 와 runtime end CLI, one-shot admin policy, upgrade all-or-none preflight 를 추가하고, nonblocking accept 와 upgrade replay·teardown 권위를 경화했습니다.
사이드바는 에이전트 목록을 실제로 채웠습니다. 워크스페이스 카드 아래 에이전트 목록을 달고 마지막 대화와 마지막 활동 시각을 실었으며, codex 어댑터를 붙이고 claude 상태줄 훅으로 대화 결속을 마저 채웠습니다. 결속 기준을 추측에서 provider 신원으로 바꾼 것이 핵심이고, 레이아웃 어긋남·옛 대화 표시·호버 구분 문제와 /code-review max 사이드바 결함 13건도 함께 정리했습니다. 그 밖에 링크 클릭·hover 를 포인터 아래 pane 에서 찾도록 고치고 웹 링크를 열려 있는 인앱 브라우저 패널에서 열도록(input.link-open-target) 했으며, 커서 깜빡임·모양 설정이 실제로 동작하지 않던 문제를 ABI v146 으로 고쳤습니다.
커밋
ohah/maru
- test(link): 비활성 pane 밑줄 배선을 프레임 셀까지 검증합니다
- feat(link): in-app 값 추가 + 코드리뷰 결함 수정
- feat(link): 열려 있는 브라우저 패널에서 웹 링크를 엽니다 (input.link-open-target)
- docs(link-detection): 링크 조회가 어느 pane을 보는지 명시합니다
- fix(link): 링크 클릭·hover를 포인터 아래 pane에서 찾습니다
- feat(session-host): 외부 attach ANSI 투영기를 추가합니다
- fix(session-host): slow observer fixture profile을 갱신합니다
- feat(session-host): public attach 권위 경계를 완성합니다
- fix(session-host): attach 권위 경계를 엄격히 합니다
- feat(session-host): attach 전에 동일 TTY를 검증합니다
- feat(session-host): attach host 결정을 완전증거로 제한합니다
- feat(session-host): attachment 요청을 canonical하게 조립합니다
- feat(session-host): 원격 attachment 권위를 엄격히 해석합니다
- feat(session-host): controller 전환 capability를 협상합니다
- feat(session-host): attach 정책 파서를 추가합니다
- docs(session-host): public attach 계약을 고정합니다
- fix(session-host): resize 예약 ABA를 차단합니다
- fix(session-host): 외부 resize 런타임을 엄격히 검증합니다
- fix(session-host): 외부 resize 권위 경계를 강화합니다
- docs(session-host): 외부 resize 구현 증거를 동기화합니다
- feat(session-host): resize를 모든 클라이언트에 원자 전파합니다
- test(session-host): resize 선예약 경계를 고정합니다
- feat(session-host): 외부 resize 상태를 추가합니다
- docs(session-host): 외부 resize 완료 계약을 고정합니다
- fix(session-host): raw TTY 복원 실패를 적대적으로 닫습니다
- fix(session-host): raw TTY signal 전환 경합을 막습니다
- feat(session-host): 외부 raw TTY를 안전하게 복원합니다
- test(session-host): 외부 raw TTY 수명 계약을 고정합니다
- feat(session-host): 컨트롤러 전환을 원자화합니다
- fix(cursor): 커서 깜빡임·모양 설정이 실제로 동작하게 고칩니다 (ABI v146)
- fix(session-host): macOS runner 샘플 간격을 분리합니다
- test(session-host): 실제 PTY RSS 격리를 검증합니다
- fix(session-host): resync ACK 복구 경계를 고정합니다
- fix(web-panel): hit-test 조회를 클릭 intent로 오인하던 것을 고칩니다
- test(session-host): cover insufficient batch reclaim
- fix(sidebar): 상태줄 훅 경계를 문서·CI 가드와 맞춥니다
- docs(sidebar): 상태줄 훅 보강(§7.2.2)을 문서화합니다
- feat(sidebar): claude 상태줄 훅으로 대화 결속을 마저 채웁니다
- fix(sidebar): 대화 결속을 추측에서 provider 신원으로 바꿉니다
- fix(sidebar): 레이아웃 어긋남·옛 대화·호버 구분을 고칩니다
- test(session-host): cover insufficient base reclaim
- fix(session-host): require observed stalls for pressure reclaim
- test(session-host): harden pressure backoff gates
- feat(session-host): isolate global observer pressure
- fix(session-host): harden upgrade replay and teardown
- feat(session-host): account retained projection bases
- fix(sidebar): code-review max 사이드바 결함 13건을 수정합니다
- test(session-host): close subscription identity product gate
- feat(session-host): add runtime end CLI
- feat(sidebar): 에이전트 행에 마지막 활동 시각을 답니다
- feat(session-host): add read-only admin CLI
- feat(sidebar): codex 어댑터로 에이전트 행 대화를 마저 채웁니다
- feat(sidebar): 에이전트 행에 마지막 대화를 싣습니다
- feat(session-host): add upgrade all-or-none preflight
- feat(sidebar): 워크스페이스 카드 아래 에이전트 목록을 답니다
- feat(session-host): add one-shot admin policy
- fix(session-host): harden nonblocking accept
- feat(session-host): converge runtime lifecycle
- feat(session-host): wire daemon poll owner
- feat(session-host): enforce daemon runtime budgets