2026-06-11

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

요약 (AI 작성)

maru는 이모지 표시를 집중적으로 다뤘습니다. 전날 열린 #255로 컬러 이모지를 atlas RGBA 그대로 그리게 한 뒤, VS16 표현과 기본 이모지 폭(#256, #257), 스킨톤·국기 이모지를 한 셀로 묶는 grapheme 1단계(#258)를 넣었습니다. 그러나 이모지가 든 명령을 붙여넣으면 zsh의 폭 계산과 어긋나 명령줄이 깨지는 문제가 이어져, 스킨톤·국기·VS16 이모지의 폭을 셸과 맞추는 쪽으로 되돌렸고(#259, #260, #261), 큰 glyph는 셀에 맞게 축소하며(#262, #264) 풀사이즈 이모지는 앱이 켜는 DEC mode 2027로만 쓰게 했습니다(#263). 리뷰와 재점검으로 컬러 판정 단일화, mode 2027 경계 사례, 0x1F000 블록 이모지와 VS15 처리, 스크롤 바닥에서의 soft-wrap 플래그를 고쳤습니다(#265, #266, #272, #273).

이후 maru는 설정과 키 입력으로 넘어갔습니다. vttest 로컬 워크플로와 자체 응답 적합성 스위트를 문서로 정했고(#267), 폰트·테마·커서용 사용자 설정 파일 로딩(#268)과 키바인딩 파싱(#269)을 넣었습니다. Home·End·Page·F1–F12 함수 키 인코딩(#270)을 물리 키에 연결하고 IME를 거치지 않게 했으며(#274, #275), PageUp·PageDown은 메인 화면 스크롤로 바꿨다가 xterm·Ghostty처럼 앱에 넘기는 것을 기본으로 하는 input.page-keys 설정으로 정리했습니다(#276, #277). Cmd+Backspace 같은 macOS 줄 편집 바인딩(#280)을 넣고, Cmd+←·→가 동작하도록 셸을 login shell과 login(1)으로 띄운 뒤(#281, #282) 사용자 keymap과 무관하게 편집 키를 묶는 zsh 셸 통합(#283)을 추가했습니다. 문서 동기화와 PR 본문에 Mermaid 다이어그램을 요구하는 규칙(#285)도 들어왔고, OSC 133 semantic prompt 파싱 #286은 이날 PR이 열렸습니다.

zntc는 다운레벨 정확성 수정을 이어 갔습니다. 전날 열린 numeric·bigint 프로퍼티 키 #4247을 병합했고, object rest 제외 키의 quote·escape·숫자 처리(#4250), object rest의 그래프 prepass 게이트(#4252), es2017 타깃에서 함수 파라미터·할당 대상 object rest lowering(#4255), for-of·for-in 좌변 object rest(#4259, #4260)를 고쳤습니다. es5에서는 식별자 안의 \u{...} escape(#4256)와 computed 객체 리터럴 키(#4257)를 바로잡았고, 구조 분해 할당 대상인 super 프로퍼티 쓰기(#4258)도 수정했습니다. 깨진 vue 최신 배포를 피하려 e2e의 vue 버전을 3.5.35로 고정했고(#4253), rest 파라미터 관련 #4262는 이날 PR이 열렸습니다.

suji는 공증 제출 전에 dmg를 읽을 수 있는지 확인하는 커밋을 넣었다가 같은 날 되돌렸습니다. 블로그 저장소에는 오늘의 커밋 요약과 크론이 만든 MDX·문구 수정 커밋이 올라갔습니다.

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

커밋

ohah/maru

ohah/ohah.github.io

ohah/suji

ohah/zntc

PR (해당일 생성/머지)

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

저장소PR해당일 활동상태대상 브랜치제목
ohah/maru#286생성mergedmainfeat(terminal): OSC 133 semantic prompt parsing + per-row classification
ohah/maru#285생성 · 병합mergedmaindocs(pr): require maximum-detail PR bodies with Mermaid diagrams
ohah/maru#284생성 · 병합mergedmaindocs: sync plan/matrix/dev-commands with merged input·login·shell work
ohah/maru#283생성 · 병합mergedmainfeat(shell): zsh shell integration — bind macOS editing keys regardless of user keymap
ohah/maru#282생성 · 병합mergedmainfix(pty): wrap the interactive shell in login(1) for a full login session (macOS)
ohah/maru#281생성 · 병합mergedmainfix(pty): run the interactive shell as a login shell (+ configurable TERM)
ohah/maru#280생성 · 병합mergedmainfeat(keybinding): built-in macOS line-editing bindings (Cmd+Backspace etc.)
ohah/maru#279생성 · 병합mergedmainchore(macos): log modifier flags in keyDown trace (MARU_IME_DEBUG)
ohah/maru#278생성 · 병합mergedmainchore(runtime): log outgoing key bytes (core->pty) under MARU_DEBUG
ohah/maru#277생성 · 병합mergedmainfeat(config): input.page-keys (default passthrough = xterm/Ghostty)
ohah/maru#276생성 · 병합mergedmainfix(platform): PageUp/PageDown scroll on main screen, page the app on alt screen
ohah/maru#275생성 · 병합mergedmainfix(platform): route special keys straight to the encoder, not through the IME
ohah/maru#274생성 · 병합mergedmainfeat(platform): wire physical function keys to the encoder (ABI KeyCode + Swift keyCode map)
ohah/maru#273생성 · 병합mergedmainfix(terminal): keep soft-wrap flag when mode-2027 emoji wraps at the scroll bottom (re-check HIGH)
ohah/maru#272생성 · 병합mergedmainfix(render): restore 0x1F000-block color emoji + honor VS15 (re-check)
ohah/maru#271생성 · 병합mergedmainfix(platform): guard loaded_config deinit + isolate config from unit tests (re-check HIGH)
ohah/maru#270생성 · 병합mergedmainfeat(terminal): function-key encoding + bindings (Home/End/Insert/Delete/Page/F1-F12) — terminal side
ohah/maru#269생성 · 병합mergedmainfeat(config): parse keybindings into a validated KeyBindingResolver
ohah/maru#268생성 · 병합mergedmainfeat(config): user config file loading for appearance (font/theme/cursor)
ohah/maru#267생성 · 병합mergedmaindocs(test): VT conformance testing — vttest local + self-owned response conformance
ohah/maru#266생성 · 병합mergedmainfix(terminal): mode 2027 edge cases + RIS alternate_scroll (code-review MEDIUM)
ohah/maru#265생성 · 병합mergedmainfix(render): single-source emoji color predicate + cursor color + font-based scale
ohah/maru#264생성 · 병합mergedmainfix(platform): scale-fit only emoji (text baseline) + fill slot like Ghostty .cover
ohah/maru#263생성 · 병합mergedmainfeat(terminal): DEC mode 2027 (grapheme cluster width) for opt-in full-size emoji
ohah/maru#262생성 · 병합mergedmainfeat(platform): scale oversized glyphs to fit their cell instead of clipping (Ghostty model)
ohah/maru#261생성 · 병합mergedmainfix(terminal): keep VS16 emoji at EAW width 1 so zsh recolor redraw doesn't garble paste
ohah/maru#260생성 · 병합mergedmainfix(terminal): render regional indicators as separate EAW cells (paste agreement)
ohah/maru#259생성 · 병합mergedmainfix(terminal): keep skin-tone modifier at EAW width 2 (paste no longer garbles)
ohah/maru#258생성 · 병합mergedmainfeat(terminal): cluster skin-tone and flag emoji into one wide cell (grapheme stage 1)
ohah/maru#257생성 · 병합mergedmainfix(terminal): promote a VS16-marked base cell to width 2 (heart no longer half-cut)
ohah/maru#256생성 · 병합mergedmainfix(terminal): emoji presentation — VS16 zero-width attach + default-emoji width 2 (no half-cut, color)
ohah/maru#255병합mergedmainfeat(renderer): render color emoji with the atlas RGBA instead of a foreground silhouette
ohah/zntc#4262생성mergedmainfix(transformer): rest param(ES2015)을 default_params 지원 타겟에서 native 유지 — arrow object+array-rest 조합
ohah/zntc#4260생성 · 병합mergedmainfix(transformer): for-of/for-in assignment-target object rest LHS 를 es2015~17 에서 lowering
ohah/zntc#4259생성 · 병합mergedmainfix(transformer): for-of/for-in binding object rest LHS 의 es2015~17 코드깨짐 + per-iteration 보존
ohah/zntc#4258생성 · 병합mergedmainfix(transformer): super prop 이 destructuring assignment target 일 때 __superSet write 로
ohah/zntc#4257생성 · 병합mergedmainfix(transformer): es5 computed object-literal 의 string/numeric 키를 computed member 로
ohah/zntc#4256생성 · 병합mergedmainfix(codegen): identifier 위치 \u{...} brace escape 를 es5 에서 다운레벨
ohah/zntc#4255생성 · 병합mergedmainfix(transformer): 함수/arrow 파라미터·assignment-target object rest 를 es2017 에서 lowering
ohah/zntc#4253생성 · 병합mergedmaintest(e2e): vue 설치를 3.5.35 로 고정 (2곳) — broken latest publish 회피
ohah/zntc#4252생성 · 병합mergedmainfix(bundler): object rest 의 graph prepass 게이트에 object_spread 추가
ohah/zntc#4250생성 · 병합mergedmainfix(transformer): object rest exclusion 키의 quote/escape/numeric 처리
ohah/zntc#4247병합mergedmainfix(transformer): numeric/bigint 프로퍼티 키 합성을 노드 패스스루로