2026-09-25
날짜별 분류는 기존 기록과 같은 UTC 기준입니다. 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 집계 마감: 2026-09-26 17:05:20 KST (08:05:20 UTC). 공개 저장소에서 조회한 활동만 포함합니다.
요약 (AI 작성)
maru 편집기에 언어별 괄호 쌍 색, 선택 영역의 공백·탭 표시와 다섯 가지 표시 모드가 더해졌습니다. 괄호 점프는 닿은 괄호가 없을 때 감싸는 쌍이나 다음 여는 괄호를 찾고, 여러 커서가 같은 곳으로 모였을 때 글자가 중복 입력되는 문제를 고쳤습니다. 줄바꿈된 화면 행의 처음·끝 이동, 비교·병합 화면의 줄 번호 저장 공간, 탭 복원 중 해제된 Term 접근도 수정했습니다.
Chromium 웹 패널은 엔진 설정과 앱 안 입력 시험기, 자바스크립트 대화상자·파일 선택·권한 요청·위치 전달을 기능 브랜치에 병합했습니다. main 통합은 아직 별도 진행 중입니다. zntc는 블록 스코핑 이름 스택을 심볼 표로 교체하는 작업을 마무리하고, 클래스 밖 static 초기값의 this·super, 구조분해 rest, namespace 출력, 합성 이름 충돌과 IIFE 접기를 수정했습니다.
hwpjs는 HWPX의 페이지·주석·테두리·채움 참조와 포함된 그림·OLE·SVG를 검사하는 범위를 넓혔습니다. JPEG 픽셀 검사는 선택적으로 켜도록 추가했고, HWP5에서는 PNG로 선언된 JPEG나 PNG 끝의 패딩처럼 선언과 실제 데이터가 다른 경우를 진단합니다. 이 기록의 그림·컨테이너 검사는 해당 포맷의 완전한 화면 렌더링 지원을 뜻하지 않습니다.
공개 커밋 95개, 해당일 생성 또는 병합된 PR 35개를 정리했습니다. PR 생성 28개·병합 35개는 같은 PR이 양쪽에 포함될 수 있습니다.
커밋
ohah/hwpjs
- feat(hwpx): inspect Exif JPEG orientation metadata
- feat(hwpx): inspect Exif Adobe JPEG pixels
- feat(hwpx): opt into observed JPEG component IDs
- test(hwpx): verify JPEG pixel differences against direct IDCT
- feat(hwpx): add opt-in JPEG pixel inspection
- feat(hwpx): validate BMP pixels across image reports
- feat(hwpx): inspect normalized OLE copies
- feat(hwpx): inspect packaged OLE containers
- feat(hwpx): inspect manifest image candidates
- feat(hwpx): inspect embedded SVG XML structure
- feat(hwp5): report raw BI_RGB32 high-byte evidence
- feat(hwp5): inspect PNG-declared JPEG BinData explicitly
- feat(hwp5): diagnose PNG post-IEND zero padding
- feat(hwp5): inspect WMF BinData framing
- feat(hwp5): inspect PCX BinData payloads
- feat(hwpx): inspect PCX picture payload RLE
- feat(hwpx): inspect TIFF picture payload structure
- feat(hwpx): inspect WMF picture payload framing
- feat(hwpx): inspect picture image payloads
- feat(hwpx): link raw picture images to OPF items
- feat(hwpx): inspect fill brush image payloads
- feat(hwpx): link raw fill brush images to OPF items
- feat(hwpx): inspect master page fill brushes
- feat(hwpx): inspect shared fill brushes
- feat(hwpx): inspect section presentation fields
- feat(hwpx): inspect section note shapes
- feat(hwpx): diagnose section page border references
- feat(hwpx): inspect section page borders
- feat(hwpx): inspect section direct settings
- feat(hwpx): diagnose section definition resource references
- feat(hwpx): inspect section definition fields and children
- feat(hwpx): inspect section page geometry fields
- feat(hwp5): expose summary dictionary diagnostics in container reports
ohah/maru
- test(editor): 몫 판정자의 빈틈 여섯을 메우고 세션 저장소를 1.5배씩 키운다 (B1 적대적 3~5회차)
- fix(editor): 세션 저장소 할당이 실패해도 호출자가 준 run·글자보다 작아지지 않는다 (B1 적대적 1회차)
- test(editor): 공백 표시는 run·글자 몫을 쓰지 않는다(RB8) — 불변식 ⑵를 「저장소의 run 을 쓰는 텍스트 op」로 좁힌다
- fix(editor): run·글자 몫을 컴포넌트가 기하로 묶어 답한다 — 비교 뷰·병합에서 줄 번호가 본문에 밀려 통째로 사라지던 결함 (B1, visual-mapping §4)
- docs: copyleft 레퍼런스의 이름을 문서·주석에서 걷고 maru 용어로 적는다 — 외부 도구 출처 표현 정리
- docs(editor): run 몫은 입력에서 세지 않고 기하로 묶는다 — 공식은 가르는 규칙의 사본이라 낡는다 · 사전 검증 7,000회와 판정자 함정 넷
- docs(editor): draw 저장소의 몫은 방출하는 컴포넌트가 센다 — 비교 뷰 줄 번호가 통째로 사라진 원인(run 640 한도)과 이관 순서
- docs(editor): 머지된 #3922 기준으로 안내선 서술을 고친다 — 막대 뒤 남은 자리에 쓰고 밴드 뒤로 옮기므로 남을 굶기지 않고 자기가 잘린다
- docs(editor): 층 규칙의 범위를 바로잡고 레퍼런스 표를 고친다 — 출력 모델은 둘(arena 덧붙이기 다수 / 고정 슬라이스), VS Code GPU 글자 셀·Zed Scene
- docs(editor): §3.9c 괄호 점프 적대적 5회차 — 실제 파일 16 언어 차분(여섯 언어 0 %) · 차이는 「무엇이 괄호인가」가 색의 규칙과 다른 데서 온다
- test(editor): BRP8 — 갈 데가 없으면 선택은 앞쪽 끝으로 접힌다
- docs(editor): §3.9c 적대적 기록 — 커서 상한을 메모로 바꾼 뒤의 변이 11
- test(editor): 괄호 점프 메모 적대적 — 가짜 provider 의 다음 여는 괄호도 한 번 걷기(정렬 전제를 드러낸다: P07) · P02 등가 주석
- fix(editor): 괄호 점프 적대적 3·4회차 — 속성 이름 괄호 · 커서 100 개 선 · 계약 문장 감사 · 깨진 코드의 차이 실측
- fix(editor): 괄호 점프 적대적 1·2회차 — 다음 여는 괄호는 트리 커서로 한 번 걷는다(44 초 → 1 ms 미만) · HTML 글 잎 종류를 가른다
- feat(editor): 괄호 점프 — 닿은 괄호가 없으면 감싸는 쌍의 닫는 괄호로, 없으면 다음 여는 괄호로 (VS Code jumpToBracket)
- perf(editor): 괄호 점프 — 커서 수 상한 대신 형제 쌍 메모 · 다음 여는 괄호 한 번 걷기 (VS Code 와 같게 상한 없음)
- fix(editor): 줄 끝 목표로 내려갈 때 «아주 큰 열» 이 i32 로 좁혀지며 넘치던 것 — 행 끝 offset 을 곧바로 낸다 (MOV14)
- test(editor): BPP3 이 «훑는 중» 을 프레임 번호로 세다 흔들리던 것 — 파싱이 끝나야 훑기가 시작한다
- fix(remote-agent): 죽은 pane 이름이 사이드카에서 계속 실려 나와 지운 행이 되살아나던 것 (RA7.6)
- fix(editor): 공백 표시 — 행마다 그 조각의 byte 창만 모은다(긴 줄의 랩 뒤 조각 · 가로로 민 창이 비던 것) · WSF3 · WSR2 창 등가
- feat(editor): 공백 표시 — VS Code renderWhitespace(기본 selection · 다섯 모드), 선택 안의 공백 `·` · 탭 `→`
- fix(editor): 공백 표시 적대적 1회차 — 랩 행마다 판정(VS Code view line) · 묶어서 열 한 번 · 이어진 공백은 op 하나 · 블록 caret 칸 · VS Code 색
- chore(editor): 캡처 훅 MARU_FORCE_EDITOR_CARET 가 선택 범위(<줄>:<열>-<줄>:<열>)도 받는다 — 공백 표시 selection 캡처용
- docs(editor): visualRowSpan 의 랩 가드는 «위생» 이 아니라 정답 조건이다 — 적대적 검증이 주석을 반증했다
- fix(editor): 랩된 줄에서 ⌘←/⌘→ 가 행을 건너뛰고 줄로 가던 것 — 논리 줄은 ^A/^E 로 (MOV12·MOV13)
- style(naming): 빈 원장 배열을 zig fmt 모양으로 — fmt-check 가 잡았다
- refactor(naming): CR6d 입력 연속성·preedit 픽셀 판정 셋을 주제 이름으로 — 원장이 3 에서 0 으로
- test(editor): SYN48 문자열이던 글이 코드가 되는 편집(따옴표 지우기) — 달라진 범위 수집을 잰다
- fix(editor): 괄호 목록 — 여는 파싱의 「범위 모름」이 남아 편집 첫 번째가 늘 처음부터였던 것 (SYN47 강화)
- feat(editor): 괄호 쌍 색 — 문서 전체 괄호 목록(증분) · 언어별 규칙(VS Code TextMate 오라클 대조) · 3층 색 · 설정 둘
- test·docs(editor): 괄호 쌍 색 제품 경계 판정자(BPP1·BPP2)·테마 파생(BPT1) · 계약 §5.1d 확정(언어 표·다른 점·비용 실측·되먹임)
- fix(editor): 괄호 쌍 색 — 훑는 도중 편집에도 훑기를 잇는다 · 언어 규칙 여섯 · CSS 증분 · 끄면 버린다 (§5.1d 새 눈 리뷰 1회차)
- test·docs(editor): SYN48 편집 범위 밖까지 바꾸는 편집(주석 처리) · §5.1d 적대적 기록 1·2회차
- test(editor): BRC1 — JSDoc @example·설명 글 · Bash case · 긴 줄 경계(UTF-16 단위 19,999/20,000, 2·4 byte 글자)
- docs(editor): §5.1d 적대적 2회차 — 달라진 범위 수집 변이가 두 번 산 까닭과 사살
- test(editor): BRC1 CRLF 긴 줄 · BPT1 무효 색 대비 바닥 (§5.1d 적대적 1회차)
- feat(editor): 괄호 쌍 색 — 계약 §5.1d 초안과 짝 · 단계 · 무효 순수 판정(VS Code 괄호 파서의 스택)
- fix(editor): 괄호 쌍 색 — C 매크로 본문 판정을 지시어로(#error·#warning 만 뺀다) · JSDoc 은 앞 글자를 안 본다 · SYN49 · 등가 주석 (§5.1d 적대적 2회차)
- fix(editor): 방향키로 커서를 한 자리에 몰면 타이핑이 커서 수만큼 들어가던 것 (§3.2)
- ci(check-boundaries): 두 모드로 새어 든 문자열 판정자 20개를 다시 Debug 로만 — 그리고 판정자로 막는다
- fix(app): destroyPane 이 푼 Term 을 목록에 남겨, 탭을 갈아 끼우는 복원에서 뒤 Term 의 정리가 푼 형제를 읽던 것 (PANE-UAF)
ohah/zntc
- fix(transformer): 식별자 생성 감사의 우회로를 막는다 — 조건식 태그·JSX 식별자 (#4760 후속)
- fix(transformer): 합성 이름을 사용자 변수와 겹치지 않게 모듈 단위로 정한다 (#4814)
- fix(minify): IIFE 접기가 반환식을 복사하지 않고 가리키게 한다 (#4812)
- refactor(transformer): 플러그인 변환의 식별자 생성을 분류된 생성 함수로 (#4760 3단계)
- ci: 트랜스포머 식별자 직접 생성을 막는 감사 추가 (#4760 3단계)
- refactor(transformer): ES 다운레벨 변환의 식별자 생성을 분류된 생성 함수로 (#4760 3단계)
- refactor(transformer): 분류된 식별자 생성 함수 추가 — 합성/사용자 바인딩, 위치 지정판 (#4760 3단계)
- refactor(transformer): JSX·모듈 변환의 식별자 생성을 분류된 생성 함수로 (#4760 3단계)
- refactor(transformer): 클래스·데코레이터 변환의 식별자 생성을 분류된 생성 함수로 (#4760 3단계)
- fix(bundler): 링크 뒤 재분석에서 합성 심볼 리네임을 표시 뒤에 옮긴다 (#4804)
- refactor(transformer): 클래스 밖으로 옮기는 static 초기값 문맥을 한 쌍의 헬퍼로 통합
- fix(bundler): member-augment 제거를 새 객체에만 적용한다 (#4747)
- fix(transformer): static 필드 초기값을 클래스 밖으로 옮길 때 this·super 를 클래스 기준으로 낮춘다 (#4801)
- fix(bundler): namespace 멤버를 쓴 문장을 분석기 참조로 찾는다 (#4744)
- fix(codegen): namespace export 선언에 구조 분해가 섞이면 선언자마다 따로 낸다 (#4795)
- fix(transformer): es5 구조 분해 — 선언 rest 중첩 패턴·상태 기계 배열 구멍/__read (#4791)
- fix(transformer): 객체 rest 선언 낮추기가 let/const 를 var 로 바꾸던 문제 (#4790)
- fix(transformer): 배열 패턴 대입을 낮출 때 나머지 요소가 빠지던 문제 (#4789)
- refactor(transformer): 블록 스코핑 이름 스택 완전 삭제 (#4760 4단계-4)
- refactor(transformer): 블록 스코핑 이름 스택을 심볼 표로 대부분 은퇴 (#4760 4단계-3)
PR (해당일 생성/머지)
상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.