2026-08-12

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

요약 (AI 작성)

maru에서 cwd를 하나의 축으로 통일한 날입니다. 사이드바의 폴더·브랜치줄(#2112), 아카이브 범위 칩과 에이전트 대화 매핑(#2118), 컨트롤 플레인의 세션 목록 cwd(#2125)를 모두 소스 컨트롤과 같은 축에 합류시키고, 대화 매핑의 cwd 게이트는 provider별로 갈랐습니다. 이 규율을 주석이 아니라 게이트로 옮겨 CI가 보게 했고(#2121), host-backed Term에는 커널 cwd 폴백이 없다는 사실(#2130)과 낡은 OSC 7 결함(#2136)을 문서에 남겼습니다. 저장소 판정은 3-상태로 갈라 저장소가 아닌 폴더로 옮기면 옛 목록과 옛 브랜치를 버리게 하고, 브랜치 표시는 .git 이벤트로 갱신하게 했습니다(#2113).

편집기는 전날 열린 가로 스크롤 렌더 #2105를 병합하면서 적대적 검증을 3회차부터 7회차까지 이어 갔습니다. 오른쪽 경계가 반쪽을 그리던 것, 경계에서 위험 문자 표기가 사라져 §3.8이 뚫린 것, 그 4회차 수정이 정수 언더플로로 앱을 죽인 것, op 예산 부족이 프레임 전체를 죽이던 것을 고쳤고, 단위 테스트로만 잡히던 결함은 캡처로 고정했습니다. 이어 세로 스크롤을 시각 행 단위로 만들어 랩된 줄 중간에서도 멈추게 하고(#2111) 인덱스 누적 합이 u32를 넘으면 앱이 죽던 문제를 고쳤으며, 세로 스크롤바를 붙이고 편집기 뷰가 자기 배경을 그리도록 §4.1b를 신설했습니다(#2115). gutter만 혼자 fail-close로 남아 있던 예산 처리와 화면 오른쪽 끝에서 6px 떠 있던 스크롤바도 고쳤습니다. 마지막으로 파일을 디스크에서 실제로 읽어 문서로 여는 N1의 문서 쪽 절반을 넣고, 그 파일이 화면에 뜨는 것을 캡처로, 읽기 전용 판정을 테스트로 잡았습니다(#2119).

chrome에서는 면적 0 clip이 quad를 자르는 대신 통째로 그리던 뒤집힘을 없애고 도크 세그먼트를 얇게 하며 컨트롤 라벨을 측정값으로 앉혔습니다(#2110). claude 2.1.228의 반원 스피너를 running으로 인정하고 카드에 running 집계 배지를 되살렸다가(#2116), 그 배지를 sessions 토글 행으로 옮기고 배지 색 구간을 gutter 폭·줄·글리프까지 맞췄습니다(#2122). 모바일 작업은 deploy/mobile 브랜치에서 진행돼, 전날 열린 iOS·Android 어댑터 #2106과 키를 코어 인코더에 태우는 #2126이 그 브랜치에 병합됐고 main 반영은 아닙니다. iOS를 UITextInput으로 올리는 #2131, 커서를 그리는 #2133, 파이프라인 실패 뒤 렌더 루프 문제를 고치는 #2138은 같은 브랜치를 대상으로 이날 열렸습니다.

session-host는 socket cadence parity를 완성하고(#2114) scoped RPC decoder bridge와 bound RPC family 이관을 진행했으며, runtime connection 권위를 하나로 합쳤습니다(#2117). retryable generation release 보존, terminal generation cleanup 인계(#2124), terminal drain callback 권위 봉인(#2128), wire 전 attach cleanup 준비가 이어졌고, 재접속 전에 현재 admission을 닫고(#2132) 연결 incident 계약과 writer handoff를 정의했습니다(#2135). 종료 단계를 계측하고 정리 전에 창을 내리는 #2139와 CR0b incident artifact를 안전하게 남기는 #2140은 이날 PR이 열렸습니다.

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

커밋

ohah/maru

PR (해당일 생성/머지)

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

저장소PR해당일 활동상태대상 브랜치제목
ohah/maru#2140생성mergedmainfeat: persist CR0b incident artifacts securely
ohah/maru#2139생성mergedmainfeat(app-host): 종료 단계를 계측하고 정리 전에 창을 내린다
ohah/maru#2138생성merged기능 브랜치: deploy/mobilefix(mobile): 파이프라인 실패 뒤에도 렌더 루프를 걸고 있었다
ohah/maru#2137생성closed기능 브랜치: feat/mobile-cursorfix(mobile): iOS 에서 셸 따옴표도 -- 플래그도 못 치고 있었다
ohah/maru#2136생성 · 병합mergedmaindocs(cwd-axis): 레퍼런스 주장을 정정하고 낡은 OSC 7 결함을 기록한다
ohah/maru#2135생성 · 병합mergedmainfeat(session-host): define incident writer handoff
ohah/maru#2134생성 · 병합mergedmainfeat(session-host): define connection incident contract
ohah/maru#2133생성merged기능 브랜치: deploy/mobilefeat(mobile): 커서를 그린다 (M4a5)
ohah/maru#2132생성 · 병합mergedmainfeat(session-host): close current admission before reconnect
ohah/maru#2131생성merged기능 브랜치: deploy/mobilefeat(mobile): iOS 를 UITextInput 으로 올린다 — 한글이 왜 그래도 안 되는지 실측 (M2b 1/2)
ohah/maru#2130생성 · 병합mergedmaindocs(session-host): host-backed Term에 커널 cwd 폴백이 없다는 사실을 적는다
ohah/maru#2129생성 · 병합mergedmainfeat(session-host): prepare attach cleanup before wire
ohah/maru#2128생성 · 병합mergedmainfeat(session-host): terminal drain callback 권위를 봉인한다
ohah/maru#2127생성closed기능 브랜치: feat/mobile-key-encodingfeat(mobile): iOS 를 UITextInput 으로 올린다 — 한글이 왜 그래도 안 되는지 실측 (M2b 1/2)
ohah/maru#2126생성 · 병합merged기능 브랜치: deploy/mobilefeat(mobile): 키를 코어의 인코더에 태운다 (M4a2)
ohah/maru#2125생성 · 병합mergedmainfix(control-plane): 세션 목록의 cwd를 GUI와 같은 축에서 답한다
ohah/maru#2124생성 · 병합mergedmainfeat(session-host): hand off terminal generation cleanup
ohah/maru#2122생성 · 병합mergedmainfix(sidebar): running 집계 배지를 카드에서 sessions 토글 행으로 옮긴다
ohah/maru#2121생성 · 병합mergedmaintest(chrome): cwd 축 규율을 주석에서 게이트로 옮긴다
ohah/maru#2120생성 · 병합mergedmainfeat(session-host): preserve retryable generation releases
ohah/maru#2119생성 · 병합mergedmainfeat(editor): 파일을 실제로 읽어 문서로 연다 — N1의 문서 쪽 절반
ohah/maru#2118생성 · 병합mergedmainfix(agent): 범위 칩·대화 매핑의 cwd를 같은 축에 합류시킨다
ohah/maru#2117생성 · 병합mergedmainfeat(session-host): runtime connection 권위를 하나로 합친다
ohah/maru#2116생성 · 병합mergedmainfix(agent): claude 반원 스피너를 running으로 인정하고 카드에 running 집계 배지를 되살린다
ohah/maru#2115생성 · 병합mergedmainfeat(editor): 세로 스크롤바를 붙인다 — 범위는 시각 행이다
ohah/maru#2114생성 · 병합mergedmainfeat(session-host): socket cadence parity를 완성한다
ohah/maru#2113생성 · 병합mergedmainfix(scm): 저장소 판정을 3-상태로 갈라 옛 목록·옛 브랜치가 남지 않게 한다
ohah/maru#2112생성 · 병합mergedmainfix(sidebar): 폴더·브랜치줄을 소스 컨트롤과 같은 cwd 축에 합류시킨다
ohah/maru#2111생성 · 병합mergedmainfeat(editor): 세로 스크롤을 시각 행 단위로 만든다 — 랩된 줄 중간에서 멈춘다
ohah/maru#2110생성 · 병합mergedmainfix(chrome): 면적 0 clip 뒤집힘을 없애고 도크 컨트롤을 측정값으로 앉힌다
ohah/maru#2106병합merged기능 브랜치: deploy/mobilefeat(mobile): iOS·Android 어댑터를 제품 구조로 세운다 (M0~M2 · M4a3 · M4a4)
ohah/maru#2105병합mergedmainfeat(editor): 가로 스크롤 렌더를 붙인다 — 랩의 반대편