2026-08-19
요약 (AI 작성)
모바일 SSH 를 기기에서 끝까지 잇는 날입니다. iOS host 가 같은 펌프로 붙고 유예 뒤 정직하게 끊으며(S9-3c), 기기에서 키를 만들어 그 키로 실서버에 붙어 증명하고(S9c-1), 안드로이드는 개인키를 Keystore 로 봉인해 키 파일 경로를 없앴습니다(S9c-3). 공개키를 보여 주고 복사하는 화면(S9c-4), 서버 목록에서 골라 붙고 등록·수정·삭제하는 화면(S9b-2b), 접속 정보를 config 가 들게 하고 ssh.conf 를 제거한 것(S9b-2a), 비밀번호 인증과 none 으로 방법 목록을 묻는 경로, 처음 붙는 서버의 지문 승인(S9b-3)까지 붙였습니다.
편집기는 텍스트 파일을 네이티브 편집기로 여는 것을 기본으로 전환하고, 선택의 좌표계를 먼저 정한 뒤(§4.1g — 방향이 둘이고 성질이 다르다) 행마다 조각 시작을 싣고 픽셀을 원본 byte 로 옮기고 이어진 조각에도 글자 강조가 서게 했습니다. pane 상태바 셋(저하·읽기 전용·줄바꿈)도 냈습니다. chrome 은 tui 룩과 chrome.preset 을 제거해 rich 하나로 좁혔고, 소스 컨트롤은 비교 기준을 고르고 workspace 에 기억하며(P7a·b) 히스토리 ref 칩을 +N 으로 접고 미푸시가 있으면 브랜치 이름 뒤에 점을 켭니다.
Windows 는 크로스 타깃 게이트가 중립 표면을 실제로 보게 하고(W8.0), 파일 트리 백엔드와 데이터 경로가 Windows 에서 끝까지 흐르게 했으며(W8.1·W8.2⒜), shell.args 기본값을 OS 별로 갈라 PowerShell 을 pwsh·powershell 로 나눴습니다(W8.1b·c). 가드가 무엇을 지키는지 돌연변이로 가른 적대적 검증, CLI help 를 영어로 옮긴 것(계약이 금지한 것이 코드에 있었다), 그리고 "규율의 값싼 절반만 돌고 확인했다고 적었다"는 자기 정정과 중간 커밋도 경계 게이트를 통과하는지 보는 CI 가 이날 들어갔습니다.
커밋
ohah/maru
- fix(ci): 리베이스 뒤 app_session digest를 맞춘다
- docs(dock): 목록 막대 드래그가 생겼다는 사실을 §3.5에 적는다
- feat(scm): 목록 스크롤바를 끌 수 있게 한다 — 보이는데 안 잡히는 컨트롤이었다
- fix(path): relativeUnderRoot 가 구분자 둘인 루트에서도 상대 경로를 낸다 (적대적 검증)
- fix(env): 환경변수 키의 NUL 종단 요구를 타입으로 못 박는다 (자기 검증)
- feat(windows): config 가 고른 셸을 실제로 띄운다 + spawn 경계 구분자 되돌림 (W7.6b, 검토 #8)
- fix(env): 경로가 걸린 환경변수를 wide 환경에서 읽는다 (검토 #3)
- fix(path): relativeUnderRoot 가 길이 검사 전에 후행 구분자를 다듬는다 (검토 #15)
- fix: 리뷰가 남긴 셋을 닫는다 — 루트 스트라이핑 세 번째 자리·수용 순서·MARU_CONFIG
- test(config): 정규화 테스트가 CI 에서 실제로 실패할 수 있게 한다 (리뷰 #14)
- fix(windows): option_as_meta 를 관측 가능하게 하고, 과장한 주장을 바로잡는다
- fix(tools): digest 갱신 도구가 정작 필요할 때 죽던 것을 고친다
- fix(windows): 리뷰가 찾은 사용자 결함 넷을 닫는다 (W7.5 후속)
- docs(editor): "CM6 대비 유일한 후퇴"가 틀렸다 — 선택·복사가 남았다
- test(mobile): 펌프가 재키잉을 지나는지 세고, 개인키가 남는 시간을 줄인다
- chore: Claude Code 런타임 산물을 무시하고, 실수로 커밋된 lock 을 뺀다
- fix(gate): 충돌 마커 게이트가 중첩된 생성물 디렉터리도 거르게 한다
- fix(mobile): 펌프가 리눅스에서도 컴파일된다 — 그리고 그것을 게이트가 본다
- feat(mobile): 친 것이 원격으로 간다 — 입력 목적지를 세션과 함께 옮긴다
- fix(mobile): 끊긴 것을 알리고, 서비스를 내리고, 키를 프로세스 밖에 안 낸다
- feat(android): 포그라운드 서비스가 SSH 소켓을 든다 (S9-3b)
- feat(mobile): 두 host 가 함께 쓸 SSH 소켓 펌프 (S9-3a)
- docs(editor): 가로 태그 분기가 도달 불가임을 적는다 — 자리만 있는 이유
- refactor(editor): 막대 판정을 한 곳으로 — 방어 코드가 필요 없어졌다
- fix(editor): 막대 드래그가 실패해도 태그가 남을 수 있었다 — active를 본다
- test(editor): 비교 막대 테스트가 잡은 축을 못박는다 — 실패가 이유를 말하게
- test(editor): 비교 가로 드래그 테스트가 반쪽이었다 — 왼쪽 대칭도 본다
- feat(editor): 비교 뷰의 막대도 잡아 끌 수 있다 — 세로는 공유, 가로는 각자 (§3.5)
- feat(scm): 히스토리 ref 칩을
+N으로 접는다 — 나머지를 조용히 버리고 있었다 - feat(ios): iOS host 가 같은 펌프로 붙는다 (S9-3c)
- perf(windows): 파일 ID 를 배치로 읽는다 — 항목별 stat 이 145 배 느렸다 (W8.2 적대적 검증)
- docs(windows): W8.2 결함 둘과 가드 대응표를 §2m.4 에 적는다
- fix(windows): 파일 트리 스캔의 Windows 결함 둘을 고친다 (W8.2 적대적 검증)
- feat(windows): 파일 트리 데이터 경로가 Windows 에서 끝까지 흐른다 (W8.2 ⒜)
- fix(cli): help 스냅샷 사본도 영어로 맞춘다 — 테스트가 갈림을 잡았다
- fix(cli): CLI help 를 영어로 옮긴다 — 계약이 금지한 것이 코드에 있었다
- fix(scm): 오른쪽 빈 자리를 걷고 가져오기를 아이콘으로 바꾼다 (사용자 결정)
- feat(windows): PowerShell 을 둘로 가른다 —
pwsh·powershell·cmd(W8.1c, 사용자 확정) - feat(windows): shell.args 기본값을 OS 별로 가르고 배선한다 (W8.1b, 사용자 확정)
- fix(scm): 세대만 오른 프레임도 표가 따라오게 한다 — 히스토리 클릭이 죽었다
- test(windows): 가드가 무엇을 지키는지 돌연변이로 가르고 스모크를 step 으로 세운다 (W8.2 적대적 검증)
- fix(windows): 이름 바꾸기가 만든 경로가 중립 층에서 "루트 밖" 으로 답하던 것을 고친다 (W8.2 ⒝-0)
- refactor(chrome): tui 룩과 chrome.preset을 제거하고 rich 하나로 좁힌다
- feat(mobile): 기기에서 키를 만든다 (S9c-1)
- fix(build): SSH 펌프 스모크를 POSIX 호스트로 가른다 — Windows 에서 zig build test 가 통째로 죽었다
- fix(ci): 리베이스 뒤 i18n digest도 맞춘다
- fix(ci): 리베이스 뒤 app_session digest를 맞춘다
- feat(editor): 편집기 pane 상태바 셋을 낸다 — 저하·읽기 전용·줄바꿈
- docs(ssh): iOS Keychain 보류를 결정으로 적는다 (사용자 확정 2026-08-19)
- feat(android): 개인키를 Keystore 로 봉인한다 (S9c-3)
- chore(mobile): 경계 원장에 글자 칸 반사 자리를 적는다
- test(mobile): 취소·넘침도 잰다 — 적대적 검증 회차
- feat(mobile): 설정의 글자 칸을 칠 수 있다 (S9b-1)
- docs(editor): 랩을 켜면 "줄 끝"이 틀린 답이다 — 행 끝이다 (§4.1g)
- docs(editor): 좌표계 계약을 아홉 번 더 두들겼다 — 판정 기준이 바뀌었다 (§4.1g)
- docs(editor): 좌표계 계약을 세 번 더 두들겼다 — 단언 둘이 깨졌다 (§4.1g)
- docs(editor): 선택의 좌표계를 먼저 정한다 — 방향이 둘이고 성질이 다르다 (§4.1g)
- test(windows): 디렉터리 리프와 UNC 루트를 마저 못 박는다 (W8.1 적대적 검증)
- test(windows): 핸들 누수 검사를 Windows 에도 만든다 (W8.1 적대적 검증)
- feat(windows): 파일 트리 백엔드가 Windows 에서 실제로 돈다 (W8.1)
- test(golden): 머리 줄 자리 변경으로 움직인 골든 둘을 갱신한다
- fix(scm): 저장소 머리 줄의 가로 자리 셋을 고친다 (사용자 지적)
- fix(chrome): 뮤테이션 복원이 안 된 채 커밋했다 — 테스트가 CI 에서 그것을 잡았다
- fix(chrome): 라벨을 코드포인트 중간에서 자르고 있었다 + 스키마 문서가 실제와 갈렸다
- refactor(chrome): 도달할 수 없게 된 셀 밴드 갈래를 지운다
- fix(scm): 기준 후보 목록을 넓힌다 — 재사용한 정렬 근거가 다른 질문의 것이었다
- feat(scm): 고른 비교 기준을 workspace에 기억한다 (§3.5 P7b)
- docs(windows): 되돌림을 "계약을 뒤집은 것" 이 아니라 다른 층 으로 다시 적는다 (§5)
- feat(mobile): 서버를 화면에서 등록·수정·삭제한다 (S9b-2b-2)
- feat(scm): 비교 기준을 고를 수 있게 한다 (§3.5 P7a)
- feat(mobile): 이 기기의 공개키를 보여 주고 복사한다 (S9c-4)
- feat(ssh): 비밀번호로도 붙는다 + 보조 키바 두 줄 격자
- feat(ssh): 키가 없어도 붙는다 — none 으로 방법 목록을 묻는다
- feat(scm): 아직 안 보낸 것이 있으면 브랜치 이름 뒤에 점을 켠다
- fix(mobile): 같은 사실은 같은 이름으로 — 적대적 상대에서 드러난 것들
- docs: 규율의 값싼 절반만 돌고 "확인했다"고 적었다 — 규칙을 고친다
- docs: 값 드리프트 하나를 고치고 그 재발을 막는 규율을 적는다
- fix(build): SSH 스모크 드라이버도 POSIX 호스트로 가르고, 빠지는 것을 조용하지 않게 한다
- chore(mobile): 서버 목록 가지에 맞춰 경계 원장을 갱신한다
- feat(mobile): host 두 개가 config 의 서버로 붙는다 (S9b-2a)
- feat(mobile): 접속 정보를 config 가 든다 (S9b-2a, 브리지 절반)
- fix(tools): digest 갱신 도구가 python 3.9에서 죽어 원장을 고칠 수 없었다
- feat(editor): 텍스트 파일 기본이 네이티브 편집기다 — 편집을 내주고 앞당겼다
- feat(editor): 탐색기 클릭으로 네이티브 편집기가 열린다 — 훅 뒤, 기본은 CM6
- chore(boundary): 리베이스 뒤 settings digest 를 맞춘다
- chore(boundary): 리베이스 뒤 schema digest 를 맞춘다
- test(settings): 적대적 검증이 잡은 여섯 — 배선을 지킨다던 테스트가 배선을 안 불렀다
- fix(settings): 검색 필터가 화면 언어를 안 보게 한다 — 흔들릴 것을 없앤다
- i18n(mobile): 서버 목록의 글자를 키로 옮긴다
- docs(mobile): 서버 목록 화면의 자리와 요청 출처를 적는다
- feat(mobile): 서버 목록 화면에서 골라 붙는다 (S9b-2b-1)
- fix(editor): 측정 하니스가 draw list를 흘렸다 — CI가 그걸로 죽었다
- feat(editor): 행마다 조각 시작을 싣고, 픽셀을 원본 byte로 옮긴다 (§4.1g ①)
- feat(editor): 이어진 조각에도 글자 강조가 선다 — 오래 비어 있던 자리 (§4.1g ②a)
- feat(windows): 크로스 타깃 게이트가 중립 표면의 공개·비제네릭 선언을 본다 (W8.0)
- ci: 자기 검증 픽스처를 저장소 안에 만든다 — CI 의 zig 는 shim 이다
- ci: 자기 검증을 zig 가 있는 job 으로 옮긴다 — CI 가 그것을 잡았다
- ci: mktemp 스텁 누수를 막는다 — 적대적 검증 2차
- ci: 커밋마다 게이트를 돌리지 않는다 — 두 서명을 git 으로 본다 (실측 2.4초)
- ci: 적대적 검증이 잡은 둘 — 이 게이트는 CI 에서 항상 무동작이었다
- ci: 원장을 안 건드린 PR 은 빌드 없이 끝낸다 — 실측 0.03초
- ci: 중간 커밋도 경계 게이트를 통과하는지 본다 — 규율의 기계 절반
- refactor(app-session): 아무도 안 쓰는 pub 19개를 닫는다