2026-08-02

요약 (AI 작성)

세션 아카이브 UI 를 처음부터 끝까지 만든 날입니다. 로컬 세션 아카이브 부트스트랩에서 출발해 카드 그룹화, 워크스페이스 범위 필터, 검색 필터, 선택 항목의 로그 안전 노출, 상세 탭 열기와 bounded 상세 파싱, 새로고침 컨트롤을 차례로 붙였습니다. 도크가 짧을 때 상세를 감추고 높이에 clamp 하는 처리, 검색 시 숨겨진 선택 해제, 소스 컨트롤 스크롤 높이 보존, 아카이브 순회의 no-follow 유지, 변경 없는 세션 요약 캐싱 같은 세부도 함께 다뤘고, 아카이브 세션을 활성 pane 의 cwd 로 스코프하도록 고쳤습니다.

동시에 chrome 을 Metal UI 로 옮기는 토대를 놓았습니다. Metal UI 레이아웃과 시각 게이트를 문서로 정의한 뒤 typed flex layout 코어, 중첩 Metal UI rect 트리, typed UI paint resolver, typed pointer interaction seam 을 넣고 Metal overlay lowering 을 추출했습니다. 검증용으로 test-only Lab lowering seam 과 결정적 Lab 시나리오, Metal Lab readback 캡처를 만들고 Lab 카드 clip 기하와 시나리오 액션 seam 을 테스트로 덮었습니다. 그 위에서 Session Dock 컴포넌트 트리를 연결하고 픽셀 단위 스크롤 투영과 refresh anchor 보존, archive detail 패널 마운트까지 이었으며, 레거시 tui 설정 항목은 숨겼습니다.

session-host 는 generation 소유권(CR3a)을 새로 세웠습니다. 소유권 계약을 정의·확정하고 skeleton 과 generation attachment shell, batch registry 와 adapter 를 붙였으며 초기 snapshot 의 소유를 generation 이 갖도록 했습니다. 함께 ended stream purge 를 명세하고 준비했으며 ended event hot peek 과 공유 stream 연산 permit, client poison 결과 분류, 실행 중 reconnect 계약 정의가 이어졌습니다. 안정성 쪽은 tmp 정리가 살아 있는 host 의 endpoint 를 지우지 못하게 하고 캐시를 비워도 세션을 잃지 않게 했으며, 셸 통합 파일이 사라지면 다음 탭에서 다시 만들도록 고쳤습니다.

파일 패널의 리치 모드는 문법 목록 잠금을 원문 보존 규칙으로 대체해 모르는 조각을 그대로 지키도록 바꿨고, 블록 조각에 렌더 미리보기와 로컬 이미지를 붙이되 반쪽 조각은 미리보기를 감추도록 했으며, 읽기 모드가 문서에 직접 쓴 HTML 을 그리도록 신뢰 shell 삽입의 단일 예외를 열었습니다. CI·테스트에서는 Zig 0.16 sleep API 전환, diff 워커 경합으로 죽던 테스트, Trash 복원 대기, cwd follow 뷰포트 픽스처 안정화, IPC 없이 session-host 테스트를 돌리는 조정이 있었습니다.

커밋

ohah/maru

PR (해당일 생성/머지)

repo#상태제목
ohah/maru#1805mergedfeat(chrome): mount archive detail panel
ohah/maru#1804mergedfeat(chrome): add archive detail panel component
ohah/maru#1803mergedfeat(chrome): preserve session dock refresh anchor
ohah/maru#1802mergedfeat(chrome): Session Dock pixel scroll projection
ohah/maru#1801mergedfeat(session-host): prepare ended stream purge
ohah/maru#1800mergeddocs(agent): SessionDock pixel scroll과 refresh anchor를 명시
ohah/maru#1799mergedfeat(chrome): SessionDock 컴포넌트 트리와 포인터 lifecycle 연결
ohah/maru#1798mergedfeat(session-host): ended event hot peek 추가
ohah/maru#1797mergedfeat(session-host): add shared stream operation permits
ohah/maru#1796mergedfeat(chrome): add Metal Lab readback capture
ohah/maru#1795mergeddocs(session-host): specify ended stream purge
ohah/maru#1794mergedfeat(chrome): add test-only Lab lowering seam
ohah/maru#1793mergedrefactor(chrome): extract Metal overlay lowering
ohah/maru#1792mergedfeat(session-host): own generation initial snapshots
ohah/maru#1791mergedtest(file-tree): stabilize cwd follow viewport fixture
ohah/maru#1790mergedfeat(chrome): add typed UI paint resolver
ohah/maru#1789closedfeat(chrome): add test-only Lab lowering seam
ohah/maru#1788closedrefactor(chrome): extract Metal overlay lowering
ohah/maru#1787closedfeat(chrome): add typed UI paint resolver
ohah/maru#1786mergedfeat(chrome): add typed pointer interaction seam
ohah/maru#1785mergedfeat(session-host): generation batch adapter 연결
ohah/maru#1784mergedfeat(chrome): add nested Metal UI rect tree
ohah/maru#1783mergedfeat(session-host): add generation batch registry
ohah/maru#1782mergedfeat(chrome): add typed flex layout core
ohah/maru#1781mergeddocs(chrome): define Metal UI layout and visual gates
ohah/maru#1780mergedfix(file-tree): follow active terminal cwd
ohah/maru#1779mergeddocs(session-host): CR3a-2b 소유권 게이트를 확정합니다
ohah/maru#1778mergedfeat(session-host): generation attachment shell을 추가합니다
ohah/maru#1777mergedtest(app-session): Zig 0.16 sleep API를 사용합니다
ohah/maru#1776mergedtest(file-panel): Trash 복원 완료까지 기다립니다
ohah/maru#1775mergedtest(app-session): diff 워커 경합으로 죽던 테스트 셋을 고칩니다
ohah/maru#1774mergedfeat(agent): bootstrap local session archive
ohah/maru#1773mergedfix(shell-integration): 통합 파일이 사라지면 다음 탭에서 다시 만듭니다
ohah/maru#1772mergedfix(session-host): 캐시를 비워도 살아 있는 세션을 잃지 않게 합니다
ohah/maru#1771mergeddocs(session-host): CR3a-2 소유권 계약을 닫습니다
ohah/maru#1770mergedfeat(session-host): add CR3a generation ownership skeleton
ohah/maru#1769mergeddocs(session-host): CR3a 소유권 계약을 정의합니다
ohah/maru#1768mergedfeat(file-panel): 리치 조각에 렌더 미리보기와 로컬 이미지를 붙입니다
ohah/maru#1767mergedfeat(session-host): client poison taxonomy를 구현합니다
ohah/maru#1766mergeddocs(session-host): 실행 중 reconnect 계약을 정의합니다
ohah/maru#1765mergedfeat(file-panel): 문법 잠금을 걷어내고 모르는 원문 조각을 보존합니다