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

PR (해당일 생성/머지)

repo#상태제목
ohah/maru#1633mergedfeat(session-host): 외부 attach ANSI 투영기를 추가합니다
ohah/maru#1632mergedfeat(session-host): public attach 권위 경계를 완성합니다
ohah/maru#1631mergedfeat(session-host): 외부 터미널 resize를 동기화합니다
ohah/maru#1630mergedfeat(session-host): 외부 raw TTY 수명을 안전하게 관리합니다
ohah/maru#1629mergedfeat(session-host): 컨트롤러 전환을 원자화합니다
ohah/maru#1628mergedfeat(link): 웹 링크를 인앱 브라우저 패널에서 엽니다 (input.link-open-target = auto|in-app|system)
ohah/maru#1627mergedfix(link): 링크 클릭·hover를 포인터 아래 pane에서 찾습니다
ohah/maru#1626mergedfix(cursor): 커서 깜빡임·모양 설정이 실제로 동작하게 고칩니다 (ABI v146)
ohah/maru#1625mergedtest(session-host): 실제 PTY RSS 격리를 검증합니다
ohah/maru#1624mergedfix(session-host): resync ACK 복구 경계를 고정합니다
ohah/maru#1623mergedfix(web-panel): hit-test 조회를 클릭 intent로 오인하던 것을 고칩니다
ohah/maru#1622mergedtest(session-host): 부족한 batch 회수 경계를 고정합니다
ohah/maru#1621mergedtest(session-host): 부족한 base 회수 경계를 고정합니다
ohah/maru#1620mergedfix(session-host): 실제 stall만 pressure 회수합니다
ohah/maru#1619mergedtest(session-host): pressure backoff 경계를 강화합니다
ohah/maru#1618mergedfeat(session-host): global observer pressure를 격리합니다
ohah/maru#1617mergedfix(sidebar): 레이아웃 어긋남·옛 대화·호버 구분을 고칩니다
ohah/maru#1616mergedfeat(session-host): retained projection base를 예산에 포함합니다
ohah/maru#1615mergedfix(session-host): upgrade replay와 teardown 권위를 강화합니다
ohah/maru#1614mergedfix(sidebar): code-review max 사이드바 결함 13건을 수정합니다
ohah/maru#1613mergedtest(session-host): close subscription identity product gate
ohah/maru#1612mergedfeat(session-host): add runtime end CLI
ohah/maru#1611mergedfeat(sidebar): 에이전트 행에 마지막 활동 시각을 답니다
ohah/maru#1610mergedfeat(session-host): add read-only admin CLI
ohah/maru#1609mergedfeat(sidebar): codex 어댑터로 에이전트 행 대화를 마저 채웁니다
ohah/maru#1608mergedfeat(sidebar): 에이전트 행에 마지막 대화를 싣습니다
ohah/maru#1607mergedfeat(session-host): add upgrade all-or-none preflight
ohah/maru#1606mergedfeat(sidebar): 워크스페이스 카드 아래 에이전트 목록을 답니다
ohah/maru#1605mergedfeat(session-host): add one-shot admin policy
ohah/maru#1604mergedfix(session-host): harden nonblocking accept
ohah/maru#1603mergedfeat(session-host): converge runtime lifecycle
ohah/maru#1602mergedfeat(session-host): wire daemon poll owner
ohah/maru#1601mergedfeat(session-host): enforce daemon runtime budgets