2026-07-29
요약 (AI 작성)
파일 패널의 편집 모드 방향을 갈아엎은 날입니다. 오랫동안 붙들고 있던 라이브 프리뷰를 폐기로 확정하고 네이티브·웹 양쪽 구현을 걷어낸 뒤, 그 자리에 셋째 모드로 리치 편집 모드를 들였습니다. 툴바를 가진 리치 편집기를 붙이고 네이티브 모드 체계에 편입했으며, 리치 왕복에서 데이터가 파괴되던 것과 편집 결과가 읽기 프리뷰에 반영되지 않던 문제를 고쳤습니다. 콘텐츠 영역 UI 스택은 React·Tailwind·shadcn 으로 정하고 실제 빌드까지 세웠습니다. 함께 mode 설정 경로를 열고 스모크를 두 모드로 재구성했으며, macOS app smoke 를 전용 HOME 으로 격리하고 터미널 테마 syntax 색을 4층으로 검증하도록 했습니다. 코드 리뷰가 찾은 결함 13건도 반영했습니다.
선택 영역을 에이전트에 보내는 기능(send-selection)도 설계에 들어갔습니다. 대상 선택 메뉴의 모양과 다중 선택 범위를 명시하고, 페이로드 조립과 안전 계약을 순수 모듈로 분리해 두었습니다.
session-host 는 외부 RX 경로의 권위와 소유권을 봉인하는 작업이 이어졌습니다. bounded demux·RX provenance·buffered RX turn 계약을 차례로 닫고 sealed external RX 분류기와 classified RX intent scratch, atomic live RX ledger batch, persistent buffered live owner 를 구현했으며, aggregate ledger commit 과 destination ownership 을 봉인했습니다. 수명주기 쪽은 owner lifecycle gate 순서를 재설계하고 teardown 권위를 callback 전에 동결하도록 바꿨으며, non-adopted verdict 를 같은 prepare 호출에서 확정하도록 했습니다. host-backed Find 하이라이트를 화면 좌표계와 맞추는 수정과 bounded observer 샘플 지터를 허용하는 CI 완화도 있었습니다.
문서는 대청소를 했습니다. 탐색기를 file-explorer.md 로 분리하고 폐기된 도크 구현 서술을 걷어내 이력은 Git 에 맡겼으며, 구현이 끝난 절의 상태 표기를 코드에 맞추고 PR 라벨 목록과 문서 상태 표기 규율을 명문화했습니다. zntc 에서는 #4595 splitting:false 동적 import 가 진단 없이 새던 것을 단일 권위 지점에서 인라인을 강제해 막고, #4596 JSX namespace 멤버가 합성 import span 오염으로 미선언 식별자가 되던 문제를 고쳤습니다. 커밋 목록 아래쪽의 fix: file-found Badge vertical (#273098) 은 vscode 계열 포크 여러 곳에 같은 커밋이 퍼져 검색에 중복으로 잡힌 항목입니다.
커밋
ohah/maru
- feat(session-host): seal aggregate destination ownership
- feat(session-host): seal aggregate ledger commits
- feat(session-host): add classified RX intent scratch
- feat(session-host): add persistent buffered live owners
- feat(session-host): add atomic live RX ledger batches
- build(web): React·Tailwind 스택을 세웁니다
- docs: 파일 패널 콘텐츠 영역 UI를 React·Tailwind·shadcn으로 정합니다
- docs(send-selection): 대상 선택 메뉴 모양과 다중 선택 범위를 명시합니다
- feat(send-selection): 페이로드 조립과 안전 계약을 순수 모듈로 둡니다
- docs: 선택 영역을 에이전트에 보내는 기능을 설계합니다
- fix(file-panel): 코드 리뷰가 찾은 결함 13건을 고칩니다
- feat(file-panel): 헤더 mode 선택기에 호버 강조와 클릭 커서를 붙입니다
- fix(file-panel): 리치 왕복에서 데이터가 파괴되는 것을 막습니다
- fix(file-panel): 리치 편집 결과가 읽기 프리뷰에 반영되지 않던 문제를 고칩니다
- build: macos-app-build가 실행 가능한 앱 번들을 만들도록 고칩니다
- feat(file-panel): 툴바를 가진 리치 편집기를 붙입니다
- feat(file-panel): 리치 모드를 네이티브 모드 체계에 추가합니다
- docs(file-panel): 리치 편집 모드를 셋째 모드로 결정합니다
- docs(file-panel): 스모크 시나리오와 검증 계약을 구현과 맞춥니다
- fix(file-panel): 파일 패널 mode 설정 경로를 열고 스모크를 두 모드로 재구성합니다
- test(file-panel): macOS app smoke를 전용 HOME으로 격리합니다
- test(file-panel): 터미널 테마 syntax 색을 4층으로 검증합니다
- refactor(file-panel): 네이티브에서 라이브 프리뷰 모드를 제거합니다
- refactor(file-panel): 웹에서 라이브 프리뷰 구현을 걷어냅니다
- docs(file-panel): 라이브 프리뷰를 폐기로 확정합니다
- feat(session-host): seal buffered RX turn authority
- docs(session-host): close buffered RX turn contract
- feat(session-host): classify sealed external RX frames
- docs(session-host): close bounded demux contract
- feat(session-host): bind external RX provenance
- fix(session-host): host-backed Find 하이라이트를 화면 좌표계와 맞춥니다
- docs(session-host): close RX provenance contract
- feat(session-host): project persistent owner events safely
- docs(file-panel): 탐색기를 file-explorer.md로 분리합니다
- docs(file-panel): 폐기된 도크 구현 서술을 걷어내고 이력을 Git으로 보냅니다
- docs(session-host): close owner projection contract
- docs(pr-checklist): PR 라벨 목록과 문서 상태 표기 규율을 명문화합니다
- docs: 구현 완료된 절의 상태 표기를 코드와 맞춥니다
- fix(ci): tolerate bounded observer sample jitter
- feat(session-host): freeze teardown ownership safely
- docs(session-host): freeze teardown owners before callbacks
- docs(session-host): reorder owner lifecycle gates
- feat(session-host): commit non-adopted suffixes