2026-07-28

요약 (AI 작성)

FP16 — 파일 패널을 워크스페이스 Term 으로 통합하고 도크를 탐색기 전용으로 줄이는 대공사 — 를 하루에 끝낸 날입니다. Term 에 파일 entry 소유 슬롯을 만드는 것에서 시작해 entry 창구와 생성 경로, 복원 파이프라인, entry 제거를 차례로 Term 쪽으로 옮기고, 그 반대편에서 도크 editor chrome·기하·드래그 기계와 DockGroup/DockTree, FocusOwner.dock_surface 축, 옛 도크 포맷 읽기 경로를 단계적으로 삭제했습니다. B-4 로 파일 탭을 pane 의 file-term 필드에 영속시키고 FP16d 헤더 밴드를 파일 Term 으로 이관했으며, 창 간 이동에는 경로 유일성 admission 을 넣고 중복 정책을 문서에 적었습니다. 마이그레이션 중간중간 나온 문제 — half-migrated 조회, 파일 탭을 닫을 때 focus 재발급, Esc 복원, 워크스페이스 캡처의 파일 탭 저장, 일괄 삭제의 이중 통지, 활성 브라우저가 마지막 탭일 때 파일 탭이 사라지던 것 — 를 계속 잡았고, /code-review max 를 2차부터 6차까지 돌려 회귀·데이터 유실·누수·크래시를 포함해 매 회 15건 안팎씩 반영했습니다.

chrome 렌더링에는 grapheme cluster 모델을 도입했습니다(CG1). 텍스트 셀 배치를 OS-중립 text_layout 으로 추출하고 chrome 셀 텍스트도 cluster 단위로 그리도록 바꿔, 파일 트리·카드 제목의 NFD 한글이 자모로 흩어져 보이던 것을 완성형으로 합쳐 그립니다. cluster 규율은 경계 가드와 rename 편집 텍스트 렌더 테스트로 고정했고, /code-review max 결함 14건도 함께 반영했습니다.

파일 뷰어와 브라우저도 쓸 만해졌습니다. FP14b 로 이미지를 격리 loadFileURL 로 옮겨 복사를 없애고, 팬/줌을 WebKit 에 맡긴 뒤 주입은 체커 배경만 남겼으며, 트랙패드 핀치 줌을 붙이고 스크롤이 팬 대신 줌으로 걸리던 것과 드래그를 끝낼 때 확대/축소되던 것을 고쳤습니다. FP15 로 동영상·오디오를 파일 탭에서 재생하고, 탐색기가 활성 터미널 cwd 를 따라 펼쳐지도록 했으며(ET-CWD), 브라우저 탭의 URL 을 영속·복원하도록 했습니다(WP-P). session-host 는 외부 채택(adoption) 경로를 마무리해 source schema 봉인과 alias proof·transcript 규약 고정, plan 합성과 metadata winner materialize, typed destination 과 콜백 없는 소유권 이동, paired ownership transfer, combined commit 소유권 확정까지 이었고, allocator 재진입 ownership 창을 닫았습니다.

커밋

ohah/maru

PR (해당일 생성/머지)

