2026-08-30
요약 (AI 작성)
@ohah/pdf 가 시작된 날입니다 — wasm PDF 엔진을 따로 뗀 첫 판이고, PDFDocument 로 이름을 바꾸고 굽는 도구를 zntc 로 갈았습니다. maru 편집기는 고른 부분을 에이전트에 보내는 축을 열었습니다: 후보 순서와 경로 접기를 값으로 만들고(NS3), 본문 우클릭을 편집기가 가져오고(NS4), 고른 부분을 보내고(NS5), 대상 줄과 id 를 같은 걸음으로 맞추고 라벨을 폴더·브랜치로 했습니다(NS6). 정의·심볼·검색은 (URI?, range) 로 수렴해 한 경로로 이동하고 되돌아갑니다(§5.2).
이미지 갤러리는 스캔이 52.9초에서 9.0초로 줄었고(O(N²) 복사 제거 + compacted 판정 O(1)), codex 가 읽은 이미지 라벨과 재개 세션의 부모 rollout 을 잡고(IG6-c·IG8), 크게 보기를 닫으면 썸네일이 사라지던 것·호버 잔상·격자 폭·「없다」 오인을 고치고 라벨 필터와 시각을 붙였으며, 대화 중에 붙인 이미지가 안 나타나던 것도 잡았습니다(IG2-a·b). session-host 는 kernel cwd sampler, upgrade result notice, near-max restore lifecycle, upgrade failure matrix, reserved handoff 실패 주입, disk-full admission 을 증명했고, host 가 진단을 남기려다 죽어 로그가 늘 0 바이트였던 것을 찾았습니다.
Windows 는 도크 트리와 목록 표면이 자기 사각형 밖으로 그리던 것을 자르고(W8.21e), 이름이 face 를 못 정해 굵은 제목이 밀리던 것(W8.21g), 폭 0 짜리 테두리 때문에 quad 를 통째로 버려 스크롤바가 안 보이던 것을 고쳤습니다. 도크 스크롤바가 흐려지고(alpha 는 tree 가 아니라 paint 시점에), 터미널 스크롤바가 스크롤하면 사라지던 것, 사이드바 검색 중 Page/Home/End 도 이날입니다.
커밋
ohah/maru
- test(session-host): run upgrade failure matrix
- test(session-host): require upgrade failure matrix
- docs(session-host): define upgrade failure matrix gate
- test(session-host): prove reservation cleanup failure
- test(session-host): require reservation cleanup failure
- docs(session-host): define reservation cleanup failure gate
- test(scrollarea): fade alpha 가 draw 까지 닿는지 재는 판정자를 세운다
- feat(scroll-area): 도크 스크롤바도 흐려진다 — alpha 는 tree 가 아니라 paint 시점에 얹는다
- test(session-host): run component failure matrix
- test(session-host): require component failure matrix
- docs(session-host): define component failure matrix gate
- feat(windows): 에이전트 목록이 굴러간다 — 그리고 굴리자 헤더를 뚫고 나온 것을 막는다
- fix(agent-hooks): 원격
maru를 못 찾아 축이 안 열렸다 — PATH 를 앞에 붙인다 - feat(editor): 정의·심볼·검색이 한 경로로 이동한다 —
(URI?, range)수렴과 되돌아가기 (§5.2) - perf(image-gallery): compacted 판정을 줄 앞부분으로 — 9.0초 (전체 5.9배)
- docs(image-gallery): 스캔 비용 옛 수치를 실측으로 정정한다
- perf(image-gallery): 이월 버퍼를 자기 자신에게 복사하던 O(N²) — 실측 52.9초 → 10.1초
- test(session-host): inject reserved handoff failures
- test(session-host): require reserved handoff failures
- docs(session-host): define reserved handoff failure gate
- fix(editor): 이어 치는 한글에서 조합 글자가 확정 글자 앞에 섰다
- fix(session-host): host 의 정상 거절이 앱 abort 로 승격됐다 — «config.update» 디코더만 error envelope 을 몰랐다
- feat(session-host): admit upgrade budgets before quiesce
- docs(session-host): define upgrade budget admission
- fix(windows): 목록 표면 둘도 자기 사각형 밖으로 그리고 있었다
- fix(editor): 보내기 대상 줄과 id 를 같은 걸음으로 늘린다 + 라벨을 폴더·브랜치로 (NS6)
- test(session-host): prove GUI upgrade reattach
- test(session-host): require GUI upgrade reattach
- docs(session-host): require GUI upgrade reattach
- test(session-host): prove signed upgrade exit lifecycle
- test(session-host): require signed upgrade exit proof
- docs(session-host): require signed upgrade exit proof
- feat(editor): 커서가 어느 함수 안에 있는지 헤더 밴드가 답한다 — breadcrumb 심볼 체인 (§7.5)
- fix(editor): 접힘 승격이 보이는 줄 표를 안 만들어 커서와 입력 위치가 갈렸다 (§4.1f)
- docs(scroll-area): fade 는 「전부 흐려지게」로 정하고, 한 번 만들었다 되돌린 근거를 남긴다
- test(editor): 보내기 메뉴를 제품 렌더러로 캡처해 골든에 건다
- fix(image-gallery): 적대적 검증 8회가 찾은 결함 여섯
- feat(image-gallery): 썸네일에 「언제」를 붙인다 (IG12-b·c)
- feat(image-gallery): 트랜스크립트 시각을 읽는 순수 파서 (IG12-a)
- feat(image-gallery): 라벨로 거른다 (IG11)
- fix(image-gallery): 얹었던 칸의 강조가 지워지지 않고 쌓이던 것
- fix(image-gallery): 2열이면 좌우가 꽉 차게 칸을 늘린다
- refactor(image-gallery): 스캔 워커가 라벨도 만든다 (IG11-a)
- test(session-host): prove near-max restore lifecycle
- test(session-host): require near-max restore evidence
- docs(session-host): define near-max restore gate
- fix(windows): 도크 트리가 자기 사각형 밖으로 그리던 것을 자른다
- feat(editor): 편집기 본문 우클릭을 편집기가 가져온다 (NS4)
- test(session-host): prove stale sweep in daemon
- feat(session-host): sweep stale upgrade residues
- docs(session-host): define stale upgrade sweep
- test(windows): 적대적 검증 5 회 — IME 판정 셋이 속 비어 있었다
- fix(windows): 접혀 있던 dock_scroll 판정을 되살리고, 그 안의 동어반복을 고친다
- fix(windows): i18n 원장이 0 으로 못 박은 파일에 한국어 리터럴을 넣었다
- feat(windows): 조합 중인 글자가 검색 줄에 뜬다 — 그리고 포커스를 따라간다
- fix(scm-dock): 클릭이 키보드 소유권을 주지 못해 Page/Home/End 가 통째로 죽어 있었다
- fix(image-gallery): 크게 보기를 닫으면 썸네일이 사라지던 것 + 호버로 누를 수 있음을 보인다
- feat(sidebar): 검색이 열린 동안 카드 목록도 Page/Home/End 로 굴린다 (ScrollArea §4.5)
- feat(editor): 선택 보내기 NS3 — 후보 순서와 경로 접기를 값으로 만든다
- docs(session-host): align kernel cwd completion status
- test(session-host): stabilize kernel cwd CI gates
- test(session-host): add kernel cwd product parity gate
- test(session-host): distinguish rollback image authority
- docs(session-host): record non-empty rollback evidence
- test(session-host): prove non-empty product rollback
- test(session-host): require non-empty product rollback
- docs(session-host): define non-empty rollback gate
- fix(session-host): poisonConnection 의 두 갈래가 같은 «proof_loss» 로 찍혀 로그로 안 갈렸다
- test(session-host): restore rollback fixture environment
- test(session-host): isolate rollback listener fixture
- docs(session-host): record product rollback evidence
- test(session-host): prove product rollback listener recovery
- docs(session-host): define product rollback activation gate
- build(wasm): 코어를 고쳤으니 커밋된 wasm 도 다시 굽는다
- fix(terminal): 스크롤하면 스크롤바가 사라졌다 — 합성 갈래가 스크롤바 근거를 안 실었다
- feat(session-host): surface upgrade result notice
- test(session-host): require upgrade result notice
- docs(session-host): define upgrade result notice
- docs(windows): §2m.88 의 항목 표시가 틀렸다 — 그것은 ⒡ 다
- fix(windows): 이름이 face 를 못 정하고 있었다 — 굵은 제목이 한 칸씩 밀렸다
- feat(editor): 고른 부분을 에이전트에 보낸다 (NS5)
- fix(ssh): 깨우기 꼬리를 p95 로 잰다 — 표본 7개의 max 는 러너 딸꾹질을 쟀다
- docs(key-input): 목록 스크롤 키의 주인을 표로 박고, notice 비대칭을 「고치지 않는다」로 적는다
- docs(plans): 원격 축 계획의 두 줄이 코드와 어긋나 있었다 — 마감
- feat(agent-hooks): codex 도 원격에 깐다 — 「사용자가 눌러야 한다」가 틀린 전제였다
- docs(editor): NS2 는 이미 서 있다 — 그 자리를 사실대로 적는다
- docs(editor): 선택 영역 보내기 — 네이티브 편집기를 1차로 두고 슬라이스를 쪼갠다
- test(agent-events): TTL 판정자가 «처음» 을 시간으로 겸했다 — 그 둘은 다른 축이다
- fix(ssh): 두 번째 적대적 5 회 — 조용히 축을 죽이는 넷
- fix(agent-hooks): POSIX 전용 경로를 Windows 컴파일에서 가지친다
- fix(agent-events): 적대적 검증 2~5 회차 — 조용한 유실 셋과 스트림을 멈추는 하나
- fix(agent-hooks): tmux pane 으로 파일 이름을 가른다 — 오염 범위를 잘못 읽고 있었다
- feat(agent-hooks): tmux 오배달을 역조회로 되찾는다 — RA6 배선
- docs(control-plane): 적대적 검증 — 낡은 실측 서술 여섯과 등재 안 된 슬라이스
- docs(editor): 접힘 종류 목록을 열여덟 언어에서 실측했다 (§4.1f)
- fix(scm-dock): 적대적 검증 3회가 잡은 것 — 커밋 상자에 양보하면 키가 터미널로 샜다
- feat(scm-dock): 소스 컨트롤 목록도 Page/Home/End 로 굴린다 (ScrollArea §4.5)
- feat(session-host): add bounded kernel cwd sampler
- fix(image-gallery): 재개 세션은 부모 rollout 까지 훑는다 (IG8)
- feat(image-gallery): codex 가 읽은 이미지에도 라벨을 붙인다 (IG6-c)
- docs(image-gallery): 취소된 IG6 누적 결정을 계획에 기록
- test(image-gallery): 회귀 가드가 제품 키 경로를 타게 한다
- feat(image-gallery): 크게 보기에서 ←→ 로 넘긴다 (IG9)
- feat(editor): 편집기가 문서 안에 무엇이 있는지 답한다 — 심볼 목록 층 (§7.5)
- fix(session-host): protect live roots from tests
- test(session-host): reject inherited live roots
- docs(session-host): forbid inherited live test roots
- test(session-host): drive actual disk-full admission
- test(session-host): require disk-full admission gate
- docs(session-host): define disk-full admission gate
- fix(image-gallery): 적대적 검증 4회 더 — 프레임에서 파일을 열던 것 + 제품이 안 쓰는 길을 지키던 test
- fix(image-gallery): 적대적 검증 3회 더 — 조용히 멈추거나 낭비되던 것 셋
- fix(image-gallery): 적대적 검증 3회가 찾은 결함 셋 — 자동 갱신이 만든 것들
- fix(image-gallery): 대화 중에 붙인 이미지가 갤러리에 안 나타나던 것 (IG2-a·b)
- test(image-gallery): bound open refresh wait
- feat(session-host): bind release workflow run
- test(session-host): require release run observation
- docs(session-host): define release run observation
- fix(editor): 블록 caret 반전이 Lab 에 안 닿았다 — 저장소 기본값을 없앤다
- feat(editor): 커서 모양을 고를 수 있다 — bar·block·underline
- test(scrollarea): SCM 도크 fade 에도 draw alpha 판정자를 세운다
- fix(session-host): isolate product test children
- test(session-host): reject live namespace fixtures
- docs(session-host): forbid shared test namespace
- fix(session-host): host 가 진단을 남기려다 죽었다 — 그래서 host 로그가 늘 0 바이트였다
- test(session-host): drive kernel cleanup faults
- test(session-host): require kernel cleanup fault gate
- docs(session-host): define kernel cleanup fault gate
- test(session-host): drive daemon cleanup fail-stop e2e
- test(session-host): require daemon cleanup fail-stop e2e
- docs(session-host): define daemon cleanup fail-stop gate
- test(session-host): drive coordinator cleanup fail-stop
- test(session-host): require coordinator cleanup fail-stop
- docs(session-host): define coordinator cleanup fail-stop gate
- feat(settings): 구문 색을 설정 화면에서 고른다 — 역할 행 열하나 (N4 §9.0)
- fix(session-host): 예정된 업그레이드 전환을 error 로 찍지 않는다 — 진단을 방해했다
- fix(editor): 판정자가 파싱을 굳힌 뒤 잰다 — CI 에서만 빨갛던 ES7 (§2.1a)
ohah/pdf
- feat: @ohah/pdf — wasm PDF 엔진을 따로 뗀 첫 판
- build: 소스맵을 되살렸다
- refactor: PDFDocument 로 이름 바꾸고, 굽는 도구를 zntc 로 갈았다