2026-07-21

날짜는 UTC 기준으로 나눴습니다(9월 22일부터는 한국 시간 기준). 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 목록은 2026-10-06 KST에 GitHub에서 다시 조회해 보강했습니다. 공개 저장소의 기본 브랜치 활동만 포함합니다.

요약 (AI 작성)

maru는 영속 터미널 세션 호스트를 P1부터 P3까지 한꺼번에 쌓았고, 이날 maru PR은 모두 main에 병합됐습니다. 먼저 Maru 소유 runtime ID와 별도 세션 호스트의 소유권·종료·다중 workspace attach 계약을 정의한 문서(#1471)를 병합하고, provider 세션 연속성 잔여를 걷어냈습니다(#1474). P2에서는 PTY와 셸의 수명·입출력을 GUI 레이아웃에서 떼어 내는 TermRuntimeBackend 계약과 in-process 어댑터를 만들고(#1476), GUI를 그 handle 계약으로 배선했습니다(#1480).

P3는 순서대로 진행됐습니다. wire codec과 frame parser(#1483), 화면 snapshot·delta 레코드 codec(#1484), runtime당 controller 1명과 observer N명을 관리하는 TerminalRuntimeRegistry(#1485), 연결 dispatch 상태 기계(#1486), 실제 unix 소켓 어댑터·소켓 발견 정책·maru-sessiond 진입점·분리 실행 launcher와 __session-host CLI(#1487부터 #1491), host client의 hello·RPC 왕복(#1492), runtime.spawn/terminate와 RuntimeOps seam(#1493), 실제 runtime manager와 daemon 배선(#1496), attach·input·resize dispatch(#1497)가 들어갔습니다. 응답 크기 상한 등 리뷰에서 나온 정확성·보안 결함도 #1495로 고쳤습니다.

그 위에 화면 스트리밍을 얹었습니다. 화면 snapshot 투영(#1499), attach 시 snapshot 전송(#1501), delta 계산과 client push(#1502, #1503), client 쪽 화면 조립기(#1504)와 RenderSnapshot 셀 변환(#1505), Surface.renderSnapshot() 렌더 seam(#1506), Surface의 원격 화면 소스(#1507)와 client 쪽 원격 runtime(#1508)이 이어졌고, 원격 화면 stream 소비 결함 7건을 고쳤습니다(#1509). 마지막으로 frame loop pump의 원격 모드(#1510), host-backed RemoteTermBackend(#1511), 원격 Term 입력·resize 라우팅(#1512)을 붙였습니다.

파일 패널에서는 Mermaid 라이브 프리뷰를 연결하고 cold·warm helper deadline 계약을 맞췄으며(#1473), smoke 타임아웃 조정(#1478), 메인 액터 tick의 lock 대기 계측(#1479), 두 512 상한 문서 정리(#1481), 응답 없는 render mailbox 회수(#1482)가 뒤따랐습니다. CI는 required 게이트에 macOS·Web 제품 검사를 넣고(#1475) perf artifact 검사를 substring grep에서 정확한 JSON 검증으로 바꿨습니다(#1477). 웹 패널 포커스 시 ⌘C·⌘V·⌘A를 WebKit에 넘기고(#1489), 모드 전환 때 iframe이 editor를 덮던 CSS 누락(#1494), 소스 모드 세로 스크롤바와 위젯 잔존(#1498), 소스 모드 gutter 재도색과 우클릭 메뉴(#1500)도 고쳤습니다.

zntc는 증분 빌드와 CJS 출력 정확성 PR 3개를 병합했습니다. --preserve-modules --format=cjs에서 재할당되는 export가 순환 중 undefined로 굳던 문제를 exports 객체를 저장소로 쓰는 방식으로 고쳤고(#4592), const를 구워 넣은 소비자를 provider가 바뀔 때만 캐시에서 빼는 B-precise 전략을 넣었으며(#4593), 증분 fingerprint가 interop 모드와 공유 namespace 변수명 변화를 놓치던 두 구멍을 메웠습니다(#4594). 세 건 모두 리뷰 지적 반영 커밋이 뒤따랐습니다.

공개 커밋 53개, 해당일 생성 또는 병합된 PR 44개를 정리했습니다. PR 생성 42개·병합 44개는 같은 PR이 양쪽에 포함될 수 있습니다.

커밋

ohah/maru

ohah/zntc

PR (해당일 생성/머지)

상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.

저장소PR해당일 활동상태대상 브랜치제목
ohah/maru#1512생성 · 병합mergedmainfeat(session-host): 원격 Term 입력/resize를 라우팅 표에 배선합니다
ohah/maru#1511생성 · 병합mergedmainfeat(session-host): host-backed TermRuntimeBackend 어댑터를 추가합니다
ohah/maru#1510생성 · 병합mergedmainfeat(session-host): frame-loop pump에 원격 모드를 추가합니다
ohah/maru#1509생성 · 병합mergedmainfix(session-host): 원격 화면 stream 소비 결함을 고칩니다
ohah/maru#1508생성 · 병합mergedmainfeat(session-host): client 쪽 원격 runtime을 추가합니다
ohah/maru#1507생성 · 병합mergedmainfeat(session-host): Surface에 원격 화면 소스를 추가합니다
ohah/maru#1506생성 · 병합mergedmainrefactor(session): Surface.renderSnapshot() 렌더 seam을 도입합니다
ohah/maru#1505생성 · 병합mergedmainfeat(session-host): 원격 화면을 RenderSnapshot cells로 변환합니다
ohah/maru#1504생성 · 병합mergedmainfeat(session-host): 화면 조립기를 추가합니다
ohah/maru#1503생성 · 병합mergedmainfeat(session-host): 화면 delta를 client에 push합니다
ohah/maru#1502생성 · 병합mergedmainfeat(session-host): 화면 delta 계산을 추가합니다
ohah/maru#1501생성 · 병합mergedmainfeat(session-host): attach가 화면 snapshot을 전송하도록 배선합니다
ohah/maru#1500생성 · 병합mergedmainfix(file-panel): 소스 모드 gutter 숨김(WKWebView repaint 회피) + WKWebView 우클릭 메뉴 억제
ohah/maru#1499생성 · 병합mergedmainfeat(session-host): 화면 snapshot 투영을 추가합니다
ohah/maru#1498생성 · 병합mergedmainfix(file-panel): 소스 모드 세로 스크롤바와 라이브→소스 atomic 위젯 잔존을 고친다
ohah/maru#1497생성 · 병합mergedmainfeat(session-host): attach/input/resize dispatch를 추가합니다
ohah/maru#1496생성 · 병합mergedmainfeat(session-host): 실 runtime_manager와 daemon 배선을 추가합니다
ohah/maru#1495생성 · 병합mergedmainfix(session-host): 코드리뷰 max 지적을 반영합니다
ohah/maru#1494생성 · 병합mergedmainfix(file-panel): 모드 전환 시 iframe이 안 숨겨져 editor를 덮던 CSS 누락을 고친다
ohah/maru#1493생성 · 병합mergedmainfeat(session-host): runtime.spawn/terminate dispatch + RuntimeOps seam (P3-e2a)
ohah/maru#1492생성 · 병합mergedmainfeat(session-host): host client (hello/RPC 왕복) (P3-e1)
ohah/maru#1491생성 · 병합mergedmainfeat(session-host): detached-helper launcher + __session-host CLI (P3-d2d)
ohah/maru#1490생성 · 병합mergedmainfeat(session-host): maru-sessiond entrypoint + fork process smoke (P3-d2c)
ohah/maru#1489생성 · 병합mergedmainfix(file-panel): 도크·브라우저 웹 패널 포커스 시 ⌘C/⌘V/⌘A를 WebKit에 위임한다
ohah/maru#1488생성 · 병합mergedmainfeat(session-host): socket 발견 정책 state machine (P3-d2b)
ohah/maru#1487생성 · 병합mergedmainfeat(session-host): 실 unix socket adapter (P3-d2a)
ohah/maru#1486생성 · 병합mergedmainfeat(session-host): connection dispatch state machine (P3-d1)
ohah/maru#1485생성 · 병합mergedmainfeat(session-host): TerminalRuntimeRegistry + controller state machine (P3-c)
ohah/maru#1484생성 · 병합mergedmainfeat(session-host): screen-stream snapshot/delta record codec (P3-b)
ohah/maru#1483생성 · 병합mergedmainfeat(session-host): MRSH wire codec과 frame parser (P3-a)
ohah/maru#1482생성 · 병합mergedmainfix(live-preview): 수명 전환 시 응답 없는 Mermaid render mailbox를 로컬 회수한다
ohah/maru#1481생성 · 병합mergedmaindocs(mermaid): 두 512 상한을 별개 계약으로 명명하고 stale fragment 표기를 정정한다
ohah/maru#1480생성 · 병합mergedmainrefactor(session): GUI를 TermRuntimeBackend handle 계약으로 배선 (P2-b)
ohah/maru#1479생성 · 병합mergedmainfix(perf): Mermaid tick의 lock 대기와 hang 경로 elapsed를 계측한다
ohah/maru#1478생성 · 병합mergedmainfix(test): Mermaid smoke harness timeout을 제품 cold deadline보다 크게 맞춘다
ohah/maru#1477생성 · 병합mergedmainfix(perf): perf artifact 게이트를 exact JSON validator로 바꾼다
ohah/maru#1476생성 · 병합mergedmainrefactor(session): TermRuntimeBackend seam 계약과 in-process adapter (P2-a)
ohah/maru#1475생성 · 병합mergedmainfix(ci): required 게이트에 macOS·Web 제품 검사를 포함한다
ohah/maru#1474생성 · 병합mergedmainrefactor(session): provider 세션 연속성 잔여를 제거합니다
ohah/maru#1473병합mergedmainfeat(file-panel): Mermaid 라이브 프리뷰를 연결한다
ohah/maru#1471병합mergedmaindocs(session): 영속 터미널 세션 호스트 계약을 정의합니다
ohah/zntc#4594생성 · 병합mergedmainfix(incremental): #4545 증분 fingerprint 누락 홀 (interop-mode · shared-ns var 명)
ohah/zntc#4593생성 · 병합mergedmainperf(incremental): #4557 const-baked 소비자를 provider 변경 시에만 evict (B-precise)
ohah/zntc#4592생성 · 병합mergedmainfix(bundler): #4587 preserve-modules cjs 재할당 export live-binding (exports-as-storage)