2026-07-10
요약 (AI 작성)
Phase 5 — 브라우저 제어 코어와 maru-app:// 신뢰 서빙 — 을 통째로 끝낸 날입니다. 5a 에서 browser.* 스키마·디스패치·authz 를 헤드리스로 세운 뒤, 5c-1 경로 샌드박스와 CSP 를 L2 순수 보안 코어로 놓고 5c-2 를 a(realpath 로 symlink 탈출을 막는 asset resolve 보안 코어) → b(C-ABI export 로 Swift 핸들러 브리지) → c(WKURLSchemeHandler + 트러스트 분기) 순으로 쌓았습니다. 신뢰 웹 브리지도 5b-1 디스패치 코어(control_bridge) 위에 5b-2 Swift 배선(isolated world + origin 검증 + 격리 E2E)을 얹었고, 5d 에서 실 WKWebView API 로 browser.* 제어 코어와 fixture E2E(BrowserControl)를 완성했습니다. 그 사이 10·11·12차 /code-review max 가 짚은 결함(active_term remap 회귀와 CSP doc-sync, 신뢰 서빙 경로 6건, 브리지·서빙·fixture 5건)을 차례로 반영했습니다.
같은 날 인앱 브라우저 UI(7e)도 첫 삽을 떴습니다. 7e-0 에서 ephemeral WKWebsiteDataStore 로 untrusted 데이터를 격리하고, 7e-1a 로 Swift KVO → Zig per-surface 저장을 잇는 nav 상태 파이프라인을 놓은 뒤, 7e-1b 읽기전용 주소창 밴드를 Zig GPU 셀로 렌더했습니다. 이어 7e-2a 로 주소창 편집 모드의 Zig 코어(상태·스킴 정책·라우팅·렌더)를 만들고, 7e-2b Swift 배선(포커스 전이 + navigate)이 PR 로 머지되면서 실제 브라우징이 동작하기 시작했습니다.
웹 Term 쪽 마무리와 버그 수정도 함께 있었습니다. 4e 9차 리뷰 결함 9건(web Term 공유 소비자 kind 분기)을 정리하고 4e-5 로 웹 브라우저 탭 생성을 command 화(new_web_tab, env 훅 승격)했습니다. 웹 패널 divider 는 seam 노출 회귀를 고치면서 시각 gap 과 grab 폭을 분리해 hitTest 가 통과하도록 손봤고, hover resize 커서 미표시는 알려진 한계로 문서에 남겼습니다. 그 밖에 read_error 를 검증 없이 종료로 처리해 살아 있는 셸을 죽이고 좌측 탭이 닫히던 pty 버그를 잡았습니다. 블로그 저장소에는 monthly-opensource 의 electron-mcp-server 문서 갱신이 있었습니다.
커밋
ohah/maru
- feat(macos): Phase 7e-2a — browser 주소창 편집 모드 Zig 코어 (상태·스킴 정책·라우팅·렌더)
- feat(macos): Phase 7e-1b — browser 웹 패널 읽기전용 주소창 밴드 렌더 (Zig GPU 셀)
- fix(macos): /code-review high 후속 — pending-close 무효화 결함 2건 + 트레이드오프 문서화
- fix(pty): read_error 무검증 종료로 산 셸 죽이고 좌측 탭 닫히던 버그
- feat(macos): Phase 7e-1a — web 패널 nav 상태 파이프라인 (Swift KVO → Zig per-surface 저장)
- feat(macos): Phase 7e-0 — browser 패널 untrusted 데이터 격리 (ephemeral WKWebsiteDataStore)
- fix: Phase 5 12차 /code-review max 결함 — 브리지/서빙/fixture 5건 수정
- feat(macos): Phase 5d — browser.* 제어 코어 실 WKWebView API + fixture E2E (BrowserControl)
- feat(macos): Phase 5b-2 — 신뢰 웹 브리지 Swift 배선 (isolated world + origin 검증 + 격리 E2E)
- feat(session): Phase 5b-1 — 신뢰 웹 브리지 디스패치 코어 (control_bridge, L2 헤드리스)
- fix(macos): Phase 5c-2 11차 /code-review max 결함 — 신뢰 서빙 경로 6건 수정 (+ 1 defer)
- feat(macos): Phase 5c-2c — maru-app:// WKURLSchemeHandler + 트러스트 분기 + placeholder asset
- feat(macos): Phase 5c-2b — maru-app:// asset resolve C-ABI export (Swift 핸들러 브리지)
- feat(macos): Phase 5c-2a — maru-app:// asset resolve 보안 코어 (realpath symlink 탈출 방어)
- fix: Phase 5 10차 /code-review max 결함 — active_term remap(회귀) + CSP doc-sync
- feat(session): Phase 5c-1 — maru-app:// 경로 샌드박스 + CSP (L2 순수 보안 코어)
- feat(session): Phase 5a — browser core (browser.* 스키마·디스패치·authz, 헤드리스)
- docs(web-panel): divider hover resize 커서 미표시를 알려진 한계로 기록 (§5)
- feat(macos): 웹 패널 divider grab을 시각 gap과 분리 — seam_edges hitTest 통과
- fix(macos): 웹 패널 divider seam 노출 — dt/2가 기본 dt=1에서 0이던 회귀 + gap 최소화
- docs(observability): GUI inspector 설계 방향 동기화 (관전형 HTML·웹 패널)
- fix(macos): Phase 4e 9차 /code-review max 결함 9건 — web Term 공유 소비자 kind 분기
- feat(macos): Phase 4e-5 — 웹 브라우저 탭 생성 command화 (new_web_tab, env 훅 승격)