2026-08-16

요약 (AI 작성)

UI 문자열 국제화를 doc-first 로 열고 하루 만에 실사용 단계까지 민 날입니다. 표시 문자열 테이블·조회·보간의 중립 leaf 를 세우고(I3-0) platform 문자열 40건, 세팅 배너·토스트, notice 토스트 97건, 분기·보간형 notice 13건을 차례로 키로 옮겼습니다(I3a 슬라이스 1~5). 옮긴 문자열이 아무도 안 보는 테이블에 쌓이고 있다는 것을 발견해 ui.language 를 실제로 배선했고(I4a), 전환 도중 화면이 영어로 바뀌던 회귀와 두 언어 테이블의 정합을 테스트로 잠갔습니다.

Windows 는 헤드리스 세로 슬라이스가 실제로 서는 데까지 갔습니다. ConPTY 백엔드를 붙이고 자식 attach 를 실측으로 닫았으며(W4), 셸 통합 주입을 cmd PROMPT 와 PowerShell 인라인 -Command 로 갈랐고(W5), 상대 경로 링크 감지의 접두 갈래 둘을 열었습니다(W5.5). SpawnRequest 를 중립화해 경로를 입구에서 정규화하고, 통합 주입 seam 을 "갈리는 축은 OS 가 아니라 메커니즘"으로 정리했습니다.

파일 패널은 커밋을 실제로 실행하는 데까지 갔습니다. 커밋 메시지 입력(P3c-1)과 실행·저장소별 초안 보관·워크트리 감시(P3c-2)를 올린 뒤, 목록의 첫 층을 저장소·워크트리로 만들고(P3d-①②) 비활성 저장소의 머리 줄을 하나씩 읽어 채웠습니다(P3d-③). 편집기는 랩과 가로 스크롤의 성능을 파고들어 첫 가로 휠에 501ms 멈추던 것과 5만 줄에서 프레임당 498ms 를 쓰던 것을 고치고, 긴 한글 줄의 조각 수를 21배 적게 세던 계산 오류를 잡았습니다. 모바일은 config 를 실제로 읽어 화면에 닿게 하고(M10b·M10c) 설정 화면을 스키마에서 만들었으며, 세션 목록을 뿌리로 세우고(U3) 포인터에 손가락 id 를 실어 소유권을 코어가 들게 했습니다(T0~T2). session-host 는 CR4 catch-up barrier 계약과 controller takeover 를 봉인했습니다.

커밋

ohah/maru

PR (해당일 생성/머지)

