2026-08-17

요약 (AI 작성)

국제화를 하루 만에 사실상 끝낸 날입니다. 오전에 config 설명문 86건(I3b)과 컨텍스트 메뉴, 세션 도크·아카이브 상세·SCM 도크를 키로 옮기고 언어 드롭다운에 읽을 수 있는 이름을 띄운 뒤(I4b), 오후에 에이전트 도크·세팅 잔여(259/339), app_session 본체(298/339), git·diff·SCM·탐색기 잔여(337/339)까지 옮겼습니다. session 레이어(I3d), 모바일과 리터럴 게이트(I3e·I3g), Swift 가 UI 문장을 만들지 않게 하는 것(I3f)을 완료로 닫고, 영어 고정 표면을 게이트에 넣고 CLI 출력 137건을 영어로 옮겼으며(I5), 기호·프레임·단축키를 문장에서 걷어냈습니다(I2). 한국어 라벨에 알림 패널 폭이 박혀 있던 것을 고치고 시각 골든 캡처의 UI 언어를 고정했습니다.

Windows 가 처음으로 실제 터미널 화면을 띄운 날이기도 합니다. Win32 창과 메시지 펌프(W7.1)를 머지한 뒤 D3D11 + DXGI 표시 경로(W7.2a — 판정식은 화면 픽셀이다), 셀 인스턴스 드로우(W7.2b), 중립 프레임 계약 충족(W7.2c-1)을 거쳐 실제 터미널 화면이 뜨고(W7.2c-2, W7.2 완료), DirectWrite 글리프 래스터라이저와 폰트 티어로 한글까지 나오고(W7.3), 키보드·IME 조합·클립보드 입력이 이어지고(W7.4a/b/c), 마우스로 고르고 굴리고 복사하며 IME 후보창과 ConPTY 번들까지 붙였습니다(W7.4d·W7.6). 앞서 W7 선행 정리와 경로 레이아웃 %LOCALAPPDATA%\maru\·%USERPROFILE% 폴백(W8.5)도 이날입니다.

자체 SSH 클라이언트도 이날 시작됐습니다. 계약과 패킷·협상 계층(S0~S2), curve25519 키 교환·교환 해시·키 유도(S3), chacha20-poly1305 패킷 암호화·인증(S4), 시퀀스 번호·NEWKEYS 전환·strict KEX 게이트가 있는 전송 루프(S4b), 호스트키 서명 검증과 지문(S5a), known_hosts 대조 — TOFU 와 지문 변경 거부(S5b), publickey·password 사용자 인증(S6a), openssh-key-v1 개인키 파싱(S6b)까지 하루에 쌓였고, 원격 세션에 COLORTERM 을 알리는 SendEnv 도 붙였습니다. 세션 채널(S7)부터는 다음 날로 이어집니다.

편집기는 접힘 — 들여쓰기 층·전체·레벨 접기·gutter 화살표(N1 §4.1f) — 과 가로 스크롤바(§4.1a)를 얻었고, 파일 패널의 히스토리 탭이 커밋 목록을 그리고(P4a) 커밋을 펼쳐 그 파일의 비교를 엽니다(P4b). 저장소 머리 줄에 동작 아이콘을 두고(P3d-②c) 목록을 활성 터미널 저장소로 좁혔습니다. 합자는 켜면 // :: ~~ 의 첫 글자가 사라져 기본값을 끄려다, 온전히 그리되 커서가 앉은 칸만 풀어 그리는 것으로 정리했고 오버항은 앞 칸이 비어 있을 때만 적용합니다. 모바일은 글자 크기를 config 로 바꾸고(M10d) 제스처의 뜻을 상태 하나가 들게 정리하고(G0~G5) 터치의 목적지를 코어가 정하도록 옮겼으며(R0~R3), 터미널에 상단 앱 바를 두고 마우스 휠·트랙패드 스크롤과 좌우 안전 영역을 받았습니다. 링크는 공백이 든 경로를 문법이 아니라 존재로 가르고, 한글·日本·café 이름이 든 경로가 열리도록 CRT 코드페이지를 벗어났습니다. CI 는 캐시가 스스로를 무효화하며 열린 PR 을 전부 깨뜨리던 축을 없애고, Mermaid 게이트를 빼고 ReleaseFast session host 를 릴리스 전 수동 실행으로 옮겼습니다. macOS 셰이핑 attributes 가 폰트를 누수하던 것도 잡았습니다.

