2026-08-03
요약 (AI 작성)
세션 도크의 텍스트 렌더링을 시스템 UI 수준으로 끌어올린 날입니다. system UI chrome text shaper 를 추가하고 system UI 글리프를 public font API 로 rasterize 하도록 바꾼 뒤, measured dock text 와 icon lowering 을 분리해 frame 에 연결하고 renderer 쪽에 measured chrome glyph slot 보존과 rich text raster 크기 오버라이드를 뒀습니다. 이어 typography 계약을 고정하고 text role 전파와 보존된 text 제약을 넣었으며, text worker 를 분리하고 시스템 text worker 경계를 이식 가능하게 만들어 도크를 비동기 system text 로 안정화했습니다. 검증은 Retina 도크 text 정렬 고정, icon-only text lowering 고정, 리뷰 가능한 폰트 스펙시먼 추가로 받쳤고, cached pixel glyph text 토대도 함께 놓았습니다.
도크 크롬 자체도 정밀하게 다듬었습니다. 액션을 generic Button 으로 분리하고 라벨·그룹을 측정해 간격을 토큰화했으며, role line box 로 컨트롤을 정렬하고 유틸리티 아이콘을 중앙에 맞추며 refresh 글리프의 안정적인 슬롯과 인셋을 잡았습니다. 도크 헤더 경계 보존과 경계 대비 강화, 시각 대비 복구, chrome 기하 bound, 폭과 목록 밀도 보정, 시각 계층 보정이 이어졌고, 레거시 archive 탭 수명주기는 제거했습니다. 기능으로는 세션 상세를 인라인으로 펼치고, 오래된 아카이브 스캔을 취소하며, 터미널 재개 액션의 문구를 명확히 했습니다. 테스트는 폰트 배율별 도크 기하, 확장 스크롤 앵커, 상세 close/reopen AppKit E2E, archive detail 상태 캡처, AppKit 아카이브 액션 검증으로 덮었습니다.
session-host 는 ended purge 를 트랜잭션으로 완성했습니다. commit 트랜잭션과 게이트를 정의·분할하고 quarantine 부트스트랩과 projection plan(권위 없는 계획으로 분리), commit 권위 준비, finalization 권위 2단계 고정, Client substrate 완성, 오케스트레이션 마무리까지 이었습니다. 함께 generation capability facade 를 canonical registry 로 격리하고 input facade 와 2c3 facade 슬라이스를 정의했으며, Client 생성 정책을 문서로 정하고 caller closure·guard 정책·receiver 정책을 테스트로 강제했고 ClientSlot teardown 에 동시성 fence 를 넣었습니다. CI 는 변경 영역별 job 실행으로 바꾸고 changed-area 게이트 우회를 막았으며 session-host 매트릭스를 이름 붙인 병렬 job 으로 나눴습니다. 파일 패널에서는 읽기 모드에 새던 빈 요소를 없애고 통과시킨 태그에 모습을 줬으며, 읽기 링크 열기를 사용자가 실제로 누른 클릭으로 제한했습니다.
커밋
ohah/maru
- test(agent-session): isolate dock geometry from archive scanner
- test(boundaries): refresh agent archive probe inventory
- test(agent-session): verify dock geometry across font scales
- feat(session-host): add generation capability facade
- test(agent-session): cover expanded scroll anchor
- fix(chrome): preserve dock header boundaries
- feat(session-host): add generation input facade
- docs(session-host): define 2c3 facade slices
- test(agent-session): cover snapshot replace stale up
- fix(chrome): strengthen dock boundary contrast
- fix(chrome): restore session dock visual contrast
- test(chrome): cover session detail close reopen
- fix(chrome): bound session dock chrome geometry
- refactor(chrome): remove legacy archive tab lifecycle
- feat(session-host): complete ended purge orchestration
- fix(chrome): center session dock utility icons
- fix(chrome): align session dock header utilities
- feat(chrome): stabilise session dock metrics
- fix(file-panel): 읽기 모드에 새던 빈 요소를 없애고 통과시킨 태그에 모습을 줍니다
- feat(session-host): finalize ended purge client substrate
- feat(chrome): tokenise session dock action spacing
- feat(chrome): measure session dock action groups
- feat(chrome): measure session dock action labels
- feat(chrome): 세션 도크 action을 Button으로 분리한다
- fix(ci): 시스템 text worker 경계를 이식 가능하게 한다
- fix(chrome): 세션 도크 text worker를 분리한다
- test(chrome): Retina 도크 text 정렬을 고정한다
- test(boundaries): app session reflection 인벤토리를 갱신한다
- fix(chrome): role line box로 도크 control을 정렬한다
- fix(chrome): session dock 레퍼런스 계층을 정렬한다
- test(chrome): icon-only text lowering을 고정한다
- fix(macos): system UI glyph를 public font API로 rasterize한다
- feat(macos): session dock measured text를 frame에 연결한다
- feat(macos): measured dock text와 icon lowering을 분리한다
- feat(macos): session dock system text artifact를 만든다
- feat(renderer): measured chrome glyph slot을 보존한다
- feat(macos): system UI chrome text shaper를 추가한다
- feat(renderer): rich text raster 크기 오버라이드를 둔다
- feat(chrome): 보존된 세션 도크 text 제약을 추가한다
- feat(session-host): prepare ended purge commit authority
- feat(chrome): 세션 도크 text role을 전파한다
- docs(session-host): freeze client lifecycle owner descriptor
- docs(chrome): 세션 도크 typography 계약을 고정한다
- docs(session-host): split ended purge finalization authority
- feat(agent): 세션 도크 시각 계층을 보정한다
- test(session-host): harden reflection digest scanner
- test(session-host): harden Client construction closure
- test(session-host): close Client construction callers
- docs(session-host): define Client construction policy
- fix(chrome): share dock lab draw capacity
- fix(chrome): size lab draw buffers for dock disclosures
- feat(agent): expand session detail inline
- ci(workflows): close changed-area gate bypasses
- ci(workflows): split session-host matrix into named jobs
- docs(ci): correct perf workflow trigger description
- ci(workflows): run jobs by changed area
- docs(agent): define inline session expansion
- feat(agent): cancel stale archive scans
- fix(agent): widen and compact session dock
- fix(agent): clarify terminal resume action
- test(agent): capture archive detail states
- test(session-host): keep product leaf as positive SSOT
- test(session-host): rely on product leaf positive gate
- test(session-host): match trusted leaf fixture signature
- test(session-host): enforce Client guard policies
- test(chrome): add reviewable font specimens
- test(session-host): inventory Client receiver policies
- fix(chrome): preserve rich text placement in Lab
- feat(session-host): fence ClientSlot teardown operations
- feat(chrome): add cached pixel glyph text foundation
- fix(chrome): calibrate session dock controls
- test(chrome): cover session dock refresh slot states
- fix(chrome): use stable refresh icon slot
- fix(chrome): inset session dock refresh glyph
- test(session-host): bootstrap owner fixtures explicitly
- feat(session-host): add ended purge quarantine bootstrap
- docs(chrome): propose rich button boundary
- ci: session-host 게이트를 병렬 matrix job으로 분리한다
- feat(chrome): verify archive actions in AppKit
- docs(session-host): define ended purge commit transaction
- feat(session-host): add ended purge projection plan
- docs(session-host): split ended purge commit gate