2026-09-02
날짜는 UTC 기준으로 나눴습니다(9월 22일부터는 한국 시간 기준). 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 목록은 2026-10-06 KST에 GitHub에서 다시 조회해 보강했습니다. 공개 저장소의 기본 브랜치 활동만 포함합니다.
요약 (AI 작성)
@ohah/pdf가 색과 양식을 제대로 다루기 시작한 날입니다. ICC 색 프로파일을 읽어 색을 옮기니 53/255이던 값이 0.8로 맞았고, CMYK 그림이 통째로 어긋나던 것도 고치며 그림에도 ICC를 걸었습니다. 색차를 늘릴 때 네 이웃을 섞어 libjpeg과 5 안으로 맞췄고, Node에서도 그림을 그리며 JPEG은 엔진이 풀고 프로그레시브 JPEG도 풉니다. 문서가 준 자바스크립트를 자체 해석기로 돌려 관공서 양식이 살았고, 해석기를 실제 양식이 쓰는 만큼 넓혀 15개 중 7개에서 15개로 갔으며, 흐름 배치·자료만큼 되풀이·쪽 나눔·셈하는 칸을 갖춘 동적 XFA도 들어갔습니다.
maru는 폰이 알린 뷰포트로 세션 열이 실제로 줄고 떠나면 되돌아오게 했고(S11-6 3c-1, #3075), 폰이 자기 격자를 알려 전 구간이 이어졌으며(#3087), 폰이 세션을 좁히면 맥 상태줄이 아이콘과 함께 알리게 했습니다(#3106, #3120). 채널이 바뀌면 실어 둔 선언을 버리고, stdin 사정이 폰 화면을 끊지 않게 했습니다(#3069). 소스 컨트롤은 원격 저장소의 워크트리 행이 로컬 git으로 새던 것을 고친 뒤(#3089) 그 기계에서 읽고 쓰게 했고(RS5, #3093), 원격에서 바뀌면 알리는 감시자를 붙였습니다(RW1, #3124). 닿을 수 없는 원격 행이 매 프레임 소켓을 stat하던 것도 고쳤습니다. 컨트롤 플레인은 폰이 그 PC에 닿는 길로 터널은 사용자가 준비한다고 못 박고(#3083), 원격 relay 보류 결정을 적었습니다. 전날 열린 RA7 설계 #3055가 병합되면서 agent-events wire에 tmux pane 축도 실렸습니다.
편집기는 비교 뷰에서 어느 열을 검색 중인지 보이고 ⌥⌘D로 고르게 했습니다(#3096). Windows는 게이트의 마지막 빨강 셋을 닫아 mise run check가 처음으로 EXIT=0이 됐습니다(#3110). session-host는 앱이 다시 뜰 때마다 config generation을 1로 되돌려 host가 거절하던 것(#3078)과 뿌리가 지워지면 host를 영영 못 띄우던 것(#3082)을 고치고, scope가 깨지거나 재접속이 깨질 때 어느 축·전이인지 남기게 했습니다(#3054, #3118).
릴리스 권위 시리즈는 하루 종일 이어졌습니다. 여러 deadline 공유를 마친 뒤 pre-publish 작업 디렉터리·workspace root·phase 트랜잭션·제품 실행, published manifest 인증(#3095), predecessor verification 단계와 실행, release validator executable, workflow 권위 캡처, pre-draft candidate 바이트 attest, draft 생성 권위(#3103), candidate release 파일·제품·source tree·evidence identity, summary·evidence output inode, baseline과 upgrade evidence 게시, candidate compatibility(#3119)까지 쌓았습니다. candidate release manifest를 작성하는 #3125는 이날 PR이 열렸고, 이날 실제 릴리스가 나간 것은 아닙니다.
공개 커밋 146개, 해당일 생성 또는 병합된 PR 60개를 정리했습니다. PR 생성 57개·병합 59개는 같은 PR이 양쪽에 포함될 수 있습니다.
커밋
ohah/maru
- feat(scm): 원격 감시자 — 저쪽에서 바뀌면 알린다 (RW1)
- fix(session-host): attest manifest release asset
- test(session-host): require manifest release subject
- docs(session-host): bind manifest release subject
- docs(verification): S11-6 행이 「3c 미구현」에 멈춰 있었다
- docs(ssh): 로드맵에 없던 축을 적는다 — S11-8 폰 뷰포트 선언
- docs(ssh): 세로는 «푼다» 가 아니라 «안 줄이기로 정했다» 다
- docs(ssh): 팬은 「후속」이 아니라 없어진 일이다 — S11 남은 것을 U2 하나로 줄인다
- feat(session-host): read held evidence input
- test(session-host): drive held evidence input
- docs(session-host): define held evidence input
- feat(chrome): 상태줄의 폰 표시에 아이콘을 붙이고, 「그려지는가」를 처음으로 잰다 (S11-6)
- feat(session-host): 재접속이 어느 전이에서 깨지는지 남긴다
- test(session-host): terminal summary 진단이 늘린 ledger 참조를 경계 재고에 반영한다
- feat(session-host): own candidate compatibility
- test(session-host): drive candidate compatibility authority
- docs(session-host): define candidate compatibility authority
- feat(session-host): own upgrade evidence publication
- test(session-host): drive upgrade evidence authority
- docs(session-host): define upgrade evidence authority
- docs(windows): 적대적 검증 5 회 — 내가 적은 주장 둘이 틀렸다
- feat(session-host): own predecessor evidence identity
- test(session-host): drive predecessor evidence identity
- docs(session-host): define predecessor evidence identity
- feat(session-host): own baseline evidence publication
- test(session-host): drive baseline evidence authority
- docs(session-host): define baseline evidence authority
- feat(session-host): own evidence output inode
- test(session-host): require owned evidence output
- docs(session-host): define evidence output owner
- feat(session-host): own published summary inode
- test(session-host): require owned summary publication
- docs(session-host): specify owned summary publication
- feat(session-host): own candidate evidence identity
- test(session-host): drive candidate evidence identity
- docs(session-host): define candidate evidence identity
- fix(windows): 게이트의 마지막 빨강 셋을 닫는다 —
mise run check가 처음으로 EXIT=0 - feat(session-host): own source tree authority
- test(session-host): drive source tree authority
- docs(session-host): define source tree authority
- fix(scm): 닿을 수 없는 원격 행이 매 프레임 소켓을 stat 하고 있었다 — 가드가 거꾸로였다
- feat(session-host): own candidate product authority
- test(session-host): drive candidate product authority
- docs(session-host): define candidate product authority
- feat(chrome): 폰이 세션을 좁히면 맥 상태줄이 말한다 (S11-6 3c-2②)
- feat(session-host): own candidate release files
- test(session-host): drive candidate file authority
- docs(session-host): define candidate file authority
- docs(ssh): host 를 적는 세 번째 자리를 표에 적는다 — 「빠졌다」로 읽히던 자리다
- feat(session-host): own draft creation authority
- test(session-host): drive draft creation authority
- docs(session-host): define draft creation authority
- feat(session-host): attest pre-draft candidate bytes
- test(session-host): drive pre-draft candidate attestation
- docs(session-host): define pre-draft candidate attestation
- feat(session-host): capture release workflow authority
- test(session-host): drive release workflow authority capture
- docs(session-host): define release workflow authority capture
- fix(scm): 호스트가 바뀌어도 머리 줄 요약이 남아 있었다 — 버린다
- feat(session-host): wire release validator executable
- test(session-host): drive release validator executable
- docs(session-host): define release validator executable
- feat(session-host): wire predecessor verification execution
- test(session-host): drive predecessor verification execution
- docs(session-host): define predecessor verification execution
- feat(session-host): own predecessor verification phase
- test(session-host): drive predecessor verification phase
- docs(session-host): define predecessor verification phase
- docs(editor): 선례와 갈린 자리를 적는다 — VSCode 는 열마다 찾기 상자다 (§5.1)
- feat(editor): 비교 뷰에서 어느 열을 검색 중인지 보이고 고른다 —
⌥⌘D(§5.1) - feat(scm): 원격 저장소의 워크트리 행을 그 기계에서 읽고 쓴다 (RS5)
- feat(session-host): authenticate published manifests
- test(session-host): drive published manifest authority
- docs(session-host): define published manifest authority
- docs(plans): RA7 저장 위치 — 셋을 각각 공격하고 ⓒ 만 남았다
- docs(plans): RA7 — pane 별 상태를 어디에 두는가 (실측 근거로 결정)
- feat(agent-events): wire 에 tmux pane 축을 싣는다 (RA7 — 결정 반영)
- docs(plans): RA7 — 한 tmux 세션의 pane 여럿을 각각 드러낸다 (설계)
- docs(session-host): 맥 사용자에게 무엇으로 알릴지 못박는다 — 상태줄, 추론 대신 조회 (S11-6)
- feat(session-host): wire pre-publish product execution
- test(session-host): drive pre-publish product execution
- docs(session-host): define pre-publish product execution
- fix(mobile): 채널이 바뀌면 실어 둔 선언을 버린다 — 남의 축에 실리면 안 된다 (S11-6)
- feat(session-host): own pre-publish phase transaction
- test(session-host): drive pre-publish phase transaction
- docs(session-host): define pre-publish phase transaction
- docs(session-host): «/tmp 정리는 수명 계약과 충돌하지 않는다» 는 틀렸다
- fix(session-host): 뿌리가 지워지면 앱이 host 를 영영 못 띄웠다 — 되살릴 코드에 닿지도 못했다
- fix(session-host): 앱이 다시 뜰 때마다 config generation 을 1 로 되돌려 host 가 영원히 거절했다
- fix(scm): 원격 저장소의 워크트리 행이 로컬 git 으로 샜다 — 읽기도 쓰기도
- feat(session-host): own predecessor manifest input
- test(session-host): drive predecessor manifest input
- docs(session-host): define predecessor manifest input
- feat(mobile): 폰이 자기 격자를 알린다 — S11-6 전 구간이 이어진다 (3c-2①)
- feat(session-host): share predecessor manifest deadline
- test(session-host): drive predecessor manifest deadline
- docs(session-host): bind predecessor manifest deadline
- docs: 원격 relay 보류 결정과 전송·인증 방향을 적는다
- fix(boundary): exclude reference checkouts
- test(boundary): drive reference checkout exclusion
- docs(boundary): define reference checkout exclusion
- feat(session-host): own pre-publish workspace root
- test(session-host): drive pre-publish workspace owner
- docs(session-host): define pre-publish workspace owner
- test(scm): §9.4 표의 컨트롤 플레인 행만 판정자가 안 보고 있었다
- docs(control-plane): 폰이 그 PC 에 «닿는» 길을 못박는다 — 터널은 사용자가 준비한다 (§4a)
- feat(session-host): bind pre-publish work directory
- test(session-host): drive pre-publish work directory
- docs(session-host): require pre-publish work directory
- feat(session-host): share tag chain deadline
- test(session-host): drive tag chain deadline
- docs(session-host): bind tag chain deadline
- feat(session-host): share predecessor assets deadline
- test(session-host): drive predecessor assets deadline
- docs(session-host): bind predecessor assets deadline
- fix(scm): 원격이면 미푸시 점이 호스트 글자 위에 얹혔다 — 제품 화면으로 잡았다
- feat(session-host): 폰이 알린 뷰포트로 세션 열이 실제로 줄고, 떠나면 되돌아온다 (S11-6 3c-1)
- feat(session-host): share predecessor manifest deadline
- test(session-host): drive predecessor manifest deadline
- docs(session-host): bind predecessor manifest deadline
- feat(session-host): share current compatibility deadline
- test(session-host): drive current compatibility deadline
- docs(session-host): bind current compatibility deadline
- feat(session-host): share current product deadline
- test(session-host): drive current product deadline
- docs(session-host): bind current product deadline
- fix(session-host): scope 가 깨져 연결을 끊을 때 어느 축인지 남긴다
- fix(session-host): stdin 사정이 폰 화면을 끊지 않는다 + 잘못 지키던 경계 게이트 (S11-6)
- feat(session-host): share current asset attestation deadline
- test(session-host): drive current asset attestation deadline
- docs(session-host): bind current asset attestation deadline
- feat(session-host): share manifest input deadline
- test(session-host): drive manifest input deadline
- docs(session-host): bind manifest input deadline
ohah/pdf
- docs: 첫 문서 값이 어디서 오는지 자에 적어 둔다
- fix: 글꼴을 다시 짤 때 자리를 필요한 만큼만 떼어 준다
- fix: CMYK 그림이 통째로 어긋나던 것 — 그리고 그림에도 ICC 를 건다
- feat: ICC 색 프로파일을 읽어 색을 제대로 옮긴다 — 53/255 에서 0.8 로
- feat: 해석기를 실제 양식이 쓰는 만큼 넓힌다 — 15개 중 7개에서 15개로
- feat: 문서가 준 자바스크립트를 우리 해석기로 돌린다 — 관공서 양식이 산다
- fix: 색차를 늘릴 때 네 이웃을 섞는다 — libjpeg 과 5 안으로 맞았다
- feat: 프로그레시브 JPEG 도 푼다
- feat: 동적 XFA — 흐름 배치·자료만큼 되풀이·쪽 나눔·셈하는 칸
- feat: Node 에서도 그림을 그린다 — JPEG 은 엔진이 푼다
- perf: 타일 무늬를 한 판만 내고 되풀이는 캔버스에 맡긴다
- test: 메모리 표에 흔들림 폭을 함께 찍는다
PR (해당일 생성/머지)
상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.