2026-08-26
날짜는 UTC 기준으로 나눴습니다(9월 22일부터는 한국 시간 기준). 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 목록은 2026-10-06 KST에 GitHub에서 다시 조회해 보강했습니다. 공개 저장소의 기본 브랜치 활동만 포함합니다.
요약 (AI 작성)
maru의 편집기 커서가 움직이기 시작한 날입니다. 이동 일습·랩 시각 행·스크롤 앵커를 넣고(§3.2·§4.1c·§4.1g, #2718), 저장 안 한 편집을 dirty 표시와 닫기 보호로 알리며(#2725), 복사·붙여넣기·잘라내기가 멀티 커서를 알고(#2731) 삭제가 낱말·줄 단위를 알게 했습니다(#2739). 판정자를 뮤턴트로 전수 훑어 도구가 열한 번 거짓말한 것도 고쳤습니다(#2714). 전날 열린 접근성 서술자의 host 연결 #2703(스냅숏·ABI v173·Swift 어댑터)과 「턴이 끝나는 그 순간」을 지키게 한 #2707도 병합됐고, 넓힌 봉인 조건 때문에 셸 전용 턴이 사라지던 후속 문제도 고쳤습니다.
session-host는 알림 축을 세웠습니다. bounded notification journal(#2722), stable OSC 알림 admit(#2726), 알림 메타데이터 전달, macOS 알림 전달(#2733), GUI 히스토리 투영(#2734), cold notification 응답 라우팅까지 이어졌습니다. 회복 가능한 spawn 실패가 앱 abort로 승격되던 것, P5d 게이트가 정상 서명을 "runtime 없음"으로 읽던 것, 쓰기만 되던 incident 진단을 고쳤고(#2727), poison이 어느 불변식에서 났는지 남기게 했습니다(#2730). GUI 앱의 진단을 /dev/null 대신 파일로 남기고(#2729), 화면 코덱을 OS 중립 자리로 옮겼으며(S11-3), session host 기본값의 출처와 override를 reset에서도 보존했습니다. G3 release 계약을 닫고(#2740), 버전 단일 출처를 macOS 산출물에 잇고(#2741) 검증된 draft를 덮어쓰지 않고 게시하는 CI를 넣었습니다(#2743). 성공한 upgrade를 실패로 읽던 자리를 닫는 #2742와 서명을 고정 태그 워크플로로 제한하는 #2745는 이날 열렸습니다.
Windows는 전날 열린 하단 상태표시줄 #2705(W8.9)를 병합하고, 스크롤바를 띄웠으며(W8.10, #2723), maru install-cli가 돌게 했습니다(W10, #2720). 판정 각본이 제품에서도 돌고 있던 것을 고치면서 에이전트 카드·그룹(#2732)과 정렬 토글(#2738)이 눌리게 했습니다. 훑는 동안 창이 멈추던 것을 제출과 수령을 갈라 고치는 #2746은 이날 열렸습니다. 파일 트리는 발행 비교가 두 좌표계를 견주고 있어 좌클릭이 영영 안 열리던 문제를 고쳤습니다(#2744). AT3b를 짜기 전에 FSEvents를 재 보고 가정 둘이 갈린 것을 문서로 남겼고(#2721), FSEvents가 설계상 손실이 있다는 점에서 tree 제거의 전제를 다시 보는 #2724는 이날 열렸습니다.
공개 커밋 62개, 해당일 생성 또는 병합된 PR 38개를 정리했습니다. PR 생성 33개·병합 34개는 같은 PR이 양쪽에 포함될 수 있습니다.
커밋
ohah/maru
- fix(file-tree): 누른 파일과 열리는 파일이 갈릴 수 있었다 — down 의 신원을 up 이 대조한다
- fix(file-tree): 좌클릭이 영영 안 열렸다 — 발행 비교가 두 좌표계를 견주고 있었다
- feat(windows): 에이전트 정렬 토글이 눌린다
- ci(release): publish verified drafts without clobber
- build(release): wire version SSOT into macOS artifacts
- docs(session-host): close G3 release contract
- feat(editor): 삭제가 낱말·줄 단위를 안다 — 이동 일습의 거울 (§3.2)
- feat(config): retain session host overrides across reset
- test(windows): 5~7차 — 개수 뒤에 있는 것들
- test(windows): 4차 — 그룹이 여럿 접혔을 때
- test(windows): 스캐폴딩 게이트 자체가 새고 있었다
- test(windows): 에이전트 클릭 적대적 검증 — 셋을 더 찾았다
- fix(windows): 판정 각본이 제품에서도 돌고 있었다 + 에이전트 카드·그룹이 눌린다
- feat(config): preserve session host default provenance
- fix(session-host): 새 진단 선언을 declaration 재고에 등록한다
- feat(session-host): poison 이 어느 불변식에서 났는지 남긴다 — 결론만 있고 이유가 없었다
- feat(session-host): route cold notification responses
- feat(session-host): project stable notifications into GUI history
- fix(build): keep macOS target checks SDK-neutral
- feat(session-host): deliver macOS notifications
- feat(editor): 복사·붙여넣기·잘라내기가 멀티 커서를 안다 (§3.4)
- feat(platform): GUI 앱의 진단을 파일로 남긴다 — /dev/null 로 사라지던 자리
- fix(session-host): 새 테스트와 impure 짝을 경계 재고에 반영한다
- feat(session-host): incident 를 읽을 수 있게 한다 — 쓰기만 되던 진단은 잔해였다
- fix(session-host): 회복 가능한 spawn 실패가 앱 abort 로 승격됐다 — 아무것도 안 잡은 «.shell» 을 손상으로 읽었다
- fix(session-host): P5d 게이트가 정상 서명을 «runtime 없음» 으로 읽고 /private 링크를 다른 파일로 셌다
- feat(session-host): deliver stable notification metadata
- test(windows): 스크롤바 4차 — 끝까지 갔을 때
- test(windows): 스크롤바 3차 — 안 물어본 둘
- test(windows): 스크롤바 적대적 검증 — 1차가 적은 세 구멍을 메웠다
- feat(windows): 스크롤바가 뜬다 (W8.10)
- feat(session-host): admit stable OSC notifications
- feat(editor): 저장 안 한 편집을 알린다 — dirty 표시와 닫기 보호 (file-panel.md §1)
- docs(plans): 6번 실측 — 앱도 못 받았고, 파 보니 TCC 승인이 재설치마다 끊어진다
- docs(plans): ⑹ 을 코드로 확인해 줄인다 — 위험은 설치 로직이 아니라 «테스트가 잃는 규칙» 이다
- docs(plans): 원인은 서명이 아니라 TCC 승인이었다 — 요구사항이 하나 늘고, 정규식은 제품에서 뺀다
- docs(plans): 블랙박스 셋을 실측으로 닫는다 — Post 시점·FSEvents 전달·배경화 판별
- docs(plans): 「구간이 거짓」을 다시 잰다 — 274 가 아니라 305 였고,
exec는 도구 이름이 아니다 - docs(plans): 「구간이 거짓」의 근거를 세기별로 나눠 적는다 — 하나는 안 잰 것이다
- docs(plans): AT3b 를 실측 위에서 다시 짠다 — 적대적 검증이 설계를 여섯 군데 바꿨다
- docs(plans): AT3b 를 짜기 전에 FSEvents 를 재 본다 — 가정 둘이 갈렸다
- feat(cli): maru install-cli 가 Windows 에서 돈다 (W10)
- feat(session-host): add bounded notification journal
- feat(editor): 커서가 움직인다 — 이동 일습·랩 시각 행·스크롤 앵커 (§3.2·§4.1c·§4.1g)
- test(session-host): gate host-backed input parity
- refactor(session-host): 화면 코덱을 OS 중립 자리로 옮긴다 (S11-3)
- docs(session-host): 기본값 전환의 선결은 «검증 수단» 이다
- docs(windows): 시작 스캔이 느리다는 것은 안 재고 적은 말이었다
- fix(windows): 경로 구분자를 타깃이 아니라 데이터에서 정한다
- test(windows): 낡은 사각형을 수치로 잡는다 — 캡처만 잡던 것
- docs(windows): §2m.61 에 적대적 검증 절을 더한다
- test(windows): 상태바 적대적 검증 — 셋을 더 찾았다
- feat(windows): 하단 상태표시줄이 선다 (W8.9)
- docs(session-host): 이 작업의 값을 정확히 적고 시계 제약을 더한다
- docs(session-host): incremental checkpoint 구동 계약을 먼저 적는다
- docs(plans): 조기 반환이 막고 있던 턴이 넷 중 셋이었다 — 실측을 적는다
- fix(agent): 넓힌 봉인 조건이 호출자에서 막혀 셸 전용 턴이 사라졌다
- fix(agent): 「턴이 끝나는 그 순간」을 지키지 않아 사본·세션·셸 수가 어긋났다
- fix(session-host): report daemon startup readiness
- test(editor): 판정자를 뮤턴트로 전수 훑고, 도구가 열한 번 거짓말한 것을 고쳤다
- feat(platform): 접근성 서술자를 host 로 연다 — 스냅숏·ABI v173·Swift 어댑터
- fix(session-host): preserve selection during autoscroll
PR (해당일 생성/머지)
상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.