2026-06-06
날짜는 UTC 기준으로 나눴습니다(9월 22일부터는 한국 시간 기준). 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 목록은 2026-10-06 KST에 GitHub에서 다시 조회해 보강했습니다. 공개 저장소의 기본 브랜치 활동만 포함합니다.
요약 (AI 작성)
maru는 macOS 렌더링 경로를 smoke 테스트로 한 단계씩 쌓았습니다. 전날 열린 Metal smoke #63을 병합한 뒤 placeholder 셀 그리기와 readback 검증(#65, #66)을 붙였고, CoreText shaping smoke(#67)에서 나온 glyph를 atlas 키로 넘기고 래스터·texture·text smoke(#69, #71, #72)와 스크린샷 캡처까지 이어 갔습니다. glyph frame 계약(#74)을 세워 CoreText smoke와 앱 호스트가 이를 거치게 했고, appearance 설정 해석(#77)과 공용 color.Rgb 분리(#78)로 해석된 폰트·테마 색을 smoke에 적용했습니다. 창 backing scale에 맞춘 probe 준비(#88), font size·device scale 상하한 고정, RenderFrame 통계 직렬화 단일화(#92, #93), atlas 슬롯 배치(#91, #94), glyph quad UV frame(#95)이 뒤를 이었고, 런타임·외부 프로파일러 전략 문서(#85)와 PR metadata 체크 중복 실행 정리(#70)도 들어왔습니다. render frame이 glyph quad를 소유하게 하는 #96은 이날 PR이 열렸습니다.
suji는 Electron API 맞추기를 이어 갔습니다. BrowserWindow에 focus·isNormal(#81), bounds·size·position 조회(#82), 가시성·포커스·always-on-top(#83), 전체 창과 포커스 창 조회(#84), 콘텐츠 영역 bounds(#92)를 더했고, Rust·Go SDK에도 창 생명주기·상태 메서드 21종을 넣었습니다(#85, #86). screen.getDisplayMatching은 JS SDK로 추가한 뒤 코어 명령으로 옮겨 6개 언어에서 쓰게 했고(#89), powerMonitor.isOnBatteryPower·nativeTheme.themeSource·Notification.removeAll(#91)과 그 Linux 빌드 수정(#93), single-instance 락(#94)도 들어왔습니다. suji init은 multi 스캐폴딩에 lua·python 백엔드를 추가하고(#79) CLI의 python 스캐폴딩 e2e를 갖췄습니다.
zntc는 dev HMR과 cold 빌드 성능을 다듬었습니다. computeRenames의 중첩 바인딩 판정을 모듈별로 캐시하고(#4186), 보존 경로에서 import·re-export 분석을 변경 모듈과 importer로 한정했으며(#4190), 위상이 같으면 renumber를 건너뛰게 했습니다(#4192). RN dev HMR의 watch 디바운스 기본값을 50ms에서 16ms로 낮추고(#4193), dev cold 빌드가 병렬 scan을 타도록 바꿨습니다(#4194). 포맷 체크 실패를 계기로 저장소에 자동 포매팅 pre-commit 훅을 두고(#4188) 그 안전성도 보강했습니다(#4191).
공개 커밋 77개, 해당일 생성 또는 병합된 PR 60개를 정리했습니다. PR 생성 59개·병합 59개는 같은 PR이 양쪽에 포함될 수 있습니다.
커밋
ohah/maru
- fix(renderer): skip out-of-bounds glyph quads instead of failing the frame
- feat(renderer): prepare glyph quad uv frame
- fix(platform): clamp backing scale before FFI float-to-uint cast
- feat(platform): pass atlas placement to metal smoke
- feat(renderer): assign atlas slot placement
- refactor(app): emit app host frame stats via shared renderer serializer
- refactor(renderer): own RenderFrame probe stats in a single source
- fix(renderer): clamp device_scale upper bound symmetric with font size
- refactor(platform): align metal smoke frame probe with glyph text smoke
- feat(platform): feed Metal smoke from glyph frame
- refactor(platform): harden device scale conversion from review
- fix(platform): prepare glyph text probe at the window backing scale
- docs(platform): expose fake shaper in glyph text probe
- test(renderer): cover render frame consistency failures
- refactor(renderer): share glyph frame consistency check across host and smoke
- feat(platform): report renderer frame probe in glyph text smoke
- docs(profiling): add runtime/external profiler strategy
- fix(renderer): clamp text config device scale
- fix(renderer): clamp textConfigFromFontSize against ReleaseFast UB
- feat(renderer): prepare app host glyph frames
- fix(platform): generalize glyph visibility check and harden color tests
- feat(platform): apply resolved appearance colors in glyph text smoke
- refactor(config): consume shared color.Rgb in appearance resolver
- test(platform): feed resolved font config into CoreText smoke
- refactor(color): extract shared Rgb into backend-neutral module
- fix(config): harden appearance resolver whitespace, surface, and tests
- feat(config): resolve appearance settings
- fix(platform): avoid double-free in coretext glyph frame probe
- test(platform): route CoreText smoke through glyph frame
- test(renderer): pin glyph frame stat passthrough and upload index
- feat(renderer): prepare glyph frame contract
- refactor(platform): single-pass glyph text readback counting
- feat(renderer): capture glyph text smoke screenshot
- fix(platform): use premultiplied over-blend in glyph text smoke
- feat(renderer): add macOS glyph text smoke
- fix(platform): clarify glyph texture smoke diagnostics
- fix(platform): apply glyph texture smoke review fixes
- feat(renderer): add macOS glyph texture smoke
- ci(pr-metadata): collapse redundant runs to unblock required check
- fix(platform): exclude CoreText glyph-buffer overflow from shape signal
- feat(renderer): add CoreText glyph raster smoke
- docs(platform): clarify Swift app host timing
- feat(renderer): feed CoreText smoke glyphs into atlas keys
- feat(platform): add macOS CoreText shaping smoke
- fix(platform): require all sampled readback pixels non-clear
- fix(platform): require Metal readback for terminal grid smoke
- fix(platform): harden Metal smoke vertex ABI, buffer, and layer hosting
- feat(platform): draw placeholder cells in Metal smoke
- fix(platform): harden macOS Metal smoke guards
- fix(platform): assert window visibility and apply window-smoke review fixes
- feat(platform): add macOS Metal smoke
ohah/suji
- feat(app): requestSingleInstanceLock / hasSingleInstanceLock / releaseSingleInstanceLock
- fix(power-monitor): Linux 빌드 깨짐 수정 — std.posix.openZ → extern c open
- feat(window): BrowserWindow.getContentBounds/setContentBounds/getContentSize (Electron 패리티)
- feat: powerMonitor.isOnBatteryPower + nativeTheme.themeSource(getter) + Notification.removeAll
- fix(screen): getDisplayMatching index 정합 가드 (/code-review max --fix)
- refactor(screen): getDisplayMatching 을 코어 cmd 로 — 6개 언어 전부 지원
- feat(screen): screen.getDisplayMatching(rect) — 듀얼/멀티모니터 (Electron 패리티)
- test(rust-sdk): window 리네임 트랩 cmd 가드 (restore_window/destroy_window)
- feat(go-sdk): windows 생명주기/상태 메서드 (JS @suji/api 패리티)
- feat(rust-sdk): windows 생명주기/상태 메서드 (JS @suji/api 패리티)
- feat(window): BrowserWindow.getAllWindows() + getFocusedWindow() (Electron 패리티)
- feat(window): BrowserWindow isVisible/isFocused/blur/setAlwaysOnTop/isAlwaysOnTop
- feat(window): BrowserWindow.getBounds()/getSize()/getPosition() (Electron 패리티)
- feat(window): BrowserWindow.focus() + isNormal() (Electron 패리티)
- docs: init 백엔드 목록에 python 누락 보정 (doc drift)
- feat(init): multi 스캐폴딩에 lua + python 백엔드 추가
- test(init): @suji/cli python 백엔드 스캐폴딩 e2e 추가 (lua 동형 갭 메움)
- docs: 모바일 python CI 자동 커버리지 반영 + run.sh 하니스 65→68/68 동기화
ohah/zntc
- perf(graph): dev cold build 병렬 scan — preserve 경로 cold 를 build() 로 라우팅
- perf(rn): dev HMR watch 디바운스 기본 50→16ms + --watch-delay 플러밍
- perf(graph): renumber identity fast-path — 위상 보존-hit 시 realloc/remap skip (#4175)
- fix(hooks): pre-commit 안전성 — 공백 파일명/포매터 실패/부분 stage (#4188 후속)
- perf(linker): lImp/lReExp 를 변경∪importer 한정 partial-skip (#4189)
- chore(hooks): repo-tracked .githooks (자동 포매팅 pre-commit) — CI fmt 깨짐 방지
- fix(test): hmr-wait.ts oxfmt 포매팅 (CI fmt:check 복구)
- perf(linker): computeRenames hasNestedBinding 모듈당 union set 캐시 — cold lRen 절감
PR (해당일 생성/머지)
상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.