cheolsu-proxy 는 tauri 계열 crate 와 npm 패키지를 최신으로 올리고 nightly cargo build-dir 레이아웃 변경으로 깨진 로컬 실행과 타입 체크 오류를 고쳤습니다. 블로그 저장소에는 월간 오픈소스 타임라인 백필과 크론 산출물 정리가 올라갔습니다.

커밋

ohah/cheolsu-proxy

ohah/maru

ohah/ohah.github.io

PR (해당일 생성/머지)

repo#상태제목
ohah/maru#2370mergedfix(file-panel): 소스 컨트롤 도크를 backing 스케일로 그린다
ohah/maru#2369mergedfeat(explorer): 파일 트리 아이콘에 종류 색을 준다
ohah/maru#2368mergedfeat(editor): 가로 스크롤바 — 세로와 짝이고, 문서를 열 때부터 뜬다 (§4.1a)
ohah/maru#2367mergedfeat(i18n): 기호·프레임·단축키를 문장에서 걷어낸다 (I2 완료 · I5 마무리)
ohah/maru#2366mergeddocs(font): face 재사용 캐시를 왜 접었는지 실측과 함께 남긴다
ohah/maru#2365mergedfeat(ssh): openssh-key-v1 개인키 파싱 (S6b)
ohah/maru#2364mergedfeat(i18n): CLI 출력을 영어로 옮긴다 (I5 137 건)
ohah/maru#2363closedperf(macos): 터미널 face 를 프레임마다 다시 만들지 않는다
ohah/maru#2362mergedfix(macos): 셰이핑 attributes 가 폰트를 누수하지 않는다
ohah/maru#2361mergedfix(ssh): 원격 세션에 COLORTERM 을 알린다 (SendEnv)
ohah/maru#2360mergedfix(chrome): 스크롤된 탭 바 클릭 버그 + ‹›/+ 를 누를 만하게
ohah/maru#2359mergedfeat(ssh): 사용자 인증 프로토콜 — publickey·password (S6a)
ohah/maru#2358mergedfeat(i18n): 영어 고정 표면을 게이트에 넣고 11 건을 옮긴다 (I5 착수)
ohah/maru#2357mergedfeat(windows): 마우스로 고르고 굴리고 복사한다 + IME 후보창 + ConPTY 번들 (W7.4d/W7.6)
ohah/maru#2356mergedfeat(ssh): known_hosts 대조 — TOFU·지문 변경 거부 (S5b)
ohah/maru#2355mergedfeat(file-panel): 히스토리에서 커밋을 펼치고 그 파일의 비교를 연다 (P4b)
ohah/maru#2354mergedfeat(dock): 세션 카드 메타 줄에 세 위계를 색으로 준다
ohah/maru#2353mergedfeat(ssh): 호스트키 서명 검증과 지문 (S5a)
ohah/maru#2352mergedfeat(ssh): 전송 루프 — 시퀀스 번호·NEWKEYS 전환·strict KEX 게이트 (S4b)
ohah/maru#2351mergedfeat(chrome): 탭 바를 꽉 채우고, 드래그 고스트는 바를 벗어난 뒤부터
ohah/maru#2350mergedfeat(i18n): 모바일을 옮기고 리터럴 게이트를 세운다 (I3e·I3g 완료)
ohah/maru#2349mergedfeat(editor): 접힘 — 들여쓰기 층·전체·레벨 접기·gutter 화살표 (N1 §4.1f)
ohah/maru#2348mergedfeat(ssh): chacha20-poly1305 패킷 암호화·인증 (S4)
ohah/maru#2347mergedfix(font): 오버항은 앞 칸이 비어 있을 때만 적용한다
ohah/maru#2346mergedfeat(windows): 입력을 잇는다 — 키보드·IME 조합·클립보드 (W7.4a/c/b)
ohah/maru#2345mergedfeat(i18n): Swift 가 UI 문장을 만들지 않게 한다 (I3f 완료)
ohah/maru#2344mergedfeat(ssh): curve25519 키 교환·교환 해시·키 유도 (S3)
ohah/maru#2343mergedfeat(windows): 실제 터미널 화면이 뜬다 (W7.2c-2) — W7.2 완료
ohah/maru#2342mergedfeat(file-panel): 히스토리 탭이 커밋 목록을 그린다 (P4a)
ohah/maru#2341mergedfeat(i18n): git·diff·SCM·탐색기 잔여를 키로 옮긴다 (I3a 337/339)
ohah/maru#2340mergedfeat(windows): 중립 프레임 계약을 Windows 백엔드가 만족시킨다 (W7.2c-1) — §2a의 답은 예다
ohah/maru#2339mergedfix(font): 합자를 온전히 그리고, 커서가 앉은 칸은 풀어 그린다
ohah/maru#2338mergedfeat(i18n): app_session 본체를 키로 옮긴다 (I3a 298/339)
ohah/maru#2337closedfix(font): 합자 기본값을 끈다 — 켜면 // :: ~~ 의 첫 글자가 사라진다
ohah/maru#2336mergedfeat(file-panel): 목록을 활성 터미널 저장소로 좁히고 커밋 상자에 스크롤바를 둔다
ohah/maru#2335mergedfeat(windows): DirectWrite 글리프 래스터라이저와 폰트 티어 (W7.3) — 한글까지 나온다
ohah/maru#2334mergedfix(ime): 드롭도 조합을 먼저 확정한다 — 이미지 드래그 업로드 뒤 남던 잔상
ohah/maru#2333mergedfeat(ssh): SSH 클라이언트 계약과 패킷·협상 계층 (S0~S2)
ohah/maru#2332mergedfeat(i18n): 에이전트 도크·세팅 잔여를 키로 옮긴다 (I3a 259/339)
ohah/maru#2331mergedfeat(windows): 셀 인스턴스 드로우 (W7.2b) — 폰트 없이 글리프가 화면에 나온다
ohah/maru#2330mergedfix(chrome): 소스 컨트롤 도크가 열려 있어도 도크 밖 클릭은 그 자리로 간다
ohah/maru#2329mergedfix(chrome): ghost pressed 와 목록 행 hover — 주석은 계단을 말했고 값은 같았다
ohah/maru#2328mergedfeat(windows): D3D11 + DXGI 표시 경로 (W7.2a) — 판정식은 화면 픽셀이다
ohah/maru#2327mergedfix(dock): 도크 위의 더블·트리플 클릭이 터미널 선택을 만들지 않는다
ohah/maru#2326mergedfeat(i18n): session 레이어를 키로 옮긴다 (I3d 완료)
ohah/maru#2325mergedfeat(file-panel): 저장소 머리 줄에 동작 아이콘을 둔다 (P3d-②c)
ohah/maru#2324mergedfeat(mobile): 글자 크기를 config 로 바꾼다 (M10d)
ohah/maru#2323mergedfeat(session-dock): provider 이름에 색을 주고, ghost 버튼의 호버·클릭을 절제한다
ohah/maru#2322mergedfix(mobile): Android 가 좌우 안전 영역도 지킨다
ohah/maru#2321mergedfeat(windows): Win32 창과 메시지 펌프 (W7.1) — 이벤트를 잃지 않는 규율
ohah/maru#2320mergedfeat(mobile): 마우스 휠·트랙패드 스크롤을 받는다
ohah/maru#2319mergedfeat(mobile): 터미널에 상단 앱 바를 둔다 — 돌아갈 길이 보여야 한다 (A)
ohah/maru#2318mergedfeat(file-panel): 펼친 저장소는 활성이 아니어도 파일 줄을 낸다 (P3d-②d)
ohah/maru#2317mergedperf(ci): boundary 집계 게이트를 Debug 한 모드로 줄인다 — check 14분의 정체
ohah/maru#2316mergedrefactor(mobile): 제스처의 뜻을 상태 하나가 들게 한다 (G0~G5)
ohah/maru#2315mergedchore(ci): Mermaid 게이트를 빼고, ReleaseFast 를 릴리스 전으로 옮기고, 캐시가 스스로를 무효화하던 축을 없앤다
ohah/maru#2314mergedfeat(i18n): 아카이브 상세·SCM 도크를 키로 옮긴다 (I3c 65/76)
ohah/maru#2313mergedfeat(i18n): 세션 도크를 키로 옮긴다 (I3c 30/76)
ohah/maru#2312mergeddocs(mobile): iOS 길게 누르기 한계를 실측으로 닫는다
ohah/maru#2311mergedfeat(pty): W7 선행 정리 — 중립 레이어가 Windows에서 컴파일되지 않던 두 자리 (W7.0)
ohah/maru#2310mergedfix(chrome): 알림 패널 폭이 한국어 라벨에 박혀 있었다 (I3c 착수)
ohah/maru#2309mergedfix(mobile): 관성이 선택을 미끄러뜨리는 것을 막고, 판정 없던 성질들을 잠근다
ohah/maru#2308mergedfeat(link): 공백 든 경로를 잡는다 — 문법이 아니라 존재로 가른다
ohah/maru#2307mergedfeat(i18n): config 설명문 86 건을 키로 옮긴다 (I3b)
ohah/maru#2306mergedfix(mobile): 본문 관성을 코어로 옮겨 남의 제스처가 화면을 흘리는 것을 막는다
ohah/maru#2305mergedfeat(paths): Windows 경로 레이아웃을 %LOCALAPPDATA%\maru\로 정한다 (W8.5)
ohah/maru#2304mergedfeat(i18n): 컨텍스트 메뉴를 키로 옮긴다 (I3a 슬라이스 6, 225/339)
ohah/maru#2303mergedfeat(i18n): 언어 드롭다운에 읽을 수 있는 이름을 띄운다 (I4b)
ohah/maru#2302mergedfeat(session-host): publish CR4c reconnect generation
ohah/maru#2301mergedrefactor(mobile): 터치 진입점을 하나로 모은다 (R2·R3)
ohah/maru#2300closedfeat(cli): Windows에서 홈을 %USERPROFILE%로 폴백한다 (W8.5)
ohah/maru#2299mergedfix(ci): 캐시를 자를 때 매니페스트도 함께 버린다 — 열린 PR 이 전부 깨졌다
ohah/maru#2298mergedfeat(file-panel): 커밋 상자를 저장소 그룹 안으로 옮긴다 (P3d-②b)
ohah/maru#2297mergedfeat(link): Windows 상대 경로 링크의 마지막 갈래를 연다 (W5.5 ⑴) + GPU 백엔드 결정 기록
ohah/maru#2296mergedrefactor(mobile): 터치의 목적지를 코어가 든다 (R0·R1)
ohah/maru#2295mergedci: 캐시를 저장 전에 예산 안으로 줄인다 — 러너 디스크가 찼다
ohah/cheolsu-proxy#377mergedfix: 타입 체크 에러 해결 및 tauri-plugin-mcp-bridge 0.12.0 갱신
ohah/cheolsu-proxy#376mergedfix: nightly cargo build-dir 레이아웃 변경으로 인한 로컬 실행 실패 수정 및 tauri/react 최신화