2026-09-28
한국 시간(KST) 기준으로 하루를 나눴습니다. 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 조회: 2026-10-06 KST. 공개 저장소에서 조회한 활동만 포함합니다.
요약 (AI 작성)
maru 편집기에 opt-in PCRE2 정규식 찾기·바꾸기 #3988이 들어왔고, 같은 매처를 터미널 스크롤백 찾기에도 연결했습니다(#3993). 새벽에는 IME 재변환·한자 후보·접힌 선택 영역 처리를 다듬은 #3981이 병합돼, IME·한자 후보 창을 줄바꿈된 화면 행과 실제로 그려진 글자 위치에 맞추고 여러 줄 재변환 선택을 미리 보여 주게 했습니다. main의 editor 잡이 NS9 테스트로 두 번 연속 실패했는데도 어느 단언인지 알 수 없던 문제는 세 단언에 각각 오류 이름을 붙여 드러나게 했습니다(#3984). 한글 IME 별칭을 포함한 명령 팔레트 퍼지 검색 #3995는 이날 열려 다음 날 병합됐습니다.
session host 쪽은 main의 session host 잡이 네 번 연속 실패하면서도 무엇이 남았는지 로그에 찍히지 않던 postcommit 잔재 검사를 먼저 고쳐 이름을 남기게 했고(#3985), 원인이던 문제를 #3986에서 고쳤습니다. #3979의 시각 갱신이 승계 루프에서 매니페스트를 경로로 찍어 ctime을 바꾸고, 그 때문에 매니페스트가 지워지지 않던 문제입니다. 미리보기보다 3바이트 커진 상태 때문에 승계 전체가 취소되던 문제는 예약 크기에 여유를 두어 막았습니다(#3994). 에이전트 활동 갤러리는 세션 기록을 찾지 못한 경우와 일부만 읽은 경우의 문구를 나누고(#3990), 원격 SSH 그림 가져오기의 왕복 시간·바이트 계측(#3991), 실패 경로별 이유 이름(#3992), 스캔 취소 사유(#3996)를 로그에 남기게 했습니다. 원격 갤러리가 느리거나 가끔 비는 원인 자체는 아직 고치지 않았고, 다음 발생 때 원인을 가를 진단을 먼저 넣은 단계입니다.
spinon은 하루 동안 PR 여덟 개를 병합했습니다. 새벽에 병합된 V8 언어 연결 PoC #1에는 Android 실기기의 동적 Rust UI 트리 표시, Rust·C++·Zig 트리 커널 비교 벤치마크, Rspress 기반 문서 사이트와 Pages 배포 구성 커밋도 함께 들어갔습니다. 이어서 모노레포 구현 계획 #2, Cargo·Bun 모노레포 기반 #3, Android·iOS V8 초기 빌드 기반 #4, 원자 커밋을 갖춘 Rust UI 트리 코어 #5, GPU 렌더러 구현 계획 #6, Rspress 문서 테마를 문서 패키지로 옮긴 #7, JavaScript API 구현 체크리스트 #8을 병합했습니다. Taffy 레이아웃 R10 적합성 실험 #9는 이날 열려 다음 날 병합됐습니다. 아직 PoC와 명세를 다지는 단계입니다.
hwpjs의 공개 커밋 102개는 대부분 구현 문서의 계약을 현재 코드와 근거 자료에 다시 대조한 검증 기록입니다. 새벽에는 EMF·EMF+ 레코드와 HWP5 차트·OLE, 오전과 낮에는 HWPX 구조·이미지 경로, 공용 XML 파서, JPEG 디코딩, HWP5 양식·변경 기록·필드를 차례로 훑었습니다. 그 과정에서 EMF의 POLYPOLYLINE 하위 선 최소 개수, 그레이디언트 사각형 패딩 배열, 팔레트 없는 TS graphics V 허용, 시작점과 겹치는 FillPolygon 닫힘 선분 생략을 수정했고, 드라이브 문자가 붙은 HWPX ZIP 경로는 거절하게 했습니다. 오후에는 읽기 전용 문단 텍스트 미리보기를 추가하고 디코딩 범위를 필요한 레코드로 좁혔으며, 실제 문서에서 관측된 HWP 메타데이터 편차를 CFB에서 보정했습니다. zntc는 이름 변경 뒤 참조 보존, 생성된 임시 심볼 충돌 방지, 심볼 ID 없이 거부된 클래스 선언 허용, 구조 분해 임시 변수 중복 호이스팅 방지, generator 반복문 심볼 스코프, for-of 임시 결속 수정 등 PR 여덟 개를 병합했습니다.
공개 커밋 198개, 해당일 생성 또는 병합된 PR 31개를 정리했습니다. PR 생성 28개·병합 29개는 같은 PR이 양쪽에 포함될 수 있습니다.
커밋
ohah/hwpjs
- fix(hwp5): scope text preview decoding to required records
- fix(cfb): repair observed HWP metadata deviations
- feat(hwp5): expose read-only paragraph text preview
- docs(cleanup): remove obsolete Rust lint rules
- docs(hwp5): distinguish foundation history from current scope
- docs(architecture): verify current module boundaries
- docs(build): verify command and test-filter inventory
- docs(hwpx): verify known inspection coverage and test logs
- docs(hwpx): link current known inspection reports
- docs(iso639): verify source-specific code histories
- test(hwp5): verify surveyed video inventory
- docs(hwp5): verify fields parameters tables and drawings
- docs(hwp5): verify flows memo ranges and note numbers
- docs(hwp5): verify revision grouping and line cache
- docs(hwp5): verify revision text sign and coordinates
- docs(hwp5): verify form semantics and document integration
- docs(hwp5): verify form assembly links and MaxLength
- docs(hwp5): verify form envelope properties and schema
- docs(jpeg): verify Exif Adobe and orientation boundaries
- docs(jpeg): verify upsampling and RGB boundaries
- docs(jpeg): verify JFXX ICC and Adobe boundaries
- docs(jpeg): verify JFIF colour and RGB boundaries
- docs(jpeg): verify coefficient to sample contracts
- docs(jpeg): verify frame decoding and correct progressive dispatch
- docs(jpeg): verify table and scan decoding contracts
- docs(jpeg): verify framing headers tables and structure
- docs(xml): verify shared XML parser contracts
- docs(hwpx): verify PNG BMP JPEG and SVG image paths
- docs(hwpx): verify picture and manifest images
- docs(hwpx): verify fill brush image layers
- docs(hwpx): verify master text inspection layers
- docs(hwpx): verify master and binary references
- docs(hwpx): verify chart inspection layers
- docs(hwpx): verify track tags and chart xstring
- docs(hwpx): verify text nodes and inline attributes
- docs(hwpx): verify run diagnostics and line segments
- docs(hwpx): verify paragraph structure and refresh section tree
- docs(hwpx): verify header tree begin numbers and XML survey
- docs(hwpx): verify settings manifest XML and document trees
- docs(hwpx): verify version protection and namespace boundaries
- fix(hwpx): reject drive-qualified ZIP entry paths
- docs(hwpx): verify OLE payload and repair evidence
- docs(hwp5): verify OLE container and edit boundaries
- docs(hwp5): verify chart grid edit contracts
- docs(hwp5): verify chart file edit boundaries
- docs(hwp5): verify chart string and number edits
- docs(hwp5): verify chart value and text contracts
- docs(hwp5): verify chart value observations
- docs(hwp5): verify chart plot and surface evidence
- docs(hwp5): verify chart tail and selected contents
- docs(hwp5): verify chart nullable format picture and title
- docs(hwp5): verify chart series body boundaries
- docs(hwp5): verify chart series prefix and collection
- docs(hwp5): verify line-item and post-line evidence
- docs(hwp5): verify chart light plot and post-line contracts
- docs(hwp5): verify chart initial text and table contracts
- docs(hwp5): verify observed chart envelope and grid wires
- docs(hwp5): verify chart array and returned axis fields
- docs(hwp5): verify chart axis contracts and surveys
- docs(hwp5): verify chart object and string span contracts
- docs(hwp5): verify chart text and legend contracts
- docs(hwp5): verify chart contents evidence and backdrop
- docs(hwp5): verify chart grid tail and shared transition
- docs(hwp5): verify chart grid and string contracts
- docs(hwp5): verify chart type declaration and reference spans
- docs(emf): verify GetDC interleaving boundary
- docs(emf): verify pen cap and region objects
- docs(emf): verify text object and drawing contracts
- fix(emf): omit coincident FillPolygon closing segment
- docs(emf): verify path boundary contracts
- docs(emf): verify path flags and figure polyline
- docs(emf): verify path device projection contracts
- docs(emf): verify path topology and figure contracts
- docs(emf): verify pie boundary geometry contracts
- docs(emf): verify arc point and segment contracts
- docs(emf): verify arc and ellipse geometry contracts
- docs(docs): record completed Debug test suite
- docs(emf): verify cubic geometry contracts
- docs(emf): verify curve records and device geometry
- docs(emf): verify path region and closed curve records
- docs(emf): verify line polygon and pie records
- docs(emf): verify basic shape drawing records
- fix(emf): allow TS graphics V without palette
- docs(emf): verify clipping state and records
- docs(emf): verify remaining graphics property records
- docs(emf): verify graphics state property records
- docs(emf): verify transform and container records
- docs(emf): verify graphics transform contracts
- docs(emf): verify coordinate foundation contracts
- docs(emf): verify image draw and mapping contracts
- docs(emf): verify EMF+ object assembly and effects
- docs(emf): verify EMF+ graphics object contracts
- docs(emf): verify EMF+ shared values and geometry
- docs(emf): verify EMF+ stream contracts
- docs(emf): verify record framing and corpus evidence
- docs(emf): verify DIB transfer records
- docs(emf): verify bitmap transfer records
- docs(emf): verify alpha and transparent bitmap transfers
- docs(emf): verify layout UFI and text spacing records
- docs(emf): verify color adjustment and matching records
- fix(emf): separate gradient rectangle padding array
- fix(emf): enforce POLYPOLYLINE subline minimum
ohah/maru
- feat(agent-image): 스캔이 «취소» 된 것과 «실패» 한 것이 같은 침묵이었다 — 취소에 이름을 붙인다
- docs(session-host): 섹션 진단을 §7 계약에 적는다
- test(session-host): 남의 판정자에서 지적한 병을 내 판정자에서 그대로 반복했다 — 짝짓기를 행동으로 잰다
- feat(session-host): 3 바이트가 «어디서» 왔는지 — 섹션별 예약→실제를 남긴다
- test(session-host): 판정자를 더하며 남의 재고 목록을 깼다 — 그 목록에 등록한다
- test(session-host): F·G·H 회차 — 과조임 앵커 하나를 걷어내고, 소비자 쪽 세 구멍을 막는다
- test(session-host): 적대적 검증 2회 더 — 문서 드리프트 면을 없애고, 여유가 벗겨낸 경계를 되살린다
- test(session-host): 적대적 검증 3회가 찾은 구멍 셋 — 「테스트에서만」·무의미한 전제·그물 없는 가드
- fix(session-host): 3 바이트 때문에 승계를 통째로 버리던 것 — 예약에 여유를 둔다
- test: harden terminal regex search boundaries
- fix(terminal): harden regex find after adversarial review
- docs(terminal): mark scrollback regex search complete
- feat(terminal): add opt-in PCRE2 scrollback find
- test(agent-image): 앞서 막은 둘을 «다른 경로로» 우회하던 변이를 막는다
- fix(agent-image): 이름을 붙이며 남의 판정자 닻을 깼다 — 그리고 그 옆의 빈자리를 메운다
- test(agent-image): 닻이 공백에 기대고 있었다 —
=.로 붙여 쓰면 그냥 지나간다 - test(agent-image): 실패 이름이 «아닌 것까지 말하는» 두 자리를 막는다
- fix(agent-image): 원격 그림이 «안 될 때» 제품이 침묵하던 것 — 열 갈래가 모두 null 이었다
- feat(editor): expose regex find as a clickable control
- feat(editor): add opt-in PCRE2 find and replace
- fix(agent-image): 계측의 구멍 다섯을 메운다 — 배선·시계·로그 값·기본값·누적 초기화
- fix(agent-image): 계측이 컴파일도 안 됐고 재는 판정자도 없었다
- perf(agent-image): 원격 그림 왕복을 잰다 — 무엇이 느린지 숫자가 없었다
- fix(agent-activity): 「못 찾았다」를 「다 못 읽었다」로 뭉개던 것 — 한 문구가 두 사실을 접었다
- fix(agent-activity): 「못 찾았다」와 「다 못 읽었다」를 가른다 — 한 문구가 두 사실을 접고 있었다
- test(session-host): 위험을 발원지에 고정한다 — 경로로 찍으면 withdraw 가 자기 세대를 거부한다
- test(session-host):
.skip의 「만」을 안 재던 것 — 갱신을 통째로 건너뛰어도 초록이었다 - fix(session-host): 승계 루프가 매니페스트를 경로로 찍어 그 publication 을 영영 못 거두던 것
- test(session-host): postcommit 잔재의 «이름» 을 버리던 것 — 네 런 연속 실패인데 무엇이 남았는지 못 봤다
- fix(editor): anchor IME candidates to wrapped visual rows
- fix(editor): anchor Hanja candidates to rendered text geometry
- docs(editor): record folded IME screen evidence
- fix(editor): keep folded IME selections visible
- fix(editor): route Hanja candidate keys through IME
- docs(editor): record actual IME visual validation
- fix(editor): retain selection when IME preview is unavailable
- fix(editor): preview multiline IME reconversion selection
- test(editor): NS9 의 익명 실패에 이름을 붙인다 — 어느 단언인지 말하지 않던 것
ohah/spinon
- docs: JS API 구현 체크리스트와 플랫폼 모듈 경계 정리
- docs: 렌더 tuple 일치 조건 명확화
- docs: 취소 경합 검증 순서 명시
- docs: 이벤트·커밋 경합 계약 보강
- docs: 렌더러 계약 검증 조건 보완
- docs: GPU 렌더러 구현 계획 추가
- refactor: 루트의 문서 테마 제거
- refactor: Rspress 테마를 문서 패키지로 이동
- refactor: 문서 테마 경로를 패키지 기준으로 변경
- docs: DOM·Fetch 경계 검증 보강
- docs: DOM·Fetch 호스트 계약과 Rust 트리 경계 정리
- feat: Rust 트리 코어와 원자 커밋 구현
- chore: Android·iOS V8 부트스트랩 기반 구성
- chore: Cargo·Bun 모노레포 기반 구성
- docs: 계획 링크와 GitHub 라벨 규칙 정리
- docs: 개발 경험 계획의 이동 경로를 반영
- docs: 계획 문서를 plans 폴더로 모음
- docs: 에이전트 필수 문서 목록을 줄임
- docs: 번들러 계획을 하위 폴더로 묶음
- docs: 모노레포 구현 계획을 구체화
- docs: main 브랜치 보호 규칙 명시
- docs: PR 병합 방식을 리베이스 머지로 명시
- docs: 에이전트 규칙을 인덱스와 본문으로 분리
- docs: 커밋과 PR 제목의 언어 규칙 명확화
- 문서: 목표 제외와 미검증 상태 구분
- 문서: 적합성 상태와 구현 선행 조건 명확화
- 문서: 첫 공식 릴리스 전 RSPress 버전 고정 규칙 명시
- 문서: 개발 도구 후속 계획과 로드맵 의존 관계 추가
- 문서 테마 변경도 배포 대상으로 포함
- 문서 로고와 버전 표시를 정리하고 공개 경로를 수정
- 문서 홈의 추가 설명을 걷어내고 디자인만 유지
- 스피논 문서 홈 디자인과 원본 기준 정리
- Pages 브랜치 자동 갱신과 문서 참조를 정리
- Rspress 기반 공식 API 문서 사이트와 Pages 배포 구성
- 공식 구현 상태 대장과 API 명세 완료 규칙 추가
- 기능별 청크 OTA 배포 계약을 명세에 추가
- 스피논 명세와 구현 계획을 정리하고 앱 아이콘을 교체
- bench: rerun iOS simulator A/B with jitless V8
- bench: compare indexed lookup in live UI tree
- bench: compare Rust C++ and Zig tree kernels
- test: measure main-thread and background CPU contention
- feat: share dynamic tree core across Android and iOS
- feat: render dynamic Rust UI tree on Android device
- feat: demonstrate mobile touch to V8 to native text update
- feat: verify four V8 bridges on Android emulator
- chore: keep Android V8 comparison local
- ci: start Android V8 build from PoC branch
- ci: build pinned Android ARM64 V8 archive on Linux
- feat: link all V8 bridge variants for iOS device
- feat: add V8 language bridge PoC with iOS simulator evidence
ohah/zntc
- fix(transformer): avoid orphaned for-of temp bindings
- fix(transformer): migrate generator loop symbols exactly
- test(tsc): refresh symbol-based emit snapshots
- fix(transformer): avoid duplicate destructuring temp hoists
- fix(transformer): validate var origin on lexical scope path
- fix(semantic): tolerate rejected class declarations without symbol IDs
- fix(transformer): prevent generated temp symbol collisions
- fix(transformer): preserve exact references through renames
PR (해당일 생성/머지)
상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.