2026-08-20

날짜는 UTC 기준으로 나눴습니다(9월 22일부터는 한국 시간 기준). 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 목록은 2026-10-06 KST에 GitHub에서 다시 조회해 보강했습니다. 공개 저장소의 기본 브랜치 활동만 포함합니다.

요약 (AI 작성)

maru가 에이전트 훅 축을 열고 Windows에 파일 트리와 소스 컨트롤을 띄운 날입니다. 훅을 상태·알림·턴의 단일 소스로 두는 계약을 먼저 적고(#2465), 훅 이벤트를 나르는 채널의 순수 코어(AH1, #2471)를 세워 적대적 검증으로 굳힌 뒤(#2476), claude의 settings.json(#2482)과 codex(#2495)에 훅을 설치하고 신뢰를 기록했습니다. 게이트는 기본 꺼짐이고, 끄면 설치한 것을 지웁니다(#2498). 컨트롤 플레인은 적대적 검증을 여러 회차 거쳐 원격 축을 SSH 채널 하나 더로 정하고(S10a, #2472), 같은 연결에 컨트롤 채널을 열고(S10b-1, #2481), ABI·펌프가 그것을 알게 하고(S10b-2, #2493), 폰이 닿을 중계 maru control --stdio를 냈습니다(S10c, #2503). 서버가 열자는 채널은 §5.1대로 거절하게 했습니다.

Windows는 파일 트리가 화면에 뜨고(#2473) 선택 띠까지 그려졌으며(#2479), 그리기 스모크를 27초에서 4초로 줄였습니다. git을 부를 캡처 러너를 CreateProcessW와 익명 파이프로 세우고(#2484) 환경 상속, stdin NUL, stdout·stderr 분리 같은 함정을 적대적으로 검증한 뒤, git 백엔드(#2496)와 스테이지·커밋 쓰기 경로(#2501)가 Windows에서 돌고 소스 컨트롤이 화면에 떴습니다(#2506). 죽은 경로를 그린 소스 컨트롤 스모크는 되돌렸고(#2508), 기본으로 쓰이는 PowerShell 5.1을 실제로 띄워 봤습니다(#2462). session-host는 CR5 다중 runtime ledger 계약(#2474)과 runtime set의 reconnect job 결속, 다중 runtime 퇴역 권위 준비를 거쳐 ordered runtime reconnect 트랜잭션을 완성했습니다(#2505).

모바일은 전날 열린 첫 접속 서버 지문 승인 #2459를 병합하고, 왜 못 붙었는지 화면이 말하게 했으며(#2464), 조합 중인 한글을 편집 칸에 보이게 하고 확정을 잃지 않게 했습니다(#2466). 안드로이드 ELF를 16KB 페이지로 정렬하고, 테마를 모든 화면에 적용했습니다. 폰트는 빈 칸을 공백으로 셰이핑해 줄 뒤쪽 합자가 죽는 것을 막고(#2469) 4글자 합자의 왼쪽 오버항을 3칸까지 허용했습니다(#2477). 소스 컨트롤 탭 개수를 목록 모델 없이 세어 매 프레임 378µs를 12.8µs로 줄였고(#2489), 누른 적 없는 버튼의 뗌이 링크 Cmd+클릭을 두 번 열던 문제(#2499)와 이모지 cluster 묶기를 text.emoji-width=wide에서도 켜는 수정(#2500)도 들어갔습니다. 언어를 박은 문자열에 게이트를 세우는 #2491과 네이티브 편집기에서 텍스트를 고르고 복사하는 #2507은 이날 PR이 열렸습니다.

공개 커밋 118개, 해당일 생성 또는 병합된 PR 51개를 정리했습니다. PR 생성 49개·병합 49개는 같은 PR이 양쪽에 포함될 수 있습니다.

커밋

ohah/maru

PR (해당일 생성/머지)

상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.

저장소PR해당일 활동상태대상 브랜치제목
ohah/maru#2508생성 · 병합mergedmainrevert(windows): 죽은 경로를 그린 소스 컨트롤 스모크를 되돌린다
ohah/maru#2507생성mergedmainfeat(editor): 네이티브 편집기에서 텍스트를 고르고 복사한다 (§4.1g)
ohah/maru#2506생성 · 병합mergedmainfeat(windows): 소스 컨트롤이 Windows 화면에 뜬다 (W8.4 마무리)
ohah/maru#2505생성 · 병합mergedmainfeat(session-host): complete ordered runtime reconnect transactions
ohah/maru#2504생성 · 병합mergedmainfeat(session-host): publish shared reconnect client once
ohah/maru#2503생성 · 병합mergedmainfeat(control-plane): 폰이 닿을 중계를 낸다 — maru control --stdio (S10c)
ohah/maru#2502생성 · 병합mergedmainfeat(session-host): 다중 runtime 퇴역 권위를 전부 먼저 준비한다
ohah/maru#2501생성 · 병합mergedmainfeat(windows): git 쓰기 경로가 Windows 에서 돈다 (W8.4)
ohah/maru#2500생성 · 병합mergedmainfix(terminal): 이모지 cluster 묶기를 text.emoji-width=wide 에서도 켠다
ohah/maru#2499생성 · 병합mergedmainfix(input): 누른 적 없는 버튼의 뗌을 앱에 보내지 않는다 — 링크 Cmd+클릭이 브라우저를 두 번 열었다
ohah/maru#2498생성 · 병합mergedmainfeat(agent-hooks): 게이트를 끄면 설치한 것을 지운다
ohah/maru#2497생성 · 병합mergedmainfeat(chrome): 탭 바 상태를 강제하는 캡처 훅을 넣는다(탭 수·버튼 호버)
ohah/maru#2496생성 · 병합mergedmainfeat(windows): git 백엔드가 Windows 에서 돈다 (W8.4)
ohah/maru#2495생성 · 병합mergedmainfeat(agent-hooks): codex 에 훅을 설치하고 신뢰를 기록한다 (AH2b)
ohah/maru#2494생성 · 병합mergedmainfix(mobile): 컨트롤 상수 드리프트를 게이트가 잡게 한다
ohah/maru#2493생성 · 병합mergedmainfeat(mobile): ABI·펌프가 컨트롤 채널을 안다 (S10b-2)
ohah/maru#2492생성 · 병합mergedmainfix(windows): 캡처 러너가 자식 stdin 을 NUL 로 준다 — null 핸들은 EOF 가 아니다
ohah/maru#2491생성mergedmaintest(i18n): 컴파일러가 절반만 막는다 — 언어를 박은 문자열에 게이트를 세운다
ohah/maru#2490생성 · 병합mergedmaintest(windows): 캡처 러너의 환경 처리를 적대적으로 검증한다 — 빈 값과 상속 온전성
ohah/maru#2489생성 · 병합mergedmainperf(scm): 탭 개수를 목록 모델 없이 센다 — 매 프레임 378µs 를 12.8µs 로
ohah/maru#2488생성 · 병합mergedmainfeat(windows): 캡처 러너가 환경을 상속한 뒤 덮어쓴다 — 없으면 git 이 멈춘다
ohah/maru#2487생성 · 병합mergedmainfix(font): 글리프 격자 덤프에 실제 셀 메트릭을 실어 배치를 믿을 수 있게 한다
ohah/maru#2486생성 · 병합mergedmainfeat(session-host): bind CR5 runtime set to reconnect job
ohah/maru#2485생성 · 병합mergedmainfix(ssh): 서버가 열자는 채널을 §5.1 대로 거절한다
ohah/maru#2484생성 · 병합mergedmainfeat(windows): git 을 부를 캡처 러너를 세운다 — CreateProcessW + 익명 파이프 (W8.4 준비)
ohah/maru#2483생성 · 병합mergedmainfix(scm): 탭 개수와 스크롤 상한을 활성 탭에서 떼어낸다 — 히스토리가 (0)이고 안 굴렀다
ohah/maru#2482생성 · 병합mergedmainfeat(agent-hooks): claude settings.json 에 훅을 설치한다 — 게이트는 기본 꺼짐 (AH2a)
ohah/maru#2481생성 · 병합mergedmainfeat(ssh): 같은 연결에 컨트롤 채널을 하나 더 연다 (S10b-1)
ohah/maru#2480생성 · 병합mergedmainfix(i18n): 한 화면에 서는 문구 중 일부만 옮겨 언어가 섞였다 + digest 를 반사 자리로 좁힌다
ohah/maru#2479생성 · 병합mergedmainfeat(windows): 파일 트리 선택 띠가 화면에 뜬다 — 새 쿼드 파이프라인 없이 (W8.2 ⒞)
ohah/maru#2478생성 · 병합mergedmainfix(chrome): 탭바 ✕·‹·› 를 3칸 버튼의 가운데로 옮겨 좌우 패딩을 맞춘다
ohah/maru#2477생성 · 병합mergedmainfix(font): 4글자 합자의 왼쪽 오버항을 3칸까지 허용해 첫 글자 잘림을 없앤다
ohah/maru#2476생성 · 병합mergedmainfix(agent-hooks): AH1 코어를 적대적 검증으로 굳힌다
ohah/maru#2475생성 · 병합mergedmainperf(windows): 그리기 스모크를 27 초에서 4 초로 줄이고 캡처 하네스를 저장소에 둔다
ohah/maru#2474생성 · 병합mergedmainfeat(session-host): CR5 다중 runtime ledger 계약 추가
ohah/maru#2473생성 · 병합mergedmainfeat(windows): 파일 트리가 Windows 화면에 뜬다 (W8.2 ⒝)
ohah/maru#2472생성 · 병합mergedmaindocs(control-plane): 원격 축을 정한다 — SSH 채널 하나 더 (S10a · M3a)
ohah/maru#2471생성 · 병합mergedmainfeat(agent-hooks): 훅 이벤트를 나르는 채널의 순수 코어 (AH1)
ohah/maru#2470생성 · 병합mergedmaintest(mobile): 데모 바이트가 들고 있던 판정을 테스트로 옮긴다
ohah/maru#2469생성 · 병합mergedmainfix(font): 빈 칸을 공백으로 셰이핑해 줄 뒤쪽 합자가 죽는 것을 막는다
ohah/maru#2468생성 · 병합mergedmainrefactor(session): 파일 트리의 그리기와 히트테스트를 한 산술로 모은다 (W8.2 ⒝ 준비)
ohah/maru#2467생성 · 병합mergedmainfeat(mobile): 테마를 모든 화면에 · 데모 텍스트 제거 · 자판 버튼
ohah/maru#2466생성 · 병합mergedmainfix(mobile): 조합 중인 한글을 편집 칸에 보이게 하고 확정을 잃지 않는다
ohah/maru#2465생성 · 병합mergedmaindocs: 에이전트 훅을 상태·알림·턴의 단일 소스로 두는 계약을 적는다
ohah/maru#2464생성 · 병합mergedmainfeat(mobile): 왜 못 붙었는지 화면이 말한다 (S9b-3b)
ohah/maru#2463생성 · 병합mergedmainfix(android): 기기에서 도는 ELF 를 16KB 페이지로 정렬한다
ohah/maru#2462생성 · 병합mergedmaintest(windows): 기본으로 쓰이는 PowerShell 5.1 을 실제로 띄워 본다 (W7 후속)
ohah/maru#2461생성 · 병합mergedmaindocs(windows): "⒝ 는 배선만 남았다" 던 내 문장을 실측으로 뒤집는다 (W8.2)
ohah/maru#2460생성 · 병합mergedmaindocs(scm): 가져오기가 세 탭에서 눌린다는 진술을 사실로 고친다
ohah/maru#2459병합mergedmainfeat(ssh): 처음 붙는 서버의 지문을 보여 주고 승인받는다 (S9b-3)
ohah/maru#2454병합mergedmainfix(tools): digest 갱신 출력이 새 해시를 잘라 보여 주고 있었다