2026-08-08
요약 (AI 작성)
스크롤 이관(SV4·SV5)을 사이드바와 오버레이까지 끌고 가 마무리한 날입니다. SV4 로 사이드바 스크롤바를 선언된 tree 로 옮기고 gutter 를 상시 예약한 뒤 드래그를 붙였고, 후속으로 스크롤바를 다시 보이게 하면서 그 위 카드 호버를 끄고 막대도 호버 시 진해지도록 했습니다. SV5 는 흡수 여부를 반대 근거까지 남겨 결정한 뒤 알림 패널을 픽셀 스크롤로 바꾸고 카드가 패널을 넘지 않게 자르고(SV5a), 팔레트 결과 목록에 상태를 만들지 않고 스크롤바만 내고(SV5b), 세팅 폼 목록에 스크롤바를 내며 오버레이 발행을 하나로 묶고(SV5c), 오버레이 목록에 offset 상태를 도입해 휠·드래그 스크롤을 지원했습니다(SV5d).
세션 도크(에이전트 세션)는 목록의 신뢰도를 끌어올렸습니다. 스캔을 스트리밍으로 바꿔 read cap 을 없애고 목록이 열 때마다 달라지던 것을 결정적으로 만들었으며, 부분 목록을 "이전 목록 있음"으로 오인하던 판정과 첫 스캔 중 헤더가 "0개 표시"로 세션 없음처럼 보이던 것을 고쳤습니다. 도크 첫 진입에 스캔이 돌게 하고 잘림을 화면에 알리며, 구버전 Codex 세션을 살리고 서브에이전트 개수를 카드에 보이도록 했고, 세션 재개를 로그인 셸 경유로 바꿔 Dock 실행에서도 찾게 했습니다. AS6 으로 정렬 키를 transcript 의 마지막 활동 시각으로 바꾸고 헤더에 최신순/오래된순 토글을 두되 좁은 도크에서는 발행하지 않도록 했으며, 토글을 ghost Button 으로 바꾸고 헤더를 보는 골든을 만들었습니다. 스캔 계약은 실측에 맞춰 개정하고 드리프트를 기록했습니다. 에이전트 판정도 손봐서 플랜 승인·도구 권한 대기를 유휴가 아닌 blocked 로 보고, composer 에 친 확인 문구를 codex 승인 대기로 오인하지 않게 했습니다.
상태바에는 브랜치 메뉴가 붙었습니다. 브랜치를 누르면 목록이 뜨도록 하고 결함 셋을 고치며 헤드리스 캡처 훅을 더했고, 요청 중 상태바가 사라지면 메뉴를 열지 않도록 했으며 표시 여부를 설정으로 끌 수 있게 했습니다. Chrome Lab 에는 사이드바 strip 시나리오를 더해 §5.2 공백을 닫되, strip 시나리오에서 도크 chrome 을 빼 캡처가 제품을 오도하지 않게 했습니다. 그 밖에 웹 탭에서 ⌘F 가 스크롤백 찾기 대신 그 페이지를 찾도록 고치고, 문자열 시퀀스 abort 가 ESC 를 삼키던 터미널 버그와 reload 가 pane 을 옛 설정으로 재던 config 버그를 잡았습니다.
session-host 는 RPC 응답 소유권 계열(B3-3~B3-6)을 닫고 generation control facade 를 세웠습니다. wire progress 실행을 통합하고 응답 전이 permit 과 prepared response read 분리, 반복 응답 발행과 바이트 소유, 발행 실패의 terminalize 와 콜백 재검증을 거쳐 B3-4/5 소유권을 완성했으며, 응답 슬롯을 재사용 가능하게 만들고 B3-6 의 엄격한 증거 계약과 exact-count 게이트로 닫았습니다. 이어 typed generation control facade 를 추가하고 큐잉된 control 을 그 facade 로 라우팅해 blocking control facade 까지 완성했습니다. CI 는 실측을 근거로 크게 손봤습니다 — app_session 판정자 751개를 실제로 돌리게 하고, 이름 필터 게이트가 0개 매치에도 green 이던 것을 막았으며, 무거운 잡부터 Zig 빌드 캐시를 넣고 캐시가 한도를 밀어 올리지 않게 주기 정리를 걸었고, session host ReleaseFast 를 PR 에서 빼 main push 로 옮겼습니다. zntc 에서는 tsconfig paths 관련 오적용(#4607 node_modules 안 import, #4611 CSS @import 의 bare 지정자)과 #4612 디렉토리 symlink 를 파일로 잡던 문제, #4621 external re-export 의 파싱 불가 출력, #4600 namespace 부분 멤버 집합이 union 을 덮어쓰던 문제, #4599 소문자로 시작하지 않는 bare JSX 태그의 참조 누락을 고치고, #4616 으로 external 지정자를 다른 이름으로 방출하는 매핑을 추가했습니다.
커밋
ohah/maru
- feat(session-host): complete blocking control facade
- feat(session-host): route queued controls through generation facade
- feat(session-host): add typed generation control facade
- docs(session-host): freeze 2c3c control contract
- test(session-host): drain finalizer panic pipe while waiting
- feat(session-host): close B3-6 RPC substrate evidence
- docs(session-host): preserve empty response terminal contract
- test(session-host): add B3-6 exact-count gate
- docs(session-host): close B3-6 strict evidence contract
- fix(session-host): make RPC response slot reusable
- feat(web-panel): 웹 탭에서 ⌘F가 그 페이지를 찾게 한다
- docs(session-host): correct reusable RPC response plan
- feat(chrome): 오버레이 목록을 휠과 드래그로 스크롤한다 — offset 상태를 도입해 (SV5d)
- feat(chrome): 세팅 폼 목록에 스크롤바를 내고 오버레이 발행을 하나로 묶는다 (SV5c)
- feat(session-host): complete B3-4/5 response ownership
- fix(session-host): terminalize RPC publication failures
- fix(session-host): revalidate RPC publication callbacks
- feat(session-host): publish repeated RPC responses
- feat(session-host): own repeated RPC response bytes
- refactor(session-host): split prepared response reads
- refactor(session-host): add B3-4 response transition permits
- ci(macos): app_session 판정자 751개를 CI에서 실제로 돌린다
- fix(build): 이름 필터 게이트가 0개 매치에도 green이던 것을 막는다
- docs(app-session): 분해 판단 기준에 읽기·편집 비용을 추가하고 문서 경계를 정한다
- feat(chrome): 세션 도크 텍스트를 사용자 폰트로 그린다
- docs(agent-session): AS6 구현 완료를 계획·검증 문서에 반영한다
- fix(chrome): 정렬 토글 발행 경계에서 root inset 하나를 빠뜨린 것을 고친다
- fix(chrome): 정렬 토글을 ghost Button으로 바꾸고 헤더를 보는 골든을 만든다
- test(agent-session): 정렬 키 폴백과 내림차순 정렬을 판정자로 고정한다
- fix(chrome): 좁은 도크에서는 정렬 토글을 발행하지 않는다
- feat(agent-session): 도크 header에 최신순/오래된순 토글을 둔다 (AS6-b)
- feat(agent-session): 목록 정렬 키를 transcript의 마지막 활동 시각으로 바꾼다 (AS6-a)
- docs(agent-session): AS6 정렬 계약을 실측으로 고정하고 AS5 완료를 반영한다
- fix(terminal): 문자열 시퀀스 abort가 ESC를 삼키지 않게 한다
- fix(web-panel): 웹 탭에서 ⌘F가 스크롤백 찾기를 열던 것을 막는다
- fix(agent): composer에 친 확인 문구를 codex 승인 대기로 오인하지 않는다
- fix(agent): 플랜 승인·도구 권한 대기를 유휴 대신 blocked로 판정한다
- docs(session-host): specify B3-4/5 response ownership
- refactor(session-host): integrate B3-3 wire progress execution
- docs(session-host): specify B3-3 wire progress
- test(chrome): make branch menu fixture worktree-safe
- ci: 캐시가 한도를 밀어 올리지 않게 주기적으로 정리한다
- fix(chrome): 적대적 검증이 찾은 스캐너 누수와 부분 목록 깜빡임을 고친다
- fix(agent-session): 부분 목록을 "이전 목록 있음"으로 오인하던 판정을 고친다
- feat(agent-session): 스캔을 스트리밍으로 바꿔 read cap을 없애고 목록을 결정적으로 만든다
- ci: 나머지 잡에도 빌드 캐시를 넣는다(실측 근거)
- feat(chrome): 팔레트 결과 목록에 스크롤바를 낸다 — 상태는 만들지 않고 (SV5b)
- ci: PR에서 mise 툴체인 캐시를 저장하지 않게 한다
- ci: session host ReleaseFast를 PR에서 빼고 main push로 옮긴다
- fix(chrome): 사이드바 카드 ✕가 그려진 칸에서 실제로 닫히게 한다
- ci: 가장 무거운 두 잡에 Zig 빌드 캐시를 넣는다(실측 기반)
- test(ci): mermaid 스모크의 대기 여유를 맞추고 실패 시 값을 남긴다
- refactor(session-host): add prepared destination admission
- feat(chrome): 알림 패널을 픽셀로 스크롤하고 카드가 패널을 넘지 않게 자른다 (SV5a)
- docs(chrome): 상태표시줄이 실제로 간 경로에 맞춰 낡은 예측 둘을 고친다
- fix(chrome): 요청 중 상태바가 사라지면 브랜치 메뉴를 열지 않는다
- fix(chrome): 터미널 탭 바와 도크 뷰 스위처의 높이·시작선을 맞춘다
- docs(chrome): SV5 흡수 여부를 정하고 반대 근거까지 남긴다
- refactor(session-host): add inert RPC response authority
- fix(agent-session): 첫 스캔 중 헤더가 "0개 표시"로 세션 없음처럼 보이던 것을 고친다
- fix(agent-session): 세션 재개를 로그인 셸 경유로 바꿔 Dock 실행에서도 찾게 한다
- fix(agent-session): 구버전 Codex 세션을 살리고 서브에이전트 개수를 카드에 보인다
- fix(agent-session): 도크 첫 진입에 스캔이 돌게 하고 잘림을 화면에 알린다
- docs(agent-session): 스캔 계약을 실측에 맞춰 개정하고 드리프트를 기록한다
- docs(chrome): 컨텍스트 메뉴를 ui 계층 이관 후보로 기록한다
- fix(chrome): 브랜치 메뉴 결함 셋을 고치고 헤드리스 캡처 훅을 더한다
- feat(chrome): 상태바 브랜치를 누르면 브랜치 목록을 띄운다
- fix(chrome): chrome을 내지 않는 시나리오가 smoke 판정에서 실패하던 것을 고친다
- fix(chrome): strip 시나리오에서 도크 chrome을 빼 그림이 제품을 오도하지 않게 한다
- refactor(session-host): seal attach execution transaction
- fix(chrome): Lab strip 색을 지어내지 않고 제품 파생 규칙에서 낸다
- test(chrome): Chrome Lab에 사이드바 strip 시나리오를 더해 5.2 공백을 닫는다
- fix(chrome): 사이드바 셀 scissor를 rich에서도 걸어 카드가 검색바를 덮던 것을 막는다
- docs(perf): scrollback_rewrap 근거 주석에 빌드 모드를 명시한다
- test(terminal): 스크롤백 Find에 perf 예산 게이트를 추가한다
- feat(chrome): 사이드바 막대도 호버하면 진해지게 한다 (SV4 후속)
- fix(chrome): 사이드바 스크롤바를 다시 보이게 하고 그 위 카드 호버를 끈다 (SV4 후속)
- feat(chrome): 사이드바 스크롤바를 잡아 끌 수 있게 한다 (SV4b)
- feat(chrome): 사이드바 스크롤바를 선언된 tree로 옮기고 gutter를 상시 예약한다 (SV4a)
- test(config): reload 테스트가 MARU_CONFIG를 원래 값으로 되돌린다
- fix(config): reload가 pane을 옛 설정으로 재던 것을 고친다
- test(config): status-bar.show가 설정 GUI 행에 나오는지 단언한다
- feat(chrome): 상태표시줄 표시 여부를 설정으로 끌 수 있게 한다
- feat(chrome): 상태바 경로를 끝이 아니라 중간에서 생략한다
- feat(chrome): 소스 컨트롤에 스크롤바를 내고 발행 상태를 두 뷰가 공유하게 한다 (SV3b)
ohah/zntc
- fix(semantic): #4599 소문자로 시작하지 않는 bare JSX 태그의 참조가 안 잡히던 문제
- fix(bundler): #4621 external re-export 가 파싱 불가 출력 / 재export 소실을 내던 문제
- fix(bundler): #4616 리뷰 지적 반영 — 방출 표면 3곳 누락 + 입력 검증 + config DTO
- fix(bundler): #4616 NAPI leak + --globals 축 정정 (rolldown 기준)
- feat(bundler): #4616 external 지정자를 다른 이름으로 방출하는 매핑
- fix(linker): #4600 namespace 부분 멤버 집합이 binding_scanner union 을 덮어쓰던 문제
- fix(bundler): #4607 리뷰 지적 3건 반영 (preserve_symlinks · --fallback · 세그먼트 오탐)
- fix(bundler): #4607 tsconfig paths 가 node_modules 안 import 에도 적용되던 문제
- fix(bundler): #4611 CSS @import 의 bare 지정자가 tsconfig paths 에 가로채이던 문제
- fix(bundler): #4612 URL 참조가 디렉토리 symlink 를 파일로 잡아 빌드가 죽던 문제