repo#상태제목
ohah/maru#1692mergedfeat(session-host): complete adopted combined commit
ohah/maru#1691mergeddocs(file-panel): FP16e 표에서 Side를 보존으로, max_groups를 삭제로 옮깁니다
ohah/maru#1690mergedrefactor(workspace): 옛 도크 포맷 읽기 경로를 제거합니다
ohah/maru#1689mergeddocs(file-panel): 진행 상태 표기를 코드·손 테스트 결과와 맞춥니다
ohah/maru#1688mergedfeat(file-panel): 이미지 팬/줌을 WebKit에 맡기고 주입은 체커 배경만 남깁니다
ohah/maru#1687closedfix(file-panel): 드래그로 끝난 클릭이 더블클릭 줌 토글을 트리거하던 것을 고칩니다
ohah/maru#1686mergedfix(file-panel): 드래그를 끝낼 때 이미지가 확대/축소되던 것을 고칩니다
ohah/maru#1685mergedfix(file-panel): 이미지 스크롤이 팬 대신 줌으로 걸리던 것을 고칩니다
ohah/maru#1684mergedfix(file-panel): 이미지 뷰어에 트랙패드 핀치 줌을 붙입니다
ohah/maru#1683mergedfeat(file-panel): FP14b — 이미지를 격리 loadFileURL로 옮기고 복사를 없앱니다
ohah/maru#1682mergeddocs(session-host): combined commit 소유권을 고정합니다
ohah/maru#1681mergedfeat(session-host): typed adoption destination을 추가합니다
ohah/maru#1680mergedfeat(file-panel): FP15 media — 동영상·오디오를 파일 탭에서 재생합니다
ohah/maru#1679mergedrefactor: 도크 탭 잔재 타입과 안 쓰는 draw layer를 제거합니다
ohah/maru#1678mergeddocs(session-host): adoption commit gate를 세분화합니다
ohah/maru#1677mergedfeat(session-host): 외부 채택 소유권을 콜백 없이 이동합니다
ohah/maru#1676mergedrefactor: 호출자 없는 헬퍼 10개를 제거합니다
ohah/maru#1675mergeddocs(layering): tailWindow 통합 순서를 §7.9에 박고 데드코드 둘을 지웁니다
ohah/maru#1674mergedrefactor(chrome): 텍스트 셀 배치를 OS-중립 text_layout으로 추출합니다
ohah/maru#1673mergedfeat(session-host): 외부 채택 plan을 합성합니다
ohah/maru#1672mergedfix(web-panel): URL 있는 브라우저만 있는 pane에 셸 탭이 끼는 것을 고칩니다
ohah/maru#1671mergedfeat(session-host): 채택 metadata winner를 materialize합니다
ohah/maru#1670mergedtest(chrome): rename 편집 텍스트의 cluster 렌더를 고정합니다
ohah/maru#1669mergedfeat(file-panel): 탐색기가 활성 터미널 cwd를 따라 펼칩니다 (ET-CWD)
ohah/maru#1668mergedfeat(web-panel): 브라우저 탭의 URL을 영속·복원합니다 (WP-P)
ohah/maru#1667mergedfeat(session-host): 외부 source decision을 구현합니다
ohah/maru#1666mergedfix(file-panel): 활성 브라우저가 마지막 탭일 때 파일 탭이 사라지는 것을 고칩니다
ohah/maru#1665mergedfeat(session-host): 외부 Client source fold를 구현합니다
ohah/maru#1664mergeddocs(file-panel): FP16 상태 표기를 코드 실측에 맞춥니다
ohah/maru#1663mergedfeat(session-host): 외부 Client source schema를 봉인
ohah/maru#1662mergeddocs(chrome): 가드 재작성에 맞춰 §3.1b를 동기화합니다
ohah/maru#1661mergedfix(chrome): code-review max 결함 14건을 고칩니다
ohah/maru#1660mergedfeat(session-host): source alias proof를 고정합니다
ohah/maru#1659mergedfeat(session-host): source transcript 규약을 고정합니다
ohah/maru#1658mergedrefactor(session-host): source preflight 경계를 분리합니다
ohah/maru#1657mergedfeat(session-host): inherited event reducer 계약을 닫습니다
ohah/maru#1656mergedtest(chrome): chrome 텍스트 cluster 규율을 경계 가드로 강제합니다
ohah/maru#1655mergedfix(session-host): allocator 재진입 ownership 창을 닫습니다
ohah/maru#1654mergedfeat(chrome): chrome 셀 텍스트도 grapheme cluster 모델로 그립니다 (CG1)
ohah/maru#1653mergedfix(chrome): 파일 트리·카드 제목의 NFD 한글을 완성형으로 합쳐 그립니다
ohah/maru#1652mergedtest(session-host): resolver 픽스처를 pid 재사용에서 격리합니다
ohah/maru#1651mergedfeat(session-host): paired ownership transfer를 구현합니다
ohah/maru#1650mergedrefactor(sidebar): 카드 span 기하를 chrome 함수 하나로 모읍니다
ohah/maru#1649mergedfix(sidebar): 밴드 기하를 클릭 판정 행에 맞춥니다
ohah/maru#1648mergedfeat(file-panel): FP16 — 파일 패널을 워크스페이스 Term으로 통합하고 도크를 탐색기 전용으로 줄입니다