2026-08-18
요약 (AI 작성)
SSH 클라이언트를 직접 세운 날입니다. session 채널 열기·pty-req·shell·데이터·종료(S7)에서 출발해 받는 쪽 흐름 제어로 대량 출력이 멈추지 않게 하고(S7b), 잡 메시지에 답하고(S7c), 재키잉으로 한 시간 넘는 세션이 끊기지 않게 한 뒤(S7d), 일회용 sshd 를 띄워 8MiB 를 왕복하는 실서버 하네스(S8)로 증명했습니다. 이어 세션 상태기계를 도구에서 승격해 모바일과 같은 것을 쓰게 하고(S9-1), SSH 세션을 C ABI 로 내어 핸들·배압·난수를 host 가 들게 했으며(S9-2), 안드로이드에서는 소켓 펌프와 포그라운드 서비스로 배경에서도 살게 했습니다(S9-3a·b).
편집기는 성능을 팠습니다. 랩 계수가 매 프레임 돌고 4,096줄에서 잘리던 것을 접두합 캐시로 바꾸고, 폭을 라이브로 끄는 드래그가 16fps 이던 것을 저하 동작으로 내리고, 놓는 순간의 62ms 를 프레임에 나눠 점진 계수로 만들었습니다(§2.1). 비교 뷰를 네이티브로 여는 기본 경로 전환(N1.5)과 세로·가로 스크롤바 드래그, 합자가 잘려 // 가 / 로 보이던 결함도 이날입니다. 탐색기는 언어별 파일 아이콘, git 이 무시하는 항목 흐리기, 단일 자식 디렉터리 접기, 헤더의 새로 고침·전체 접기 버튼을 얻었고, 소스 컨트롤 도크는 fetch 를 직접 실행하고(P6a) push·pull 을 터미널에 넣어 주며(P6b) ahead/behind 기준을 기본 브랜치로 옮겼습니다 — @{u} 는 작업 브랜치에서 늘 0 이었습니다.
Windows 는 경로와 사용자 config 배선(W7.5)이 들어갔고, 파일 패널의 에이전트 탭이 턴 타임라인을 그리기 시작했습니다(P5). i18n 적대적 검증이 뜻이 뒤집힌 번역·미끄러지는 선택·스레드 경합 다섯을 잡았고, 리베이스 규율("팁에서 고치면 히스토리가 죽는다")과 커밋된 머지 충돌 마커를 막는 게이트가 문서·CI 에 들어갔습니다.
커밋
ohah/maru
- perf(editor): 랩 계수가 매 프레임 돌고 4,096줄에서 잘렸다 — 접두합 캐시로 (§2.1)
- chore(boundary): 파일 트리 아이콘 색으로 움직인 app_session digest 를 맞춘다
- feat(explorer): 파일 트리 아이콘에 종류 색을 준다
- feat(explorer): 웹 계열 파일 아이콘을 언어별로 가른다
- feat(explorer): 단일 자식 디렉터리 체인을 한 줄로 접는다
- test(ssh): 실서버 서명으로 교환 해시 H 를 고정한다
- test(ssh): 어떤 바이트열도 패닉시키지 못한다를 퍼즈로 잰다
- fix(ssh): 반쪽만 반영되는 협상을 없애고 조립을 테스트로 고정한다
- fix(ssh): 무시할 수 있는 신호를 무시할 수 없게 바꾼다
- fix(ssh): 적대적 리뷰가 찾은 15건과 그 수정이 만든 결함을 닫는다
- fix(editor): 저하 동작이 dock 경계 드래그를 빠뜨렸다 — 폭을 끄는 경로는 셋이다
- perf(editor): 폭을 라이브로 끄는 드래그가 16fps였다 — 저하 동작으로 (§2.1)
- fix(editor): 자기 회귀를 못 잡는 감지선을 실측 사이로 내린다
- fix(ci): 리베이스 뒤 digest를 맞춘다
- fix(file-panel): P5 적대적 검증 5~8회차 지적 넷을 고친다
- fix(file-panel): P5 적대적 검증 지적 여섯을 고친다
- feat(file-panel): 에이전트 탭이 턴 타임라인을 그린다 (P5)
- fix(i18n): 라벨 분리가 깨뜨린 두 테스트를 고친다
- fix(i18n): rebase 뒤 원장을 다시 수렴시킨다
- feat(i18n): 기호·프레임·단축키를 문장에서 걷어낸다 (I2 완료)
- feat(i18n): Browser Grants 메뉴를 영어로 옮긴다 (I5 완료)
- chore(boundary): 탭 바 호버로 움직인 app_session digest 를 맞춘다
- feat(chrome): 탭 바 ✕·+ 도 호버하면 배경이 선다
- perf(editor): 놓는 순간 62ms를 프레임에 나눈다 — 점진 계수 (§2.1 배치 변경)
- fix(windows): Win32 호출 규약을 한 자리에서 접는다 — 다른 타깃에서 전체 빌드가 멈췄다
- feat(ssh): session 채널 — 열기·pty-req·shell·데이터·종료 (S7)
- fix(ci): 리베이스 뒤 app_session digest를 맞춘다
- fix(scm): 상자 히트 판정을 히트테스트와 같은 clip으로 자른다 (적대적 검증 회차)
- feat(scm): 커밋 상자를 휠로 굴린다 — 그 위에서 굴리면 뒤의 목록이 움직였다
- docs: 리베이스 규율을 적는다 — 팁에서 고치면 히스토리가 죽는다
- feat(editor): 스크롤바를 잡아 끌 수 있다 — 세로·가로 (ScrollArea 가로 축 개방)
- fix(tests): 테스트가 git_result를 덮어쓰기 전에 지운다 — worker 버퍼가 샜다
- fix(ci): 기본 브랜치 ahead/behind 읽기로 움직인 git_backend digest를 맞춘다
- fix(scm): ahead/behind 기준을 기본 브랜치로 옮긴다 —
@{u}는 작업 브랜치에서 늘 0이었다 - docs(ssh): S9-3 이 정할 것 둘을 적어 둔다
- test(ssh): ABI 만으로 실서버에 붙는 회차와, 그 파일을 보는 게이트
- feat(mobile): SSH 세션을 C ABI 로 낸다 (S9-2)
- fix(ssh): 재키잉에서 호스트키가 바뀌면 끊는다
- chore(boundary): 리베이스 뒤 digest 를 맞추고, 두 게이트 등록을 나란히 세운다
- test(i18n): 적대적 검증 5차 — 지킨다고 믿었던 테스트가 다른 것을 지키고 있었다
- chore(boundary): 리베이스 뒤 i18n digest 를 맞춘다
- fix(i18n): 적대적 검증 4차 — 닫은 구멍 바로 옆에 같은 구멍이 있었다
- fix(i18n): 적대적 검증 3차가 잡은 여섯 — 그중 둘은 2차가 만든 것이다
- fix(i18n): 적대적 검증 2차가 잡은 일곱을 고친다 — 재고정이 섹션을 안 옮겼다
- chore(boundary): 리베이스 뒤 i18n digest 를 맞춘다
- test(chrome): 체크 열이 있는 컨텍스트 메뉴에 Lab 시나리오와 골든을 세운다
- docs(i18n): 적대적 검증이 잡은 여섯을 계획에 기록한다
- fix(i18n): 적대적 검증이 잡은 다섯을 고친다 — 뜻이 뒤집힌 번역·미끄러지는 선택·스레드 경합
- feat(ssh): 받는 쪽 흐름 제어 — 대량 출력이 멈추지 않는다 (S7b)
- fix(test): 편집기 열기 측정선이 러너 편차로 울리지 않게 자릿수로 둔다
- test(explorer): 접힌 줄의 무시 판정이 끝 노드에서 오는지 든다
- chore(boundary): 탐색기 무시 표시로 움직인 digest 둘을 맞춘다
- feat(explorer): git 이 무시하는 항목을 흐리게 그린다
- docs(editor): 저하 동작의 베이스와 버린 대안을 §2.1에 적는다
- fix(test): 접기 테스트가 scan 요청을 흘리지 않게 한다
- feat(explorer): 전체 접기에 전용 아이콘을 주고, 동작 렌더 계약을 테스트가 든다
- feat(explorer): 탐색기 헤더에 새로 고침·전체 접기 버튼을 둔다
- docs(ssh): 재키잉을 우리가 걸 수도 있다는 사실과 정책 부재를 가른다
- docs(ssh): 스모크가 원리적으로 못 잡는 가드 둘을 파일 머리에 적는다
- test(ssh): 재키잉 회차를 셋으로 늘려 미뤄 둔 송신까지 태운다
- fix(ssh): 재키잉 중 채널 송신을 막고 미루게 한다 — 계약의 두 줄이 연결을 죽였다
- feat(ssh): 재키잉 — 한 시간 넘는 세션이 멈추지 않는다 (S7d)
- fix(ssh): 스모크의 "조용히 통과" 를 회차 수로 한 번에 막는다
- fix(ssh): 스모크가 동시에 돌면 한쪽이 조용히 통과하던 것을 고친다
- fix(ssh): 적대적 서버에서 드라이버가 신호로 죽거나 이름을 잃던 것을 고친다
- fix(ssh): 스모크가 재키잉 교착을 흐름 제어로 오진하던 것을 바로잡는다
- feat(ssh): 실서버 검증 하니스 — 일회용 sshd 와 8MiB 를 왕복한다 (S8)
- fix(editor): 여는 경로 측정을 재실행 근사에서 단계별 직접 측정으로 바꾼다
- docs(editor): 여는 경로를 그대로 두는 근거를 실측으로 정정한다
- fix(editor): 합자가 잘려
//가/하나로 보이던 것을 고친다 (#2123) - fix(ssh): 작동하지 않는 옵션을 없앤다
- test(ssh): NEWKEYS 사이의 암묵 불변을 명시로 바꾼다
- docs(ssh): 계획서의 회차 수를 실제와 맞춘다
- test(ssh): 테스트에 안 닿던 공개 API 둘을 덮는다
- test(ssh): 안 덮인 두 자리를 메우고 모바일이 걸릴 함정을 계약에 적는다
- fix(ssh): 배너를 어느 상태에서나 받고 걸러서 돌려준다
- fix(ssh): 승격이 지운 것을 되살리고 오용을 시끄럽게 만든다
- fix(ssh): client 재수출을 빠뜨린 것을 넣는다
- feat(ssh): 세션 상태기계를 도구에서 승격한다 — 모바일과 같은 것을 쓴다 (S9-1)
- docs: 구현이 앞서간 상수·동작 세 자리를 따라잡는다
- fix(chrome): 브랜치 줄을 색으로 읽히게 한다 — ahead/behind는 조각 둘,
가져오기는 면 없이 색만 - feat(editor): 비교를 네이티브로 연다 — 기본 경로 전환과 가로 막대 (N1.5)
- docs(comments): 값이 바뀐 뒤 남은 코드 주석 둘을 고친다
- fix(ci): 리베이스 뒤 app_session digest를 맞춘다 — main의 N1.5 캡처 훅과 P6b가 같은 파일을 건드렸다
- feat(scm):
∨가 push·pull을 터미널에 넣어 준다 (P6b) - fix(ci): 리베이스 뒤 경계 digest를 맞춘다 — main의 탐색기 변경과 P6a가 같은 두 파일을 건드렸다
- fix(scm): 원격 갱신 칩을 실제로 켜 보이게 하고 결과를 세 탭에 남긴다 (P6a 적대적 검증)
- feat(scm): 원격 갱신(fetch)을 도크가 직접 실행한다 (P6a)
- docs: 측정으로 확인한 다섯 자리를 코드에 맞춘다
- docs(ssh): DEBUG 의 always_display 를 안 따르는 이유를 남긴다
- docs(ssh): 재키잉은 "키 교환 중 끊는다" 에 안 든다
- fix(ssh): 끊김은 오류가 아니라 Step 이고, 실서버 회차가 그것을 밟는다
- fix(ssh): 끝은 상태기계가 소유하고, 붙은 뒤도 fuzz 가 닿는다
- feat(ssh): 잡 메시지에 답한다 (S7c)
- fix(config): 경로 정규화 테스트가 호스트 수용 여부를 손으로 적지 않는다 (W7.5)
- fix(windows): 리졸버 조립을 Parsed 헬퍼로 되돌린다 (W7.5 검증 4라운드)
- fix(windows): 폰트도 config 에서 온다 — 읽어 놓고 안 쓰던 자리 (W7.5)
- feat(windows): 사용자 config 를 실제로 읽는다 (W7.5)
- feat(config): 경로 값을 입구에서 정규화한다 (W7.5)
- fix(path): 루트 스트라이핑이 첫 세그먼트를 먹지 않는다 (W7.5)
- fix(tests): 충돌 마커 게이트의 사각지대 셋을 닫는다 — 적대적 검증
- fix(docs): 커밋된 머지 충돌 마커를 해소하고, 다시 못 들어오게 막는다