repo#상태제목
ohah/maru#2294mergedfix(link): 한글·日本·café 이름이 든 경로도 열린다 — CRT 코드페이지를 벗어난다
ohah/maru#2293mergedfeat(mobile): iOS 도 손가락 전부를 받는다 (T3)
ohah/maru#2292mergedfeat(i18n): ui.language 를 배선한다 — 옮긴 문자열이 아무도 안 보는 테이블에 쌓이고 있었다 (I4a)
ohah/maru#2291mergedfeat(session-host): CR4b controller takeover를 봉인한다
ohah/maru#2290mergedfeat(session-host): CR4 actual candidate stage를 완료한다
ohah/maru#2289mergedfix(i18n): 전환한 문자열이 영어로 나오던 회귀를 고치고 확인 대화상자를 옮긴다 (I3a 슬라이스 5)
ohah/maru#2288mergedfeat(i18n): 분기·보간형 notice 13건을 키로 옮긴다 (I3a 슬라이스 4)
ohah/maru#2287mergedfeat(editor): 비교도 열마다 가로로 민다 — 그리고 editor.wrap 기본값을 방침대로 되돌린다
ohah/maru#2286mergedfeat(mobile): Android 가 손가락 전부를 보내고 브리지가 소유자로 가른다 (T2)
ohah/maru#2285mergedfeat(link): hover 밑줄도 클릭과 같은 존재검증을 통과한다 (§8)
ohah/maru#2284mergedfeat(session-host): CR4 same-adapter Client replacement를 게시한다
ohah/maru#2283mergedfeat(file-panel): 비활성 저장소의 머리 줄을 하나씩 읽어 채운다 (P3d-③)
ohah/maru#2282mergedfeat(mobile): 포인터에 손가락 id 를 싣고 소유권을 코어가 든다 (T1)
ohah/maru#2281mergedfeat(i18n): notice 토스트 97건을 키로 옮긴다 (I3a 슬라이스 3)
ohah/maru#2280mergedfeat(windows): 셸 통합 주입 (W5) — cmd PROMPT와 PowerShell 인라인 -Command
ohah/maru#2279mergedfeat(mobile): 죽은 chrome 을 걷어내고 세션 목록을 뿌리로 세운다 (U3a·U3b·U3c)
ohah/maru#2278mergedfeat(session-host): CR4 actual issuer Client를 backend job에 봉인한다
ohah/maru#2277mergedfeat(file-panel): 목록의 첫 층을 저장소·워크트리로 만든다 (P3d-②)
ohah/maru#2276mergedfix(input): W5.5 적대적 검증 — 이스케이프 판정을 목록에서 규칙으로
ohah/maru#2275mergedfeat(i18n): 표시 문자열 leaf 를 세우고 platform 문자열 40건을 키로 옮긴다 (I3-0, I3a 1~2)
ohah/maru#2274closedfeat(mobile): 죽은 chrome 을 걷어내고 세션 목록을 뿌리로 세운다 (U3a·U3b)
ohah/maru#2273mergeddocs(mobile): 터치 계약 — 손가락 id·소유권과 다음 순서(U3 → T → R)
ohah/maru#2272mergedfeat(editor): 랩을 켜면 한 줄짜리 문서를 못 봤다 — 조각 단위 세로 스크롤
ohah/maru#2271mergedfeat(input): Windows 상대 경로 링크 감지 — 접두 갈래 둘 (W5.5)
ohah/maru#2270mergedfeat(session-host): CR4 catch-up receipt를 final-address에 봉인한다
ohah/maru#2269mergedchore(mobile): 하네스 폴더 이름에서 poc 를 뗀다
ohah/maru#2268mergeddocs(windows): 통합 주입 seam을 정한다 — 갈리는 축은 OS가 아니라 메커니즘 (§4.2a)
ohah/maru#2267mergedfeat(file-panel): 저장소·워크트리 목록 모델 (P3d-①)
ohah/maru#2266mergedfix(windows): cmd fixture의 따옴표 함정을 막고 한글 실측을 기록한다
ohah/maru#2265mergeddocs(windows): W5·W5.5 선행 실측을 기록하고 §3.3↔§4.2 모순을 닫는다
ohah/maru#2264mergeddocs(i18n): UI 문자열 로컬라이제이션 전략과 구현 계획 (doc-first)
ohah/maru#2263mergedfeat(session-host): CR4 client barrier demux를 추가한다
ohah/maru#2262mergeddocs(windows): W4·W6을 계약·계획 밖 문서와도 맞춘다
ohah/maru#2261mergedfix(windows): W4 코드리뷰 + 적대적 검증 8라운드 후속
ohah/maru#2260mergedfeat(file-panel): 커밋을 실행하고, 초안을 저장소별로 들고, 워크트리 감시를 고친다 (P3c-2)
ohah/maru#2259mergedtest(cli): "cli/는 순수" 를 주석에서 게이트로 옮긴다
ohah/maru#2258mergedfeat(session-host): CR4 host frontier barrier를 게시한다
ohah/maru#2257mergedfeat(mobile): 설정의 숫자 칸을 입력 대상으로 만든다 (M10e)
ohah/maru#2256mergedrefactor(cli): main.zig 를 얇은 디스패처로 되돌린다
ohah/maru#2255mergedfeat(windows): ConPTY 백엔드 (W4) — 헤드리스 세로 슬라이스가 선다
ohah/maru#2254mergeddocs(structure): 소스 트리 문서를 실제 구조에 맞춘다
ohah/maru#2253mergeddocs(chrome): chrome doc comment 를 저장소 언어로 되돌린다
ohah/maru#2252mergeddocs(windows): ConPTY 자식 attach를 실측으로 닫는다
ohah/maru#2251mergedfeat(session-host): CR4 catch-up admission을 연결한다
ohah/maru#2250mergedrefactor(path): 후행 구분자 다듬기를 path_shape로 모은다
ohah/maru#2249mergedfeat(file-panel): 커밋 메시지를 실제로 입력한다 (P3c-1)
ohah/maru#2248mergedfix(windows): W3 적대적 검증 후속 — 경로 조립기 불일치
ohah/maru#2247mergedfeat(session-host): CR4 catch-up host 상태 계약을 고정한다
ohah/maru#2246mergedfeat(mobile): 설정 화면을 스키마에서 만들고 바꾼 값을 저장한다 (M10c)
ohah/maru#2245mergedfeat(windows): SpawnRequest 중립화 + 입구 경로 정규화 (W3)
ohah/maru#2244mergedfeat(session-host): CR4 catch-up barrier wire 계약을 고정한다
ohah/maru#2243mergedfeat(session-host): CR4a 화면 frontier를 단조 증가로 고정한다
ohah/maru#2242mergedfeat(ios): config 파일을 읽어 브리지에 넘긴다
ohah/maru#2241mergedfeat(session-host): CR4a observer candidate 준비
ohah/maru#2240mergeddocs(mobile): 엔진 공유의 경계를 적대적 검증으로 긋는다
ohah/maru#2239mergedfeat(editor): 랩을 끄면 긴 줄의 오른쪽을 볼 수 없었다 — 가로 스크롤
ohah/maru#2238mergedfeat(config): OS별 값과 Windows 기본 셸 선택 (W2.5)
ohah/maru#2237mergedfeat(mobile): config 를 실제로 읽어 화면에 닿게 한다 (M10b0·M10b)