2026-10-06

한국 시간(KST) 기준으로 하루를 나눴습니다. 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 조회: 2026-10-07 KST. 공개 저장소에서 조회한 활동만 포함합니다.

요약 (AI 작성)

maru는 앱이 죽던 결함 두 가지를 고쳤습니다. 창을 닫을 때 정리 루프가 이미 해제한 탭을 목록에 남겨 뒤 탭의 정리가 그 탭을 읽다 SIGSEGV로 죽던 use-after-free를 #4186에서 막았습니다. 재접속 작업이 얼린 attachment를 창 drain이 읽다가 앱이 abort하던 순서 경쟁은 #4184에서 고쳤습니다. 이어서 재접속 작업이 붙든 runtime의 탭을 닫으면 backend가 닫기를 맡았다가 작업이 끝난 뒤 마저 닫도록 했습니다(#4187). 10월 5일에 열렸던 #4162도 이날 병합됐습니다. 10월 4일 변경이 저장 헤더를 v2로 올리면서 기존 v1 파일을 거절해 실행할 때마다 빈 창이 되던 문제라, 헤더를 maru.workspace.v1로 되돌리고 옛 v2는 읽기만 하도록 했고 저장 파일을 읽지 못하면 그 사실을 기록에 남기게 했습니다.

화면 쪽에서는 확인 모달과 메뉴의 경계 처리를 여러 건 손봤습니다. 긴 URL 때문에 권한 질문이 잘리지 않게 했고(#4168), 이어서 URL을 줄일 때 호스트의 오른쪽 끝(등록 도메인)이 잘려 실제 사이트가 가려질 수 있던 문제를 #4188에서 고쳤습니다. 버튼이 상자 밖으로 빠지지 않게 줄을 나누고(#4169), 창보다 긴 우클릭 메뉴와 깨진 UTF-8이 섞인 라벨, 창 가장자리에서 잘리던 긴 알림도 처리했습니다(#4174·#4179·#4183). 알림 패널은 걸친 카드의 강조 배경과 구분선, 스크롤 중 클릭·호버가 한 줄 위 카드를 잡던 문제를 고쳤습니다(#4173·#4182). 편집기 찾기는 단어 단위 옵션과 빈 일치 처리를 VS Code 기본 동작에 맞췄고(#4170), 메뉴의 Reload·전체 리셋이 다른 창에 미뤄 둔 적용도 마저 하도록 했습니다(#4189).

Chromium 웹 패널의 W6i·W6j·W6k(#4171·#4175·#4181)는 기능 브랜치 docs/web-panel-osr-backend에 병합돼 main 반영이 아닙니다. 확인 모달을 좁은 창에 맞추는 #4190과 공유 뷰 닫기·백업 보존 검증 #4185는 미병합입니다.

zntc는 번들러가 ES5로 내리는 클래스에서 의미 그래프를 버리지 않고 유지하는 범위를 넓혔습니다. 빈 클래스에서 시작해 메서드·정적 메서드·접근자, 빈 생성자, 생성자 안의 대입·조건·반환·throw·반복문까지 조건을 하나씩 늘렸습니다(#5124부터 #5150까지). 그 밖에 namespace·enum IIFE 매개변수를 SymbolId로 요구하도록 codegen을 바꾸고, default export facade와 로컬 export를 정확한 심볼로 묶었으며, for-await·using·익명 클래스 래퍼의 임시 심볼을 생성 시점에 등록했습니다. 이날 PR 45개는 모두 병합됐고, 새 릴리스는 없습니다(최신 v0.1.10). 블로그 저장소에는 9월 하순부터 10월 5일까지의 기록과 오늘의 커밋 전수 보강 커밋이 올라갔습니다.

공개 커밋 98개, 해당일 생성 또는 병합된 PR 70개를 정리했습니다. PR 생성 68개·병합 68개는 같은 PR이 양쪽에 포함될 수 있습니다.

커밋

ohah/maru

ohah/ohah.github.io

ohah/zntc

PR (해당일 생성/머지)

상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.

저장소PR해당일 활동상태대상 브랜치제목
ohah/maru#4190생성openmainfix(chrome): 확인 모달이 좁고 낮은 창에서도 버튼 행과 글자를 패널 안에 둔다
ohah/maru#4189생성 · 병합mergedmainfix(config): 메뉴 Reload·전체 리셋이 같은 내용이어도 다른 창의 미룬 적용을 마저 한다
ohah/maru#4188생성 · 병합mergedmainfix(control): 권한 동의문의 URL 이 실제 사이트를 숨기지 않게 호스트를 지킨다
ohah/maru#4187생성 · 병합mergedmainfix(session-host): 재접속 job 이 붙든 runtime 의 탭을 닫으면 backend 가 닫기를 맡았다가 job 뒤에 마저 닫는다 — ⌘W·마지막 탭·✕ abort 제거
ohah/maru#4186생성 · 병합mergedmainfix(app): 창 닫기·복원이 푼 탭을 목록에 남겨, 뒤 탭의 정리가 해제된 앞 탭을 읽고 죽던 것 (TAB-UAF)
ohah/maru#4185생성openmaintest(editor): 공유 뷰 닫기와 백업 보존을 AppKit에서 검증
ohah/maru#4184생성 · 병합mergedmainfix(session-host): 재접속이 얼린 attachment 를 창 drain 이 읽다 앱이 abort 하던 것 — drain 은 쉬고 비변경 RPC·detach 는 관문을 지난다
ohah/maru#4183생성 · 병합mergedmainfix(chrome): 긴 notice 를 상자 안에서 줄을 나눠 그린다 — 창 가장자리에서 잘리던 것
ohah/maru#4182생성 · 병합mergedmainfix(notifications): 걸친 스크롤에서 클릭·호버가 한 줄 위 카드를 잡고, 스크롤바·우클릭이 카드를 지우던 것을 고친다
ohah/maru#4181생성 · 병합merged기능 브랜치: docs/web-panel-osr-backendfix(web-osr): 대화상자가 떠 있을 때의 종료 — 종료를 고르면 페이지 대화상자를 먼저 치운다 (W6k)
ohah/maru#4180생성 · 병합mergedmaintest(editor): 가장 긴 줄 세기 감지선을 걸음 수와 모드별 시간 선으로 나눈다
ohah/maru#4179생성 · 병합mergedmainfix(chrome): 깨진 UTF-8 이 섞인 라벨이 메뉴·모달에서 사라지지 않게 한다
ohah/maru#4178생성 · 병합mergedmaintest(chrome): 확인 모달 시각 골든 — 긴 메시지 줄바꿈과 버튼 넷 줄 넘김
ohah/maru#4177생성 · 병합mergedmainfix(notifications): notice·confirm 이 떠 있으면 알림 패널을 안 그리고, 패널을 열 때 다른 오버레이를 내린다
ohah/maru#4176생성 · 병합mergedmainfix(chrome): 좁은 창의 메뉴가 폭 0 이 되지 않게 하고, 손상 UTF-8 줄임도 폭을 지킨다
ohah/maru#4175생성 · 병합merged기능 브랜치: docs/web-panel-osr-backendfeat(web-osr): W6j 탭 닫기의 떠나기 확인 — maru 확인 뒤 페이지에 묻고, 머무르기면 탭이 남는다 (wire 13)
ohah/maru#4174생성 · 병합mergedmainfix(chrome): 우클릭 메뉴가 창보다 길면 폭을 자르고 긴 라벨은 가운데를 줄인다
ohah/maru#4173생성 · 병합mergedmainfix(notifications): 걸친 카드의 강조 배경이 헤더를 칠하고 구분선이 글자 줄·패널 밖에 그어지던 것을 고친다 (ML3b)
ohah/maru#4172생성 · 병합mergedmainfix(chrome-lab): 오버레이의 .fill 을 Lab 캡처에도 칠한다
ohah/maru#4171생성 · 병합merged기능 브랜치: docs/web-panel-osr-backendfix(web-osr): 닫은 창의 Chromium 탭이 앱이 끝날 때까지 돌던 것 — 창 정리에서도 브라우저를 닫는다 (W6i)
ohah/maru#4170생성 · 병합mergedmainfeat(editor): VS Code 기본 검색 경계와 빈 일치 정책 적용
ohah/maru#4169생성 · 병합mergedmainfix(chrome): wrap confirm modal buttons to the box instead of dropping them
ohah/maru#4168생성 · 병합mergedmainfix(chrome): a long URL no longer drops the question from the grant prompt
ohah/maru#4167병합mergedmaintest(editor): 현재 문서 검색과 ripgrep 범위 및 비용 재비교
ohah/maru#4162병합mergedmainfix(workspace): 저장 헤더를 maru.workspace.v1 로 되돌리고 옛 v2 는 읽기만 한다 — 2026-07-08 「헤더 bump 없음」 결정 복원, 파싱 실패를 침묵하지 않는다
ohah/zntc#5150생성 · 병합mergedmainfix(bundler): retain unlabeled constructor loop control
ohah/zntc#5149생성 · 병합mergedmainfix(bundler): retain exact constructor for graphs
ohah/zntc#5148생성 · 병합mergedmainfix(bundler): retain exact constructor loop graphs
ohah/zntc#5147생성 · 병합mergedmainfix(bundler): retain exact constructor throws
ohah/zntc#5146생성 · 병합mergedmainfix(bundler): retain safe constructor returns
ohah/zntc#5145생성 · 병합mergedmainfix(bundler): retain safe constructor if branches
ohah/zntc#5144생성 · 병합mergedmainfix(bundler): retain native constructor property writes
ohah/zntc#5143생성 · 병합mergedmainfix(bundler): retain native constructor compound writes
ohah/zntc#5142생성 · 병합mergedmainfix(bundler): retain exact constructor local writes
ohah/zntc#5141생성 · 병합mergedmainfix(bundler): retain safe constructor conditions
ohah/zntc#5140생성 · 병합mergedmainfix(bundler): retain safe constructor unary values
ohah/zntc#5139생성 · 병합mergedmainfix(bundler): retain safe constructor arithmetic
ohah/zntc#5138생성 · 병합mergedmainfix(bundler): retain uninitialized constructor vars
ohah/zntc#5137생성 · 병합mergedmainfix(bundler): retain constructor var identities
ohah/zntc#5136생성 · 병합mergedmainfix(bundler): retain simple constructor parameters
ohah/zntc#5135생성 · 병합mergedmainfix(bundler): retain exact constructor binding reads
ohah/zntc#5134생성 · 병합mergedmainfix(bundler): retain literal constructor assignments
ohah/zntc#5133생성 · 병합mergedmainfix(bundler): retain empty constructors with accessors
ohah/zntc#5132생성 · 병합mergedmainfix(bundler): retain empty constructors with methods
ohah/zntc#5131생성 · 병합mergedmainfix(bundler): retain empty explicit class constructors
ohah/zntc#5130생성 · 병합mergedmainfix(bundler): retain classes with trailing accessors
ohah/zntc#5129생성 · 병합mergedmainfix(bundler): retain graph for matching accessor pairs
ohah/zntc#5128생성 · 병합mergedmainfix(bundler): retain graph for single class accessors
ohah/zntc#5127생성 · 병합mergedmainfix(bundler): retain graph for simple static class methods
ohah/zntc#5126생성 · 병합mergedmainfix(bundler): retain graph for multiple ES5 class methods
ohah/zntc#5125생성 · 병합mergedmainfix(bundler): retain graph for simple ES5 class methods
ohah/zntc#5124생성 · 병합mergedmainfix(bundler): retain graph for empty ES5 classes
ohah/zntc#5123생성 · 병합mergedmainfix(transformer): bind anonymous class wrapper names exactly
ohah/zntc#5122생성 · 병합mergedmainfix(bundler): bind local exports by exact symbol
ohah/zntc#5121생성 · 병합mergedmainfix(transformer): bind prehoisted class key temps
ohah/zntc#5120생성 · 병합mergedmainfix(transformer): preserve class method scope for temps
ohah/zntc#5119생성 · 병합mergedmainfix(transformer): bind anonymous static-block class self
ohah/zntc#5118생성 · 병합mergedmainfix(transformer): register anonymous static class wrapper symbols
ohah/zntc#5117생성 · 병합mergedmainfix(transformer): bind anonymous ES5 class self reads
ohah/zntc#5116생성 · 병합mergedmainfix(transformer): consume flow match parameter temp spans
ohah/zntc#5115생성 · 병합mergedmainfix(transformer): consume explicit private loop temp spans
ohah/zntc#5114생성 · 병합mergedmainfix(transformer): register normalized using-head symbols
ohah/zntc#5113생성 · 병합mergedmainfix(transformer): bind for-await temps in extracted async bodies
ohah/zntc#5112생성 · 병합mergedmainfix(transformer): preserve for-await temp symbols after async lowering
ohah/zntc#5111생성 · 병합mergedmainstyle(test): format default facade integration cases
ohah/zntc#5110생성 · 병합mergedmainfix(bundler): bind default export facade by SymbolId
ohah/zntc#5109생성 · 병합mergedmainrefactor(codegen): require enum member owner SymbolId
ohah/zntc#5108생성 · 병합mergedmainrefactor(codegen): require enum IIFE parameter SymbolId
ohah/zntc#5107생성 · 병합mergedmainrefactor(codegen): require namespace IIFE parameter SymbolId
ohah/zntc#5106생성 · 병합mergedmainrefactor(codegen): 네임스페이스 export 참조를 Transformer로 이동