2026-08-21
요약 (AI 작성)
훅 모드가 실제로 화면을 채우기 시작한 날입니다. 배지·대화·알림을 훅이 채우고(AH3+AH4+AH5), 배지가 거짓말하던 열넷을 자동 검증 아홉·실사용 다섯으로 닫고, Notification 으로 「입력 대기」를 판정하며 AH6 비용을 다시 쟀습니다. 폰은 컨트롤 wire 를 프레임으로 읽고(S10d-1) 세션 목록을 받아 그리고(S10d-2) 두 host 가 컨트롤 채널을 실제로 굴립니다(S10d-3). S10e 가 막힌 자리와 폰↔실서버 실측도 문서에 남겼습니다.
편집기는 비교 뷰에서도 코드를 고르고 복사하며, 복사가 CRLF 를 LF 로 뭉개던 것을 줄 끝을 뗄 때 함께 굳히는 것으로 고쳤습니다. 상태바에 커서 위치가 서고, 비교 뷰가 잡은 단어를 잃던 결함도 닫혔습니다(§2.2·§4.1g). 터미널은 수식자 붙은 특수 키를 xterm legacy 형식으로 보내 Ctrl+화살표 단어 이동이 되게 했고, 베이스는 terminfo 가 정답이라는 실측을 적었습니다.
Windows 는 번들 폰트를 열고 컬렉션에 담아(다리가 이름으로만 찾기 때문) macOS 와 같은 폰트로 그리고, 앱 수준 config(테마 색·팔레트·스크롤백·커서 모양)를 코어에 걸고, 창을 닫을 때까지 도는 터미널과 드래그 선택을 얻었습니다. 셰이핑 다리의 실측과 결정은 §2m.12·13 에 적었고, 적대적 검증이 §2e 가 이미 정한 것을 결함으로 적은 것을 바로잡았습니다. session-host 는 CR5 two-window abandon 과 CR6 recovery projection owner 를 붙였고, i18n 은 확인 버튼 기본 라벨이 comptime 에 한국어로 얼어붙어 있던 것을 고쳤습니다.
커밋
ohah/maru
- feat(session-host): add CR6 recovery projection owner
- fix(terminal): 적대적 검증 — 범위 밖 기능키와 F3 만 형식이 튀던 것
- feat(terminal): 수식자 붙은 특수 키를 xterm legacy 형식으로 보낸다
- feat(windows): 창을 닫을 때까지 도는 터미널 — 그리고 드래그 선택이 안 그려지던 것을 고친다
- style(editor): DSEL4를 넣으며 빈 줄이 하나 남았다 — zig fmt
- test(editor): 상태바 커서 위치를 헤드리스로 찍을 길이 없었다 — caret 픽스처 (§2.2)
- fix(editor): 비교 뷰가 잡은 단어를 뒤로 끌면 잃었다 — selection 모델을 §3.2로 올린다 (§4.1g)
- feat(editor): 상태바가 커서 위치를 말한다 — 화면 위치가 아니라 몇 번째 글자인가 (§2.2)
- docs(terminal): 수식자 키 인코딩의 베이스를 실측으로 적는다 — terminfo 가 정답이다
- fix(chrome): quad gradient 선언을 lowering 이 실제로 전달한다 + 층 서술을 바로잡는다
- fix(cli): 중계가 신호·half-close·쓰기 실패에서 옳게 끝난다
- chore(editor): lab 픽스처 주석의 뒤 공백 — zig fmt
- chore(i18n): Lab 캡처 픽스처의 한국어 원장을 올린다 (§7)
- fix(editor): 선택 배선의 결함 다섯 — 죽은 Term, 빈 줄 패닉, 접힘에서 거짓말하는 띠 (§4.1g)
- feat(editor): 선택 드래그가 pane 밖에 머물면 굴러간다 — 화면보다 긴 범위를 고를 수 있다 (§4.1g)
- feat(editor): 더블클릭이 단어를, 트리플클릭이 줄을 잡는다 — anchor가 범위인 이유가 여기서 쓰인다 (§4.1g)
- fix(editor): test-chrome-ui가 12차 커밋 이후 컴파일조차 안 됐다 — 캡처가 그것을 드러냈다
- feat(editor): 선택이 화면에 서고 복사된다 — 네이티브 편집기에서 코드를 뜰 수 있다 (§4.1g)
- feat(editor): 본문 클릭·드래그가 선택을 만든다 — hitTestBody에 첫 제품 호출자가 생겼다 (§4.1g)
- fix(editor): 판정한다고 소스에 적고 판정하지 않았다 — 축을 세운 게 아니라 가렸다 (§4.1f, 16차)
- fix(editor): 탭 폭 세터가 접힘을 푸는 세 번째 경로인데 앵커 계약 밖에 있었다 (§4.1f, 15차)
- fix(editor): 탭 폭 세터가 접힘 배열 넷 중 하나만 놓아 셋을 흘렸다 (§4.1f, 14차)
- fix(editor): 탭 폭 단일 출처가 반쪽이었다 — 가로 막대 상한이 29% 모자랐다 (§4.1g, 12차)
- fix(editor): 굳힌 프레임과 live 상태를 한 답 안에서 섞지 않는다 — 11차 (§4.1g)
- fix(editor): 걸친 것을 렌더가 하는 대로 되짚는다 — 적대적 검증 다섯 번 더 (§4.1g ②b)
- feat(editor): 화면 좌표를 문서 위치로 옮긴다 — 적대적 검증 둘이 결함 열하나를 잡았다 (§4.1g ②b)
- feat(session-host): close shared client terminal failure
- test(i18n): 컴파일러가 절반만 막는다 — 언어를 박은 문자열에 게이트를 세운다
- fix(mobile): 프로토콜 이름을 서버 것과 한 벌로 들고, 서버가 만든 hello 로 잰다
- feat(mobile): 폰이 컨트롤 wire 를 프레임으로 읽는다 (S10d-1)
- feat(session-host): wire CR5 two-window abandon
- docs: S10d 를 검증 행렬에 적고 UX 의 낡은 서술을 고친다
- fix(mobile): 고정 언어 원장을 실측 값으로 적는다 (38 → 37)
- fix(mobile): 고정 언어 원장을 목록 문구만큼 올린다
- fix(mobile): 목록 둘째 줄에서 조용한 catch 를 없앤다
- feat(mobile): 세션 목록을 화면에 그린다 (S10d-2)
- feat(mobile): 컨트롤 축을 ABI 로 잇는다 (S10d-2)
- feat(mobile): 세션 목록을 할당 없이 읽는다 (S10d-2 첫 조각)
- docs: 폰에서 실서버까지 손으로 확인한 결과를 적는다
- docs(plan): S10e 가 무엇에 막혀 있는지 코드로 확인해 적는다
- fix(windows): win32_process 단독 테스트가 컴파일조차 안 되던 것을 고친다
- docs(windows): §2m.13 이 §2e 가 이미 정한 것을 "결함" 으로 적었다 — 바로잡는다
- docs(windows): 셰이핑 다리가 한 층 위임을 실측으로 적는다 (§2m.13)
- docs(windows): 적대적 검증이 낸 지적 셋을 §2m.13 에 반영한다
- docs(windows): 셰이핑 다리의 실측과 결정을 남긴다 (§2m.12)
- docs(i18n): 계획이 "미착수" 라고 적은 단계가 이미 끝나 있었다
- fix(i18n): 확인 버튼 기본 라벨이 comptime 에 한국어로 얼어붙어 있었다
- feat(windows): 번들 폰트를 Windows 에서도 연다 — macOS 와 같은 폰트로 그린다
- fix(windows): 적대적 검증 3 라운드 — 버퍼 밖 쓰기, 안 걸리는 방어, 틀린 셀 크기
- fix(windows): 번들 폰트를 찾는 범위를 좁힌다 — 제품은 exe 옆만 본다
- fix(windows): 적대적 검증이 낸 지적 둘을 반영한다 — 반쪽 face 와 UNC
- feat(windows): 번들 폰트를 컬렉션에 담는다 — 다리가 이름으로만 찾기 때문이다
- fix(windows): 적대적 검증 — 검증을 주 폰트와 폴백으로 가르고 시스템도 본다
- feat(windows): 창을 닫을 때까지 도는 터미널 — 그리고 드래그 선택이 안 그려지던 것을 고친다
- feat(agent-hooks): 종료를 놓친 유령 자식을 background_tasks 로 거둔다
- fix(agent-hooks): 자식 자리를 해시로 바꿔 상한을 8 → 128 로 올린다
- feat(agent-hooks): statusLine 훅을 제거한다 — 그리고 테스트가 git worker 를 띄우던 누수를 막는다
- feat(agent-hooks): 배지가 거짓말하는 세 부류를 닫고 진행 중 세부를 채운다
- feat(agent-hooks): 로그를 회전하고 종료할 때 치운다
- test(scm-dock): Lab 시나리오와 골든으로 두 겹침을 픽셀로 고정한다
- fix(file-panel): 파일 탭을 연달아 ⌘W 로 닫을 수 있게 publish barrier 를 연다
- fix(scm-dock): 목록이 고정 chrome 위로 새고 호버 아이콘이 브랜치 위에 겹치던 것을 고친다
- feat(windows): 앱 수준 config 를 코어에 건다 — 테마 색·팔레트·스크롤백·커서 모양
- feat(session-host): seal two-window reconnect actions
- chore(i18n): DSEL3 진단 출력의 한국어 원장을 올린다 (§7)
- test(editor): 비교 뷰 선택을 캡처로 굳힌다 — 한 열에만 서는 것은 픽셀로만 보인다
- test(editor): 비교 뷰 판정자가 랩도 잰다 — 그 축은 결함의 그림자였다 (§4.1g)
- fix(editor): 비교 뷰 선택의 결함 여섯 — 스크롤 100% 오답, 짧아지면 패닉 (§4.1g)
- feat(editor): 비교 뷰에서 코드를 고르고 복사한다 — 한 열에 머물고 빈 행은 뺀다 (§4.1g)
- feat(editor): 비교 뷰 좌표계 — 문서가 둘이면 offset 하나로 못 적는다 (§4.1g)
- fix(file-panel): 스냅샷 검증이 축을 섞지 않는다 — 탐색기 안내가 끊이지 않아 조작이 막혔다
- test(agent-hooks): 배타 규칙과 알림 배선을 실제 seam 에서 검증한다
- feat(agent-hooks): 훅 payload 로 알림을 만든다 (AH5)
- feat(agent-hooks): 훅 payload 로 배지와 대화를 채운다 (AH3-2·AH4)
- feat(agent-hooks): 훅 모드 판정과 상태 전이를 순수 층으로 만든다 (AH3-1)
- feat(mobile): maru 경로를 서버 설정에서 받아 인용해 싣는다
- docs: 중계를 손으로 왕복시킨 결과를 검증 행렬에 적는다
- feat(mobile): 두 host 가 컨트롤 채널을 실제로 굴린다 (S10d-3)