2026-08-02

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

요약 (AI 작성)

maru에 세션 아카이브 UI를 처음부터 끝까지 붙인 날입니다. 로컬 세션 아카이브 부트스트랩(#1774)에서 출발해 카드 그룹화, 워크스페이스 범위 필터, 검색 필터, 선택한 로그의 안전한 노출, 상세 탭 열기와 bounded 상세 파싱, 새로고침 컨트롤을 차례로 붙였습니다. 도크가 짧을 때 상세를 감추고 높이에 맞춰 clamp하는 처리, 검색 시 숨겨진 선택 해제, 소스 컨트롤 스크롤 높이 보존, 아카이브 순회의 no-follow 유지, 변경 없는 세션 요약 캐싱도 함께 다뤘고, 아카이브 세션을 활성 pane의 cwd로 한정하도록 고쳤습니다. 파일 트리가 활성 터미널의 cwd를 따라가게 하는 #1780과 그 뷰포트 픽스처 안정화 #1791도 병합됐습니다.

chrome을 Metal UI로 옮기는 토대도 놓았습니다. Metal UI 레이아웃과 시각 게이트를 문서로 정의한 뒤(#1781) typed flex layout 코어(#1782), 중첩 Metal UI rect 트리(#1784), typed pointer interaction seam(#1786), typed UI paint resolver(#1790)를 넣고 Metal overlay lowering을 추출했습니다(#1793). 처음에 기능 브랜치를 대상으로 쌓았던 #1787·#1788·#1789는 닫고 main 대상 PR로 다시 올렸습니다. 검증용으로 test-only Lab lowering seam(#1794)과 결정적 Lab 시나리오, Metal Lab readback 캡처(#1796)를 만들었고, 그 위에서 Session Dock 컴포넌트 트리와 포인터 lifecycle을 연결한 뒤(#1799) 픽셀 단위 스크롤 투영, refresh anchor 보존, archive detail 패널 마운트(#1805)까지 이었습니다. 레거시 tui 설정 항목은 숨겼습니다.

session-host는 generation 소유권(CR3a)을 세웠습니다. 소유권 계약을 정의하고(#1769) skeleton(#1770), generation attachment shell(#1778), batch registry와 adapter를 붙였으며, 초기 snapshot을 generation이 소유하게 했습니다(#1792). ended stream purge를 명세하고 준비했고, ended event hot peek, 공유 stream 연산 permit, client poison 결과 분류(#1767), 실행 중 reconnect 계약 문서(#1766)가 이어졌습니다. 전날 열린 typed control semantics 소비 #1751과 observer로 강등된 터미널의 입력 불가 알림 #1761도 이날 병합됐습니다. 안정성 쪽은 macOS tmp 정리가 살아 있는 host의 endpoint를 지우지 못하게 하고, ~/.cache/maru를 비워도 세션을 잃지 않게 했으며(#1772), 셸 통합 파일이 사라지면 다음 탭에서 다시 만들도록 고쳤습니다(#1773).

파일 패널은 읽기 모드가 문서에 직접 쓴 HTML을 그리게 한 #1764를 병합했고, 문법 목록 잠금을 원문 보존 규칙으로 바꿔 모르는 원문 조각을 그대로 지키게 했습니다(#1765). 리치 모드의 블록 조각에는 렌더 미리보기와 로컬 이미지를 붙이고 반쪽 조각은 미리보기를 감췄습니다(#1768). 테스트에서는 diff 워커 경합으로 죽던 테스트 셋(#1775), Trash 복원 대기, Zig 0.16 sleep API 전환, IPC 없이 session-host 테스트를 돌리는 CI 조정이 있었습니다. ohah.github.io에는 CRD 작성 크론 작업과 워크플로를 설정하는 커밋이 하나 들어갔습니다.

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

커밋

ohah/maru

ohah/ohah.github.io

PR (해당일 생성/머지)

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

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