2026-09-27
한국 시간(KST) 기준으로 하루를 나눴습니다. 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 조회: 2026-10-06 KST. 공개 저장소에서 조회한 활동만 포함합니다.
요약 (AI 작성)
maru는 자정 직후 전날 밤 열린 편집기·터미널 PR을 차례로 병합했습니다. 랩된 줄에서 아래로 두 번 이동하면 목표 열이 0으로 무너지던 문제, 줄 끝에서 세로 이동하면 계속 줄 끝을 따라가던 동작(Goal.line_end 제거, #3975), 맞닿기만 한 두 선택 범위가 합쳐지던 문제, ⌘⌫가 들여쓰기를 남기던 문제, 편집기 pane에서 커서가 깜빡이지 않던 문제를 고쳤습니다. 한글 조합을 Enter로 확정하면 문자열이 편집기 문서에 들어가지 않던 IME 경로는 #3968에서 수정했습니다. 터미널은 앱이 maru를 몰라 하이퍼링크를 보내지 않던 문제를 능력 알림으로 풀고(#3972), 이름을 바꿔야 하는 사용자를 위한 term-program 설정을 더했습니다(#3974). 이 병합 뒤 main이 컴파일되지 않던 호출자 누락은 #3977에서 고쳤고, 같은 무렵 main 검사를 되살리려던 #3978은 병합 없이 닫혔습니다.
session host는 업그레이드 preflight 실패가 BadMagic 한 줄로만 남던 진단을 보강하고(#3976), exec으로 승계한 host가 자기 자리 시각을 갱신하지 않아 /tmp 정리에 owner.lock 이름을 잃던 문제를 고쳤습니다(#3979). 승계 거절이 upgrade_busy 하나로만 보이던 것은 일곱 가지 사유로 나눠 host 로그에 남기게 했습니다(#3980). 실패한 host의 재교체 정책 문서 #3942도 병합됐지만 구현은 별도로 남아 있습니다. 판정자가 코드의 존재만 재고 효과는 재지 않아 돌연변이가 살아남던 자리를 메우고(#3982), 그 규율을 docs/pr-checklist.md의 단일 출처로 정리했습니다(#3983). 편집기에서는 괄호 색·강조·점프의 판정을 하나로 통일한 #3964가 병합됐고, IME 재변환·한자 후보·접힌 선택 영역을 다룬 #3981과 테스트 실패 메시지 보강 #3984는 이날 열려 9월 28일 새벽에 병합됐습니다.
hwpjs의 공개 커밋 177개는 새벽의 HWPX 각주·미주 본문, 주석 안 번호 제어와 텍스트, 주석 출처 위치, HWP5 주석 자동 번호 진단 기능을 빼면 대부분 구현 문서의 계약을 현재 코드와 근거 자료에 다시 대조한 검증 기록입니다. HWPX의 주석·표·바탕쪽·헤더·섹션 계약을 다시 확인한 뒤, HWP5의 문서 컨테이너·변경 이력·요약 정보·본문·BinData·배포용 문서 ViewText·변경 추적·미리보기 이미지, CFB 스트림 교체, GIF·BMP·PCX·TIFF·PNG·zlib 구조, BCP47 언어 태그, ICC 프로필의 태그·곡선·역함수, WMF와 EMF 레코드를 차례로 훑었고, ICC 기초 거절 감사 테스트를 강화했습니다.
zntc는 새벽에 ES5 for-of의 반복자·단계·완료·catch 심볼과 for-of using 머리를 심볼에 결속하고, ES5 클래스 자기 참조와 구조 분해 임시 변수 결속을 다듬었으며, 네이티브 스크립트 mangling이 변환 뒤 의미 그래프를 재사용하도록 했습니다(#4870). 오후에는 생성된 심볼의 식별자와 스코프 검증, 네이티브·async generator for-await 임시 변수의 심볼 결속, ES5 async generator 상태 심볼 보존, 합성 심볼의 정확한 스코프 요구가 이어졌습니다.
공개 커밋 221개, 해당일 생성 또는 병합된 PR 37개를 정리했습니다. PR 생성 27개·병합 34개는 같은 PR이 양쪽에 포함될 수 있습니다.
커밋
ohah/hwpjs
- docs(emf): verify point and shape records
- docs(emf): verify fixed prefixes and handle records
- docs(emf): verify ICM and region record contracts
- docs(emf): verify object creation record contracts
- docs(emf): verify color-space and poly record compatibility
- docs(emf): verify header payload and pixel format record
- docs(emf): verify public comments and EOF palette
- docs(emf): verify comment envelope and WMF embedding
- docs(wmf): verify state drawing and text records
- docs(wmf): verify header objects and create payloads
- test(icc): harden foundation rejection audit
- docs(icc): verify adaptation and matrix transform
- docs(icc): verify rational nearest and linear preimages
- docs(icc): verify linear and parametric ranges
- docs(icc): verify ordinate order and distance
- docs(icc): verify power range and nearest output
- docs(icc): verify wide power and root order
- docs(icc): verify rational power and normalized levels
- docs(icc): verify active root locations
- docs(icc): verify power levels and root comparison
- docs(icc): verify curve partition and power clipping
- docs(icc): verify parametric domain
- docs(icc): verify parametric branches and trend
- docs(icc): verify parametric inverse topology
- docs(icc): verify extended full inverse
- docs(icc): verify full parametric inverse
- docs(icc): verify extended nearest outputs
- docs(icc): verify parametric nearest outputs
- docs(icc): verify extended attained selection
- docs(icc): verify attained inverse selection
- docs(icc): verify extended preimage bounds
- docs(icc): verify parametric preimage bounds
- docs(icc): verify extended parametric preimages
- docs(icc): verify whole parametric preimages
- docs(icc): verify extended power preimages
- docs(icc): verify clipped power preimages
- docs(icc): verify extended root locations
- docs(icc): verify normalized root locations
- docs(icc): verify extended root comparison
- docs(icc): verify normalized root comparison
- docs(icc): verify wide positive fraction bounds
- docs(icc): verify wide linear target contract
- docs(icc): verify fraction matrix TRC inverse
- docs(icc): verify fraction matrix inverse contract
- docs(icc): verify matrix TRC forward contract
- docs(icc): verify matrix TRC model assembly
- docs(icc): verify matrix TRC inverse contract
- docs(icc): verify extended TRC inverse contract
- docs(icc): verify TRC inverse dispatch contract
- docs(icc): verify wide gamma inverse contract
- docs(icc): verify gamma inverse contract
- docs(icc): verify wide sampled inverse contract
- docs(icc): verify sampled inverse contract
- docs(icc): verify sampled forward contract
- docs(icc): verify TRC forward integration
- docs(icc): verify analytic curve forward contract
- docs(icc): verify parametric curve contract
- docs(icc): verify TRC tag contract
- docs(icc): verify curve type contract
- docs(icc): verify XYZ tag contract
- docs(icc): verify XYZ type contract
- docs(icc): verify required table integration
- docs(icc): verify required presence contract
- docs(icc): verify required tags scope
- docs(icc): verify registry lookup contract
- docs(icc): verify registry source snapshot
- docs(icc): verify header semantics evidence
- docs(icc): verify v2 header numeric checks
- docs(icc): verify v4 header numeric checks
- docs(icc): verify header identifier checks
- docs(icc): verify profile structure boundary
- docs(icc): verify tag table layout
- docs(icc): verify tag payload dispatch
- docs(icc): verify v2 raw text structure
- docs(icc): verify v2 Unicode selection
- docs(icc): verify mluc Unicode inspection
- docs(icc): verify mluc structure contract
- docs(icc): verify mluc selection policy
- docs(icc): verify opt-in IANA matching
- docs(bcp47): verify alpha2 history contract
- docs(bcp47): verify registry snapshot contract
- docs(bcp47): verify syntax contract
- docs(png): verify RGBA raster contract
- docs(png): verify ICC inspection connection
- docs(png): verify embedded profile envelope
- docs(png): verify sRGB companion contract
- docs(png): verify fixed color contract
- docs(png): verify suggested palette contract
- docs(png): verify international text contract
- docs(png): verify compressed text contract
- docs(png): verify uncompressed text contract
- docs(png): verify timestamp contract and evidence
- docs(png): verify sample metadata contract
- docs(png): verify palette metadata contract
- docs(png): verify transparency contract and evidence
- docs(png): verify image data contract and evidence
- docs(png): verify row filter contract and evidence
- docs(zlib): verify stream validation and PNG boundary
- docs(png): verify structure contract and current evidence
- docs(tiff): verify structure and real corpus evidence
- docs(pcx): verify structure and real fixture evidence
- docs(bmp): verify V5 profile inspection evidence
- docs(bmp): verify RLE index decoder evidence
- docs(bmp): verify RLE RGBA contract and evidence
- docs(bmp): verify pixel decoding contract and evidence
- docs(bmp): verify structure boundaries and CMYK framing
- docs(hwp5): verify BMP V5 profile selection
- docs(hwp5): verify BinData BMP RLE selection
- docs(hwp5): verify BinData BMP selection contract
- docs(hwp5): verify BinData JPEG selection contract
- docs(hwp5): verify BinData image parent contract
- docs(gif): verify indexed decoder evidence
- docs(hwp5): verify optional PrvImage contract
- docs(hwp5): verify PrvImage survey boundary
- docs(hwp5): verify DocOptions evidence boundary
- docs(hwp5): verify forbidden character boundary
- docs(hwp5): verify DocInfo parent contract
- docs(hwp5): verify track-change author boundary
- docs(hwp5): verify track-change DocInfo boundary
- docs(hwp5): verify ViewText boundary and survey
- docs(hwp5): verify optional ViewText semantics
- docs(hwp5): verify distribution primary selection policy
- docs(hwp5): verify distribution ViewText decoder scope
- docs(licenses): record registry data provenance and limits
- docs(cfb): verify legacy compatibility exceptions
- docs(cfb): verify reader and writer guide
- docs(cfb): verify atomic stream replacement
- docs(hwp5): verify outer BinData replacement
- docs(compression): verify stored DEFLATE encoder
- docs(hwp5): verify BinData encoding policy
- docs(hwp5): verify body contracts
- docs(hwp5): verify PNG-declared JPEG policy
- docs(hwp5): verify BinData PNG RGBA selection
- docs(hwp5): verify PNG post-IEND policy
- docs(hwp5): verify BinData WMF inspection
- docs(hwp5): verify BinData PCX inspection
- docs(hwp5): verify summary property sets
- docs(hwp5): verify BMP high-byte evidence
- docs(hwp5): verify bibliography evidence
- docs(hwp5): verify history XML evidence
- docs(hwp5): verify observed history dates
- docs(hwp5): verify HistoryLastDoc contract
- docs(hwp5): verify DocHistory container contract
- docs(hwp5): verify XMLTemplate contract
- docs(hwp5): verify XML validation contract
- docs(hwp5): verify document container contract
- docs(docs): verify HWP5 index and correct architecture scope
- docs: verify migration and project structure
- docs(hwpx): verify section trees content and text
- docs(hwpx): verify section note shapes and presentation
- docs(hwpx): verify section page settings and borders
- docs(hwpx): verify font list and section references
- docs(hwpx): revalidate header structure and references
- docs(hwpx): revalidate master pages and style references
- docs(hwpx): revalidate selected styles and text snapshot
- docs(hwpx): revalidate switch selection and text contracts
- docs(hwpx): revalidate master and selected table geometry
- docs(hwpx): revalidate table geometry and cell contracts
- docs(hwpx): revalidate table child and attribute contracts
- docs(hwpx): revalidate ParaList and table shape contracts
- docs(hwpx): revalidate equation parsing contracts
- docs(hwpx): revalidate meta tags and parameter lists
- docs(hwpx): revalidate field and inline control contracts
- docs(hwpx): revalidate number and column contracts
- docs(hwpx): revalidate note contracts and corpus evidence
- docs: verify project rules against current layout
- docs: verify project entry guides
- docs: track project-wide verification coverage
- docs(hwp5): record note source site validation
- docs(hwpx): clarify implemented XML tree scope
- test(hwp5): verify note source site positions
- feat(hwp5): diagnose note-local automatic numbers
- feat(hwpx): retain note source sites
- feat(hwpx): inspect note-local text
- docs(hwpx): explain Zig test stderr diagnostics
- feat(hwpx): link note-local number controls
- feat(hwpx): inspect footnote and endnote bodies
ohah/maru
- docs(pr-checklist): 판정자 규율을 단일 출처로 세운다 — 「있다」가 아니라 「효과가 난다」를 재라
- test(session-host): 판정자가 «있다» 만 재던 일곱 자리를 효과로 바꾼다
- test(session-host): 자리 갱신 판정자의 구멍 셋을 메운다 — 호출만 세고 «무엇을 넘기는지» 를 안 봤다
- docs(session-host): 재교체 정책의 전제 하나를 실측으로 반증한다 — 실패 지점이 둘이다
- docs(session-host): 실패한 host 의 재교체 정책 — 같은 앱 번들만, 시작 시 붙이기 전, 다음 시작에 계속, UI 먼저 (미구현)
- test(build): 승계 거절 판정자를 전용 스텝으로 옮기고 등록 수 넷을 갱신한다
- fix(session-host): 승계 거절이 «upgrade_busy» 한 이름으로 접혀 이유에 못 닿던 것
- test(build): 경계 등록 수를 206/207 로 — 승계 경로 배선 판정자가 하나 늘었다
- fix(session-host): 승계한 host 가 자기 자리를 안 지켜 owner.lock 이름을 잃던 것 — 갱신을 양쪽에 두고, 잃으면 되세운다
- docs(editor): distinguish plain bracket matching from fallback
- fix(editor): 괄호 색·강조·점프의 판정을 하나로 통일
- fix(session-host): preflight 실패가 «BadMagic» 한 이름으로 접혀 원인에 못 닿던 것 (PFD1)
- docs(mobile): account for term-program without local shell
- chore(pty): format environment fixture for CI
- test: cover editor IME disjoint carets and Unicode boundaries
- fix(editor): reject invalid IME replacement ranges
- fix(editor): harden IME ranges and pinned key replay
- fix(editor): preserve IME Enter commits and document ranges
- fix(app-session): spawnRequest 호출자 여섯을 놓쳐 main 이 안 컴파일되던 것
- fix(editor): 편집기 pane 에서 커서가 안 깜빡이던 것 — 게이트에 편집기가 없었다 (BLINK-E1)
- feat(config): term-program 설정 — 화이트리스트 때문에 위장이 필요한 사람에게 탈출구를 준다
- fix(pty): 앱이 maru 를 몰라 하이퍼링크를 안 보내던 것 — 능력을 알린다 (ENVHL1)
- fix(editor): ⌘⌫ 가 들여쓰기를 남기고, 들여쓰기 «안쪽» 에서는 공백 한 칸만 지우던 것 (DEL1)
- fix(editor): 맞닿기만 한 «범위» 둘을 합쳐 버리던 것 — 점이 낄 때만 합친다 (SEL-M1)
- fix(editor): 줄 끝에서 세로로 가면 계속 끝을 따라다니던 것 — Goal.line_end 를 없앤다
- fix(editor): 랩된 줄에서 ↓ 를 두 번 누르면 목표 열이 0 으로 무너지던 것 (MOV15)
- test(remote-agent): RF7 을 test-remote-activity-vertical 에 넣는다 — 전수 스위트에서만 돌아 개발 중엔 안 돌던 판정자
ohah/zntc
- fix(transformer): require exact synthetic symbol scopes
- fix(transformer): preserve ES5 async-generator state symbols
- fix(transformer): bind async-generator for-await temps by symbol
- fix(transformer): bind native for-await temps by symbol
- test(transformer): validate generated symbol identity and scope
- feat(semantic): bind stable for-of using head
- fix(transformer): preserve immutable ES5 class self writes
- feat(semantic): bind ES5 for-of catch symbols
- Use transform semantic graph for native script mangling
- fix(transformer): track destructuring assignment temp references
- feat(semantic): bind ES5 for-of completion symbol
- feat(semantic): bind stable ES5 for-of step symbols
- feat(semantic): bind stable ES5 for-of iterator symbols
- fix(transformer): bind lexical destructuring temps
- fix(transformer): keep class IIFE checks clear of constructor shadows
- fix(transformer): bind ES5 destructuring declaration temps
- fix(transformer): preserve simple named class self in ES5
PR (해당일 생성/머지)
상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.