2026-09-23

날짜별 분류는 기존 기록과 같은 UTC 기준입니다. 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 집계 마감: 2026-09-26 17:05:20 KST (08:05:20 UTC). 공개 저장소에서 조회한 활동만 포함합니다.

요약 (AI 작성)

maru는 재부팅 뒤 저장된 작업 디렉터리에서 새 셸을 띄우고, 에이전트 대화를 원래 칸에서 이어가는 경로를 추가했습니다. 편집기는 같은 낱말 강조, 구조 기반 선택 확장과 축소, 스코프 머리줄을 고정하는 sticky scroll을 얻었습니다. 낱말 끝 커서의 강조와 비교 화면에서 남아 있던 고정 머리줄이 클릭을 가로채는 문제를 고쳤습니다.

조용한 세션을 반복해서 확인하던 작업과 같은 프레임 안의 hostname 조회를 줄이고, 셰이핑 중 폰트를 프레임마다 다시 만들지 않도록 했습니다. 관련 커밋의 CPU 수치는 활성 32세션 실험 조건의 개별 결과이며 합산하지 않습니다. ReleaseFast에서만 드러난 픽스처 수명과 스레드 완료 확인 문제를 수정하고, 빠져 있던 세션 호스트 검증을 CI에 연결했습니다.

hwpjs는 HWPX의 ZIP 항목·패키지 관계·글꼴·서식·차트 참조를 검사하고, 헤더와 섹션의 XML 구조 및 텍스트 이벤트를 읽는 경로를 확장했습니다. zntc는 for-await와 for-of의 반복별 바인딩·iterator 종료, 객체 메서드의 super, using과 computed key 변환을 보강했습니다. Chromium 웹 패널의 제어 채널과 sidecar PR은 기능 브랜치를 대상으로 준비 중인 작업입니다.

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

커밋

ohah/hwpjs

ohah/maru

ohah/zntc

PR (해당일 생성/머지)

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

