2026-06-07

날짜는 UTC 기준으로 나눴습니다(9월 22일부터는 한국 시간 기준). 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 목록은 2026-10-06 KST에 GitHub에서 다시 조회해 보강했습니다. 공개 저장소의 기본 브랜치 활동만 포함합니다.

요약 (AI 작성)

maru는 전날 열린 #96으로 render frame이 glyph quad를 소유하게 한 뒤, glyph 래스터 upload frame(#97)과 Metal의 제품 atlas 업로드 검증·샘플링(#99, #100)으로 넘어갔습니다. 이후 Metal smoke 판정을 atlas 샘플 기준으로 바꾸고(#102), shaped glyph record 어댑터(#103)와 renderer state의 shaped run 수용(#105), font identity 레지스트리(#108)를 거쳐 CoreText smoke가 renderer state와 font identity를 타게 했습니다. CoreText 쪽은 font 어댑터, shaper, rasterizer, probe 경계를 차례로 분리했고(#110, #112, #114, #115), 밤에는 CoreText glyph를 Metal smoke에서 그리고 DrawList를 CoreText로 shaping해 Metal로 렌더한 뒤 스크린샷 아티팩트를 남겼습니다(#116부터 #119까지). 새벽에는 실제 PTY를 붙인 앱 호스트 smoke와 Metal smoke(#120, #122), 스크립트 입력, 키 바인딩 입력 resolver(#124)와 그 라우팅, AppKit keyDown을 PTY smoke로 잇는 브리지와 수동 입력 모드(#126, #127)가 들어왔고, 리뷰에서 나온 C0 제어 문자 표와 키 인코딩 문제를 고쳤습니다(#128).

