2026-09-04

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

요약 (AI 작성)

maru에서 영속 터미널이 기본이 된 날입니다. keep-alive 기본값을 true로 전환하면서 그 전환이 드러낸 테스트의 프로세스 전역 누수를 걷었고(#3170), 문서의 값 서술을 단일 출처로 되돌렸습니다(#3190). session-host는 쓸 수 있는 backend가 있으면 래치를 풀어 붙어 있는데도 원격으로 안 열리던 것을 고치고(#3169), 소켓이 끊겨 닫은 것과 앱이 닫은 것을 갈랐으며(#3196), 5초 마감을 근거와 함께 확정했습니다(#3175). SSH는 「빠른 여닫기」에서 터지는 세 원인 때문에 세션을 바꿀 수 없던 문제를 고쳤습니다(#3198).

원격 감시는 정직해졌습니다. 감시를 포기했으면 화면이 말하게 하고(RW6, #3173), macOS 원격이 「감시하는 척」하던 것을 못 하면 못 한다고 말하게 고쳤으며(#3179), 도크 토글이 RW5를 풀던 「잠시 멈춤」과 「놓아줌」을 갈랐습니다. 이어 RW7 설계대로 macOS·BSD 원격을 폴링으로 되살리고(#3194), 한도에서 포기 대신 폴링으로 내려가며(#3201), 폴링 다이제스트가 화면의 숫자까지 보게 했습니다. status마다 도는 core.fsmonitor 실행 벡터를 닫고(#3188), filter는 닫으면 안 되는 문이라 선을 그었습니다(#3191). 편집기 Term은 자기 키 컨텍스트를 얻어 전역에 못 넣던 chord를 그 Term 안에서 세우고(#3187), ⌘D를 확정 자리로 옮기되 비교 뷰에서는 전역으로 돌려줬습니다(#3199). sync(2026) 어긋남의 원인이 청크 통째 적용이었음도 고쳤습니다(#3192).

모바일은 U2 전환 손짓을 「덮개」로 정하고 돌아온 세션이 빈 화면부터 다시 쌓지 않게 했으며(#3177), 든 세션에 상한과 버림 표시를 두고(#3180) 원격 화면에 뒤로가기를 그렸습니다. 컨트롤 축의 정책은 host에서 코어로 옮겼습니다. 릴리스 쪽은 전날 열린 codesign 검증 수정 #3168을 병합하고, 같은 버전을 두 번 빌드하면 마지막 한 줄이 릴리스를 죽이던 CI를 고쳤으며(#3203), 셸 단계가 게이트를 조용히 깨는 것을 원장으로 막았습니다(#3171). session-host는 릴리스 Zig 실행 권위, baseline production runner·app 권위·준비 조율·트랜잭션, candidate publication 트랜잭션과 제품, prerequisite 트랜잭션과 제품, release ordering, trusted source directory, candidate release driver(#3208)까지 세웠습니다. @ohah/pdf는 Type3 글리프 스트림을 쪽 단위로 들고 낸 명령을 되풀이하게 했고, 파싱에서 파일을 통째로 훑던 두 자리를 걷어냈습니다.

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

커밋

ohah/maru

ohah/pdf

PR (해당일 생성/머지)

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

저장소PR해당일 활동상태대상 브랜치제목
ohah/maru#3208생성 · 병합mergedmainfeat(session-host): add candidate release driver
ohah/maru#3207생성 · 병합mergedmainfeat(session-host): bind trusted candidate source directory
ohah/maru#3206생성 · 병합mergedmainfeat(session-host): add candidate release bootstrap contract
ohah/maru#3205생성 · 병합mergedmainfeat(session-host): wire candidate release product owner
ohah/maru#3204생성 · 병합mergedmainfeat(session-host): own candidate release ordering
ohah/maru#3203생성 · 병합mergedmainfix(ci): 같은 버전을 두 번 빌드하면 마지막 한 줄이 릴리스를 죽였다
ohah/maru#3202생성 · 병합mergedmainrefactor(mobile): 컨트롤 축의 «정책» 을 host 에서 코어로 옮긴다
ohah/maru#3201생성 · 병합mergedmainfeat(scm): 한도에서 포기 대신 폴링으로 내려간다 (RW7d)
ohah/maru#3200생성 · 병합mergedmainfeat(session-host): share candidate release deadline
ohah/maru#3199생성 · 병합mergedmainfeat(input): ⌘D 를 확정 자리로 옮긴다 — 비교 뷰에서는 전역으로 돌려준다
ohah/maru#3198생성 · 병합mergedmainfix(ssh): 세션을 바꿀 수가 없었다 — 원인이 셋이고 셋 다 「빠른 여닫기」에서 터진다
ohah/maru#3197생성 · 병합mergedmainfix(scm): 폴링 다이제스트가 «화면의 숫자» 까지 본다 — §3 이 이미 잰 구멍
ohah/maru#3196생성 · 병합mergedmainfeat(session-host): 소켓이 끊겨 닫은 것과 앱이 닫은 것을 가른다
ohah/maru#3195생성 · 병합mergedmainfeat(session-host): own candidate prerequisite product
ohah/maru#3194생성 · 병합mergedmainfeat(scm): macOS·BSD 원격을 폴링으로 되살린다 (RW7a·b·c)
ohah/maru#3193생성 · 병합mergedmainfeat(session-host): own candidate prerequisite transaction
ohah/maru#3192생성 · 병합mergedmainfix(render): sync(2026) 어긋남의 원인은 게이트가 아니라 «청크 통째 적용»이었다
ohah/maru#3191생성 · 병합mergedmainfix(scm): filter 는 «닫으면 안 되는» 문이다 — 선을 긋고 못 박는다
ohah/maru#3190생성 · 병합mergedmaindocs(session-host): 기본값 전환 완료를 반영하고 값 서술을 단일 출처로 되돌린다
ohah/maru#3189생성 · 병합mergedmainfeat(session-host): bind candidate publication product
ohah/maru#3188생성 · 병합mergedmainfix(scm): status 마다 도는 실행 벡터를 닫는다 — core.fsmonitor
ohah/maru#3187생성 · 병합mergedmainfeat(input): 편집기 Term 키 컨텍스트 — 전역에 못 넣던 chord 를 그 Term 안에서 세운다
ohah/maru#3186생성 · 병합mergedmainfeat(session-host): candidate publication transaction으로 릴리스 순서를 고정
ohah/maru#3185생성 · 병합mergedmaindocs(scm): RW7 설계 — macOS·BSD 를 폴링으로 되살린다
ohah/maru#3184생성 · 병합mergedmainfeat(session-host): wire baseline production transaction
ohah/maru#3183생성 · 병합mergedmainfeat(session-host): orchestrate baseline preparation
ohah/maru#3182생성 · 병합mergedmainfix(mobile): 원격 화면에 나갈 자리가 없었다 — 뒤로가기를 그리고 길을 하나로 (U2)
ohah/maru#3181생성 · 병합mergedmainfeat(session-host): bind baseline app authority
ohah/maru#3180생성 · 병합mergedmainfeat(mobile): 든 세션에 상한과 버림을, 목록에 그 표시를 (U2b·U2c)
ohah/maru#3179생성 · 병합mergedmainfix(scm): macOS 원격은 «감시하는 척» 하고 있었다 — 못 하면 못 한다고 말한다
ohah/maru#3178생성 · 병합mergedmainfeat(session-host): compose baseline production runner
ohah/maru#3177생성 · 병합mergedmainfeat(mobile): U2 전환 손짓을 «덮개» 로 정하고, 돌아온 세션이 빈 화면부터 다시 쌓지 않게 한다 (U2a)
ohah/maru#3176생성 · 병합mergedmainfix(scm): 「잠시 멈춤」과 「놓아줌」을 가른다 — 도크 토글이 RW5 를 풀었다
ohah/maru#3175생성 · 병합mergedmaindocs: 5초 마감을 확정하고 그 근거를 적는다 — 옛 문장은 결정이 아니었다
ohah/maru#3174생성 · 병합mergedmainfix(agent): 화면이 어느 규칙으로 그 상태를 냈는지 남긴다 — 물을 수단이 없었다
ohah/maru#3173생성 · 병합mergedmainfeat(scm): 감시를 포기했으면 화면이 말한다 (RW6)
ohah/maru#3172생성 · 병합mergedmainfeat(session-host): 릴리스 Zig 실행 권위를 고정한다
ohah/maru#3171생성 · 병합mergedmainfix(build): 셸 단계가 게이트를 조용히 깨는 것을 원장으로 막는다
ohah/maru#3170생성 · 병합mergedmainfeat(session): keep-alive 기본값을 true 로 전환한다 — 영속 터미널이 기본이 된다
ohah/maru#3169생성 · 병합mergedmainfix(session-host): 쓸 수 있는 backend 가 있으면 래치를 푼다 — 붙어 있는데도 원격으로 안 열렸다
ohah/maru#3168병합mergedmainfix(ci): 떼어낸 main executable 에 건 codesign 검증이 릴리스를 매번 막았다