2026-07-11
날짜는 UTC 기준으로 나눴습니다(9월 22일부터는 한국 시간 기준). 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 목록은 2026-10-06 KST에 GitHub에서 다시 조회해 보강했습니다. 공개 저장소의 기본 브랜치 활동만 포함합니다.
요약 (AI 작성)
maru 인앱 브라우저는 주소창 편집을 Swift에 배선해 클릭, URL 입력, Enter로 페이지를 여는 7e-2b(#1291)와 back·forward·reload 버튼을 붙인 7e-3(#1292)으로 기본 골격을 갖췄습니다. 7e-4는 버튼 hover 커서·하이라이트와 ⌘←/→/R 단축키를 더하고, 손 테스트에서 나온 ⌘R 미동작, 링크 이동 시 주소창 미갱신, web 패널을 보던 중 뜬 종료 확인 창이 Enter를 받지 못하던 문제를 함께 고쳤습니다(#1293). 주소창 편집은 별도 고정 버퍼 대신 find·palette와 같은 공유 OverlayInput을 쓰도록 바꿔 IME 조합 표시를 얻었고, inputFocus에 .addr_edit이 빠져 평문 타이핑이 새던 문제도 고쳤습니다.
새 창·팝업은 Swift 쪽에서 먼저 web Term을 등록하는 ABI(7f-0, #1295), WKUIDelegate.createWebViewWith로 팝업을 새 브라우저 탭에 여는 처리(7f-1, #1296), 위험 스킴을 막는 팝업 URL 정책(7f-2, #1298)으로 들어왔습니다. 마지막 창을 ⌘W나 빨간 버튼으로 닫으면 확인 없이 종료되던 문제는 Cmd+Q 종료 확인으로 합쳤고(#1297), 13차 리뷰 결함 11건과 브라우저 탭 닫기 확인·잘못된 주소 유지·주소창 클릭-어웨이 포커스 수정이 #1300으로 병합됐습니다. 반복되던 포커스 버그는 4g로 묶어, 설계 문서(#1301)와 활성 web surface getter(4g-0, #1302), reconcileWebFocus 불변식(4g-1, #1303), 정리 검토(4g-2, #1304), override 단일 출처화(4g-3, #1306)까지 진행했습니다. 탭·pane 드래그 시각물은 WKWebView에 가리지 않도록 최상위 오버레이 레이어로 옮겼습니다(#1307).
컨트롤 플레인은 에이전트 브라우저 제어를 라이브로 연결했습니다. §9.2·§9.3 설계 문서(#1308, #1313)를 먼저 쓰고, capability nonce를 라이브 auth 경로에 배선한 1e-core(#1309), 응답이 나중에 오는 메서드를 위한 in-flight 레지스트리(#1312), dispatchBrowser가 BrowserOp를 돌려주게 한 5e-1(#1314)과 라우팅 5e-2a(#1315), Zig 쪽 op 큐 marshal 5e-2b-1(#1320), 소켓에서 실제 WKWebView를 구동하는 E2E 5e-2b-2(#1322)까지 병합됐습니다. 15차부터 17차 리뷰 결함(#1311, #1319, #1325)도 이어서 고쳤고, 누적 리뷰용 PR 4개(#1299, #1305, #1310, #1316)는 병합 없이 닫혔습니다.
그 밖에 탭 전환 시 DECSET 2026 동기화 게이트가 잘못 투영돼 화면이 사라지던 버그를 고치고 문서에 반영했으며(#1317, #1318, #1321), 스모크 테스트에서 web 패널이 창 밖으로 삐져나오던 문제를 고쳤습니다(#1324). 설정 화면에는 네비 하단 전체 초기화와 바뀐 행마다 ↺를 두는 기본값 리셋 UX(CS-4-8)가 추가됐습니다(#1323).
공개 커밋 39개, 해당일 생성 또는 병합된 PR 35개를 정리했습니다. PR 생성 34개·병합 31개는 같은 PR이 양쪽에 포함될 수 있습니다.
커밋
ohah/maru
- fix: 17차 /code-review max 결함 6건 (browser 제어 정확성·견고성)
- fix(macos): 스모크 web 패널 삐져나옴 — scripted resize를 실 창 크기로
- feat(settings): 기본값 리셋 UX — 네비 전체 리셋 진입점 + 변경 행 항목별 ↺ (CS-4-8)
- feat(control): 5e-2b-2 — 소켓 browser.* 라이브 제어 E2E (Swift drain + 소켓 스모크)
- docs(io-render-threading): §11.7 정정 — per-surface baseline은 실익 없음(밴드에이드가 최소 해법)
- feat(control): 5e-2b-1 — browser op Zig L4 marshal (op 큐·defer·take/complete ABI)
- fix: 16차 /code-review max 결함 3건 수정 ([1][2][5])
- docs(io-render-threading): §11.7 활성 surface 전환 시 sync 게이트 baseline 재설정 문서화
- fix(macos): 탭 전환 시 화면 소멸(2026 sync 게이트 오투영) 수정
- feat(control): 5e-2a — dispatchAuthenticated가 browser.*를 op로 라우팅 (L2)
- feat(control): 5e-1 — dispatchBrowser가 skeleton 대신 BrowserOp 반환 (L2)
- docs: 5e 라이브 browser.* 배선 상세 설계 (control-plane §9.3, doc-first)
- feat(control): §5-async — deferred marshal (in-flight 레지스트리, 라이브 browser.* 배선 선행)
- fix: 15차 /code-review max 결함 5건 수정 ([0][2][4][10][11])
- feat(control): 1e-core — capability nonce를 라이브 auth 경로에 배선 (browser/write/lifecycle 공통 토대)
- docs: browser capability 발급 UX 결정 반영 (사용자 승인) — §9.2
- docs: 에이전트 브라우저 제어 라이브 e2e 설계 (control-plane §9.2, doc-first)
- feat(macos): 렌더러 슬라이스 — 탭/pane 드래그 시각물을 최상위 오버레이 레이어로 (WKWebView 위)
- fix(macos): Phase 4g-3 — 14차 /code-review max 결함 6건 (focus-sync override 단일 출처)
- docs(macos): Phase 4g-2 — focus-sync 정리 검토 결론 + KVO [7] 해소 (비-동작)
- feat(macos): Phase 4g-1 — 웹↔터미널 포커스 동기 불변식 통합 (reconcileWebFocus)
- feat(macos): Phase 4g-0 — focus-sync 불변식 토대: 활성 web surface getter(any kind)
- docs(web-panel): 웹↔터미널 포커스 동기 불변식 설계 (4g — 흩어진 포커스 패치 통합)
- fix(macos): 브라우저 UX 3건 — 탭 닫기 확인·잘못된 주소 유지·주소창 단축키
- fix(macos): 손 테스트 후속 — 주소창 클릭-어웨이 포커스·브라우저 클릭 활성 동기
- fix: Phase 7 13차 /code-review max 결함 — 확정 11건 수정 (7은 상의 보류)
- feat(macos): Phase 7f-2 — 팝업 대상 URL 정책 게이트 (위험 스킴 차단)
- fix(macos): 마지막 창 닫기(⌘W·빨간버튼·웹뷰탭)를 Cmd+Q 종료 확인으로 합류
- feat(macos): Phase 7f-1 — 새 창/팝업 adopt (WKUIDelegate.createWebViewWith)
- feat(macos): Phase 7f-0 — 새 창/팝업 adopt용 Swift-first web term 등록 ABI
- docs(web-panel): 7f 새 창/팝업 adopt 계획 + host-mediated 브라우저 MCP(에이전트 제어) 설계
- fix(macos): browser ⌘R 미동작 + 링크 이동 시 주소창 미갱신 수정
- fix(macos): 모달을 web 패널 위 최상위 입력 대상으로(⌘Q 종료 모달 Enter 무응답 수정)
- feat(macos): Phase 7e-4 — 주소창 nav 버튼 폴리시 + 키보드 단축키(⌘←/→/R)
- feat(macos): Phase 7e-3 — 주소창 nav 버튼 back/forward/reload (인앱 브라우저 완성)
- docs: 입력 대상 라우팅 통합을 후속 계획으로 기록 (inputFocus switch → activeTextInput 통합)
- refactor(macos): 주소창 편집을 공유 OverlayInput으로 (IME 조합 표시 + DRY) — 사용자 지적 반영
- fix(macos): 7e-2 주소창 편집 입력 버그 — inputFocus에 .addr_edit 추가 (평문 타이핑 라우팅)
- feat(macos): Phase 7e-2b — 주소창 편집 Swift 배선 (포커스 전이 + navigate) = 브라우징 동작
PR (해당일 생성/머지)
상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.