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
- fix(desktop): use-network-dialogs 테스트의 잘못된 타입 캐스팅 수정
- fix(desktop): breakpoint store의 syncToProxy 반환 타입 정정
- chore(desktop): @types/bun 추가로 bun:test 타입 해석 활성화
- chore(deps): tauri-plugin-mcp-bridge 0.12.0으로 갱신
- chore(deps): tauri/react npm 패키지 최신 버전으로 갱신
- chore(deps): tauri 계열 crate 최신 버전으로 갱신
- fix(config): nightly cargo build-dir 새 레이아웃 비활성화로 로컬 실행 실패 수정
ohah/maru
- feat(link): 공백 든 경로를 잡는다 — 문법이 아니라 존재로 가른다
- feat(i18n): config 설명문 86 건을 키로 옮긴다 (I3b)
- fix(chrome): 시각 골든 캡처의 UI 언어를 고정한다 — 골든이 환경에 흔들렸다
- feat(i18n): 세션 도크를 키로 옮긴다 (I3c 30/76)
- fix(ci): 리베이스 뒤 digest를 맞춘다
- fix(chrome): 커서와 호버를 component가 선언하게 한다 (사용자 지적)
- fix(chrome): 커밋 버튼의 칠을 면에만 주고 사라진 워크트리를 목록에서 뺀다
- fix(file-panel): 주 워크트리는 git이 말한 그것이다 (P3d-② 적대적 6회차)
- fix(file-panel): 읽지 못한 저장소를 기록하고 그 사실을 적는다 (P3d-②b 적대적 5회차)
- fix(file-panel): 목록 창을 컴포넌트와 맞추고 상자를 창 안에 붙든다 (P3d-②b 적대적 4회차)
- fix(ci): 리베이스 뒤 digest를 맞춘다
- fix(file-panel): 빈 안내를 저장소 그룹의 줄로 내린다 (P3d-②b 적대적 3회차)
- feat(file-panel): 커밋 상자를 저장소 그룹 안으로 옮긴다 (P3d-②b)
- fix(mobile): 마지막 손가락 판정에서 남의 터치를 세지 않는다 (T3 적대적 검증)
- feat(mobile): iOS 도 손가락 전부를 받는다 (T3)
- refactor(mobile): 터치의 목적지를 코어가 든다 (R1)
- docs(mobile): 터치의 목적지도 코어가 정한다 (R0)
- fix(link): 한글·日本·café 이름이 든 경로도 열린다 — CRT 코드페이지를 벗어난다
- docs(windows): 인용 검증의 이유와 무효했던 탐침을 정확히 적는다 (§5.3)
- fix(cli): 적대적 검증 3건 — 모르는 것을 안다고 말하던 자리들
- feat(paths): Windows 경로 레이아웃을 %LOCALAPPDATA%\maru\로 정한다 (W8.5)
- feat(cli): Windows에서 홈을 %USERPROFILE%로 폴백한다 (W8.5)
- docs(mobile): 관성을 OS 기계에 안 맡기는 이유를 적는다
- fix(mobile): 본문 관성을 코어로 옮겨 남의 제스처가 화면을 흘리는 것을 막는다
- fix(ci): 리베이스 뒤 digest를 맞춘다
- fix(file-panel): 히스토리 탭의 적대적 검증 지적 넷을 고친다 (P4a)
- feat(file-panel): 히스토리 탭이 커밋 목록을 그린다 (P4a)
- feat(file-panel): 히스토리 탭의 읽기 층을 세운다 (P4a — 파서·명령·백엔드 슬롯)
- docs(ssh): 내장 SSH 코어의 검증 상태를 매트릭스에 올린다 (검증 8회차)
- test(ssh): 프로토콜 상수를 명세 값과 맞댄다 (검증 5~6회차)
- feat(ssh): curve25519 키 교환·교환 해시·키 유도 (S3)
- fix(chrome): ghost pressed 를 실제로 한 단계 낮춘다 — role 만 바꾼 앞 수정은 효과가 0이었다
- test(boundary): app_session digest 를 갱신한다 — 도크 더블클릭 가드
- fix(dock): 도크 위의 더블·트리플 클릭이 터미널 선택을 만들지 않는다
- docs(mobile): iOS 길게 누르기 한계를 실측으로 닫는다
- test(mobile): 누르고 있는 제스처를 스크립트로 만든다
- fix(mobile): 관성이 선택을 미끄러뜨리는 것을 막고, 판정 없던 성질들을 잠근다
- feat(file-panel): 펼친 저장소는 활성이 아니어도 파일 줄을 낸다 (P3d-②d)
- feat(mobile): 터미널에 상단 앱 바를 둔다 — 돌아갈 길이 보여야 한다 (A)
- fix(ssh): max_packet 이 무엇의 상한인지 하나로 정한다 (검증 5회차)
- test(ssh): seal 의 버퍼·상한 검사를 못박는다 (검증 3~4회차)
- feat(ssh): chacha20-poly1305 패킷 암호화·인증 (S4)
- feat(file-panel): 목록을 활성 터미널 저장소로 좁히고 커밋 상자에 스크롤바를 둔다
- fix(i18n): rebase 뒤 원장을 다시 수렴시킨다
- feat(i18n): app_session 본체를 키로 옮긴다 (I3a 298/339)
- feat(windows): 중립 프레임 계약을 Windows 백엔드가 만족시킨다 (W7.2c-1)
- docs(ssh): 버전 교환을 §3.2.2 로 떼고 strict KEX 요구를 다섯으로 센다
- test(ssh): 길이 하한이 막는 범위 밖 읽기를 못박는다 (검증 10회차)
- fix(ssh): 재현된 결함 14건을 고치고 sans-io 판정자를 다시 세운다
- docs(ssh): 계획 문서를 구현 계획 인덱스에 등재한다
- test(ssh): 실서버 벡터와 sans-io 경계 잠금 (검증 6회차)
- feat(ssh): 와이어 자료형·버전 교환·KEXINIT 협상 (S2)
- docs(ssh): 명세 원문 대조로 계약을 고치고 결정 넷을 못박는다
- docs(ssh): SSH 클라이언트 계약과 계획, 바이너리 패킷 계층 (S0·S1)
- fix(editor): 접힘 측정 시계가 Windows 타깃 컴파일을 깼다 — 분기를 comptime으로
- fix(editor): gutter 접힘 화살표가 너무 작아 안 보였다 — 보통 크기 삼각형으로
- docs(editor): 가로 스크롤바는 계약에만 있고 구현이 없다 — 계획에 남음으로 적는다
- fix(editor): 게이트 둘이 낡았다 — boundary digest 원장과 검증 매트릭스
- feat(editor): 레벨 접기 — 겹수로 접고, 합치지 않고 갈아 끼운다 (N1 접힘 잔여)
- fix(editor): 접힘 결함 셋 — diff에서 거짓 성공, gutter 예약이 번호를 밀어냄, Lab 픽스처 모순
- feat(editor): gutter 접힘 화살표 — 늘 그린다(Vim foldcolumn 선례)와 명령 배선
- fix(editor): 탭이 든 긴 줄이 랩에서 59% 잘려 있었다 — 세는 저장소를 한 곳에서 정한다
- fix(editor): 접힌 채 다시 접다 실패하면 숨은 줄을 영영 못 되찾았다
- fix(editor): 접거나 펼치면 보던 자리를 잃고 1번 줄로 튀었다
- fix(editor): 스크롤 상한을 문서 줄 수로 잡아 first_line이 보이는 배열 밖으로 나갔다
- fix(editor): 큰 파일 전체 접기가 3%만 접혔고, gutter 폭 출처가 두 곳 다 틀렸다
- fix(editor): 접힘이 바뀌어도 그것으로부터 나온 값들이 옛 것이었다
- fix(editor): 접은 뒤 끝까지 굴리면 화면이 통째로 비었다 — 스크롤과 렌더가 다른 배열을 봤다
- fix(editor): 접힘에서 결함 둘 — 보이는 줄 만들기가 O(n²), 비교에서 거짓 성공
- feat(editor): 접힘이 화면에 반영된다 — 렌더를 고치지 않고 (N1 접힘 ②-c)
- feat(editor): 접힘 상태와 전체 접기/펼치기 (N1 접힘 ②-b)
- feat(editor): 접힌 범위를 숨는 구간으로 만든다 — 전체 접기가 O(n²)였다 (N1 접힘 ②-a)
- fix(editor): 들여쓰기 규칙을 두 가지로 적어 두고 하나를 몰래 골랐다
- perf(editor): 접힘 범위 계산이 계단식 문서에서 2,000줄에 4.87초였다 — 한 번 훑기로
- feat(editor): 접을 범위를 들여쓰기로 센다 — 계약이 정한 바닥층 (N1 접힘 ①)
- fix(chrome): 적대적 검증이 찾은 run 예산·넘침 결함을 닫는다
- fix(chrome): 탭 바 렌더가 넓어진 ‹›/+ 와 같은 자리를 쓴다
- fix(chrome): 스크롤된 탭 바에서 누른 탭이 열리게 하고, ‹›/+ 를 누를 만하게 넓힌다
- feat(i18n): 영어 고정 표면을 게이트에 넣고 11 건을 옮긴다 (I5 착수)
- feat(ssh): 사용자 인증 프로토콜 — publickey·password (S6a)
- fix(i18n): 게이트가 잡은 CoreText 스모크 리터럴을 원장에 반영한다
- fix(i18n): 게이트가 잡은 main 의 새 리터럴을 옮긴다
- feat(i18n): 모바일을 옮기고 리터럴 게이트를 세운다 (I3e·I3g 완료)
- feat(ssh): 전송 루프 — 시퀀스 번호·NEWKEYS 전환·strict KEX 게이트 (S4b)
- feat(ssh): 호스트키 서명 검증과 지문 (S5a)
- feat(dock): 세션 카드 메타 줄에 세 위계를 색으로 준다
- feat(chrome): 한 줄 안의 색 구간을 실측 advance 로 잇는다 (Run.role)
- fix(ssh): known_hosts 판정을 fail-closed 로 못박는다 (검증 4~5회차)
- fix(ssh): known_hosts 호스트명은 대소문자를 안 가린다 (검증 2회차)
- feat(ssh): known_hosts 대조 — TOFU·지문 변경 거부 (S5b)
- feat(session-host): publish CR4c reconnect generation
- refactor(mobile): 진입점 통합이 남긴 흔적을 걷어낸다
- refactor(mobile): 터치 진입점을 하나로 모은다 (R2·R3)
- feat(i18n): 언어 드롭다운에 읽을 수 있는 이름을 띄운다 (I4b)
- feat(link): Windows 상대 경로 링크의 마지막 갈래를 연다 (W5.5 ⑴) + GPU 백엔드 결정 기록
- feat(i18n): 컨텍스트 메뉴를 키로 옮긴다 (I3a 슬라이스 6, 225/339)
- fix(ci): 캐시 이름을 v2 로 올린다 — 넓은 restore-key 가 옛 캐시를 끌어왔다
- fix(ci): 캐시 키에 prune 스크립트를 넣는다 — 고치는 PR 이 깨진 캐시에 막혔다
- fix(ci): 캐시를 자를 때 매니페스트도 함께 버린다 — 열린 PR 이 전부 깨졌다
- fix(i18n): rebase 뒤 원장을 다시 수렴시킨다
- docs(abi): ui.locale export 가 버전을 안 올리는 이유를 적는다
- docs(i18n): CI 가 확인하지 못하는 구간을 적는다
- test(i18n): 새 섹션이 GUI 에 뜨는지·네비 첫 자리인지를 테스트가 든다
- docs(i18n): 섹션 이름 13 건을 I3a 셈에 넣는다 (185 → 198/339)
- fix(i18n): 세션 생성 경로가 둘이었다 — 로케일 주입을 게이트로 잠근다
- feat(i18n): ui.language 를 배선한다 — 옮긴 문자열이 아무도 안 보는 테이블에 쌓이고 있었다
- fix(editor): gutter 자릿수를 렌더와 다른 출처로 세고 있었다 — 최소 자릿수가 가리고 있었다
- refactor(editor): 랩 불변식이 오른쪽 열에 다시 쓰여 있었다 — 규칙을 한 곳으로
- fix(editor): 앞 커밋이 "고쳤다"고 적었지만 수정은 안 들어갔다 — 스윕이 덮어썼다
- feat(editor): 비교도 열마다 가로로 민다 — 그리고
editor.wrap기본값을 방침대로 되돌린다 - ci: 캐시를 저장 전에 예산 안으로 줄인다 — 러너 디스크가 찼다
- feat(file-panel): 저장소 머리 줄에 동작 아이콘을 둔다 (P3d-②c)
- feat(windows): D3D11 + DXGI 표시 경로 (W7.2a) — 판정식은 화면 픽셀이다
- chore(ci): 캐시 정리를 main CI 가 끝나는 즉시 돌린다
- chore(ci): ReleaseFast session host 를 릴리스 전 수동 실행으로 옮긴다
- chore(ci): 캐시 키 해시에서 build.zig 를 뺀다
- docs(ci): required 목록을 실제 branch protection 과 맞춘다
- chore(ci): Mermaid 제품 성능 게이트를 CI 에서 뺀다
- fix(build): 새 게이트에 구멍이 있었다 — main.zig 가 빠져 있었다
- revert(pty): macOS 백엔드의 childPid는 std.c.pid_t로 되돌린다
- fix(build): 게이트가 실제로 존재하게 만든다 — 코드 리뷰 지적 반영
- fix(pty): exec-restore 표면을 UnsupportedPtySession에도 둔다 — 백엔드는 셋이다
- feat(pty): W7 선행 정리 — 중립 레이어가 Windows에서 컴파일되지 않던 두 자리
- fix(chrome): 알림 패널 폭이 한국어 라벨에 박혀 있었다 (I3c 착수)
- feat(i18n): session 레이어를 키로 옮긴다 (I3d 완료, 27 건)
- fix(mobile): Android 가 좌우 안전 영역도 지킨다
- feat(mobile): 글자 크기를 config 로 바꾼다 (M10d)
- fix(chrome): ghost 버튼의 hover·pressed 를 한 단계 절제한다
- feat(session-dock): provider 이름에 색을 준다 — Claude·Codex 를 훑어서 가른다
- feat(mobile): 마우스 휠·트랙패드 스크롤을 받는다
- test(windows): Cell 레이아웃과 입력 레이아웃이 서로를 검증하게 한다 (W7.2b 검증 라운드 2)
- feat(windows): 셀 인스턴스 드로우 (W7.2b) — 폰트 없이 글리프가 화면에 나온다
- fix(ci): 리베이스 뒤 digest를 맞춘다
- fix(chrome): 소스 컨트롤 도크가 열려 있어도 도크 밖 클릭은 그 자리로 간다
- docs(windows): 모듈 doc 의 거짓 수치 둘을 고친다 (W7.1 검증 라운드 8)
- build(windows): win32-window-smoke 에 zig build 스텝을 준다 (W7.1 검증 라운드 7)
- fix(cli): win32-window-smoke 를 사용법 목록에 올린다 (W7.1 검증 라운드 6)
- docs(windows): create() 의 width/height 가 창 외곽임을 이름으로 못 박는다 (W7.1 검증 라운드 5)
- test(windows): Win32 구조체 레이아웃을 comptime 으로 못 박는다 (W7.1 검증 라운드 4)
- refactor(windows): 오진을 부르는 표면 둘을 걷어낸다 (W7.1 검증 라운드 3)
- fix(windows): 창 생성 구간의 이벤트가 조용히 사라지던 구멍을 닫는다 (W7.1 검증 라운드)
- feat(windows): Win32 창과 메시지 펌프 (W7.1) — 이벤트를 잃지 않는 규율
- feat(i18n): CLI 출력을 영어로 옮긴다 (I5 137 건)
- docs(ssh): S8 은 제품 경로가 아니라 실서버 검증 하니스다
- feat(ssh): openssh-key-v1 개인키 파싱 (S6b)
- fix(i18n): 히스토리·커밋 파일 목록의 문구를 키로 옮긴다 (P4b 리베이스)
- fix(file-panel): P4b 적대적 검증 지적 여섯을 고친다
- feat(file-panel): 히스토리에서 커밋을 펼치고 그 파일의 비교를 연다 (P4b)
- feat(editor): 가로 스크롤바 — 세로와 짝이고, 문서를 열 때부터 뜬다 (§4.1a)
- fix(file-panel): 소스 컨트롤 도크를 backing 스케일로 그린다
- fix(font): 오버항 상한을 u2 범위로 맞추고 커서 슬롯 over-release 를 고친다
- test(render): 글리프 비트맵을 이미지로 남기는 헤드리스 캡처를 붙인다
- feat(font): 커서가 앉은 칸은 합자를 풀어 그린다
- fix(font): 합자가 왼쪽으로 넘치는 만큼 칸을 당겨 온전히 그린다
- test(render): 터미널 렌더를 임의 문자열로 캡처하는 경로를 연다
- feat(i18n): 에이전트 도크·세팅 잔여를 키로 옮긴다 (I3a 259/339)
- fix(windows): 터미널 스모크에 커서를 켠다 (W7.2c-2 검증 라운드 1)
- feat(windows): 실제 터미널 화면이 뜬다 (W7.2c-2)
- feat(windows): DirectWrite 글리프 래스터라이저와 폰트 티어 (W7.3) — 한글까지 나온다
- test(i18n): CI 전용 스위트가 잡은 언어 의존 단언을 고친다
- feat(i18n): git·diff·SCM·탐색기 잔여를 키로 옮긴다 (I3a 337/339)
- fix(ssh): COLORTERM 을 SetEnv 대신 SendEnv 로 보낸다 — 사용자 SetEnv 를 덮지 않는다
- docs(ssh): COLORTERM 전달 결정을 기록한다
- fix(ssh): 원격 세션에 COLORTERM 을 알린다 (SetEnv, 지원 ssh 에서만)
- docs(font): face 재사용 캐시를 왜 접었는지 실측과 함께 남긴다
- feat(i18n): Swift 가 UI 문장을 만들지 않게 한다 (I3f 완료)
- fix(font): 오버항은 앞 칸이 비어 있을 때만 적용한다
- fix(ime): 드롭도 조합을 먼저 확정한다 — 이미지 드래그 업로드 뒤 남던 잔상
- fix(chrome): row_hover_bg 식을 토큰 층으로 올린다 — 주석은 "활성보다 밝다"였고 값은 활성과 같았다
- docs(windows): 클립보드 스모크의 두 모드를 usage 에 적는다 (W7.4b)
- fix(windows): OSC 52 읽기 정책을 코드가 말하게 한다 (W7.4b)
- fix(windows): 붙여넣기가 raw 바이트를 셸에 보내던 것을 막는다 (W7.4b)
- fix(windows): 클립보드 계수가 실패를 성공처럼 세지 않는다 (W7.4b)
- feat(windows): 클립보드는 플랫폼이 소유한다 (W7.4b)
- feat(windows): IME 조합 미리보기 (W7.4c)
- feat(windows): 키 입력이 셸까지 간다 (W7.4a)
- docs(chrome): 탭 폭은 고정이 아니라 하한이다 — 문서·계약 테스트를 맞춘다
- fix(chrome): 탭 드래그 고스트는 바를 벗어난 뒤부터 — 바 안은 재정렬이다
- feat(chrome): 탭이 적으면 탭 바를 꽉 채운다 — 고정 폭은 하한이다
- test(render): 격자 덤프와 탭 바 픽스처를 붙인다 — 레이아웃 회귀를 헤드리스로 본다
- fix(windows): 코어 명령이 조용히 버려지지 않게 센다 (W7.4d)
- fix(windows): 휠 리포트를 눈금당 한 번으로 되돌린다 (W7.4d)
- fix(windows): 적대적 검증이 찾은 8건을 닫는다 (W7.4d/W7.6)
- feat(windows): ConPTY 를 함께 배포한다 — vim·htop 이 마우스를 받는다 (W7.6)
- docs(windows): 새 ConPTY 를 물리면 마우스가 고쳐진다 — 실측으로 확인한다 (W7.4d)
- docs(windows): 마우스 리포팅이 안 오는 진짜 이유를 적는다 (W7.4d)
- feat(windows): IME 후보창을 커서에 붙인다 (W7.4d)
- feat(windows): 마우스로 고르고 굴리고 복사한다 (W7.4d)
- fix(macos): 셰이핑 attributes 가 폰트를 누수하지 않는다
- refactor(mobile): 제스처의 뜻을 상태 하나가 들게 한다 (G0~G5)
- perf(ci): boundary 집계 게이트를 Debug 한 모드로 줄인다
- fix(i18n): rebase 충돌을 손으로 풀고 main 의 새 라벨도 키로 옮긴다
- feat(i18n): 아카이브 상세·SCM 도크를 키로 옮긴다 (I3c 65/76)
ohah/ohah.github.io
- docs(monthly-opensource): maru·suji 개발기 문서 신설
- docs: 오늘의 커밋 8/15~8/17 추가 + 월간 오픈소스 타임라인 동기화
- docs(monthly-opensource): zts 개발기 3-19~3-21 추가 (5/20~8/10)
- docs(monthly-opensource): 4/26~8/14 타임라인 백필 + zts→zntc 개명 반영
- fix(docs): 물결표가 취소선으로 렌더되던 21곳 이스케이프
- docs(monthly-opensource): 세션 기록 반영 + suji 진행 중 상태로 수정
- fix(today-commit): 커밋 제목의 물결표 취소선 렌더 보정 (2건)
- docs(monthly-opensource): 6월 초 세션 기록 반영 — maru 에이전트 축 보강