2026-08-24
날짜는 UTC 기준으로 나눴습니다(9월 22일부터는 한국 시간 기준). 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 목록은 2026-10-06 KST에 GitHub에서 다시 조회해 보강했습니다. 공개 저장소의 기본 브랜치 활동만 포함합니다.
요약 (AI 작성)
maru의 편집 버퍼를 persistent rope와 delta로 세우고, selection을 같은 연산에서 밀게 한 날입니다(§3.0·§3.3, #2634). 전날 열린 ⌘F 편집기 문서 검색 #2586도 적대적 검증을 여섯 라운드 거쳐 병합됐습니다. @maru/*는 마커와 장식으로 여러 매치를 동시에 칠하고(#2618), 앱이 자기 패턴을 주입하는 링크 규칙(#2624)과 캔버스가 못 하는 접근성·터치를 DOM이 맡는 구조(#2625)를 얻었습니다. 장식이 무한 렌더 루프를 만들어 유휴 1638fps였던 것을 2fps로 내리고(#2637), 워커 모드에서 open() 직후 22ms 흐리던 것과 IME 회귀 둘을 고쳤습니다.
에이전트 훅은 신원에 host 소유 자리를 만들고(#2617), host가 자기 신원으로 훅 경로를 채우며(#2621) 훅 로그 칸을 만들고 치우고(#2635), GUI가 그것을 읽게 해 host-backed 터미널이 훅 모드로 살게 됐습니다(#2641). maru를 두 개 띄우면 같은 훅 로그를 물던 것(#2608)과 업그레이드 뒤 뜬 자식만 신원을 못 받던 것(#2623)도 고쳤습니다. 턴 쪽은 전날 열린 AT0 #2601로 턴 링의 주인을 세션으로 옮기고, 훅을 턴 경계 트리거로 삼아 신원·base·턴 키를 싣게 했습니다(AT1, #2643). 턴 제목을 링에 싣는 AT2 #2649는 이날 PR이 열렸습니다. 밀려난 세션이 조용히 사라지던 것에는 신원 자취를 남겼습니다(#2620).
Windows는 전날 열린 #2599로 창이 터미널과 도크로 갈렸고, 도크에 파일 트리가 뜨고(#2607) 입력이 사각형별로 갈리며(#2612) 디바이더로 도크 폭이 바뀌고(#2614) 도크가 파일 트리와 소스 컨트롤을 갈아 끼우게 했습니다(#2628). 이어 창이 사이드바 띠까지 셋으로 갈리고(#2638), 프레임리스 창·테마 색·아이콘(#2639)과 사이드바 헤더 아이콘 줄(#2650)이 섰습니다. 탐색기는 CIM §9 조건을 항목별로 닫고(#2619) Chrome Lab 시나리오와 시각 골든을 얻었으며(#2622), resize 뒤 클릭이 죽던 발행 신선도 문제를 고쳤습니다. 소스 컨트롤 파일 행은 목록 타이포·전경 위계로 옮겼습니다(#2602).
session-host는 공개 attach 루프를 실제 TTY에 연결하고(#2609), P5c3d 호환성 게이트를 완성했으며(#2630), P5d SSH 릴리스 게이트를 정의하고 localhost SSH로 번들 attach를 검증했습니다(#2646). 모바일은 한글이 완성되는 대로 나가고 지우면 실제로 지워지게 했고(#2640), 글자 크기와 줄 높이를 갈랐습니다. advance의 소수까지 ABI로 받아 근사를 없앤 #2652도 들어갔습니다.
공개 커밋 104개, 해당일 생성 또는 병합된 PR 54개를 정리했습니다. PR 생성 50개·병합 50개는 같은 PR이 양쪽에 포함될 수 있습니다.
커밋
ohah/maru
- feat(lab): 작은 터미널 폰트 축을 시나리오와 골든으로 연다
- feat(metrics): advance 의 소수까지 ABI 로 받아 근사를 없앤다
- fix(test): 새 e2e 테스트의 세 자리를 굳힌다 — 뮤테이션·흔적·여유
- test(agent-hooks): 「수동 검증」 두 항목을 자동으로 만든다
- fix(windows): macOS 호출부가 usize 인데 공유 인자가 u32 였다 — 뿌리를 막는다
- feat(windows): 사이드바 헤더에 아이콘 줄이 뜬다
- fix(session-host): reuse strict CR6e validators
- fix(session-host): defer TX after control completion
- feat(session-host): add P5d SSH release gate
- docs(session-host): define P5d SSH release gates
- docs(windows): 로컬 초록이 중간 커밋 둘을 깨 놓고 있었다
- test(windows): 판정 셋이 죽어 있었다 — 적대적 검증 3 회
- feat(windows): 프레임리스 창과 캡션 버튼
- fix(windows): 파일 트리에 아이콘이 하나도 없었다 — 분류가 macOS 에 갇혀 있었다
- test(renderer): 아이콘 codepoint 를 이름으로 고른다
- fix(renderer): 합성 글리프가 한 아틀라스 슬롯을 공유했다 — codepoint 로 키잉한다
- feat: 크롬 색이 테마를 탄다 — §2m.33 의 부채를 갚는다
- fix(windows): 상대 import 가 macOS 아티팩트를 깼다 — 배럴로 든다
- feat(windows): 사이드바 카드에 글자가 뜬다 — 인코더/디코더 한 쌍을 뺀다
- fix(file-tree): 발행 신선도가 기하도 보게 한다 — resize 뒤의 클릭이 죽었다
- test(mobile): 갈라 놓은 두 손잡이를 계약으로 고정한다
- fix(mobile): 글자 크기와 줄 높이를 갈라 놓는다
- fix(scm): 예약을 총합에서 한 번만 올린다 — 열마다 올리면 틈이 벌어진다
- fix(scm): 이어 그리는 글자의 자리를 role 크기로 잡는다 — 상한이 작은 폰트를 못 덮었다
- docs(agent-hooks): AT1 서술을 사실에 맞추고, 실측이 뒤집은 단정 하나를 고친다
- feat(session): 턴 식별자를 링에 싣는다 (AT1, 계약 §3.1)
- feat(agent-hooks): 세션이 시작되면 base 를 찍는다 — 첫 턴이 안 뜨던 것 (AT1)
- fix(agent-hooks): 훅 모드에 신원 소스가 없었다 — payload 가 정하게 한다 (AT1)
- feat(agent-hooks): GUI 가 host 칸을 읽는다 — host-backed 터미널이 훅 모드로 산다
- fix(mobile): 한글이 완성되는 대로 나가고, 지우면 실제로 지워진다
- fix(agent-hooks): 남은 호출부 하나가 옛 신원 타입을 넘기고 있었다
- fix(agent-hooks): 판정에 유예와 위장 방어를 더한다 — 남은 두 창을 덮는다
- fix(agent-hooks): 살아 있는 host 의 로그를 지울 뻔했다 — 판정 근거를 바꾼다
- feat(agent-hooks): host 가 자기 훅 로그 칸을 만들고 치운다
- feat(windows): 창이 셋으로 갈린다 — 사이드바 띠
- feat(chrome): 밀려난 턴 기록 고지를 캡처로 찍는다
- fix(packages): 장식이 무한 렌더 루프를 만들고 있었다
- refactor(packages): 장식 비교를 한 함수로 모은다 — 두 겹 방어의 대가를 없앤다
- docs(windows): 사이드바 ⒝ 결정 — Windows 관례를 따른다
- docs(windows): 사이드바 ⒝ 의 전제가 틀렸다 — 맥은 이미 프레임리스다
- docs(windows): 왼쪽 사이드바를 계획에 넣는다 — 두 번째 공백
- feat(editor): 한 번의 편집이 selection을 함께 민다 — delta와 역연산 (§3.3)
- feat(editor): 편집 가능한 버퍼가 섰다 — persistent rope, 스냅숏이 O(1)이다 (§3.0)
- feat(windows): 도크가 뷰를 갈아 끼운다 — 파일 트리 ↔ 소스 컨트롤
- test(runner): 「골라졌는가」와 「돌았는가」는 다른 질문이다 — 통과 수도 센다
- feat(session-host): complete P5c3d compatibility gate
- fix(test): 이음매 테스트를 집계 스위트에서 뺀다 — 프로세스 전역을 흔든다
- fix(test): 내가 더한 테스트가 뒤 테스트들의 HOME 을 지운 채로 나갔다
- test(agent-hooks): 이름의 이음매를 건너는 테스트가 하나도 없었다
- fix(agent-hooks): 업그레이드 뒤 뜬 자식만 훅 신원을 못 받고 있었다
- fix(packages): 조합 중 Cmd 를 통째로 삼키던 것 — 바이트 경로만 막는다
- fix(packages): IME 회귀 둘 — 조합이 두 번 보이고, Cmd 조합이 글자를 뒤집었다
- revert(lab): 잡음 예산을 되돌린다 — 진단이 틀렸고 러너는 0 픽셀로 맞는다
- fix(lab): 번들 폰트를 구성원까지 등록하고, 잡음과 회귀를 나눠 본다
- fix(lab): 도크 골든을 제품 폰트로 찍는다 — 그동안 지키지 못하던 축이 결함을 드러냈다
- docs(plans): 이미 끝난 일을 «남았다» 고 적은 줄 셋을 고친다
- docs: 편집기 검색이 들어왔는데 그것을 서술하는 문서 셋이 낡았다
- fix(editor): 5·6라운드 검증 — 차단 결함 하나, 무판정 축 넷, 그리고 깎아내기 (§5.1)
- fix(editor): 4라운드 검증 — 낡은 값으로 가운데를 잡던 결함, 무판정 축 넷, 검증 도구 구멍 넷 (§5.1)
- fix(editor): 3라운드 검증 — 과대 주장 세 번째, 판정 안 하던 판정자 셋, 영속 산출물 (§5.1)
- fix(editor): 2라운드 검증 — 내가 들여온 회귀 둘, 세그폴트 하나, 뚫린 판정자 넷 (§5.1)
- fix(editor): 적대적 검증이 잡은 것 — 제품 결함 8, 판정 못 하던 판정자 3, 거짓 주장 4 (§5.1)
- feat(editor): ⌘F가 편집기 문서를 검색한다 — 있던 기능이 아니라 조용히 틀린 것이었다 (§5.1)
- fix(packages): 데모가 안 뜨던 것 — 구독을 마운트 뒤로 옮기고 스모크를 세운다
- fix(session): 밀려난 기록을 목록이 찬 뒤에도 말한다 (적대적 검증)
- docs(chrome): 없는 불변식에 이름 붙인 주석 둘과 게이트 수를 고친다
- fix(session): 밀려난 세션이 조용히 사라졌다 — 신원 자취를 남긴다
- feat(packages): 접근성과 터치 — 캔버스가 못 하는 일을 DOM 이 한다
- fix(windows): 창 밖에서 떼면 도크가 창을 삼켰다 — 유효 크기를 되쓴다
- feat(windows): 디바이더를 끌면 도크 폭이 바뀐다
- feat(packages): 링크 규칙 — 앱이 자기 패턴을 주입한다
- docs(lab): 도크 시나리오의 face 서술을 단일 출처와 맞춘다 — 제품은 사용자 폰트다
- feat(file-tree): 스크롤된 트리 시나리오를 더한다 — 부분 가림 행이 눌리지 않는지
- docs(file-tree): 행 card 주석이 가리키던 호버 색의 주인을 사실로 고친다
- feat(file-tree): Chrome Lab 탐색기 시나리오와 시각 골든 — 첫 캡처에서 스펙 위반을 잡았다
- feat(agent-hooks): host 가 자기 신원으로 훅 경로를 채운다 — 발급 순서를 당겨서
- feat(agent-hooks): 훅 신원에 host 소유 자리를 만든다 — 계약이 GUI 만 알고 있었다
- refactor(packages): 코어에 카운터를 더하는 대신 이미 있는 것을 쓴다
- fix(session-host): TerminalCore 새 필드를 handoff 목록과 코덱에 등록한다
- feat(packages): 마커와 장식 — 여러 매치를 동시에 칠한다
- test(file-tree): 세대만 오른 뒤의 클릭을 고정한다 — 원래 죽어 있었다
- feat(file-tree): CIM §9 조건을 항목별로 닫는다 — 창 비활성과 발행 세대
- docs(file-tree): 셀 투영의 소비자 서술을 사실에 맞춘다 — 삭제 대상이 아니다
- docs(session-host): 백로그 목록이 이미 구현된 셋을 붙들고 있었다
- docs(structure): debug_fixtures 게이트 수를 다시 잰다(57 → 68)
- refactor(chrome): 상태바 캡처 게이트 넷을 제품 tick 에서 걷어낸다
- fix(windows): 그리지 않은 행이 눌렸다 — 그린 수를 히트테스트에 준다
- feat(windows): 입력이 갈린다 — 포인터는 사각형으로
- docs(development-commands): 파일 하나만 돌리는 개발 루프를 적는다
- docs(agent-hooks): codex 오류 턴을 «미검증»에서 «확정된 한계»로 종결한다
- refactor(scm): 캡처 전용 탭 강제를 제품 tick 에서 걷어낸다
- docs(scm): 하니스가 커밋 tree 를 빌리는 이유와 그 한계를 적는다
- test(scm): 캡처 하니스가 진짜 tree 와 놓친 턴을 심는다
- fix(packages): 워커 모드에서 open() 직후 화면이 22ms 흐렸다
- feat(session-host): 공개 attach 루프를 연결한다
- fix(agent-hooks): maru 를 두 개 띄우면 두 인스턴스가 같은 훅 로그를 물던 것
- test(scm): 목록 타이포 변경에 맞춰 도크 시각 골든을 갱신한다
- feat(scm): 소스 컨트롤 파일 행을 목록 타이포·전경 위계로 옮긴다
- feat(windows): 도크에 파일 트리가 뜬다 — 아틀라스를 나눠 쓴다
- fix(mobile): 설정 화면의 숫자 입력과 키보드 자리
- test(windows): 속 빈 판정 둘과, 존재하지 않던 결함 하나
- feat(windows): 창이 터미널과 도크로 갈린다
- refactor(scm): 활성 링을 한 번만 조회하고, 놓친 턴을 지우지 않는 이유를 적는다
- feat(scm): 턴 링의 주인을 세션으로 옮긴다 (AT0)
PR (해당일 생성/머지)
상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.