2026-06-08
날짜는 UTC 기준으로 나눴습니다(9월 22일부터는 한국 시간 기준). 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 목록은 2026-10-06 KST에 GitHub에서 다시 조회해 보강했습니다. 공개 저장소의 기본 브랜치 활동만 포함합니다.
요약 (AI 작성)
maru는 오전에 frame loop smoke 계약(#129)과 live PTY frame loop smoke(#130)를 만들고 Metal smoke를 이 경로로 옮겼습니다. live PTY 세션 소유권을 한곳으로 모은 뒤(#134) 닫기를 detach 경계, 앱 호스트, 레지스트리를 거치도록 정리했고(#135, #137, #138), 대화형 shell smoke(#140, #141)와 닫기 시점의 자식 프로세스 회수(#142), Metal 창에서의 PTY 닫기와 keyDown 캡처 테스트를 더했습니다. 오후에는 macOS Swift 앱 호스트 경계(#148)와 dev shell, dev session 런타임 연결과 이벤트 라우팅(#149부터 #151까지)을 세웠고, 리뷰에서 나온 세션 종료 신호와 이벤트별 치명적 종료 문제를 고쳤습니다(#152). 저녁에는 dev session이 실제 CoreText glyph frame을 그리고(#155) 이를 Metal frame ABI로 노출한 뒤(#156), 셀 셰이더를 공유하는 제품 Metal 렌더러(#158)와 Swift Metal 터미널 뷰(#159)까지 연결했습니다. 이어서 렌더러 경계 보강과 idle 호출 생략(#160, #161), 고정 픽셀 크기 셀 배치(#162), SGR·커서·지우기 VT escape 해석(#163), resize 때 화면 내용 보존(#164)이 들어왔습니다.
suji는 Electron 패리티 항목을 카테고리별로 마무리했습니다. 전날 열린 Menu.sendActionToFirstResponder #114를 병합하고 MenuItem 아이콘·Menu.insert·메뉴 열림/닫힘 이벤트(#115)로 Menu를 닫았습니다. nativeTheme·nativeImage getter, globalShortcut registerAll과 일시 중지, ipc handleOnce·removeAllListeners, clipboard 북마크·찾기 텍스트·다중 쓰기, tray getBounds, notification 그룹과 Notification 클래스, powerMonitor 종료·배터리 이벤트, screen 디스플레이 변경 이벤트(#117부터 #124까지)가 들어왔습니다. 이어 WebContentsView 클래스(#125), webContents stop·insertCSS(#126), 다운로드 경로와 will-download(#127), webRequest 응답 헤더와 요청 헤더 설정(#128, #131), before-quit 이벤트(#129), 기본 프로토콜 클라이언트 등록(#130), setWindowOpenHandler(#132)를 추가했습니다. SDK wire 계약 테스트와 before-quit e2e를 보강했고, 리뷰에서 before-quit 때 메인 창이 닫히지 않던 문제 등 5건을 고쳤습니다(#135).
zntc는 0.1.2 퍼블리시 뒤 생긴 bun.lock 차이를 맞추고, 배포되는 7개 패키지에 영어 기본 README와 한국어 링크를 넣었습니다(#4197). 블로그 저장소에는 이날 오늘의 커밋 요약 커밋이 올라갔습니다.
공개 커밋 61개, 해당일 생성 또는 병합된 PR 59개를 정리했습니다. PR 생성 58개·병합 59개는 같은 PR이 양쪽에 포함될 수 있습니다.
커밋
ohah/maru
- feat(terminal): preserve screen content across resize
- feat(platform): lay out terminal cells at fixed pixel size
- feat(terminal): interpret VT escape sequences (SGR, cursor, erase)
- perf(platform): fill vertex buffer in place and skip idle metal-frame calls
- fix(platform): harden metal renderer bounds, drawable, and surface repaint
- feat(platform): draw the dev session in a Swift Metal terminal view
- feat(platform): add a lean product Metal renderer and share the cell shader
- fix(platform): correct metal-frame retention lifecycle and dirty-gate it
- feat(platform): expose the dev session RenderFrame as a Metal-frame ABI
- feat(platform): render real CoreText glyph frames in the dev session
- refactor(app): share smoke termination and artifact-write helpers
- refactor(platform): unify shell resolution and key codepoint conversion
- fix(platform): signal session end and stop fatal per-event app exits
- feat(platform): route Swift app dev events
- feat(platform): attach Swift app dev session runtime
- feat(platform): add macOS app dev shell
- feat(platform): define macOS Swift app host boundary
- test(platform): capture keyDown on Metal terminal window
- test(platform): close live PTY from Metal window
- test(app): pin repeated frame builder loop contract
- test(platform): add visible interactive shell PTY Metal smoke
- test(app): bound PTY smoke drain waits
- fix(app): reap live PTY child at close boundary and pin lifecycle invariants
- test(app): add interactive shell frame-loop smoke
- test(pty): add interactive shell smoke
- feat(platform): route native close smoke through app host
- feat(app): add live PTY registry close boundary
- feat(app): route live pty close through app host
- feat(platform): gate app pty metal close lifecycle
- feat(app): add live pty close detach boundary
- refactor(app): centralize live PTY session ownership
- refactor(platform): extract CoreText frame builder
- refactor(app): route live PTY Metal smoke through frame loop
- refactor(platform): project Metal smoke fixtures from render frames
- feat(app): add live pty frame loop smoke
- feat(app): add frame loop smoke contract
ohah/ohah.github.io
ohah/suji
- fix(review): code-review max 후속 — before-quit 창닫기 누락 외 5건 수정
- test(app): before-quit behavioral e2e — 백엔드 마커로 종료 전 발화 검증
- test(sdk): 백엔드 SDK wire-contract 보강 — Node behavioral + cross-SDK drift 가드
- feat(webContents): setWindowOpenHandler — popup 정책 + new-window 이벤트 (전 5 SDK)
- feat(webRequest): setRequestHeaders (declarative onBeforeSendHeaders) — 전 5 SDK
- feat(app): setAsDefaultProtocolClient 트리오 — 전 5 SDK (macOS LS)
- feat(app): before-quit 이벤트 — quit chokepoint 훅
- feat(webRequest): responseHeaders + statusText in completed (onHeadersReceived)
- feat(session): setDownloadPath + will-download 이벤트 — 전 5 SDK
- feat(webContents): stop + insertCSS + removeInsertedCSS — 전 5 SDK
- feat(WebContentsView): View.getBounds + setBackgroundColor + WebContentsView 클래스
- feat(screen): display-added/removed/metrics-changed events
- feat(powerMonitor): shutdown + on-battery/on-ac events
- feat(notification): caller id + groupId/removeGroup + Notification class
- feat(tray): setToolTip alias + getBounds — 전 5 SDK
- feat(clipboard): writeBookmark + writeFindText + write(multi) — 전 5 SDK
- feat(ipc,powerSaveBlocker): removeAllListeners + handleOnce + isStarted (+Zig SDK catch-up)
- feat(globalShortcut): registerAll + setSuspended/isSuspended
- feat(nativeTheme,nativeImage): high-contrast/reduced-transparency + isEmpty/isTemplateImage (native getters)
- docs(site): menu.mdx 를 전체 Menu API 표면으로 동기화 (배치 누락분 catch-up)
- feat(menu): MenuItem.icon + Menu.insert + menu:will-show/will-close (Menu tail)
- feat(menu): Menu.sendActionToFirstResponder (Menu batch)
ohah/zntc
- chore: bun.lock post-publish sync — 0.1.2 platform 바이너리 npm refs
- docs: 배포 패키지 release README — 영어 기본 + 한국어 링크
PR (해당일 생성/머지)
상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.