2026-08-12

요약 (AI 작성)

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

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

모바일 어댑터가 처음 등장한 것도 이날입니다. iOS·Android 어댑터를 제품 구조로 세우고(M0~M2), 키를 코어의 인코더에 태우고(M4a2) 커서를 그렸으며(M4a5), iOS 를 UITextInput 으로 올리면서 한글이 왜 그래도 안 되는지를 실측으로 남겼습니다(M2b). 파이프라인 실패 뒤에도 렌더 루프를 걸고 있던 문제도 고쳤습니다. session-host 는 연결 incident 계약과 writer handoff 를 정의하고, 재접속 전에 현재 admission 을 닫으며 runtime connection 권위를 하나로 합쳤고, terminal drain 콜백 권위 봉인과 generation cleanup 인계, retryable release 보존, socket cadence parity 완성, scoped RPC decoder bridge 와 bound RPC family 이관을 진행했습니다. chrome 에서는 면적 0 clip 이 quad 를 자르는 대신 통째로 그리던 뒤집힘을 없애고, 도크 세그먼트를 얇게 하며 컨트롤 라벨을 측정값으로 앉혔습니다. 사이드바는 running 집계 배지를 카드에서 sessions 토글 행으로 옮기고 배지 색 구간을 gutter 폭·줄·글리프까지 맞췄으며, claude 2.1.228 의 반원 스피너를 running 으로 인정하도록 판정을 고쳤습니다.

커밋

ohah/maru

PR (해당일 생성/머지)

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