2026-09-25
한국 시간(KST) 기준으로 하루를 나눴습니다. 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 조회: 2026-10-06 KST. 공개 저장소에서 조회한 활동만 포함합니다.
요약 (AI 작성)
maru 편집기는 새벽에 들여쓰기 안내선(#3922)과 구문 접힘 승격이 해제된 줄 표를 그리던 문제의 수정(#3933)을 병합했습니다. 안내선은 파일에서 들여쓰기 간격을 추정하고, Markdown·Python의 offSide 규칙과 Go의 탭 기본값을 반영했으며, 긴 공백 구간에서 활성 안내선이 줄마다 끝까지 훑던 비용을 줄였습니다. 낮에는 언어별 규칙과 증분 괄호 목록을 쓰는 괄호 쌍 색(#3946), 선택 영역의 공백·탭을 기본으로 하는 다섯 가지 공백 표시 모드(#3951)가 들어왔습니다. 여러 커서를 한자리에 모으면 글자가 커서 수만큼 입력되던 문제, 줄바꿈된 줄에서 ⌘← / ⌘→가 화면 행이 아닌 논리 줄로 가던 문제도 고쳤습니다.
앱 쪽은 탭을 갈아 끼우는 복원에서 해제된 Term을 읽던 문제(#3945)와 사이드카가 죽은 pane 이름을 계속 보내 지운 행이 되살아나던 문제를 고쳤고, 판정자 이름 정리는 원장을 0으로 비우며 마무리됐습니다. 감싸는 쌍이나 다음 여는 괄호로 가는 괄호 점프 #3954, 비교·병합 뷰에서 줄 번호가 사라지던 결함 수정 #3940, 실패한 host의 재교체 정책 문서 #3942는 이날 PR이 열렸습니다. Chromium 웹 패널은 키보드·한글 입력 라우팅(W4c), 설정으로 엔진 켜기(W4d①), 앱 안 입력 시험기(W4d②), JS 대화상자·떠나기 확인·파일 선택 sheet(W5a)를 docs/web-panel-osr-backend 기능 브랜치에 병합했으며, main 반영은 아닙니다.
zntc는 새벽에 minify 이름 줄이기를 변환 뒤 재분석한 코드로 하도록 바꾸고(#4775), 그 회귀로 export·import·클래스 식 이름이 바뀌던 문제를 고쳤습니다. 이어 식별자 생성 함수를 대상별로 나누고 심볼을 전달하는 작업, 블록 스코핑 이름 스택을 심볼 표로 바꿔 완전히 지우는 작업, 식별자 직접 생성을 막는 CI 감사까지 이어졌습니다. 배열·객체 rest와 es5 구조 분해, namespace export 선언, namespace 멤버 문장 탐색, 클래스 밖으로 옮긴 static 초기값의 this·super, 별칭을 통한 쓰기까지 지우던 member-augment 제거, 링크 뒤 재분석에서 export default 리네임이 사라지던 문제도 수정했습니다.
hwpjs는 HWPX 표 여백·셀 구역·행과 셀 구조, 문단 줄 세그먼트, 바탕쪽의 텍스트·바이너리·표·스타일·차트 참조와 다단계 차트 레이블을 검사했고, 오전부터 섹션 쪽 크기·쪽 테두리·주석 모양, 채우기 브러시와 그림 이미지의 OPF 연결 및 페이로드, WMF·TIFF·PCX 그림 구조 검사를 추가했습니다. HWP5에서는 요약 정보 사전 진단, PCX·WMF BinData 검사, PNG 끝의 0 패딩과 PNG로 선언된 JPEG 진단을 넣었습니다. 이 검사들은 해당 포맷의 완전한 렌더링 지원을 뜻하지 않습니다.
공개 커밋 109개, 해당일 생성 또는 병합된 PR 45개를 정리했습니다. PR 생성 41개·병합 42개는 같은 PR이 양쪽에 포함될 수 있습니다.
커밋
ohah/hwpjs
- 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
- feat(hwp5): diagnose observed summary dictionary marker
- fix(hwp5): validate summary typed value padding
- feat(hwpx): inspect multilevel chart labels
- feat(hwpx): inspect master-page chart references
- feat(hwpx): inspect selected master-page style references
- feat(hwpx): inspect selected table geometry
- feat(hwpx): inspect master-page table geometry
- feat(hwpx): resolve master-page binary references
- feat(hwpx): stream master-page text events
- feat(hwpx): inspect master-page paragraph children
- feat(hwpx): inspect master-page line segments
- feat(hwpx): inspect paragraph line segments
- feat(hwpx): inspect paragraph direct children
- feat(hwpx): inspect table row and cell topology
- feat(hwpx): inspect inherited table shape fields
- feat(hwpx): inspect table margins and cell zones
ohah/maru
- test(editor): BPP3 이 «훑는 중» 을 프레임 번호로 세다 흔들리던 것 — 파싱이 끝나야 훑기가 시작한다
- fix(remote-agent): 죽은 pane 이름이 사이드카에서 계속 실려 나와 지운 행이 되살아나던 것 (RA7.6)
- fix(editor): 공백 표시 적대적 1회차 — 랩 행마다 판정(VS Code view line) · 묶어서 열 한 번 · 이어진 공백은 op 하나 · 블록 caret 칸 · VS Code 색
- fix(editor): 공백 표시 — 행마다 그 조각의 byte 창만 모은다(긴 줄의 랩 뒤 조각 · 가로로 민 창이 비던 것) · WSF3 · WSR2 창 등가
- chore(editor): 캡처 훅 MARU_FORCE_EDITOR_CARET 가 선택 범위(<줄>:<열>-<줄>:<열>)도 받는다 — 공백 표시 selection 캡처용
- feat(editor): 공백 표시 — VS Code renderWhitespace(기본 selection · 다섯 모드), 선택 안의 공백
·· 탭→ - docs(editor): visualRowSpan 의 랩 가드는 «위생» 이 아니라 정답 조건이다 — 적대적 검증이 주석을 반증했다
- fix(editor): 랩된 줄에서 ⌘←/⌘→ 가 행을 건너뛰고 줄로 가던 것 — 논리 줄은 ^A/^E 로 (MOV12·MOV13)
- style(naming): 빈 원장 배열을 zig fmt 모양으로 — fmt-check 가 잡았다
- refactor(naming): CR6d 입력 연속성·preedit 픽셀 판정 셋을 주제 이름으로 — 원장이 3 에서 0 으로
- docs(editor): §5.1d 적대적 2회차 — 달라진 범위 수집 변이가 두 번 산 까닭과 사살
- test(editor): SYN48 문자열이던 글이 코드가 되는 편집(따옴표 지우기) — 달라진 범위 수집을 잰다
- test·docs(editor): SYN48 편집 범위 밖까지 바꾸는 편집(주석 처리) · §5.1d 적대적 기록 1·2회차
- fix(editor): 괄호 쌍 색 — C 매크로 본문 판정을 지시어로(#error·#warning 만 뺀다) · JSDoc 은 앞 글자를 안 본다 · SYN49 · 등가 주석 (§5.1d 적대적 2회차)
- test(editor): BRC1 CRLF 긴 줄 · BPT1 무효 색 대비 바닥 (§5.1d 적대적 1회차)
- fix(editor): 괄호 쌍 색 — 훑는 도중 편집에도 훑기를 잇는다 · 언어 규칙 여섯 · CSS 증분 · 끄면 버린다 (§5.1d 새 눈 리뷰 1회차)
- test(editor): BRC1 — JSDoc @example·설명 글 · Bash case · 긴 줄 경계(UTF-16 단위 19,999/20,000, 2·4 byte 글자)
- test·docs(editor): 괄호 쌍 색 제품 경계 판정자(BPP1·BPP2)·테마 파생(BPT1) · 계약 §5.1d 확정(언어 표·다른 점·비용 실측·되먹임)
- fix(editor): 괄호 목록 — 여는 파싱의 「범위 모름」이 남아 편집 첫 번째가 늘 처음부터였던 것 (SYN47 강화)
- feat(editor): 괄호 쌍 색 — 문서 전체 괄호 목록(증분) · 언어별 규칙(VS Code TextMate 오라클 대조) · 3층 색 · 설정 둘
- feat(editor): 괄호 쌍 색 — 계약 §5.1d 초안과 짝 · 단계 · 무효 순수 판정(VS Code 괄호 파서의 스택)
- fix(editor): 방향키로 커서를 한 자리에 몰면 타이핑이 커서 수만큼 들어가던 것 (§3.2)
- ci(check-boundaries): 두 모드로 새어 든 문자열 판정자 20개를 다시 Debug 로만 — 그리고 판정자로 막는다
- fix(app): destroyPane 이 푼 Term 을 목록에 남겨, 탭을 갈아 끼우는 복원에서 뒤 Term 의 정리가 푼 형제를 읽던 것 (PANE-UAF)
- refactor(naming): 고정 same-major host fixture 둘을 주제 이름으로 — 원장이 5 에서 3 으로
- refactor(naming): 남은 단일 판정자 셋을 주제 이름으로 — 원장이 8 에서 5 로
- refactor(naming): 재접속 기초 판정자 둘(CR0b·CR1 · CR2)을 주제 이름으로 — 원장이 10 에서 8 로
- docs(editor): §5.1c 8회차 — 창 확장이 IGP5 를 약하게 한 것과 P12 재사살 기록
- test(editor): IGP5 를 창 크기 너머로 굴린다 — 창 512 로 넓혀 P12 구멍이 다시 열린 것 (§5.1c 적대적 8회차)
- docs(editor): §5.1c 다시 추정·저장소 순서·창 512 정정과 적대적 6~8회차 기록 · Walker 등가 주석
- fix(editor): 안내선 — 저장소를 맨 나중에 받는다 · 탭 폭·언어가 바뀌면 다시 추정 · 탭 폭 9~16 · 창 512 · levels 걸음 수 판정 (§5.1c 적대적 8회차)
- docs(editor): §5.1c offSide 목록(Python·Markdown)·언어별 추정 기본(Go) 정정과 적대적 5회차 기록
- fix(editor): 안내선 — Markdown 도 offSide · Go 는 추정 기본이 탭(VS Code language-configuration·configurationDefaults 원문) (§5.1c 적대적 검증 5회차)
- docs(editor): Walker 변이 다섯(죽음 셋 · 등가 둘) 기록과 주석 (§5.1c 적대적 4회차)
- fix(editor): 활성 안내선이 긴 공백 구간에서 줄마다 끝까지 훑던 것(81.8 ms/프레임 → 0.57 ms) · VS Code 대조 판정자(monaco 0.56 실측 77 문서) · 탭 표시 폭 차이 명시 (§5.1c, 적대적 검증 4회차)
- docs(editor): §5.1c 구현 되먹임·적대적 기록(1~3회차 변이 50) · 후속 표 ② 섰다 · ③④·감싸는 쌍 점프 예정
- test(editor): IGP5 를 창(256 줄)보다 아래로 굴린다 — 적대적 2회차 P12(창 시작 0)가 11 줄 스크롤에선 초록이었다 (§5.1c)
- test(editor): 안내선 적대적 1회차 — 판정자 보강 일곱 · 등가 여섯 주석 · 다시 읽기는 재추정 안 함(VS Code updateModel 과 같다, 계약 정정) (§5.1c)
- feat(editor): 들여쓰기 안내선 — 1px 세로선·활성 블록·간격 추정 캐시·설정 두 키 (§5.1c)
- feat(editor): 들여쓰기 안내선 계약(§5.1c)과 순수 판정 — 간격 추정(VS Code guessIndentation) · 줄마다 단계 · 활성 블록
- refactor(naming): P5c3c external attach 경계 셋·센티넬 다섯을 주제 이름으로 — 원장이 18 에서 10 으로
- fix(editor): 구문 접힘 승격이 프레임이 잡아 둔 보이는 줄 표를 놓던 것 — 해제된 메모리를 그렸다 (PROMO3)
ohah/zntc
- ci: 트랜스포머 식별자 직접 생성을 막는 감사 추가 (#4760 3단계)
- refactor(transformer): JSX·모듈 변환의 식별자 생성을 분류된 생성 함수로 (#4760 3단계)
- refactor(transformer): 클래스·데코레이터 변환의 식별자 생성을 분류된 생성 함수로 (#4760 3단계)
- refactor(transformer): 플러그인 변환의 식별자 생성을 분류된 생성 함수로 (#4760 3단계)
- refactor(transformer): ES 다운레벨 변환의 식별자 생성을 분류된 생성 함수로 (#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)
- fix(transformer): direct eval 을 품은 블록은 심볼 표로 이름을 바꾸지 않는다 + 적대적 검증 fixture (#4760 4단계-2)
- feat(transformer): es5 블록 스코핑 리네임을 심볼 표로 교체 (#4760 4단계-2)
- feat(transformer): 심볼 기준 블록 스코핑 리네임 표 + 기존 이름 스택과 병행 비교 (#4760 4단계-1)
- refactor(transformer): 변환 상태로 오는 클래스·함수 이름 참조에 심볼 전달 (#4760 3단계-6)
- refactor(transformer): span 기반 식별자 생성을 대상별로, es5 _super 의 틀린 심볼 수정 (#4760 3단계-5, #4763)
- refactor(transformer): 데코레이터 식별자 생성을 대상별 함수로, 헬퍼는 minify 이름으로 (#4760 3단계-4)
- refactor(transformer): 사용자 변수를 가리키는 동적 이름 식별자에 원래 심볼 전달 (#4760 3단계-3)
- refactor(transformer): 동적 이름 식별자 중 사용자 변수가 아닌 34곳을 대상별 함수로 (#4760 3단계-2)
- refactor(transformer): 식별자 생성 함수를 가리키는 대상별로 나눈다 (#4760 3단계-1)
- fix(transpile): 변환 뒤 재분석 minify 에서도 export·import·클래스 식 이름 보존 (#4759 회귀)
- fix(transpile): minify 이름 줄이기를 낮춘 뒤 코드를 다시 분석해서 한다 (#4759)
PR (해당일 생성/머지)
상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.