2026-06-21
날짜는 UTC 기준으로 나눴습니다(9월 22일부터는 한국 시간 기준). 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 목록은 2026-10-06 KST에 GitHub에서 다시 조회해 보강했습니다. 공개 저장소의 기본 브랜치 활동만 포함합니다.
요약 (AI 작성)
maru는 전날 열린 확인 모달 버튼 클릭 #781과 접기 토글 정렬 #782를 병합한 뒤 설정 화면 작업에 들어갔습니다. 세팅 페이지 계획과 config 역직렬화 토대(#783), bold를 밝은 색으로 그리는 theme.bold-is-bright(#784), env.<KEY> 환경 변수 주입(#786), 커스텀 셸 shell.command·shell.args(#787), 커서 색 설정을 넣었고, 메타 정보를 필드에 두는 스키마 주도 config를 설계해 프레임워크와 대표 항목 이주(#791), 나머지 스칼라 일괄 이주, 스키마와 문서의 어긋남을 잡는 가드(#794)까지 진행했습니다. 그 위에 ChromeHost 포인터 입력 라우팅(#802)을 깔고 ⌘,로 여는 세팅 화면(#807)에 toggle·slider·dropdown·text·color 위젯(#825), 섹션 네비게이션과 스크롤, 즉시 write-back, 테마 프리셋과 통합 리셋, ANSI 16색 팔레트 그리드, 셸 인자·환경 변수 에디터(#832), 단축키를 GUI로 다시 묶는 keybind recorder(#834)를 붙였습니다. 리뷰용으로만 연 누적 diff #823은 병합하지 않고 닫았고, 거기서 나온 결함 7건은 따로 고쳤습니다.
이미지를 다루는 흐름도 생겼습니다. 클립보드나 드래그로 들어온 비트맵을 임시 PNG 경로로 바꿔 붙여넣게 했고(#811), SSH 통합 전략 문서를 새로 쓴 뒤 control socket 경로 고정, OSC 5379로 maru ssh 원격 세션 인식(#810), 드롭한 파일과 붙여넣은 이미지를 원격에 업로드(#817), JPEG 지원과 원격 저장본 7일 보존 정리까지 이어 갔습니다. 이 밖에 alt screen에서도 ⌘F로 현재 화면을 찾게 했고(#795), 탭 전환 때 남던 IME 조합을 확정하도록 고쳤으며(#790), split 탭에서 새 워크스페이스가 이전 panel 크기를 물려받던 버그, 에이전트 세션 상태가 unknown에 고정되던 문제도 수정했습니다. 커맨드 팝업의 Install CLI(#826), VS16·키캡 이모지의 폭 2 기본값과 키캡 컬러 렌더(#831, #833), 공장 기본값 복원으로 바꾼 Reset to Defaults, 제품 렌더러 스크린샷 하니스도 들어왔습니다. 리셋 위임 #835와 세팅 폼 검색 #836은 이날 PR이 열렸습니다.
zntc는 전날 열린 디스크 캐시 npm 노출 #4454를 병합하고, 32비트 타깃 빌드를 깨던 캐시 카운터를 고쳤으며(#4458), codec 직렬화에서 초기화되지 않은 padding과 union 꼬리를 없애 결과를 결정적으로 만들었습니다(#4460). target을 지정하지 않으면 hashbang이 지워지던 회귀는 먼저 esnext를 명시하는 방식(#4456)으로 막았다가, target과 무관하게 항상 보존하는 근본 수정(#4459)으로 바꿨습니다. CI의 Debug Test와 Test262 runner 단위 테스트는 zig 0.16 IPC runner의 오보고를 피하려 테스트 바이너리를 직접 실행하게 했습니다(#4457). 블로그 저장소에는 오늘의 커밋 요약 커밋이 올라갔습니다.
공개 커밋 77개, 해당일 생성 또는 병합된 PR 63개를 정리했습니다. PR 생성 60개·병합 60개는 같은 PR이 양쪽에 포함될 수 있습니다.
커밋
ohah/maru
- feat(chrome): 세팅 keybind recorder — 단축키 GUI 재바인딩 + 영속 (CS-4-3)
- fix(macos): 키캡 이모지(2️⃣)를 컬러로 렌더 — 셰이퍼에서 VS16 재주입
- feat(chrome): 세팅 셸 인자·환경 변수 에디터 — shell.args + env.<KEY> (CS-4-5)
- feat(chrome): 세팅 ANSI 16색 팔레트 그리드 — theme.palette.0~15 인라인 편집 (CS-4-5)
- fix(terminal): 이모지 표현(VS16·키캡) 폭 2 승격 — text.emoji-width 기본 wide
- feat(macos): Reset to Defaults를 공장 기본값 복원+config 초기화로
- feat(config): 기본값과 다른 스칼라 키만 추리는 changedScalarKeys 추가
- docs: 문서-구현 싱크 정정 — CS-4 위젯 상태·macOS 호스트 "아직 안 함" 목록
- fix(chrome): /code-review max #827 후속 — 테마 프리셋·통합 리셋 결함 수정
- feat(chrome): 세팅 테마 프리셋 dropdown + 통합 리셋 (CS-4 후속)
- feat(chrome): 세팅 color 위젯 — 스와치 + 16색 프리셋 + raw-RGB draw (CS-4-2)
- feat(macos): 커맨드 팝업에 "Install CLI" — maru CLI를 PATH에 설치
- fix(chrome): /code-review max #823 후속 — 세팅 GUI 결함 7건 수정
- docs(ssh): 문서 동기화 보완 — §4.1·§8·abi 주석에 JPEG·pasted-<pid> 반영
- feat(ssh): 원격 드롭 저장 7일 보존 정리 (#6 마무리)
- feat(ssh): 이미지 paste 후속 — JPEG 지원 + PID로 cross-session 충돌 방지
- feat(chrome): 세팅 text 위젯 — 폰트 패밀리·색 hex 인라인 편집 (CS-4-1d)
- feat(chrome): 세팅 Section 그룹 네비 — 좌측 섹션 목록 + 섹션별 폼 (CS-4-4 §4)
- fix(ssh): code-review max 후속 — TIFF→PNG 정규화·dest/ctl 헬퍼·HOME 가드
- feat(ssh): 클립보드 이미지 paste 업로드 + 문서 정합성 (이미지 드롭 4단계)
- fix(chrome): tui 세팅 위젯을 셀 정렬 text로 — 겹침·선택 하이라이트 가림 해소
- feat(ssh): 드롭 파일을 maru ssh 원격에 업로드 — 실행·스레드·배선 (3b~3d)
- feat(ssh): 드롭 업로드 순수 로직 — 파일명 정제·셸 구절·크기 상한 (3a)
- feat(config): 커서 색 커스텀 — cursor.color/cursor.text opt-in (F1-4a)
- feat(chrome): 세팅 폼 스크롤(윈도잉) — 긴 폼이 뷰포트를 안 넘침 (CS-4-4 scroll)
- feat(chrome): 세팅 화면에 dropdown(enum) 통합 — 값 사이클러 (CS-4-1c)
- feat(chrome): 세팅 화면에 슬라이더 통합 — 숫자(f32/u32) 필드 드래그·저장 (CS-4-1b 통합)
- fix(paste): code-review max 후속 — 임시파일 정리·리치 드래그 우선순위·atomic·문서
- feat(paste): 클립보드·드래그 비트맵 이미지 붙여넣기 — 임시 PNG 경로 변환
- feat(chrome): slider 위젯 컴포넌트 — 범위 숫자(f32/u32+range) (CS-4-1b)
- feat(ssh): OSC 5379로 maru ssh 원격 세션 인식 (이미지 드롭 2단계)
- feat(chrome): 세팅/사이드바 config 즉시 write-back — config_dirty_keys 일반화 (CS-4-4c)
- feat(ssh): control socket 결정론적 경로 + 캐시 hit 유지 (이미지 드롭 1단계)
- docs(ssh): SSH 통합 전략 문서 신설 + 인덱스·크로스링크
- feat(chrome): 세팅 화면 시각 배선 — ⌘, 열기·schema bool 행 렌더·라이브 적용 (CS-4-4b)
- feat(chrome): settings 모달 컴포넌트 — schema-주도 세팅 폼(bool 행) (CS-4-4a)
- feat(chrome): toggle 위젯 컴포넌트 — 설정 폼 on/off 스위치 (CS-4-1a)
- fix(sidebar): 에이전트 아이콘 독립 gutter·2칸·브랜드색 — 가독성
- fix(agent-session): 상태·완료알림 unknown 고착 복구 — claude tail 스캔·codex 다중 day
- feat(chrome): 포인터 ABI 배선 — app_session.mouse → ChromeHost.handlePointer (CS-4-0b)
- feat(chrome): ChromeHost 포인터 입력 라우팅 토대 — InputEvent.pointer (CS-4-0)
- refactor(platform): paste/드롭 셸 이스케이프를 Swift host에서 Zig로 이주 (ABI v67)
- feat(macos): 제품 Metal renderer 스크린샷 하니스 — MARU_SCREENSHOT
- fix(tabs): split 탭에서 새 워크스페이스 생성 시 전 활성 panel 크기 물려받던 버그
- feat(config): per-key write-back 일반화 — updateForKeys (S0-1b)
- docs(config): 스키마-주도 세팅 화면(GUI) 설계 — config-gui.md (CS-4)
- fix(config): /code-review max 후속 — width sentinel range·키 가드·doc 정합
- feat(find): alt screen에서도 ⌘F Find — 현재 화면 검색 (게이트 제거)
- feat(config): 스키마↔문서 doc-drift 가드 (CS-3)
- feat(config): 스키마-주도 최상위 스칼라 이주 (CS-2b)
- feat(config): 스키마-주도 sub-struct 스칼라 일괄 이주 (CS-2)
- feat(config): 스키마-주도 config 프레임워크 + 대표 4종 이주 (CS-1)
- fix(ime): 탭 전환 시 살아남는 IME 조합 누수 제거 — 비-텍스트 상호작용이면 조합 확정
- docs(config): 스키마-주도 config 설계(메타 1급 필드, D안) — config-schema.md
- fix(confirm): code-review max 후속2 — 모달 호버 stale 제거·1003 dedup·테스트 강화
- feat(config): shell.command/shell.args — 커스텀 대화형 셸 (F1-9)
- feat(config): env.<KEY> 환경변수 주입 — 부모 상속 위 upsert (F1-8)
- fix(confirm): code-review max — 우클릭 보호·@intFromFloat 패닉 제거·모달 hover/scroll 게이트
- feat(config): theme.bold-is-bright — bold가 indexed 0~7 전경을 bright로 (F1-3)
- feat(config): 세팅 페이지 계획 + config 역직렬화 토대(S0-1a)
- fix(sidebar): code-review — ◧ 클릭 영역 글리프 중심 정렬·호버 높이 일치·tabs 가드
- fix(sidebar): 접힘 펼치기 토글(◧) 호버·신호등 가로 간격·세로 정렬
- fix(confirm): 확인 모달 버튼 마우스 클릭 — 확인/취소 hit-test
ohah/ohah.github.io
ohah/zntc
- fix(ci): Test262 Runner Unit Tests 도 직접 binary 실행 — 동일 IPC 오보고
- fix(ci): Debug Test 를 직접 test binary 실행으로 — zig 0.16 IPC runner 오보고 회피
- fix(test): codegen self-loop assertion 의 std.debug.print 제거 — async runner stderr 오귀속 방지
- fix(test): dev_server TLS test stderr 가 async runner 에서 무관 test 에 오귀속 — is_test 가드
- test(compat): hashbang target-strip 테스트를 보존 기대로 정정 + stale 주석 정리
- fix(compat): hashbang(#!) 을 target 무관 항상 보존 — strip 회귀 근본 수정 + #4456 rollback
- fix(cache): #4438 codec /code-review 후속 — none-leaf 결정성 + fail-safe + version
- fix(cache): #4438 codec 직렬화 결정화 — uninitialized padding/union-tail 제거
- fix(cache): #4438 디스크 캐시 카운터를 usize atomic 으로 — 32-bit 타겟 빌드 회귀
- fix(core): target 미지정 시 hashbang(ES2023) strip 회귀 — optionsJson 에 esnext 명시
- fix(test): 빈 소스 transpile test outdated 수정 (빈출력 의도)
- feat(cache): 디스크 캐시 npm 표면 (NAPI/JS/config) + experimentalCodeCache 정리 (#4438 graph 통합 3 PR3-2)
PR (해당일 생성/머지)
상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.