2026-08-15

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

요약 (AI 작성)

maru가 deploy/mobile 라인에서 진행하던 모바일 작업을 main에 합친 날입니다(#2205, 161커밋). 합쳐진 이력은 iOS·Android 이식 가능성을 PoC로 실측하는 데서 출발해 PoC를 제품 구조로 옮기고(M0), draw-list를 인스턴스 드로우 한 번으로 모으고(M1), 모바일 타깃 빌드를 build.zig가 소유하게 한 뒤(M1.5) Android IME를 자체 Java shim으로 받는(M2) 순서였습니다. 그 위에 셀 속성과 합성 글리프·글자 상자 정렬(M4a3·M4a4), 키를 코어 인코더에 태우는 경로(M4a2), 커서, 스크롤·선택·복사·보조 키바(M4b1부터 M4b4), 컬러 아틀라스 이모지(M4a6)가 얹혀 있습니다. 한글 IME는 iOS를 UITextInput으로 올려 실측한 뒤 보류로 적었고, 전날 열린 설정 화면 PoC #2197은 deploy/mobile 브랜치에 병합됐습니다. 합류 뒤에도 코드 리뷰가 낸 결함을 재현해 고치고(#2210, #2216), 창이 부서져도 이모지가 남게 하며, 모바일 config 계약을 세우고(#2225) 계약 판정자를 ubuntu 게이트에 걸었습니다(#2222).

Windows 지원도 문서부터 열었습니다. 플랫폼 계약과 구현 계획을 세우고 적대적 검증 결과를 반영해 기본 셸을 PowerShell로, OSC 9;9 authority 결정을 확정했으며(#2206), OSC 9;9(ConEmu cwd)를 받아 cwd 축에 태웠습니다(#2219). 이어 절대경로 판정을 [0]=='/'에서 떼어내고(W1.5, #2223) main.zig가 Windows에서 빌드·실행되게 한 뒤(W2, #2230) 적대적 검증이 찾은 것을 닫았습니다(#2234). 곁들여 non-macOS 호스트에서 중립 레이어 테스트가 돌게 하고(#2202), 테스트의 POSIX 전제를 경계에서 명시하며 PosixWalker 복제 23개를 정본 하나와 복제 셋으로 줄였습니다.

소스 컨트롤 도크는 전날 열린 탭 줄 #2196을 병합하고 쓰기까지 이었습니다. argv 조립과 안전 술어(P2a, #2204), 교착·EPIPE·stdin 상속을 막은 실행 경로(P2b), 도크 스테이징 배선(P2c, #2209), 낙관적 스테이징 반영(#2224), 멀티라인 TextArea 층(P3a, #2228)을 차례로 올리고 Chrome Lab 시나리오와 골든을 뒀습니다. 커밋 입력과 버튼을 도크에 배치하는 #2235는 이날 열렸습니다. 편집기는 전날 열린 #2189로 비교 본문에 추가·삭제 색과 세로 스크롤을 얹고, 바뀐 글자만 한 겹 더 진하게 그리며 저장소 루트 기준 breadcrumb를 붙였습니다(#2213). 그 과정에서 할당 실패 주입이 잡은 강조 배열 이중 해제 셋과 200 KB 줄 하나에 12.3 MB를 쓰던 토큰 생성, pane 밖 휠이 사라지던 문제를 고쳤습니다.

session-host는 CR2e reconnect reducer와 generation slot 기반을 놓고(#2198, #2199) 제품 generation slot 저장소를 활성화했으며(#2203), reconnect executor·admission 예산·drain coordinator를 제품 runtime에 결속했습니다. e3c2·e3c3 receipt 봉인, CR3b의 detach placeholder·cleanup handle·current 세대 게시, retired Client 회수 권위, CR3c 세대 교체 브리지(#2233), retiring generation 정산 순서 고정까지 이어졌습니다. ohah.github.io에서는 오늘의 커밋 누락일 백필과 함께, 크론 산출물과 깨진 CRD 플레이스홀더를 걷어내고 .gitignore를 복원해 배포를 막던 lint 실패를 해소했습니다.

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

커밋

ohah/maru

ohah/ohah.github.io

PR (해당일 생성/머지)

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

저장소PR해당일 활동상태대상 브랜치제목
ohah/maru#2236생성 · 병합mergedmainfeat(session-host): retiring generation 정산 순서 고정
ohah/maru#2235생성mergedmainfeat(file-panel): 커밋 입력·버튼을 도크에 배치한다 (P3b)
ohah/maru#2234생성 · 병합mergedmainfix(windows): 적대적 검증이 W2에서 찾은 것을 닫는다
ohah/maru#2233생성 · 병합mergedmainfeat(session-host): CR3c 세대 교체 브리지를 추가한다
ohah/maru#2232생성 · 병합mergedmainfeat(session-host): retired Client 회수 권위를 추가한다
ohah/maru#2231생성 · 병합mergedmainfeat(session-host): CR3b R2c current 세대 게시 추가
ohah/maru#2230생성 · 병합mergedmainfeat(windows): main.zig가 Windows에서 빌드·실행되게 한다 (W2)
ohah/maru#2229생성 · 병합mergedmainfeat(session-host): CR3b R2b cleanup handle 추가
ohah/maru#2228생성 · 병합mergedmainfeat(file-panel): 멀티라인 TextArea 층과 목록 각진 모서리 (P3a)
ohah/maru#2227생성 · 병합mergedmainfeat(session-host): CR3b R2a detach placeholder 게시
ohah/maru#2226생성 · 병합mergedmaintest(file-panel): 소스 컨트롤 도크에 Chrome Lab 시나리오와 골든 셋을 둔다
ohah/maru#2225생성 · 병합mergedmaindocs(mobile): 모바일 config 계약을 세운다 — 스키마·자리·읽고 쓰는 길
ohah/maru#2224생성 · 병합mergedmainfeat(file-panel): 스테이징을 낙관적으로 반영한다 (§7)
ohah/maru#2223생성 · 병합mergedmainfeat(windows): 절대경로 판정을 [0]=='/'에서 떼어낸다 (W1.5)
ohah/maru#2222생성 · 병합mergedmainci(mobile): 계약 판정자를 ubuntu 게이트에 건다
ohah/maru#2221생성 · 병합mergedmainfeat(session-host): e3c3 close event receipt를 봉인
ohah/maru#2220생성 · 병합mergedmaintest(mobile): 키 미러가 "알아본다" 대신 "어디로 가는가" 를 재게 한다
ohah/maru#2219생성 · 병합mergedmainfeat(terminal-core): OSC 9;9(ConEmu cwd)을 받아 cwd 축에 태운다
ohah/maru#2218생성 · 병합mergedmainfeat(session-host): e3c2 typed external receipt로 direct-release 경계를 봉인
ohah/maru#2217생성 · 병합mergedmainfeat(session-host): reconnect drain coordinator를 설치한다
ohah/maru#2216생성 · 병합mergedmainfix(mobile): 리뷰가 낸 여섯을 재현해 고치고 하나를 반증한다
ohah/maru#2215생성 · 병합mergedmainfeat(session-host): reconnect admission을 stable runtime에 결속한다
ohah/maru#2214생성 · 병합mergedmainfeat(session-host): reconnect admission 예산 정책을 고정한다
ohah/maru#2213생성 · 병합mergedmainfeat(editor): 바뀐 글자만 진하게(N1.5 e) + 헤더 밴드 겹침 수정 + 경로 breadcrumb
ohah/maru#2212생성 · 병합mergedmaintest(session-host): reconnect resident RSS 측정 경계를 고정한다
ohah/maru#2211생성 · 병합mergedmainfix(android): 창이 부서져도 이모지가 남게 컬러 아틀라스 원본을 든다
ohah/maru#2210생성 · 병합mergedmainfix(mobile): 코드 리뷰 상위 3건을 재현하고 고친다 — 글자 경계를 host 경계에서 지킨다
ohah/maru#2209생성 · 병합mergedmainfeat(file-panel): 도크에서 스테이징을 배선한다 (P2c)
ohah/maru#2208생성 · 병합mergedmaintest(session-host): reconnect resident base를 고정한다
ohah/maru#2207생성 · 병합mergedmainfeat(session-host): reconnect generation executor를 제품 runtime에 결속한다
ohah/maru#2206생성 · 병합mergedmaindocs(windows): Windows 플랫폼 계약과 구현 계획
ohah/maru#2205생성 · 병합mergedmainfeat(mobile): 모바일 라인을 main 에 합친다 (161커밋)
ohah/maru#2204생성 · 병합mergedmainfeat(file-panel): 소스 컨트롤 쓰기 argv 조립과 안전 술어 (P2a)
ohah/maru#2203생성 · 병합mergedmainfeat(session-host): 제품 generation slot 저장소를 활성화한다
ohah/maru#2202생성 · 병합mergedmainfix: non-macOS 호스트에서 중립 레이어 테스트가 돌게 한다
ohah/maru#2201생성 · 병합mergedmainrefactor(session-host): CR2e generation 접근을 단일 facade로 모은다
ohah/maru#2200생성 · 병합mergedmainfeat(session-host): add CR2e prepared reconnect owner
ohah/maru#2199생성 · 병합mergedmainfeat(session-host): add CR2e generation slot substrate
ohah/maru#2198생성 · 병합mergedmainfeat(session-host): add CR2e reconnect reducer and sealing substrate
ohah/maru#2197병합merged기능 브랜치: deploy/mobilefeat(mobile): 설정 화면 PoC — 라우터로 밀고 44 로 세운다
ohah/maru#2196병합mergedmainfeat(file-panel): 소스 컨트롤 도크에 탭 줄을 붙인다 (P1 마무리)
ohah/maru#2189병합mergedmainfeat(editor): 비교 본문에 색을 얹고 세로 스크롤을 붙인다 (N1.5 d + N1 잔여)