2026-08-17

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

요약 (AI 작성)

maru의 국제화를 하루 만에 대부분 끝낸 날입니다. 전날 열린 ui.language 배선 #2292를 병합하고, 언어 드롭다운에 읽을 수 있는 이름을 띄웠으며(#2303), 컨텍스트 메뉴(#2304), config 설명문 86건(#2307), 세션 도크와 아카이브 상세·SCM 도크(#2314)를 키로 옮겼습니다. 오후에는 에이전트 도크·세팅 잔여(259/339), app_session 본체(298/339, #2338), git·diff·SCM·탐색기 잔여(337/339, #2341)까지 옮겼고, session 레이어(I3d), Swift가 UI 문장을 만들지 않게 하는 작업(I3f), 모바일과 리터럴 게이트(I3e·I3g, #2350)를 완료로 닫았습니다. 영어 고정 표면을 게이트에 넣고 CLI 출력 137건을 영어로 옮겼으며(#2364), 알림 패널 폭이 한국어 라벨에 박혀 있던 것도 고쳤습니다. 기호·프레임·단축키를 문장에서 걷어내는 #2367은 이날 PR이 열렸습니다.

Windows가 처음으로 실제 터미널 화면을 띄운 날이기도 합니다. 중립 레이어가 Windows에서 컴파일되지 않던 두 자리를 정리하고(W7.0, #2311) 경로 레이아웃을 %LOCALAPPDATA%\maru\로 정한 뒤(#2305), Win32 창과 메시지 펌프(W7.1, #2321), D3D11 + DXGI 표시 경로(W7.2a, #2328), 셀 인스턴스 드로우(W7.2b), 중립 프레임 계약 충족(W7.2c-1)을 거쳐 실제 터미널 화면이 떴습니다(W7.2c-2, #2343). DirectWrite 글리프 래스터라이저와 폰트 티어로 한글까지 나오게 하고(#2335), 키보드·IME 조합·클립보드 입력(#2346)과 마우스 선택·스크롤·복사, IME 후보창, ConPTY 번들(#2357)까지 붙였습니다. 상대 경로 링크의 마지막 갈래를 열고 GPU 백엔드 결정을 기록했으며(#2297), 공백이 든 경로는 문법이 아니라 존재로 가르게 했습니다(#2308). 전날 열린 한글·일본어 경로 열기 #2294도 병합됐습니다.

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

편집기는 들여쓰기 층·전체·레벨 접기와 gutter 화살표를 갖춘 접힘(#2349)과 가로 스크롤바(#2368)를 얻었고, 전날 열린 비교 가로 스크롤 #2287도 병합됐습니다. 파일 패널은 커밋 상자를 저장소 그룹 안으로 옮기고(#2298) 저장소 머리 줄에 동작 아이콘을 두며 목록을 활성 터미널 저장소로 좁혔고, 히스토리 탭이 커밋 목록을 그리고(#2342) 커밋을 펼쳐 그 파일의 비교를 열게 했습니다(#2355). 합자는 기본값을 끄려던 #2337을 닫고, 온전히 그리되 커서가 앉은 칸만 풀어 그리는 방식으로 정리했습니다(#2339). 모바일은 iOS도 손가락 전부를 받게 하고(#2293), 터치의 목적지와 진입점을 코어로 모으고(R0부터 R3), 제스처의 뜻을 상태 하나가 들게 했으며(#2316), 상단 앱 바·마우스 휠 스크롤·글자 크기 config를 붙였습니다. CI는 캐시가 스스로를 무효화하며 열린 PR을 깨뜨리던 축을 없애고 Mermaid 게이트를 뺐습니다(#2315). cheolsu-proxy는 nightly cargo build-dir 레이아웃 변경으로 인한 로컬 실행 실패를 고치고 tauri·react를 최신화했으며(#376), 타입 체크 오류를 해결했습니다(#377). ohah.github.io에는 월간 오픈소스 타임라인 백필과 오늘의 커밋 추가 커밋이 들어갔습니다.

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

커밋

ohah/cheolsu-proxy

ohah/maru

ohah/ohah.github.io

PR (해당일 생성/머지)

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

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