2026-06-21
요약 (AI 작성)
스키마-주도 config 프레임워크를 세운 날입니다. 메타를 1급 필드로 두는 D안(config-schema.md)을 확정하고, 대표 4종 이주(CS-1)에서 시작해 sub-struct 스칼라(CS-2)와 최상위 스칼라(CS-2b)를 일괄 이주했으며, 스키마↔문서 doc-drift 가드(CS-3)와 세팅 화면(GUI) 설계(config-gui.md, CS-4)까지 이어 붙였습니다. 여기에 per-key write-back 일반화(updateForKeys), 세팅 화면 시각 배선(⌘, 열기·schema bool 행·라이브 적용)과 config 즉시 write-back을 얹었습니다.
세팅 GUI는 포인터 입력 라우팅 토대(ChromeHost.handlePointer, CS-4-0)를 깔고 text·dropdown(enum)·slider 위젯과 좌측 Section 그룹 네비를 붙였습니다. SSH 통합은 별도 전략 문서를 신설하고, control socket 결정론적 경로(1단계)·OSC 5379 원격 세션 인식(2단계)·클립보드 이미지 paste 업로드(4단계)와 JPEG 지원·PID 충돌 방지·7일 보존까지 이미지 드롭 흐름을 완성했습니다. 이 밖에 shell.command/args 커스텀 셸, alt screen에서의 ⌘F Find, 확인 모달 마우스 hit-test, 탭 전환 시 IME 조합 누수, split 탭 새 워크스페이스 크기 물림 버그 등을 처리했습니다.
커밋
ohah/maru
- docs(config): 스키마-주도 config 설계(메타 1급 필드, D안) — config-schema.md
- fix(confirm): 확인 모달 버튼 마우스 클릭 — 확인/취소 hit-test
- fix(confirm): code-review max 후속2 — 모달 호버 stale 제거·1003 dedup·테스트 강화
- feat(config): shell.command/shell.args — 커스텀 대화형 셸 (F1-9)
- feat(config): 스키마↔문서 doc-drift 가드 (CS-3)
- fix(ime): 탭 전환 시 살아남는 IME 조합 누수 제거 — 비-텍스트 상호작용이면 조합 확정
- feat(config): 스키마-주도 config 프레임워크 + 대표 4종 이주 (CS-1)
- feat(config): 스키마-주도 sub-struct 스칼라 일괄 이주 (CS-2)
- feat(config): 스키마-주도 최상위 스칼라 이주 (CS-2b)
- docs(config): 스키마-주도 세팅 화면(GUI) 설계 — config-gui.md (CS-4)
- fix(config): /code-review max 후속 — width sentinel range·키 가드·doc 정합
- fix(tabs): split 탭에서 새 워크스페이스 생성 시 전 활성 panel 크기 물려받던 버그
- feat(config): per-key write-back 일반화 — updateForKeys (S0-1b)
- feat(find): alt screen에서도 ⌘F Find — 현재 화면 검색 (게이트 제거)
- docs(ssh): 문서 동기화 보완 — §4.1·§8·abi 주석에 JPEG·pasted-
반영 - feat(ssh): 원격 드롭 저장 7일 보존 정리 (#6 마무리)
- feat(ssh): 이미지 paste 후속 — JPEG 지원 + PID로 cross-session 충돌 방지
- feat(chrome): 세팅 text 위젯 — 폰트 패밀리·색 hex 인라인 편집 (CS-4-1d)
- fix(sidebar): code-review — ◧ 클릭 영역 글리프 중심 정렬·호버 높이 일치·tabs 가드
- fix(sidebar): 접힘 펼치기 토글(◧) 호버·신호등 가로 간격·세로 정렬
- feat(config): 세팅 페이지 계획 + config 역직렬화 토대(S0-1a)
- fix(confirm): code-review max — 우클릭 보호·@intFromFloat 패닉 제거·모달 hover/scroll 게이트
- feat(config): theme.bold-is-bright — bold가 indexed 0~7 전경을 bright로 (F1-3)
- feat(config): env.
환경변수 주입 — 부모 상속 위 upsert (F1-8) - feat(chrome): 세팅 화면 시각 배선 — ⌘, 열기·schema bool 행 렌더·라이브 적용 (CS-4-4b)
- feat(ssh): OSC 5379로 maru ssh 원격 세션 인식 (이미지 드롭 2단계)
- feat(chrome): 세팅/사이드바 config 즉시 write-back — config_dirty_keys 일반화 (CS-4-4c)
- refactor(platform): paste/드롭 셸 이스케이프를 Swift host에서 Zig로 이주 (ABI v67)
- fix(ssh): code-review max 후속 — TIFF→PNG 정규화·dest/ctl 헬퍼·HOME 가드
- feat(ssh): 클립보드 이미지 paste 업로드 + 문서 정합성 (이미지 드롭 4단계)
- fix(chrome): tui 세팅 위젯을 셀 정렬 text로 — 겹침·선택 하이라이트 가림 해소
- feat(chrome): 포인터 ABI 배선 — app_session.mouse → ChromeHost.handlePointer (CS-4-0b)
- fix(sidebar): 에이전트 아이콘 독립 gutter·2칸·브랜드색 — 가독성
- fix(agent-session): 상태·완료알림 unknown 고착 복구 — claude tail 스캔·codex 다중 day
- feat(chrome): ChromeHost 포인터 입력 라우팅 토대 — InputEvent.pointer (CS-4-0)
- feat(chrome): 세팅 화면에 dropdown(enum) 통합 — 값 사이클러 (CS-4-1c)
- feat(chrome): slider 위젯 컴포넌트 — 범위 숫자(f32/u32+range) (CS-4-1b)
- feat(chrome): 세팅 Section 그룹 네비 — 좌측 섹션 목록 + 섹션별 폼 (CS-4-4 §4)
- feat(ssh): control socket 결정론적 경로 + 캐시 hit 유지 (이미지 드롭 1단계)
- docs(ssh): SSH 통합 전략 문서 신설 + 인덱스·크로스링크
PR (해당일 생성/머지)
(없음)