2026-09-12
요약 (AI 작성)
hwpjs 가 차트에 들어간 날입니다(44커밋) — 차트 cell slot 과 raw 값 보존, 명시적으로 선택된 차트 type 선언과 참조 추적, dual string 디코드, footnote 조립, series v2 prefix, 순차적 axis 경계와 nullable post-surface axis 제목, text block 보조 객체 해석, OLE ordinal 참조 검증. Contents 관찰과 포맷 규칙을 구분해 적었습니다.
maru 원격 활동은 RAV7a(안 자랐으면 안 훑는다)·RAV7b 를 완성하고 RAV4b·RAV8a 의 기존 결함 둘을 잡았습니다. session-host 는 알림 후보 축을 세웠습니다 — app receipts 결속, callback 경로, continuity identity 노출과 증명, candidate identity, scenario receipt, R2c 가 하나의 절대 마감시간을 쓰는 것, 제품 브리지, 앱이 정확 알림 정리를 증명하는 것. 첫 화면이 8MiB 를 넘는 세션이 영영 못 붙던 것, 한도로 막힌 업그레이드가 무엇이 컸는지 안 남기던 것, 연결이 어느 줄에서 닫혔는지 안 남기던 것을 고쳤고, recipe 다이제스트를 프레임당 한 번만 계산합니다. 터미널은 안 움직인 이미지까지 generation 이 올라가 재업로드 폭풍이 나던 것과 U=1 애니메이션·delta placeholder 를 고쳤습니다. 편집기는 가로 상한을 설정으로 내고 걸렸을 때 알리며, CI 밖이던 macOS 판정자 아홉(하나는 빨간 채로)을 안으로 들였습니다.
커밋
ohah/hwpjs
- feat(hwp5): preserve chart cell slots and raw values
- feat(hwp5): parse bounded observed chart grid preludes
- test(hwp5): compare OLE references with paired HWPX content
- feat(hwp5): inspect explicitly framed OLE containers
- feat(hwp5): validate explicitly selected OLE ordinal references
- feat(hwp5): inspect explicitly selected video payloads in documents
- test(hwp5): inventory video records before shape validation
- feat(hwp5): connect bounded OLE inspection to BinData
- test(hwp5): distinguish chart Contents observations from format rules
- feat(hwp5): validate explicitly selected distribution documents
- feat(hwp5): parse explicitly selected chart type declarations
- feat(hwp5): inspect optional preview images with bounded codecs
- feat(hwp5): track bounded chart type declarations and references
- test(hwp5): verify DocOptions evidence and share corpus checks
- feat(hwp5): inspect optional ViewText with shared document rules
- test(hwp5): record post-cell chart boundary evidence
- feat(hwp5): decode explicitly selected chart dual strings
- test(hwp5): establish plot array and light boundaries
- feat(hwp5): preserve observed chart text blocks and fonts
- feat(hwp5): resolve chart legend string references
- feat(hwp5): assemble observed chart footnotes
- feat(hwp5): preserve observed backdrop and empty picture fields
- test(hwp5): investigate post-axis surface prefix
- feat(hwp5): assemble observed chart axes
- feat(hwp5): parse nullable text block base bodies
- feat(hwp5): resolve string and numeric chart values
- test(hwp5): verify scale value text block base
- test(hwp5): distinguish numeric chart scale references
- test(hwp5): verify sequential chart axis boundaries
- test(hwp5): verify first chart scale value prefix
- test(hwp5): trace axis title and unequal array headers
- feat(hwp5): parse observed chart arrays and lights
- feat(hwp5): resolve text block auxiliary objects
- feat(hwp5): parse post-line chart array header
- test(hwp5): verify series branches to label headers
- feat(hwp5): support nullable chart axis titles
- test(hwp5): verify nullable post-surface axis titles
- test(hwp5): verify chart line item boundaries
- test(hwp5): verify post-line chart array boundary
- test(hwp5): verify series v2 prefix boundaries
- feat(hwp5): parse observed series v2 prefix
- feat(hwp5): parse observed chart line items
- feat(hwp5): parse observed chart text formats
- feat(hwp5): assemble observed chart value blocks
ohah/maru
- feat(session-host): run notification scenario children
- fix(build): P5d 스모크가 4 번째 인자를 못 받아 dmg 빌드가 막히던 것
- fix(diag): 진단이 진단을 지우던 것 — 로그의 92 % 가 내 계측이었다
- diag(session-host): screen_batch_enqueue 가 다섯 오류를 한 이름으로 묶던 것
- test(terminal): 마우스 리포트 스윕 — 「무엇을 거르는가」를 아무도 안 재고 있었다
- feat(session-host): exercise notification app callback path
- feat(session-host): own notification process cleanup
- fix(remote-activity): 신선도 판정을 값으로 갈라낸다 — 적대적 T1~T4
- feat(remote-activity): RAV7a — 안 자랐으면 안 훑는다
- feat(session-host): validate notification app receipts
- feat(agent): orphan 의 mine 을 nonce 통째로 — 인스턴스 칸이 마지막 눈가림이었다
- fix(terminal-core): kitty 그래픽 배치를 화면에 귀속시킨다
- feat(session-host): 알림 후보 제품 브리지를 추가한다
- diag(session-host): 연결이 어느 줄에서 닫혔는지 남기지 않던 것
- docs(activity): 적대적 EB3 — 실패 여부는 여전히 «모른다»를 못박는다
- fix(activity): 결말이 왔는데 버리고 있었다 — 「없다」와 「못 봤다」를 거꾸로 말했다
- fix(ci): 새로 붙인 editor 스모크가 웹 의존성 없이 죽었다
- fix(ci): macOS 판정자 아홉이 CI 밖이었고 그중 하나는 «빨간 채로» 있었다
- docs(editor): 병합 충돌 해결 계약 — 인라인과 3-way, 한 조각씩
- test(session-host): verify app-owned notification cleanup
- feat(session-host): clean exact notification requests
- fix(terminal): 안 움직인 이미지까지 generation 이 올라갔다 — 재업로드 폭풍
- fix(session-host): 복구 통지조차 못 넣으면 attach 를 되돌린다
- fix(session-host): 첫 화면이 8 MiB 를 넘는 세션이 영영 못 붙던 것
- test(session-host): recipe 캐시 판정자가 되돌리기를 못 잡던 것
- feat(session-host): R3 보호 환경 프로필을 분리한다
- fix(kitty): 뷰포트 밖 애니메이션은 멈춘다 — 적대적 검증 3·4·5 회차
- fix(kitty): 밀린 시간을 은행에 쌓지 않는다 — 적대적 검증 1회차
- feat(session-host): 애니메이션의 시계를 host cadence 에 꽂는다
- 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(session-host): expose notification continuity identity
- 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)
- test(editor): MAXC2 가 한 칸 차이로 공허해졌다 — 훑는 폭을 넓힌다
- feat(scm): 충돌 행에서 «편집기로 가는 길»을 연다 — S1
- docs(file-explorer): 도크 view 의 소유자를 각 문서로 돌린다
- feat(session-host): prove notification continuity
- docs(editor): 기억한 기하의 «대가»와 비교 뷰가 왜 빠지는지 적는다
- fix(editor): 프레임 사이 편집 둘이 «가로»도 흔들던 것 — 그리고 덧셈을 한 자리로
- fix(editor): 스크롤하면 캐럿이 밀리고, 치면 화면이 떨던 것
- probe(session-host): recipe 가 프레임 생성 후 실제로 바뀌는지 잰다
- feat(session-host): bind notification app receipts
- feat(agent): orphan 에 원본 길이를 남긴다 — 잘린 값이 「같아」 보였다
- feat(remote-activity): RAV6 — 원격 그림이 뜬다
- feat(editor): 가로 상한을 설정으로 내고 걸렸을 때 알린다
- feat(session-host): bind notification continuity receipt
- feat(session-host): bind notification scenario children
- 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): consume notification scenario receipt
- feat(session-host): bind notification candidate identity
- feat(session-host): pin notification helper in candidate
- fix(remote-activity): 자국이 거짓일 수 있는 자리를 막는다 — 적대적 A1~E2
- feat(remote-activity): RAV7b-1 — 머리 자국과 이어읽기 자국을 싣는다
- feat(remote-activity): RAV8b-2 — 원격에서 본문 검색이 «실제로» 된다
- docs(remote-activity): RAV8b-2 설계 — Z1 이 비트 둘을 덜어냈다
- feat(remote-activity): RAV8b-1 — 저쪽이 본문을 찾는다
- perf(session-host): recipe 다이제스트를 프레임당 한 번만 계산한다
- diag(session-host): 한도로 막힌 업그레이드가 무엇이 컸는지 안 남기던 것