저장소PR해당일 활동상태대상 브랜치제목
ohah/maru#3905생성merged기능 브랜치: feat/web-osr-w1a-protocolfeat(web-panel): W1b — CEF sidecar 뼈대(maru-web-host·helper), 샌드박스·부모 사망 판정자, opt-in SDK
ohah/maru#3904생성 · 병합mergedmainfix(workspace): 재부팅 부활 코드 리뷰 반영 — 두 번 부활·대화 파일 못 찾음·신원 수명·spawn 실패·알림 (RB)
ohah/maru#3903생성merged기능 브랜치: docs/web-panel-osr-backendfeat(web-panel): W1a — 웹 OSR sidecar 제어 채널 wire codec(순수 Zig, CEF 없음)
ohah/maru#3902생성 · 병합mergedmainfix(workspace): keep-alive 를 끈 칸도 재부팅 뒤 에이전트 대화를 이어간다 — 계약의 「한 규칙」대로 (RB2)
ohah/maru#3901생성mergedmainci(macos): AppKit 스모크 잡 셋을 하나로 합친다 — 같은 앱을 세 번 콜드 빌드하며 macOS 러너 5개 중 셋을 잡고 있었다
ohah/maru#3900생성 · 병합mergedmainci(session-host): ReleaseFast 잡 상한을 45분으로 올린다 — 20분으로는 콜드가 끝나지 못해 캐시가 영영 안 선다
ohah/maru#3899생성 · 병합mergedmainfeat(editor): sticky scroll — 화면 맨 위 줄이 속한 스코프의 머리줄을 본문 위에 고정한다(심볼 2층 → 1층 → 접힘); 같은 낱말 강조가 막대를 자르던 결함 수정 (§4.1i)
ohah/maru#3898생성 · 병합mergedmainci(session-host): ReleaseFast 잡이 수동 실행에서도 빌드 캐시를 저장한다 — 저장하는 쪽이 없어 매번 콜드였다
ohah/maru#3897생성 · 병합mergedmainfix(session-host): partial_timeout 판정자의 픽스처가 사라진 스택을 가리켜 ReleaseFast 에서 SEGV 로 죽던 것
ohah/maru#3896생성 · 병합mergedmainperf(session-host): 할 일이 없다고 증명된 조용한 owner 는 펌프하지 않는다 — 활성 32 세션 앱 CPU 약 −10 %
ohah/maru#3895생성 · 병합mergedmainfeat(editor): 구조 기반 선택 확장 — ⌃⇧⌘→/← 가 selectionRange + tree-sitter 1층 + 낱말·줄·문서 단계로 한 걸음씩 넓히고 좁힌다 (§8.2q)
ohah/maru#3894생성 · 병합mergedmainfeat(workspace): 재부팅 뒤 에이전트 대화를 원래 칸에서 이어간다 — 기록된 권한 모드·모델 그대로 (RB2)
ohah/maru#3893생성 · 병합mergedmaindocs(perf): 남은 동기 RPC 는 알림 pull 하나 — 앱 busy 11.5 %, 처방 초안과 호환 조건만 기록 (미착수)
ohah/maru#3892생성 · 병합mergedmainfix(editor): INL11 이 거절 수를 찍기 전에 모든 가짜 서버의 시작 요청이 끝나기를 기다린다
ohah/maru#3891생성 · 병합mergedmainfeat(workspace): 재부팅이 증명되면 터미널이 묘비 없이 저장된 cwd 에서 새 셸로 뜬다 (RB1)
ohah/maru#3890생성 · 병합mergedmainperf(session-host): 이벤트가 없다는 걸 확인하는 드레인 의례를 건너뛴다 — 활성 32 세션 앱 CPU −21 %
ohah/maru#3889생성 · 병합mergedmainfix(remote-watch): 저장소가 아닌 폴더를 「이 호스트는 감시 못 한다」로 말하던 것
ohah/maru#3888생성 · 병합mergedmainci(session-host): B3-6·B3-4-5 격리 run 을 test-session-host 가 함께 돌린다 — CI 가 한 번도 안 돌리던 둘
ohah/maru#3887생성 · 병합mergedmaindocs(workspace): 재부팅 뒤 부활 계약 — 껐다 켜면 터미널은 cwd 에서 다시 뜨고 에이전트 대화는 이어진다 (RB0)
ohah/maru#3886생성 · 병합mergedmainfix(syntax): 끊긴 여는 파싱 뒤 문서가 바뀌면 처음부터 다시 판다 — ts_parser_reset 이 없어 백업 복원에서 거짓 구문 오류 (§2.1a)
ohah/maru#3885생성 · 병합mergedmainfix(session-host): upgrade failure matrix 기대값을 14 로 되돌리고, 판정자가 그 수를 목록에서 계산한다
ohah/maru#3884생성 · 병합mergedmainfix(session-host): B3-6 peer matrix 가 피어를 join 하기 전에 complete 를 읽던 경쟁을 고친다
ohah/maru#3883생성 · 병합mergedmainfix(renderer): split 으로 함께 보이는 비활성 pane 의 kitty 이미지도 그린다 — id 는 창 전체로 갈리고, 뷰포트 밖은 잘린다 (K2e)
ohah/maru#3882생성 · 병합mergedmainperf(sidebar): hostname 을 한 프레임 안에서만 재사용한다 — 활성 32 세션 앱 CPU −7.2 %
ohah/maru#3881생성 · 병합mergedmainfix(mobile): run simulator input selftest without a window
ohah/maru#3880생성openmainfeat(session-host): capture IME candidate pixels and retain preedit carry
ohah/maru#3879생성 · 병합mergedmainfix(session-host): B3-6 fail-stop case 4 는 panic 이 아니라 proof_loss(86) 로 죽는다 — 6 주간 CI 밖에서 빨갰다
ohah/maru#3877생성 · 병합mergedmainrefactor(naming): B3 판정자 다섯을 주제 이름으로 — 원장이 63 에서 58 로
ohah/maru#3876생성 · 병합mergedmainfeat(editor): LSP 2단 ⑮ — 같은 낱말 강조 documentHighlight: caret 아래 심볼의 다른 자리를 가장 약한 배경으로(선택·검색이 이긴다), 편집·낱말 이동에 버림 (§8.2p·§5.1a)
ohah/maru#3875병합mergedmainperf(font): 셰이핑이 프레임마다 폰트를 다시 만들지 않는다 — 활성 32 세션 앱 CPU −22.5 %
ohah/maru#3874병합mergedmainrefactor(naming): CR3b 판정자 다섯을 주제 이름으로 — 원장이 68 에서 63 으로
ohah/zntc#4748생성 · 병합mergedmainfix(transformer): es5 루프 본문 선언을 클로저가 캡처하면 반복별 바인딩을 만든다
ohah/zntc#4745생성 · 병합mergedmainfix(transformer): es5 상태 기계에서 catch 파라미터·블록 바인딩의 스코프를 지킨다
ohah/zntc#4742생성 · 병합mergedmainfix(lint): object_super 서브트리 순회를 walkPreorderIterative 로 옮긴다
ohah/zntc#4741생성 · 병합mergedmainfix(transformer): using 낮추기 — es5 경로·고유 이름·에러 초기화·호이스팅·export·for-of 헤더
ohah/zntc#4738생성 · 병합mergedmainfix(transformer): 객체 home 파라미터 _obj 가 사용자 식별자를 가리지 않게 한다
ohah/zntc#4737생성 · 병합mergedmainfix(transformer): 객체 리터럴 메서드의 super 가 home object 의 프로토타입을 보게 한다
ohah/zntc#4731생성 · 병합mergedmainfix(bundler): pre-pass 게이트가 메서드·async generator 를 놓쳐 헬퍼 정의가 빠지던 문제
ohah/zntc#4728생성 · 병합mergedmainfix(transformer): es5 generator 안 for-of 가 조기 종료 시 iterator 를 닫는다
ohah/zntc#4726생성 · 병합mergedmainfix(transformer): #4722 for-await 반복별 바인딩 + es5 추출 루프의 라벨 처리
ohah/zntc#4725생성 · 병합mergedmainfix(transformer): #4723 클래스 computed 키·필드 lowering — 크래시·파싱불가·재평가·이름추론
ohah/zntc#4724생성 · 병합mergedmainfix(transformer): #4721 computed key·멤버 대입 좌변·for 헤더의 yield 를 추출한다