2026-07-21
요약 (AI 작성)
영속 터미널 세션 호스트(P1P3)를 하루에 통째로 쌓아 올린 날입니다. 먼저 계약과 범위를 문서로 확정하고(호스트 프로토콜·워크스페이스 상세, 외부 attach·resize 범위, P1 제거 계약), provider 세션 연속성 잔여를 걷어낸 뒤 P2 로 d2d), host client 의 hello/RPC 왕복(e1), TermRuntimeBackend seam 계약과 in-process 어댑터를 만들고 GUI 를 그 handle 계약으로 배선했습니다. 이어 P3 를 a 부터 순서대로 — MRSH wire codec 과 frame parser(a), screen-stream snapshot/delta record codec(b), TerminalRuntimeRegistry 와 controller state machine(c), connection dispatch state machine(d1), 실 unix socket adapter·socket 발견 정책·maru-sessiond entrypoint·detached-helper launcher 와 __session-host CLI(d2aruntime.spawn/terminate dispatch 와 RuntimeOps seam(e2a) — 올렸습니다.
그 위에 화면 스트리밍을 얹었습니다. Surface.renderSnapshot() 렌더 seam 을 도입한 뒤 화면 snapshot 투영과 조립기, delta 계산과 client push 를 붙이고, attach 가 snapshot 을 전송하도록 배선했으며, 원격 화면을 RenderSnapshot cells 로 변환해 Surface 의 원격 화면 소스로 물렸습니다. 클라이언트 쪽 원격 runtime 과 host-backed TermRuntimeBackend 어댑터, frame-loop pump 의 원격 모드, 원격 Term 입력·resize 라우팅까지 이어 왕복을 완성하고, 원격 화면 stream 소비 결함과 코드리뷰 max 지적을 반영했습니다.
파일 패널·Mermaid 쪽도 손을 봤습니다. Mermaid 라이브 프리뷰를 연결하고 cold start 계약을 정합화했으며, 수명 전환 시 응답 없는 render mailbox 를 로컬 회수하도록 고쳤습니다. 성능은 메인 액터 tick 의 lock 대기와 hang 경로 elapsed 를 계측하고, perf artifact 게이트를 substring grep 에서 exact JSON validator 로 바꿨으며, CI required 게이트에 macOS·Web 제품 검사를 포함시켰습니다. 소스 모드에서는 gutter 를 숨겨 WKWebView repaint 를 피하고 세로 스크롤바·라이브→소스 전환의 atomic 위젯 잔존, 모드 전환 시 iframe 이 editor 를 덮던 CSS 누락을 고쳤으며, 웹 패널 포커스 시 ⌘C/⌘V/⌘A 를 WebKit 에 위임하도록 했습니다.
zntc 는 증분 빌드 정확성을 다뤘습니다. #4545 증분 fingerprint 의 누락 홀 2종(interop-mode·shared-ns var 명)을 메우고, #4557 로 const-baked 소비자를 provider 가 바뀔 때만 evict 하는 B-precise 전략을 넣었으며, #4587 preserve-modules cjs 의 재할당 export live-binding(exports-as-storage)을 고쳤습니다. 세 건 모두 /code-review max 지적 반영 커밋이 뒤따랐습니다.
커밋
ohah/maru
- feat(session-host): 원격 Term 입력/resize를 라우팅 표에 배선합니다
- feat(session-host): host-backed TermRuntimeBackend 어댑터를 추가합니다
- feat(session-host): frame-loop pump에 원격 모드를 추가합니다
- fix(session-host): 원격 화면 stream 소비 결함을 고칩니다
- feat(session-host): client 쪽 원격 runtime을 추가합니다
- feat(session-host): Surface에 원격 화면 소스를 추가합니다
- refactor(session): Surface.renderSnapshot() 렌더 seam을 도입합니다
- feat(session-host): 원격 화면을 RenderSnapshot cells로 변환합니다
- feat(session-host): 화면 조립기를 추가합니다
- feat(session-host): 화면 delta를 client에 push합니다
- feat(session-host): 화면 delta 계산을 추가합니다
- feat(session-host): attach가 화면 snapshot을 전송하도록 배선합니다
- fix(file-panel): 소스 모드 gutter 숨김(WKWebView repaint 회피) + WKWebView 우클릭 메뉴 억제
- feat(session-host): 화면 snapshot 투영을 추가합니다
- fix(file-panel): 소스 모드 세로 스크롤바와 라이브→소스 atomic 위젯 잔존을 고친다
- feat(session-host): attach/input/resize dispatch를 추가합니다
- feat(session-host): 실 runtime_manager와 daemon 배선을 추가합니다
- fix(session-host): 코드리뷰 max 지적을 반영합니다
- fix(file-panel): 모드 전환 시 iframe이 안 숨겨져 editor를 덮던 CSS 누락을 고친다
- feat(session-host): runtime.spawn/terminate dispatch와 RuntimeOps seam을 추가합니다
- feat(session-host): host client(hello/RPC 왕복)를 추가합니다
- feat(session-host): detached-helper launcher와 __session-host CLI를 추가합니다
- feat(session-host): maru-sessiond entrypoint와 fork process smoke를 추가합니다
- feat(session-host): socket 발견 정책 state machine을 추가합니다
- fix(file-panel): 도크·브라우저 웹 패널 포커스 시 ⌘C/⌘V/⌘A를 WebKit에 위임한다
- feat(session-host): 실 unix socket adapter를 추가합니다
- feat(session-host): connection dispatch state machine을 추가합니다
- feat(session-host): TerminalRuntimeRegistry와 controller state machine을 추가합니다
- feat(session-host): screen-stream snapshot/delta record codec을 추가합니다
- fix(live-preview): 수명 전환 시 응답 없는 Mermaid render mailbox를 로컬 회수한다
- feat(session-host): MRSH wire codec과 frame parser를 추가합니다
- docs(mermaid): 두 512 상한을 별개 계약으로 명명하고 stale "fragment당 4"를 정정한다
- refactor(session): GUI를 TermRuntimeBackend handle 계약으로 배선합니다
- fix(perf): Mermaid 메인 액터 tick의 lock 대기와 hang 경로 elapsed를 계측한다
- fix(test): Mermaid smoke harness timeout을 제품 cold deadline보다 크게 맞춘다
- fix(perf): perf artifact 게이트를 substring grep에서 exact JSON validator로 바꾼다
- fix(ci): required 게이트에 macOS·Web 제품 검사를 포함한다
- refactor(session): TermRuntimeBackend seam 계약과 in-process adapter를 추가합니다
- refactor(session): provider 세션 연속성 잔여를 제거합니다
- docs(session): P1 제거 계약을 보완합니다
- docs(session): 외부 attach와 resize 범위 명확화
- docs(session): detail workspace and host protocol
- docs(session): 영속 터미널 세션 호스트 계약
- fix(file-panel): Mermaid cold start 계약을 정합화한다
- ci: Mermaid 성능 게이트를 제품 최적화로 실행한다
- ci: Mermaid macOS 실패 증거를 보존한다
- feat(file-panel): Mermaid 라이브 프리뷰를 연결한다
ohah/zntc
- fix(incremental): #4545 code-review max 지적 반영 — 소비자 def_format·OOM latch·rank-only 게이트
- fix(incremental): #4545 증분 fingerprint 누락 홀 2종 (interop-mode · shared-ns var 명)
- perf(incremental): #4557 code-review max 지적 반영 — staleness 홀 3건 + OOM 폴백
- perf(incremental): #4557 const-baked 소비자를 provider 변경 시에만 evict (B-precise)
- fix(bundler): #4587 code-review max 지적 반영 — ns/re-export 회귀·콤마·output-exports·NamedEvaluation
- fix(bundler): #4587 preserve-modules cjs 재할당 export live-binding (exports-as-storage)