2026-09-01
요약 (AI 작성)
@ohah/pdf 가 메모리를 잡은 날입니다 — 안 쓰는 자리는 안 잡아 바닥 메모리가 112MB 에서 38MB 로, 맨 위 표는 옮기지 않고 뒤로 늘리고, 빽빽한 쪽이 통째로 백지로 나오던 것과 출력 자리가 꽉 차면 쪽 표를 뭉개던 것을 고쳤습니다. 레거시 전수조사가 낸 다섯 중 둘은 파일을 망가뜨리고 있었고, 환경이 깨진 자리 열세 가지를 두들기다 셋을 더 고쳤습니다.
maru session-host 는 릴리스 인증을 촘촘히 쌓았습니다 — GitHub tag chain 검증, 현재 릴리스 인증, manifest pathname 을 private 증명 입력으로 고정, 제품 권위 결속, evidence signer, evidence 를 인증 manifest 에 결속, asset private file 실체화, asset attest, frozen compatibility 관측, release executable authority, 그리고 authority·release·manifest deadline 공유. 편집기는 찾기가 대소문자와 낱말을 가리고(⌥⌘C·⌥⌘W, §5.1) 비교 뷰 막대에도 검색 마커가 찍힙니다.
원격 축은 구멍을 메웠습니다 — 보고자 없는 원격 pane 이 로컬로 판정되던 링크 구멍(B→A), 원격 폴더줄이 훅이 알려 준 작업 디렉터리를 쓰는 것, 종료 안내가 원격 경로를 로컬처럼 적던 것, 컨트롤 플레인 DTO 가 cwd_host 로 어느 기계의 경로인지 알리는 것. Windows 는 Ctrl+Shift+C 가 복사가 아니게 돼 있었는데 ⌥⌘C 하나 때문이었습니다.
커밋
ohah/maru
- fix(agent): 훅 cwd 를 무한정 믿지 않고, 창 제목도 같은 값을 쓴다 (적대적 검증 5 회)
- fix(agent): 원격 폴더줄이 훅이 알려 준 작업 디렉터리를 쓴다
- feat(session-host): authenticate current GitHub authority
- test(session-host): drive current GitHub authority
- docs(session-host): define current GitHub authority
- feat(editor): 찾기가 대소문자와 낱말을 가린다 —
⌥⌘C·⌥⌘W(§5.1) - feat(session-host): own current manifest pathname
- test(session-host): drive current manifest pathname ownership
- docs(session-host): define current manifest pathname ownership
- feat(session-host): pin frozen executable pathname
- test(session-host): drive frozen executable pathname authority
- docs(session-host): define frozen executable pathname authority
- fix(mobile): GenerationGap 은 화면을 끄지 않는다 (S11-6)
- feat(scm): 남은 두 한계를 닫는다 — 실패가 무엇을 고칠지 말하고, 도는 터미널에 안 넣는다
- feat(session-host): authenticate current GitHub release
- test(session-host): drive current release authority
- docs(session-host): define current release authority
- docs(windows): "막대 색이 안 변한다" 는 틀린 주장이었다 — 재 보니 이미 변한다
- fix(session-host): --stream 이 소비자가 끊기면 끝난다 (S11)
- fix(test): 세 번째 픽스처도 제품 순서로 — cwd 는 ssh 진입 뒤에 온다
- fix(test): 픽스처를 제품 순서로 맞추고, wasm 을 소스에 다시 맞춘다
- docs(ssh): §9.6 의 「보고자 없는 원격은 못 메운다」를 해소 사실로 정정
- fix(ssh):
maru ssh목적지도 원격 판정의 근거다 — 보고자 없는 pane 의 링크 구멍을 닫는다 (A) - fix(terminal): ssh 에 들어가면 기록된 cwd 를 버린다 (B — A 의 선결)
- feat(session-host): materialize current asset private files
- test(session-host): drive current asset private files
- docs(session-host): define current asset private files
- perf(windows): 도크를 다시 그릴 때마다 폰트 폴백을 새로 짓고 있었다 — 17ms → 2ms
- docs(config): keep-alive 기본값의 선결 주석을 정정 — 둘 다 사실이 아니게 됐다
- fix(term): 안내 갈래를 합쳐 한국어 리터럴이 늘지 않게 한다 — CI 가 잡았다
- fix(term): 종료 안내가 원격 경로를 로컬처럼 적었다 — 폴더줄과 같은 규율로
- test(ssh): 문서 판정자가 «달아난 슬라이스» 와 «파일 하나만 보기» 로 헛돌 수 있었다 (적대적 검증)
- docs(ssh): §9.4 표가 두 번 낡았다 — 사실로 고치고, 다시 낡지 않게 판정자를 문다
- feat(session-host): bind child cwd to held directory
- test(session-host): drive inherited fd process boundary
- docs(session-host): define inherited fd process boundary
- build(windows): 게이트가 상시 빨갰다 — 13 개 실패를 1 개로
- feat(session-host): authenticate current manifest
- test(session-host): drive current manifest attestation
- docs(session-host): define current manifest attestation
- feat(windows): 목록이 Page/Home/End 로도 굴러간다
- feat(scm): 원격 커밋 — 메시지를 stdin 으로 보낸다 (RS4b)
- docs(session-host): default-true 백로그 셋 중 둘은 이미 닫혀 있었다 — 코드 대조로 정정
- feat(editor): 찾기를 고른 범위 안으로 가둔다 —
⌥⌘L(§5.1) - feat(scm): 원격 fetch 는 활성 pane 에 넣는다 · 죽은 가드를 지운다 · CI 에서 실물 SSH 로 돈다 (RS4c)
- fix(mobile): 원격 화면이 창보다 높으면 아래를 보여 준다 (S11-6)
- docs(agent-hooks): herdr는 훅을 버린 게 아니라 상태만 뺐다
- docs(agent-hooks): 참조 둘이 반대 답을 냈다는 것을 적는다
- docs(agent-hooks): 섞기 전에 무엇을 켜야 하는지부터 적는다
- feat(session-host): own manifest candidate authority
- test(session-host): drive manifest candidate authority
- docs(session-host): define manifest candidate authority
- docs(ssh): §9.4 의 「전수」에 cwd 아닌 원격 경로를 더한다 — 갤러리가 그 구멍으로 샜다
- fix(session-host): controller 없는 세션의 observer 도 뷰포트를 선언할 수 있다 (S11-6)
- feat(session-host): consume manifest candidate authority
- test(session-host): drive manifest candidate consumption
- docs(session-host): define manifest candidate consumption
- ci: allow macOS product gates to finish
- feat(session-host): share current authority deadline
- test(session-host): drive current authority deadline
- docs(session-host): bind current authority deadline
- docs(session-host): --stream client 가 자기 뷰포트를 알리는 계약 (S11-6)
- feat(scm): 원격 index 를 실제로 바꾼다 — 스테이지 계열부터 (RS4a)
- feat(mobile): 원격 화면이 배경색과 반전을 그린다 (S11)
- feat(session-host): authenticate predecessor release assets
- test(session-host): drive predecessor asset composition
- docs(session-host): define predecessor asset composition
- style(scm):
zig fmt— 위임으로 바꾼 자리의 빈 줄이 남았다 - fix(agent-hooks): 원격 명령 판정자가 옛 형태를 물고 있었다 — CI 가 잡았다
- fix(ssh): 원격 셸 규율을 한 곳으로 모은다 — 네 곳이 나란히 틀렸다
- chore(i18n): 재시도 경로의 영구 실패 진단 둘을 원장에 올린다 (29→31)
- fix(agent): 재접속이 스스로를 막던 자리 셋을 연다 (적대적 검증 5 회)
- chore(i18n): 채널 재접속 진단 셋을 원장에 올린다 (26→29)
- docs(agent): RA5-a·b·c 를 구현 완료로 표시하고, 검증이 잡은 넷을 남긴다
- fix(agent): 채널을 포기하면 말하고, 재접속이 스스로 막던 자리 넷을 연다 (RA5-c + 적대적 검증)
- fix(agent): 원격 이벤트 채널이 끊기면 물러났다 다시 붙는다 (RA5-b)
- feat(agent): 스트리머가 커서를 흘리고
--resume으로 이어 읽는다 (RA5-a 배선) - feat(agent): 원격 이벤트 채널에 이어읽기 커서를 붙인다 — 순수 층 (RA5-a)
- docs(ssh): §9 의 낡은 서술을 코드에 맞춘다 — cwd_host 는 이미 실린다
- fix(ssh): host-backed 링크도 원격 cwd 면 파일 경로를 안 연다 (§9.4)
- fix(agent): 원격 프레임을 파일 이름 상한으로 재 tmux pane 을 안 버린다
- feat(session-host): resolve GitHub release tag chains
- test(session-host): drive GitHub tag-chain transport
- docs(session-host): define GitHub tag-chain transport
- test(windows): 판정이 개발자의 작업 트리에 기대고 있었다
- feat(editor): 막대가 「매치가 어디 있나」를 답한다 — 검색 결과 마커 (§4.1a)
- docs(ssh): §9.6 의 링크 갭 ⚠️ 를 닫힌 사실로 정정 — 코드가 먼저 고쳐져 있었다
- fix(session-host): bind release evidence signer
- test(session-host): expose foreign evidence signer replay
- docs(session-host): bind release evidence signer
- feat(session-host): 뷰포트 선언을 읽고 슬롯이 든다 (S11-6 3a)
- fix(windows):
Ctrl+Shift+C가 복사가 아니게 돼 있었다 —⌥⌘C하나 때문에 - test(dock): 뷰가 늘면 «활성 pane 을 어떻게 따라가는가» 를 컴파일러가 묻는다 · flaky 판정을 정정한다
- feat(session-host): bind current local product
- test(session-host): drive current product composition
- docs(session-host): define current product composition
- fix(gallery): 원격 pane 의 대화를 로컬에서 열지 않는다 — 남의 이미지가 그 세션 이름표 밑에 떴다
- feat(session-host): bind current release evidence
- test(session-host): drive current evidence composition
- docs(session-host): define current evidence composition
- feat(session-host): share current manifest deadline
- test(session-host): drive current manifest deadline
- docs(session-host): bind current manifest deadline
- docs(editor): 닫힌 기능을 「아직」이라 말하던 문장 아홉을 고친다
- feat(session-host): share current release deadline
- test(session-host): drive current release deadline
- docs(session-host): bind current release deadline
- docs(ssh): §9.4 표에 종료 안내 행을 더한다 — 판정자도 그 행을 함께 문다
- feat(editor): 비교 뷰에서도 ⌘F 가 센다 — 선택이 있는 열을 (§5.1)
- feat(session-host): encode release audit summaries
- test(session-host): drive release audit summary encoding
- docs(session-host): define release audit summary encoding
- feat(editor): 비교 뷰 막대에도 검색 마커가 찍힌다 — 검색 중인 열에만 (§4.1a)
- fix(agent): 소스가 끊길 때 훅 자리도 버린다 (⒁) · 낡은 주석 정리 (⒂)
- test(agent): C1·C2 를 제품 사슬에서 잠근다 — 순수 판정자가 못 보던 자리
- fix(agent): 검증 계속 — 조건 복제·매핑 무판정·문서 논리와 UI 간극
- fix(agent): 적대적 검증 계속 — §1.3 미구현·seq 리셋 누락·훅 unknown 구간
- fix(agent): 배선이 실제로는 안 돌던 자리 둘 — C2 굶김과 낡은 승인 알림
- docs(agent-hooks): 적대적 검증이 배선에서 찾은 둘 — C3 공백과 원격 한계
- fix(agent): 화면 경로도 배지까지 책임진다 — 넷째 자리
- feat(agent): 훅과 화면을 한 판정으로 합친다 — 배선 (§1.1)
- docs(agent-hooks): 업데이트 화면 버그 보고를 철회한다 — 캡처 아티팩트였다
- docs(agent-hooks): 원격(SSH+tmux) 실측과 그것이 찾은 화면 규칙 버그 (§1.7)
- docs(agent-hooks): 실제 codex 화면으로 권위표를 돌렸다 (§1.7)
- fix(agent): 적대적 검증이 찾은 것 — 턴 경계 리셋 버그와 빠진 전제들
- feat(agent): 훅·화면 권위표를 순수 층으로 세운다 (§1.1)
- docs(agent-hooks): 소스를 합치되 뒤집기를 열거로 제한한다 (§1 개정)
- feat(session-host): assemble current final observation
- test(session-host): drive current final observation
- docs(session-host): define current final observation
- feat(session-host): observe frozen compatibility
- test(session-host): drive current compatibility observation
- docs(session-host): define current compatibility observation
- feat(control): 컨트롤 플레인 DTO 가
cwd_host로 어느 기계의 경로인지 알린다 - feat(session-host): attest current private assets
- test(session-host): drive current asset attestation
- docs(session-host): define current asset attestation
- feat(session-host): 폰이 알린 뷰포트가 host 슬롯까지 닿는다 (S11-6 3b)
- fix(test): 판정자가 초기화 안 된 file_tree 에 심어 누수를 냈다 — CI 가 잡았다
- feat(session-host): bootstrap release executable authority
- test(session-host): drive release executable bootstrap
- docs(session-host): define release executable bootstrap
- feat(session-host): publish release audit summaries
- test(session-host): drive release summary publication
- docs(session-host): define release summary publication
- feat(session-host): capture release token authority
- test(session-host): drive release token capture
- docs(session-host): define release token capture
- fix(scm): 소켓이 없는 원격 pane 이 로컬 저장소를 보여 줬다 — 제품 화면으로 잡았다
- feat(session-host): own release absolute deadline
- test(session-host): drive release absolute deadline
- docs(session-host): define release absolute deadline
ohah/pdf
- perf: 맨 위에 있는 표는 옮기지 않고 뒤로 늘린다
- feat: 범위 요청 · 열 때 갈 자리 · 양식 계산식 · XFA 읽기
- feat: 세는 상한을 다 걷어내고, malloc 이 우리 메모리를 밟던 것을 고친다
- fix: 빽빽한 쪽이 통째로 백지로 나오던 것 — 자리를 필요한 만큼 잡는다
- test: 메모리를 세 칸으로 나눠 찍는다 — 한 칸만 보면 결론이 뒤집힌다
- perf: wasm 스택 16MB → 2MB
- test: 메모리를 재는 자를 저장소에 둔다
- perf: 스캔 그림을 원본 해상도로 펼치던 것 — 465MB → 55MB
- perf: 바닥 메모리 38MB → 26MB — 정적 곳간 넷을 더 늦게 잡는다
- perf: 안 쓰는 자리는 안 잡는다 — 바닥 메모리 112MB → 38MB
- feat: 세는 상한을 없앤다 — 표가 문서에 맞춰 늘어난다
- fix: 조용히 자르던 상한 아홉 개를 올린다
- fix: 출력 자리가 꽉 차면 그 뒤(쪽 표)를 뭉개던 것
- perf: 4만 쪽 문서 89초 → 49ms, 그리고 남은 상한 둘
- fix: 레거시 조사에서 나온 나머지 — 캐시 열쇠·죽은 파일·틀린 문서
- fix: 레거시 전수조사에서 나온 다섯 — 두 개는 파일을 망가뜨리고 있었다
- perf: 받을 수 있는 파일을 512MB → 1689MB 로, 여는 값도 줄여
- fix: 양식 문서가 통째로 빈 쪽으로 그려지던 것
- test: 환경이 깨진 자리 열세 가지를 두들긴다 — 그러다 셋을 고쳤다
- test: 공개 API 를 전수로 두들긴다 — 그러다 셋을 고쳤다
- feat: 돌려주는 것들에 이름을 붙인다
- fix: 기본 자리를 만들 때 번들러가 경고하지 않게
- feat: 낮은 층 API 도 내보낸다 (drawOps · checkSignature · Stencil)