2026-06-19

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

요약 (AI 작성)

maru는 설정을 크게 넓혔습니다. window padding을 chrome이 아닌 셀 그리드에만 적용하고 상하좌우를 따로 지정하게 했으며(#676, #678), scrollback.lines·bell.audible(#677), ANSI 16색 override(#679), 행간·자간(#680), maru·ghostty 테마 프리셋(#687)과 gruvbox·solarized·dracula·catppuccin 등 6종 추가(#688), 네이티브 메뉴의 Reload Config·Reset to Defaults(#683)를 넣었습니다. 렌더링에서는 OSC 133 gutter 표시를 셀 바깥으로 옮겨 첫 열 글자와 겹치지 않게 했고(#682, #684), CAMetalLayer를 sRGB 색 공간으로 지정했습니다(#689). 사이드바는 고정 탭을 맨 위 영역에 모으고 드래그를 그룹 안으로 제한했습니다(#685).

입력 쪽은 파일·URL·텍스트 드래그 앤 드롭(#690)을 넣은 뒤 TUI가 이미지를 인식하도록 Cmd+V와 같은 붙여넣기 경로로 정리했고(#696), Cmd+] / [를 pane 순환으로 바꾸고 Term 순환은 Cmd+Opt 조합으로 옮겼으며(#691), Cmd+K로 화면과 스크롤백을 비우는 clear_screen(#694)을 추가했습니다. 사이드바·탭 라벨이 복원된 정적 제목에 고정되던 문제(#698), 알림 권한 선요청(#699), Claude·Codex가 별도 설정 없이 데스크톱 알림을 보내도록 하는 TERM_PROGRAM=ghostty 주입(#701)도 들어왔습니다. 스레딩 쪽에서는 IME 조합 확정 때의 코어 락 재진입 데드락을 고치고(#700), 재진입 안전망 CoreOwner와 락 없는 코어 변경 감지(#703, #704), 직접 lock 호출을 막는 경계 가드를 추가했으며, termLabel use-after-free도 수정했습니다(#702).

밤에는 배포와 원격 환경을 다뤘습니다. XTVERSION 자기 식별 응답(#705), 서명·공증·staple을 자동화한 macos-dmg 빌드 스텝과 최소 macOS 11.0(#697), opt-in xterm-maru terminfo(#709)와 이를 원격에 전파하는 maru ssh 래퍼(#707)가 들어왔고, 리뷰 후속으로 ControlMaster 단일 연결과 이식성을 손본 뒤 terminfo 소스를 바이너리에 넣어 로컬 설치 없이 동작하게 했습니다(#711, #712). 기능 브랜치를 대상으로 한 terminfo PR #706은 병합되지 않고 닫혔습니다.

iris는 Uint8Array·분기·숫자·프로퍼티 루프의 벌크 빠른 경로와 JS 계산 루프 빠른 경로(#69부터 #74까지)를 채택하고, JSON payload 생성과 object traversal, JSON snapshot 기반 round-trip과 tail loop, 문자열 복사 제거, compact snapshot과 layout detector 최적화(#75부터 #81까지)를 병합했습니다. 블로그 저장소에는 크론이 만든 CRD 점검과 맞춤법 커밋이 올라갔습니다.

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

커밋

ohah/iris

ohah/maru

ohah/ohah.github.io

PR (해당일 생성/머지)

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

저장소PR해당일 활동상태대상 브랜치제목
ohah/iris#81생성 · 병합mergedmainJSON payload layout detector 최적화
ohah/iris#80생성 · 병합mergedmainJSON payload compact snapshot 최적화
ohah/iris#79생성 · 병합mergedmainJSON snapshot 문자열 복사 제거
ohah/iris#78생성 · 병합mergedmainJSON 라운드트립 tail loop 최적화
ohah/iris#77생성 · 병합mergedmainJSON snapshot 경로로 round-trip 최적화
ohah/iris#76생성 · 병합mergedmainobject-traversal 벌크 빠른 경로 채택
ohah/iris#75생성 · 병합mergedmainJSON payload 생성 루프 빠른 경로 채택
ohah/iris#74생성 · 병합mergedmainJS 계산 루프 빠른 경로 채택
ohah/iris#73생성 · 병합mergedmain프로퍼티 루프 벌크 빠른 경로 채택
ohah/iris#72생성 · 병합mergedmain숫자 루프 벌크 빠른 경로 채택
ohah/iris#71생성 · 병합mergedmain분기 루프 벌크 빠른 경로 채택
ohah/iris#70생성 · 병합mergedmainUint8Array 루프 벌크 빠른 경로 채택
ohah/iris#69생성 · 병합mergedmainUint8Array 루프 빠른 경로 채택
ohah/maru#712생성 · 병합mergedmainfeat(cli): maru ssh terminfo 소스 embed — 로컬 설치 의존 제거(자기완결)
ohah/maru#711생성 · 병합mergedmainfix: 리뷰 후속 — check.sh 이식성(#5/#6) + maru ssh ControlMaster·command 안전(#2/#3)
ohah/maru#710생성 · 병합mergedmain[NO-ISSUE] code-review max 후속 cleanup — detectReentry 통합 + boundary 파일읽기 헬퍼
ohah/maru#709생성 · 병합mergedmainfeat(terminfo): opt-in xterm-maru terminfo(Sync·Tc) + 로컬 설치·검증
ohah/maru#708생성 · 병합mergedmain[NO-ISSUE] io-render-threading §6-5 구현 반영 + Phase 3(코어 mutate 위임) 설계
ohah/maru#707생성 · 병합mergedmainfeat(cli): maru ssh 원격 terminfo 전파 — opt-in 래퍼(폴백·smoke)
ohah/maru#706생성closed기능 브랜치: feat/xtversion-self-idfeat(terminfo): opt-in xterm-maru terminfo(Sync·Tc) + 로컬 설치·검증
ohah/maru#705생성 · 병합mergedmainfeat(terminal): XTVERSION(CSI > q) 자기식별 — DCS로 maru 이름·버전 응답
ohah/maru#704생성 · 병합mergedmain[NO-ISSUE] 락 없는 코어 mutate 감지(assertOwnedBySelf) — 액터화 1단계 PR B
ohah/maru#703생성 · 병합mergedmain[NO-ISSUE] core_mutex 재진입 데드락 안전망(CoreOwner) — 액터화 1단계
ohah/maru#702생성 · 병합mergedmainfix: /code-review max 후속 — termLabel use-after-free + cleanup·문서·테스트
ohah/maru#701생성 · 병합mergedmainfeat(notify): TERM_PROGRAM=ghostty 주입 — Claude/Codex 무설정 데스크톱 알림
ohah/maru#700생성 · 병합mergedmain[NO-ISSUE] IME 조합 확정 시 코어 락 재진입 데드락 수정
ohah/maru#699생성 · 병합mergedmainfix(notify): 알림 권한을 선요청으로 — OSC 9/777이 안 와도 권한 팝업이 먼저 뜨게
ohah/maru#698생성 · 병합mergedmainfix(chrome): 사이드바·탭 라벨을 라이브 OSC 제목으로 — 복원된 정적 surface.title 고정 해소
ohah/maru#697생성 · 병합mergedmainbuild(macos): 서명·공증·staple 자동화 macos-dmg 스텝 + 최소 macOS 11.0
ohah/maru#696생성 · 병합mergedmainfix(input): 드래그앤드롭을 Cmd+V와 같은 paste 경로로 — TUI [Image] 인식 복원 + send_text 제거(#2 정정)
ohah/maru#695생성 · 병합mergedmaindocs(config): config parser·reload 현황 정합 + clear_screen 액션 등재
ohah/maru#694생성 · 병합mergedmainfeat(input): Cmd+K로 화면+스크롤백 비우기(clear_screen) — Ghostty 3분기
ohah/maru#693생성 · 병합mergedmainfix(input): 드래그 삽입을 bracketed 없는 직접 입력으로(#2) — sendTextAsKeys + ABI v57
ohah/maru#692생성 · 병합mergedmainfix(input): /code-review max 후속 — Cmd+V paste 정책·shellEscape·카탈로그·docs
ohah/maru#691생성 · 병합mergedmainfeat(input): Cmd+]/[ 를 split(pane) 순환으로, Term 순환은 Cmd+Opt+]/[ 로
ohah/maru#690생성 · 병합mergedmainfeat(input): 파일/URL/텍스트 드래그앤드롭 + 붙여넣기 경로 삽입
ohah/maru#689생성 · 병합mergedmainfix(render): CAMetalLayer를 sRGB colorspace로 태그 — 디스플레이 색 정확도
ohah/maru#688생성 · 병합mergedmainfeat(config): 컬러 테마 프리셋 6종 추가(gruvbox/solarized/dracula/catppuccin)
ohah/maru#687생성 · 병합mergedmainfeat(config): 컬러 테마 프리셋 theme.preset(maru|ghostty) 추가
ohah/maru#686생성 · 병합mergedmainfix(sidebar/render): /code-review high(684/685) 후속 5건
ohah/maru#685생성 · 병합mergedmainfix(sidebar): 고정 탭을 최상위 영역에 모으고 드래그를 그룹 내로 제한
ohah/maru#684생성 · 병합mergedmainfix(render): 거터 마크와 글자 사이 gap 추가 — 딱 붙지 않게
ohah/maru#683생성 · 병합mergedmainfeat(config): 네이티브 메뉴에 Reload Config·Reset to Defaults 추가
ohah/maru#682생성 · 병합mergedmainfix(render): OSC 133 거터 마크를 셀 왼쪽 바깥으로 — col 0 글자 겹침 해소
ohah/maru#681생성 · 병합mergedmainfix(config): /code-review max 후속 — OSC4 query 정합·docs 모순·loader 중복
ohah/maru#680생성 · 병합mergedmainfeat(config): font.line-height·letter-spacing(행간/자간) 추가
ohah/maru#679생성 · 병합mergedmainfeat(config): theme.palette.0~15 ANSI 16색 override 추가
ohah/maru#678생성 · 병합mergedmainfeat(config): window padding을 비대칭(top/right/bottom/left)으로 + x/y alias
ohah/maru#677생성 · 병합mergedmainfeat(config): scrollback.lines·bell.audible 설정 추가
ohah/maru#676생성 · 병합mergedmainfix(layout): window padding을 chrome이 아닌 셀 그리드에만 적용
ohah/maru#675생성 · 병합mergedmainrefactor(terminal): preedit 역방향 시프트를 @memmove로 (/simplify)