2026-08-25
날짜는 UTC 기준으로 나눴습니다(9월 22일부터는 한국 시간 기준). 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 목록은 2026-10-06 KST에 GitHub에서 다시 조회해 보강했습니다. 공개 저장소의 기본 브랜치 활동만 포함합니다.
요약 (AI 작성)
maru의 네이티브 편집기가 실제로 편집을 하게 된 날입니다. caret·타이핑·undo·저장이 들어오고, 다음 일치를 찾아 커서를 하나 더 놓는 다중 커서까지 붙었습니다(#2670). 확정 텍스트가 조합을 시작한 곳으로 가도록 IME 고정을 편집기도 지키게 했고, 저장이 사용자의 끝 개행 편집을 되돌리던 것과 출하 빌드에서 사라지는 단언에 기대던 전제를 진짜 검사로 바꿨습니다. 같은 날 Windows는 앱 모양을 갖췄습니다. 사이드바 카드와 헤더 아이콘이 눌리고(#2657), +가 세션을 만들고 카드가 전환하며(#2659), 도크와 사이드바가 창 단위로 굴러가고(#2665, #2667), 트리 폴더가 펼쳐지고, 에이전트 세션 도크에 진짜 세션 목록이 뜨면서 크롬 한글이 두부로 나오던 font id 충돌을 고쳤습니다(#2688). 헤더 아이콘 줄은 창 버튼과 같은 띠에 놓았고(#2699), 하단 상태표시줄을 세우는 W8.9 #2705는 이날 PR이 열렸습니다.
에이전트 쪽은 전날 열린 AT2 #2649로 턴 제목을 링에 싣고, 턴이 만진 파일을 직접 캡처해 ✎가 내 것과 남의 것을 가르게 했으며(AT3, #2677), 펼친 턴의 파일마다 누가 바꿨는지 말하고(#2686) 턴의 셸 명령 수를 고지했습니다(AT4, #2692). codex 훅이 낡은 신뢰 값 때문에 하나도 돌지 않던 것을 알리고 고쳤으며(#2669, #2676), 방금 승인한 사람에게 「승인하라」고 말하던 것도 고쳤습니다(#2687). codex 오류 턴은 세트를 늘려도 못 닫는다는 실측을 박았습니다. 「턴이 끝나는 그 순간」을 지키지 않아 사본·세션·셸 수가 어긋나던 문제를 고치는 #2707은 이날 열렸습니다.
session-host는 checkpoint coordinator(#2655)와 atomic checkpoint file adapter를 넣고, 배치가 바뀌면 checkpoint가 그것을 알게 했으며(#2693), background workspace checkpoint와 최종 checkpoint 전 종료 게이트를 걸었습니다(#2702). runtime observation cache를 세워 공유하고 변하지 않은 소스는 건너뛰게 했고, CLI가 앱이 띄운 host를 못 찾던 것(S11-0), runtime list의 window title(S11-1), attach의 --stream(S11-2, #2696)이 이어졌습니다. host를 못 띄웠는데 4초를 기다리던 자리도 닫았습니다(#2689). maru ssh는 끊김을 45초 안에 알고 스스로 다시 붙게 했습니다(#2674). incremental checkpoint 구동 계약 문서 #2697은 이날 열렸습니다.
접근성은 서술자 계약을 생산자까지 먼저 열었고(#2701), 스냅숏·ABI v172·Swift 어댑터로 host에 잇는 #2703은 이날 열렸습니다. 도크는 SCM·AI 세션에도 이름과 제목이 마지막까지 남는 좁은 폭 열화 규칙을 적용했고(#2662), Lab은 pane 합성 축을 열어 도크가 상태바를 덮지 않는지 골든이 보게 했으며(#2671), 픽스처가 /tmp에 남긴 2만 개를 거뒀습니다(#2661). 모바일은 긴 안내가 잘리는 대신 접히고(#2681), 글자 폭을 한 함수로 모았습니다.
공개 커밋 93개, 해당일 생성 또는 병합된 PR 63개를 정리했습니다. PR 생성 59개·병합 57개는 같은 PR이 양쪽에 포함될 수 있습니다.
커밋
ohah/maru
- fix(session-host): select full host scrollback
- fix(session-host): forward word separators to host
- test(session): consume core command effects
- fix(session-host): route clear through authoritative reader
- test(session-host): gate observation cache artifact
- perf(session-host): skip unchanged observation sources
- feat(session-host): share runtime observation cache
- feat(session-host): add runtime observation cache core
- feat(session-host): gate quit on final checkpoint
- feat(chrome): 접근성 서술자 계약을 연다 — 생산자까지, 읽는 쪽은 아직 없다
- feat(session-host): wire background workspace checkpoints
- test(chrome): 글자 뷰포트를 잊을 수 없게 만든다 — 판정자 둘
- docs(windows): 하단 상태표시줄이 계획에 없다 — 세 번째 공백
- feat(windows): 헤더 아이콘 줄을 창 버튼과 같은 띠에 놓는다
- fix(session-host): --stream 이 help 원장과 파싱 규칙을 지키게 한다
- feat(session-host): attach 가 화면 wire 를 그대로 흘린다 — --stream (S11-2)
- feat(agent): 턴의 셸 명령 수를 고지한다 (AT4 §5) —
·가 왜 붙었는지 말한다 - docs(session-host): checkpoint 쓰기 소유자를 Zig 로 확정한다
- feat(session-host): 배치가 바뀌면 checkpoint 가 그것을 안다 (P4 C3-1)
- docs(mobile): 새
ssh.*키를 모바일이 안 가져오는 이유와 함께 적는다 - feat(ssh): maru ssh 가 끊김을 45초 안에 알고 스스로 다시 붙는다 — 죽음을 앞당기는 쪽과 되살리는 쪽을 함께 넣는다
- docs(windows): 크롬 테마 부채를 다시 쟀다 — 계획 행이 낡아 있었다
- docs: 중립 백엔드 이동은 "순수 이동" 이 아니다 — 실제로 해 보고 적는다
- docs: 어제 머지분이 안 닿은 문서 두 곳을 맞춘다
- fix(windows): 판정용 앞부분이 안 잘린 문자열의 끝 글자를 벗겼다
- docs(windows): 어느 값이 맞는지는 std 자신이 정해 뒀다
- docs(windows): 같은 읽기 함정이 하나 더 있다 — 재지 못해 안 고쳤다
- test(windows): 목록이 빈 이유를 정확히 말한다
- test(windows): 이력이 없는 기계는 실패가 아니다
- test(windows): 굽기 실패를 따로 센다 — 셰이핑 판정은 그것을 못 본다
- docs(windows): §2m.57 — 목록이 들어오고 한글이 두부였던 길
- feat(windows): 에이전트 도크에 진짜 세션 목록이 뜬다
- fix(windows): 크롬의 한글이 두부였다 — 두 font id 체계의 값 범위가 겹친다
- fix(windows): 이력 파일을 처음 읽자 프로세스가 죽었다
- fix(session-host): host 를 못 띄웠는데 4 초를 기다리고 있었다
- test(editor): 뮤턴트를 안 돌린 판정자를 전수로 훑었다 — 둘이 판정하지 않았다
- fix(editor): 저장이 사용자의 끝 개행 편집을 되돌렸다 (§3.5)
- fix(editor): 확정 텍스트가 조합을 시작한 곳으로 간다 — IME 고정을 편집기도 지킨다
- feat(editor): 편집기가 편집기가 됐다 — caret·타이핑·undo·저장 (§3.2·§3.3·§3.5)
- fix(editor): 단언은 출하 빌드에서 사라진다 — 전제를 진짜 검사로 (§3.0·§9.1)
- feat(editor): 커서가 여럿이 된다 — 다음 일치 추가와 편집 가능한 문서 (§9.1·§3.0)
- feat(editor): 다음 일치를 찾아 커서를 하나 더 놓는다 — L2 계산 (§9.1)
- feat(agent): 펼친 턴의 파일마다 누가 바꿨는지 말한다 (AT3 §4.2) — 그리고 AT2 를 닫는다
- fix(agent-hooks): 방금 승인한 사람에게 「승인하라」고 말하고 있었다
- docs: 참고 도구의 이름을 문서에서 뺀다 — 논거는 그대로 둔다
- fix(chrome): 도크 목록의 글자가 아무 데서도 안 잘리고 있었다
- fix(golden): 도크 합성 골든이 clip 을 못 봤다 — 무는 crop 을 세운다
- feat(session-host): runtime list 가 window title 을 낸다 (S11-1)
- refactor(mobile): 글자 폭을 한 함수로 모으고 접기를 누적으로 바꾼다
- fix(agent): 캡처가 FIFO 에 UI 를 붙잡히고, 경로 이스케이프를 안 풀고, symlink 차단을 «없음» 으로 적었다
- fix(agent): 캡처가 회전 로그를 지금으로 읽고 Codex 상대경로를 잃었다
- feat(agent): 턴이 만진 파일을 직접 캡처한다 (AT3) — ✎ 가 내 것과 남의 것을 가른다
- feat(mobile): 긴 안내는 잘리는 대신 접힌다
- feat(windows): 에이전트 세션 도크가 뜬다 — 셋째 칸이 빈 도크였다
- feat(session-host): add atomic checkpoint file adapter
- test(agent-hooks): 차단기의 전제를 실측하고, 끄기 경로의 빈자리를 메운다
- fix(agent-hooks): 적대적 검증 — 쓰기 전에 «고쳤다» 고 말하고 있었다
- feat(agent-hooks): 낡은 codex 신뢰 값을 고친다 — 값 하나당 한 번만
- feat(windows): 트리 폴더가 펼쳐진다 — 셰브런이 죽은 컨트롤이었다
- fix(mobile): 영어 문구도 같은 말투로 맞춘다
- fix(session-host): override 의 빈 값과 socket 예외를 적는다
- fix(session-host): CLI 가 앱이 띄운 host 를 못 찾던 것 (S11-0)
- fix(chrome): 브랜치 이름이 오른쪽 묶음을 침범하고 뷰 바 아이콘이 아래로 쏠렸다
- feat(windows): 사이드바도 굴러간다 — 앞부분이 아니라 창이다
- docs(agent-hooks): codex 오류 턴을 실측으로 박는다 — 세트를 늘려도 못 닫는다
- fix(agent-hooks): 어긋난 수가 latch 로 남아 멀쩡해진 뒤에도 거짓 알림이 됐다
- fix(agent-hooks): 적대적 검증 — 이웃 키를 우리 값으로 읽었고, tick 배선이 안 물렸다
- fix(agent-hooks): codex 훅이 하나도 안 돌고 있었다 — 낡은 신뢰 값을 알린다
- feat(lab): pane 합성 축을 연다 — 도크가 상태바를 덮지 않는지 골든이 본다
- feat(session-dock): 카드 여백·간격을 한 단 줄인다 — 배치는 그대로, 밀도만
- refactor(agent): 도달할 수 없는 턴 비교 가지를 걷어낸다
- feat(windows): 도크가 굴러간다
- fix(dock): 사다리를 두 층이 나눠 갖던 구멍 둘을 막는다 — 적대적 검증
- docs(dock): 두 도크의 열화 규칙을 계약으로 적는다
- feat(dock): SCM·AI 세션에도 같은 사다리 — 이름과 제목은 마지막까지 남는다
- fix(test): pid 를 뒤에서 읽어 «-0» 접미를 pid 로 착각했다
- fix(test): 픽스처가
/tmp에 남기던 자리를 거둔다 — 2 만 개가 쌓여 있었다 - test(windows): 세션 목록에서 결함 넷 — 적대적 검증
- feat(windows): 세션이 여럿이다 — + 가 만들고 카드가 전환한다
- fix(file-tree): 라벨 바닥을 "보장"이 아니라 "목표"로 적고, 판정자가 제품 폭을 재게 한다
- feat(file-tree): 좁은 폭의 열화 규칙 — 이름은 마지막까지 남는다
- fix(session): 배치 안에서 다음 턴이 시작되면 옛 스냅샷에 새 턴 키가 붙었다
- docs(session): 적대적 검증 — 제목의 암묵 의존과 앞서 나간 상태 표기
- docs(plans): AT2 를 완료로 맞추고 두 규율을 적는다
- fix(session): base 에 직전 턴의 키가 붙었다 — 그리고 턴 제목을 싣는다 (AT2)
- docs(agent-hooks): 미래를 현재형으로 적어 없는 배관을 있다고 읽히던 다섯
- fix(file-tree): 열린 파일의 밴드를 없앤다 — 그 색이 곧 호버 색이라 포인터 자리를 거짓으로 말했다
- feat(windows): 사이드바 카드와 헤더 아이콘이 눌린다
- feat(session-host): add checkpoint coordinator
- test(windows): 판정 다섯이 속 비었다 — 적대적 검증 3 회
- fix(mobile): 화면 문구를 데스크톱과 같은 말투로
- feat(windows): 헤더 아이콘을 1.7× 로 굽는다 — 헤더가 세 줄이 된다
- fix(scm): 이름을 자기 예약만큼으로 잘라 꼬리와 겹치지 않게 한다
PR (해당일 생성/머지)
상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.