suji는 single-instance 락에 이어 두 번째 인스턴스의 argv를 primary로 넘기는 second-instance 이벤트를 Unix 소켓(#95)과 Windows named pipe(#96)로 구현했습니다. session.setProxy(#99), 강제 파괴용 BrowserWindow.destroy()(#101), CEF 권한 핸들러를 쓰는 setPermissionRequestHandler(#104)를 추가했고, setSSLConfig와 cookies.changed는 CEF 제약으로 보류한다고 문서에 적었습니다. 창 속성은 크기·위치와 최소·최대 크기(#106), resizable 등 capability 플래그(#107), movable·focusable·kiosk 등 모드 토글(#108)을 세 묶음으로 채웠고, 메뉴는 MenuItem의 id·visible, accelerator, role 필드(#109, #110, #111)와 Menu.getApplicationMenu·getMenuItemById(#112)를 더했습니다. Electron 패리티 감사 문서를 다시 맞추고, 실수로 커밋된 검증 산출물도 지웠습니다. Menu.sendActionToFirstResponder #114는 이날 PR이 열렸습니다.

zntc는 16개 패키지를 0.1.2로 올리는 릴리스 커밋(#4195)을 넣고, npm 퍼블리시가 실패하지 않도록 bun.lock을 동기화했습니다(#4196).

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

커밋

ohah/maru

ohah/suji

ohah/zntc

PR (해당일 생성/머지)

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

저장소PR해당일 활동상태대상 브랜치제목
ohah/maru#128생성 · 병합mergedmainfix(input): complete C0 table and harden key encoding from review
ohah/maru#127생성 · 병합mergedmainfeat(platform): add manual keydown smoke mode
ohah/maru#126생성 · 병합mergedmainfeat(platform): bridge AppKit keyDown into PTY smoke
ohah/maru#125생성 · 병합mergedmainfeat(app): route key events through resolver
ohah/maru#124생성 · 병합mergedmainfeat(config): add keybinding input resolver
ohah/maru#123생성 · 병합mergedmainfeat(platform): script input through live PTY Metal smoke
ohah/maru#122생성 · 병합mergedmainfeat(platform): add live PTY Metal smoke
ohah/maru#121생성 · 병합mergedmainfix(platform): harden CoreText/Metal smoke from review findings
ohah/maru#120생성 · 병합mergedmainfeat(app): add live PTY app host smoke
ohah/maru#119생성 · 병합mergedmainfeat(platform): capture Metal smoke screenshot artifact
ohah/maru#118생성 · 병합mergedmainfeat(platform): render DrawList through Metal smoke
ohah/maru#117생성 · 병합mergedmainfeat(platform): shape DrawList with CoreText
ohah/maru#116생성 · 병합mergedmainfeat(platform): render CoreText glyphs in Metal smoke
ohah/maru#115생성 · 병합mergedmainrefactor(platform): extract CoreText probe boundary
ohah/maru#114생성 · 병합mergedmainfeat(platform): extract CoreText rasterizer boundary
ohah/maru#113생성 · 병합mergedmainfix(platform): keep CoreText probe font names stable
ohah/maru#112생성 · 병합mergedmainfeat(platform): add CoreText shaper boundary
ohah/maru#111생성 · 병합mergedmaindocs(platform): correct overclaim on required CoreText drawable field
ohah/maru#110생성 · 병합mergedmainfeat(platform): extract CoreText font adapter boundary
ohah/maru#109생성 · 병합mergedmainfeat(platform): route CoreText smoke through font identity
ohah/maru#108생성 · 병합mergedmainfeat(renderer): add font identity registry
ohah/maru#107생성 · 병합mergedmainfeat(platform): rasterize CoreText smoke glyph runs
ohah/maru#106생성 · 병합mergedmainfeat(platform): route CoreText smoke through renderer state
ohah/maru#105생성 · 병합mergedmainfeat(renderer): accept shaped glyph runs in renderer state
ohah/maru#104생성 · 병합mergedmainfeat(renderer): preserve surface metadata for shaped records
ohah/maru#103생성 · 병합mergedmainfeat(renderer): add shaped glyph record adapter
ohah/maru#102생성 · 병합mergedmainfix(renderer): gate Metal smoke on atlas samples
ohah/maru#101생성 · 병합mergedmainfix(renderer): sample atlas ink texels in Metal smoke
ohah/maru#100생성 · 병합mergedmainfeat(renderer): sample product atlas in Metal smoke
ohah/maru#99생성 · 병합mergedmainfeat(renderer): verify Metal atlas raster upload
ohah/maru#98생성 · 병합mergedmainAlign glyph raster skips with atlas bounds
ohah/maru#97생성 · 병합mergedmainfeat(renderer): add glyph raster upload frame
ohah/maru#96병합mergedmainfeat(renderer): make render frame own glyph quads
ohah/suji#114생성mergedmainfeat(menu): Menu.sendActionToFirstResponder
ohah/suji#113생성 · 병합mergedmainchore: 스트레이 검증 바이너리 제거 + 루트 test_* gitignore
ohah/suji#112생성 · 병합mergedmainfeat(menu): Menu.getApplicationMenu + getMenuItemById
ohah/suji#111생성 · 병합mergedmainfeat(menu): MenuItem role field (Menu batch Phase B-2)
ohah/suji#110생성 · 병합mergedmainfeat(menu): MenuItem accelerator field (Menu batch Phase B)
ohah/suji#109생성 · 병합mergedmainfeat(menu): MenuItem id + visible fields (Menu batch Phase A)
ohah/suji#108생성 · 병합mergedmainfeat(windows): setMovable/Focusable/Enabled/FullScreenable/Kiosk (mode toggles)
ohah/suji#107생성 · 병합mergedmainfeat(windows): setResizable/Minimizable/Maximizable/Closable (capability flags)
ohah/suji#106생성 · 병합mergedmainfeat(windows): setSize/setPosition + min/max size (Geometry batch)
ohah/suji#105생성 · 병합mergedmainchore: 실수로 커밋된 빈 아티팩트 test_intcast 제거
ohah/suji#104생성 · 병합mergedmainfeat(session): setPermissionRequestHandler (CEF cef_permission_handler_t)
ohah/suji#103생성 · 병합mergedmaindocs: setSSLConfig / cookies.changed — CEF 본질적 제약으로 보류 명시
ohah/suji#102생성 · 병합mergedmaindocs(window): BrowserWindow.destroy() 문서화 + audit done 마킹 (#101)
ohah/suji#101생성 · 병합mergedmainfeat(window): BrowserWindow.destroy() — 강제 파괴 (window:close 스킵)
ohah/suji#100생성 · 병합mergedmaindocs(session): setProxy API 문서화 + audit done 마킹 (#99)
ohah/suji#99생성 · 병합mergedmainfeat(session): setProxy — Electron session.setProxy (Chromium proxy preference)
ohah/suji#98생성 · 병합mergedmaindocs(audit): electron-parity-audit 재동기화 — 구현 완료 27항목 done 마킹
ohah/suji#97생성 · 병합mergedmaindocs(app): single-instance / second-instance API 문서화 (#94~96)
ohah/suji#96생성 · 병합mergedmainfeat(app): second-instance Windows named pipe (PR-B2)
ohah/suji#95생성 · 병합mergedmainfeat(app): second-instance 이벤트 — 두 번째 인스턴스 argv 를 primary 로 전달
ohah/zntc#4196생성 · 병합mergedmainfix(release): bun.lock 동기화 — v0.1.2 publish 복구
ohah/zntc#4195생성 · 병합mergedmainchore(release): v0.1.2