2026-09-12
날짜는 UTC 기준으로 나눴습니다(9월 22일부터는 한국 시간 기준). 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 목록은 2026-10-06 KST에 GitHub에서 다시 조회해 보강했습니다. 공개 저장소의 기본 브랜치 활동만 포함합니다.
요약 (AI 작성)
hwpjs가 HWP5 차트에 들어간 날입니다(44커밋). 미리보기 이미지·ViewText·배포용 문서·동영상·OLE 컨테이너 검사를 마무리하고, 명시적으로 선택된 차트 type 선언과 참조 추적, grid prelude와 cell slot·raw 값 보존, dual string 디코드, 배경·글꼴·text block과 footnote 조립, 범례 문자열 참조, 배열과 조명, 순차적 axis 경계와 nullable axis 제목, line item, series v2 prefix까지 파싱했습니다. Contents 관찰과 포맷 규칙은 구분해 기록했습니다.
maru 원격 활동은 전날 열린 RAV6 #3576으로 원격 그림을 띄우고, 안 자랐으면 안 훑는 RAV7a(#3598)와 헬퍼·소비자의 이어읽기, 원격 전송 접기를 갖춘 RAV7b를 완성하며 RAV4b·RAV8a의 기존 결함 둘을 잡았습니다(#3614). 이어 저쪽이 본문을 찾는 원격 본문 검색을 붙였습니다(RAV8b, #3625). 활동 뷰는 결말이 왔는데 버리던 것을 고쳐 「없다」와 「못 봤다」를 바로 말하게 했습니다(#3636). 편집기는 고르면 그 자리에 보내기 상자가 뜨게 하고(NSH, #3594), 가로 상한을 설정으로 내고 걸렸을 때 알리며(#3604), 스크롤하면 캐럿이 밀리고 치면 화면이 떨던 것을 고쳤습니다(#3635). 병합 충돌 해결 계약을 인라인과 3-way로 정하고(#3611) 소스 컨트롤 충돌 행에서 편집기로 가는 길을 열었으며(S1, #3615), 문서 줄이 아닌 인라인 위젯 행을 세우는 #3641은 이날 PR이 열렸습니다.
session-host는 알림 후보 축을 세웠습니다. 앱 receipt 결속과 검증, callback 경로 실행, 알림 프로세스 정리와 정확 알림 정리 증명(#3612), 시나리오 자식 실행과 결속, continuity receipt·identity 노출과 증명, 후보 helper 고정과 identity 결속, 시나리오 receipt 소비, R2c 후보가 하나의 절대 마감시간을 쓰게 하고 게이트를 완성한 뒤(#3627) 제품 브리지를 추가했습니다(#3632). R3 보호 환경 프로필도 분리했습니다. 첫 화면이 8MiB를 넘는 세션이 영영 못 붙던 것(#3610), 한도로 막힌 업그레이드가 무엇이 컸는지와 연결이 어느 줄에서 닫혔는지를 안 남기던 것을 고쳤고, 진단 로그의 92%가 계측 자신이던 문제도 정리했습니다(#3605). recipe 다이제스트는 프레임당 한 번만 계산하게 했습니다(#3593).
터미널은 안 움직인 이미지까지 generation이 올라가 재업로드 폭풍이 나던 것을 고치고(#3608), kitty 애니메이션의 시계를 host cadence에 꽂아 뷰포트 밖에서는 멈추게 했으며(#3623), kitty 그래픽 배치를 화면에 귀속시켰습니다(#3631). U=1 애니메이션 placeholder와 delta 전송을 고치는 #3638·#3640은 이날 열렸습니다. CI는 밖에 있던 macOS 판정자 아홉(그중 하나는 빨간 채로)을 안으로 들였고(#3630), P5d 스모크가 인자를 못 받아 dmg 빌드가 막히던 것도 고쳤습니다(#3602).
공개 커밋 125개, 해당일 생성 또는 병합된 PR 51개를 정리했습니다. PR 생성 48개·병합 46개는 같은 PR이 양쪽에 포함될 수 있습니다.
커밋
ohah/hwpjs
- test(hwp5): verify series branches to label headers
- feat(hwp5): parse observed series v2 prefix
- test(hwp5): verify series v2 prefix boundaries
- feat(hwp5): parse post-line chart array header
- test(hwp5): verify post-line chart array boundary
- feat(hwp5): parse observed chart line items
- test(hwp5): verify chart line item boundaries
- feat(hwp5): support nullable chart axis titles
- test(hwp5): verify nullable post-surface axis titles
- test(hwp5): investigate post-axis surface prefix
- feat(hwp5): assemble observed chart axes
- feat(hwp5): assemble observed chart value blocks
- feat(hwp5): parse observed chart text formats
- feat(hwp5): resolve string and numeric chart values
- feat(hwp5): parse nullable text block base bodies
- test(hwp5): verify sequential chart axis boundaries
- test(hwp5): distinguish numeric chart scale references
- test(hwp5): verify scale value text block base
- test(hwp5): verify first chart scale value prefix
- feat(hwp5): resolve text block auxiliary objects
- test(hwp5): trace axis title and unequal array headers
- feat(hwp5): parse observed chart arrays and lights
- test(hwp5): establish plot array and light boundaries
- feat(hwp5): resolve chart legend string references
- feat(hwp5): assemble observed chart footnotes
- feat(hwp5): preserve observed chart text blocks and fonts
- feat(hwp5): preserve observed backdrop and empty picture fields
- test(hwp5): record post-cell chart boundary evidence
- feat(hwp5): decode explicitly selected chart dual strings
- feat(hwp5): preserve chart cell slots and raw values
- feat(hwp5): parse bounded observed chart grid preludes
- feat(hwp5): track bounded chart type declarations and references
- feat(hwp5): parse explicitly selected chart type declarations
- test(hwp5): distinguish chart Contents observations from format rules
- feat(hwp5): connect bounded OLE inspection to BinData
- feat(hwp5): inspect explicitly framed OLE containers
- feat(hwp5): validate explicitly selected OLE ordinal references
- test(hwp5): compare OLE references with paired HWPX content
- feat(hwp5): inspect explicitly selected video payloads in documents
- test(hwp5): inventory video records before shape validation
- feat(hwp5): validate explicitly selected distribution documents
- feat(hwp5): inspect optional ViewText with shared document rules
- test(hwp5): verify DocOptions evidence and share corpus checks
- feat(hwp5): inspect optional preview images with bounded codecs
ohah/maru
- docs(editor): 기억한 기하의 «대가»와 비교 뷰가 왜 빠지는지 적는다
- fix(editor): 프레임 사이 편집 둘이 «가로»도 흔들던 것 — 그리고 덧셈을 한 자리로
- fix(editor): 스크롤하면 캐럿이 밀리고, 치면 화면이 떨던 것
- docs(activity): 적대적 EB3 — 실패 여부는 여전히 «모른다»를 못박는다
- fix(activity): 결말이 왔는데 버리고 있었다 — 「없다」와 「못 봤다」를 거꾸로 말했다
- diag(session-host): 연결이 어느 줄에서 닫혔는지 남기지 않던 것
- feat(agent): orphan 의 mine 을 nonce 통째로 — 인스턴스 칸이 마지막 눈가림이었다
- feat(session-host): 알림 후보 제품 브리지를 추가한다
- fix(terminal-core): kitty 그래픽 배치를 화면에 귀속시킨다
- fix(ci): 새로 붙인 editor 스모크가 웹 의존성 없이 죽었다
- fix(ci): macOS 판정자 아홉이 CI 밖이었고 그중 하나는 «빨간 채로» 있었다
- fix(kitty): 뷰포트 밖 애니메이션은 멈춘다 — 적대적 검증 3·4·5 회차
- fix(kitty): 밀린 시간을 은행에 쌓지 않는다 — 적대적 검증 1회차
- feat(session-host): 애니메이션의 시계를 host cadence 에 꽂는다
- test(session-host): recipe 캐시 판정자가 되돌리기를 못 잡던 것
- feat(session-host): R3 보호 환경 프로필을 분리한다
- docs(editor): S2 의 동작 자리를 정하니 조각이 하나 늘었다 — S1.5 인라인 위젯 행
- feat(session-host): compose notification candidate gate
- fix(session-host): unwind expired candidate authority
- docs(session-host): pin R2c publication order
- feat(session-host): share notification candidate deadline
- feat(remote-activity): RAV8b-2 — 원격에서 본문 검색이 «실제로» 된다
- docs(remote-activity): RAV8b-2 설계 — Z1 이 비트 둘을 덜어냈다
- feat(remote-activity): RAV8b-1 — 저쪽이 본문을 찾는다
- feat(session-host): consume notification scenario receipt
- docs(remote-activity): RAV8b 설계 — 검색을 스캔에 얹는다
- fix(remote-activity): RAV8a — 원격에서 본문 검색이 «남의 파일»을 열고 있었다
- feat(remote-activity): RAV7b-4 — 원격 전송을 접을 수 있다
- feat(remote-activity): RAV7b-3b-2 — 소비자가 이어 읽는다
- feat(remote-activity): 병합이 «살아남은 자리»를 돌려준다 — RAV7b-3b-2 적대적 T1
- fix(remote-activity): RAV4b — 원격 체인 경로가 소비자까지 온다
- fix(remote-activity): 남긴 것의 접기 주인도 새 자리로 — 적대적 Q5
- feat(remote-activity): RAV7b-3b-1 — 순수 병합 + 스크립트가 인자를 전부 넘긴다
- docs(remote-activity): 「유일하지 않은 패턴」 세 번을 한자리에 적는다
- fix(build): 개수 편집이 남의 스텝 아홉 개를 함께 바꿨다
- fix(remote-activity): 이어읽기가 어긋나는 자리 셋 — 적대적 9~13
- style(remote-activity): zig fmt 가 맞추는 칸으로 되돌린다
- feat(remote-activity): RAV7b-3a — 헬퍼가 이어 읽는다
- feat(session-host): bind notification candidate identity
- feat(session-host): pin notification helper in candidate
- feat(session-host): prove notification continuity
- perf(session-host): recipe 다이제스트를 프레임당 한 번만 계산한다
- diag(session-host): 한도로 막힌 업그레이드가 무엇이 컸는지 안 남기던 것
- fix(editor): 후보 범위를 문서와 맞추고, 왕복 전수 하네스를 세운다
- docs(verification): NSH 행이 적대적 29 회 뒤의 상태를 적는다
- test(editor): 적대적 5 회 더 — 캡처는 있는데 골든이 없었다
- fix(editor): 적대적 5 회 더 — 조용한 출구와 낡은 문서
- fix(editor): 적대적 5 회 더 — 확인 모달 너머로 빚은 모드가 안 가던 것
- fix(editor): 적대적 5 회 더 — 빚은 모드가 인코딩까지 안 가던 것
- test(chrome): Lab 에 선택 헬퍼 한 줄을 세운다
- fix(editor): 적대적 9 회 — 조건이 갈린 자리 넷과 허공으로 가던 보내기
- feat(editor): 고르면 그 자리에 보내기 상자가 뜬다 (NSH)
- feat(session-host): expose notification continuity identity
- docs(file-explorer): 도크 view 의 소유자를 각 문서로 돌린다
- test(editor): MAXC2 가 한 칸 차이로 공허해졌다 — 훑는 폭을 넓힌다
- feat(scm): 충돌 행에서 «편집기로 가는 길»을 연다 — S1
- feat(session-host): bind notification continuity receipt
- feat(session-host): bind notification scenario children
- fix(remote-activity): 자국이 거짓일 수 있는 자리를 막는다 — 적대적 A1~E2
- feat(remote-activity): RAV7b-1 — 머리 자국과 이어읽기 자국을 싣는다
- fix(session-host): 복구 통지조차 못 넣으면 attach 를 되돌린다
- fix(session-host): 첫 화면이 8 MiB 를 넘는 세션이 영영 못 붙던 것
- test(session-host): verify app-owned notification cleanup
- feat(session-host): clean exact notification requests
- docs(editor): 병합 충돌 해결 계약 — 인라인과 3-way, 한 조각씩
- fix(terminal): 안 움직인 이미지까지 generation 이 올라갔다 — 재업로드 폭풍
- feat(editor): 가로 상한을 설정으로 내고 걸렸을 때 알린다
- fix(remote-activity): 신선도 판정을 값으로 갈라낸다 — 적대적 T1~T4
- feat(remote-activity): RAV7a — 안 자랐으면 안 훑는다
- feat(session-host): run notification scenario children
- fix(build): P5d 스모크가 4 번째 인자를 못 받아 dmg 빌드가 막히던 것
- diag(session-host): screen_batch_enqueue 가 다섯 오류를 한 이름으로 묶던 것
- fix(diag): 진단이 진단을 지우던 것 — 로그의 92 % 가 내 계측이었다
- feat(session-host): own notification process cleanup
- feat(session-host): validate notification app receipts
- feat(session-host): exercise notification app callback path
- test(terminal): 마우스 리포트 스윕 — 「무엇을 거르는가」를 아무도 안 재고 있었다
- feat(remote-activity): RAV6 — 원격 그림이 뜬다
- feat(agent): orphan 에 원본 길이를 남긴다 — 잘린 값이 「같아」 보였다
- feat(session-host): bind notification app receipts
- probe(session-host): recipe 가 프레임 생성 후 실제로 바뀌는지 잰다
PR (해당일 생성/머지)
상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.