2026-10-02
한국 시간(KST) 기준으로 하루를 나눴습니다. 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 조회: 2026-10-06 KST. 공개 저장소에서 조회한 활동만 포함합니다.
요약 (AI 작성)
maru는 작업공간 복원을 손봤습니다. 전날 열린 workspace.restore 설정 토글 #4060이 병합됐고, 복원이 실패한 탭·pane·slot 위치와 버려진 항목을 app.log에 남기는 #4063이 들어갔습니다. 제목 없는 문서의 백업은 창 복원이 확정될 때까지 지우지 않고, 남은 백업의 번호를 새 문서가 다시 쓰지 않도록 고쳐 저장하지 않은 글이 사라지거나 덮이는 경우를 막았습니다(#4067). 공유 편집은 자정 직후 병합된 IME 확정 거절 시 조합·입력 포커스 보존 #4062에 이어, 공유 IME 표시와 입력 거래 수명 보호 #4065, 뷰별 검색 상태·강조 분리 #4070, 반대 뷰의 접힘·스크롤 유지 #4078가 병합됐습니다. kitty 이미지가 reflow와 스크롤백 재배치 뒤에도 자기 셀을 따라가게 하는 #4074는 이날 열려 다음 날 병합됐습니다.
maru의 그 밖의 변경으로는 Codex 질문을 입력 대기로 잡고 지연된 턴 완료 알림을 막는 에이전트 상태 수정 #4073·#4079, 모바일 터미널에서 탭한 웹 링크 열기 #4064가 있습니다. 테스트 쪽은 session_host 판정자를 PR 샤드에서 다시 돌리는 #4059가 병합됐고, UI 프레임 도장과 이벤트 해제 snapshot을 러너가 매기는 판정자 번호로 묶어 앞선 판정자의 상태가 새지 않게 했습니다(#4066, #4072). select-all 복사 판정자의 조건 없는 3초 대기도 없앴습니다(#4075). 앱이 select 목록을 그리는 #4061, Chromium 탭의 툴팁 #4069과 그 원인 재현 문서 #4077은 기능 브랜치 docs/web-panel-osr-backend에 병합된 것으로 main 반영은 아닙니다.
hwpjs는 새벽에 실험용 편집 경로를 이어 갔습니다. HWPX에서 머리말·꼬리말 문단을 본문을 평탄화하지 않고 편집하고, 보호 개체 주변에 텍스트 입력 위치를 만들었습니다. Canvas 미리보기에서 편집한 문서를 내려받는 기능, HWP5·HWPX의 네이티브 Undo·Redo와 Canvas 이력 연결, HWP5의 Enter 문단 나누기와 경계 삭제 문단 합치기도 추가했습니다. 모두 실험용 Canvas 편집이며 재조판은 하지 않습니다.
spinon은 CSS 파이프라인을 이어 붙였습니다. C01 부분 feature inventory를 고정하고 #25, alias·package CSS resolver 비교 #26와 Chromium 레이아웃 기준 fixture #28를 실험으로 추가했습니다. C02 입력·출력 그래프 계약을 문서화한 뒤(#30, #31) Vite·Rspack 모듈 그래프 어댑터 #32를 병합했고, JavaScript·CSS 자원 그래프 결합 #33은 이날 열려 다음 날 병합됐습니다. 청크 단위 OTA의 호환 모델 초안 #27은 설계 문서이며 구현은 아닙니다.
zntc는 #4819 심볼 유지 작업으로 PR 48개를 병합했습니다. 새벽에는 enum IIFE 매개변수와 enum 멤버 참조, ES5 namespace 클래스 export, Flow enum·component를 심볼로 모델링하고, Flow match와 TypeScript·Flow 타입 제거에서 번들러가 semantic graph를 유지하게 했습니다. 낮 이후에는 TSX, 네이티브·다운레벨 using, 레거시·Flow 데코레이터와 데코레이터 메타데이터, Flow 클래스·private 필드·auto-accessor, TypeScript namespace export와 import-equals·export-equals 경로에서 변환 단계 그래프를 재사용하고, React Refresh 핸들·worklet·styled cssProp·TLA 대기를 심볼 정체성으로 묶었습니다. minify 뒤 정체성 감사와 전체 정체성 커버리지 게이트 시험도 추가했습니다.
공개 커밋 93개, 해당일 생성 또는 병합된 PR 75개를 정리했습니다. PR 생성 72개·병합 73개는 같은 PR이 양쪽에 포함될 수 있습니다.
커밋
ohah/hwpjs
- feat(hwp5): add atomic paragraph merging and canvas boundary deletion
- feat(hwp5): add atomic paragraph splitting and canvas Enter editing
- feat(hwp5): add native undo redo and canvas history integration
- feat(hwpx): add native undo redo and canvas history controls
- feat(wasm): download native edited documents from canvas preview
- feat(hwpx): materialize text insertion sites around protected objects
- feat(hwpx): edit header footer owner paragraphs without flattening bodies
ohah/maru
- fix(agent): isolate unidentified turn boundaries and unknown hooks
- fix(editor): 공유 편집 시 반대 뷰의 접힘과 스크롤 유지
- perf(tests): select-all copy 판정자는 마지막 줄이 화면에 올 때까지만 기다린다 — 조건 없는 3 초 대기를 없앤다
- fix(tests): 이벤트 해제 post snapshot 도 그것을 쓴 판정자 안에서만 꺼내진다 — 읽는 쪽 비우기를 판정자 번호로 대체
- fix(agent): track Codex questions and guard delayed turn notifications
- test(session-host): 오류 게시 검사의 종료 전에 기록 완료를 확인
- test(editor): diff 할당 실패 검사의 성장 경로와 완료 판정을 고정
- fix(editor): 검색 오류와 pane 전환을 수정하고 적대적 검증 5회 추가
- fix(editor): 렌더 전 검색 명령의 좌표 갱신과 5회 적대적 검증
- feat(editor): 공유 뷰의 검색 상태와 강조를 분리
- fix(app): log an unreadable or oversized config behind workspace.restore
- fix(app): redirect stderr after the instance lease and log remaining restore drops
- feat(workspace): log where a restore failed and what it dropped; redirect app stderr at launch
- feat(workspace): turn workspace restore off with config
workspace.restore - ci(test): app-host 집계 샤드에서 session_host 판정자를 다시 돌린다 — shutdown_admin_connector 만 샤드 밖에
- fix(editor): new untitled numbers skip numbers of kept backup records
- fix(workspace): reserve the slot before reviving an untitled document
- fix(workspace): keep revived untitled backups until the window restore commits
- test(ime): 실제 한국어 공유 입력 전환과 콜백 도착 검증
- fix(editor): 공유 조합의 OOM 클릭 좌표와 GPU 캡처 수명 수정
- feat(editor): 공유 IME 표시와 입력 거래 수명 보호
- fix(tests): UI 프레임 도장은 그것을 올린 판정자 안에서만 유효하다 — 러너가 판정자마다 번호를 매긴다
- feat(mobile): open tapped terminal web links
- fix(ime): 확정 거절 시 조합과 입력 포커스 보존
ohah/spinon
- feat(css): Vite·Rspack 모듈 그래프 어댑터 추가
- docs(css): C02 JS 자원 범위 명확화
- docs(css): C02 입력·출력 그래프 계약 추가
- docs(css): C01.2 기준 산출물 완료 상태 반영
- fix(css): Chromium 기준 수집기 플랫폼 보존
- spike(css): Chromium 레이아웃 기준 fixture 추가
- docs(ota): 상태 대장 문구 정리
- docs(ota): 복구·청크 검증 경계 보강
- docs(ota): 호환 모델 검토 보완
- docs(ota): 청크 OTA 호환 모델 초안
- fix(css): resolver graph 관찰 근거 보강
- spike(css): alias·package CSS resolver 비교
- fix(css): C01 inventory 검증 경계 보강
- feat(css): C01 부분 feature inventory 고정
ohah/zntc
- fix(transpile): reuse transform symbols for React Refresh
- fix(transformer): fail closed on post-minify identity counters
- fix(transpile): preserve qualified metadata symbols
- fix(transpile): preserve decorator metadata symbol identity
- test(symbols): audit identity after minification
- fix(semantic): audit generated scope owners exactly
- fix(transpile): preserve legacy-decorated class expressions
- fix(transpile): reuse semantic graph for legacy decorators
- fix(transpile): reuse semantic graph for Flow decorators
- fix(symbols): reuse graph for Flow auto-accessors
- fix(symbols): reuse graph for Flow private fields
- fix(symbols): reuse graph for Flow class lowering
- fix(symbols): reuse graph for TypeScript namespace exports
- fix(symbols): preserve TypeScript export-equals identity
- fix(symbols): preserve TypeScript import-equals identities
- test(symbols): gate complete identity coverage
- fix(codegen): reserve fixed output names
- fix(transpile): keep downlevel using on transform graph
- fix: Flow component JSX 심볼 그래프 연결
- fix: Flow JSX graph에서 이름 맹글링
- fix(transpile): reuse transform graph for TSX
- fix(transpile): reuse graph for native using syntax
- fix(transformer): bind for-await temps with symbol handles
- fix(bundler): resolve TLA waits by symbol identity
- test(symbols): include typed oracle fixtures in coverage gate
- test(symbols): reject strict coverage report drift
- fix(worklet): preserve setter symbol scopes
- fix(transformer): preserve block worklet symbol aliases
- fix(transformer): preserve worklet factory symbol identity
- fix(transformer): preserve styled cssProp symbols
- fix(transformer): skip nested Refresh registrations
- refactor(semantic): bind React Refresh handles to symbols
- perf(bundler): preserve graph for TypeScript type erasure
- test(transformer): avoid identifier audit false positive
- perf(bundler): preserve Flow type-erasure symbol graph
- fix(bundler): preserve Flow match global references
- fix(bundler): retain Flow match semantic graph
- fix(semantic): model Flow component symbols
- fix(semantic): model Flow enum bindings exactly
- fix(semantic): #4819 reuse graph for Flow match mangling
- test(symbols): #4819 fail closed on exact audit drift
- fix(bundler): #4819 avoid createRequire shim binding collisions
- fix(codegen): #4819 preserve namespace export symbol renames
- fix(semantic): keep namespace destructuring temp symbols aligned
- test(semantic): cover namespace class symbol identity
- fix(semantic): preserve ES5 namespace class exports
- feat(semantic): model enum member references as symbols
- fix(semantic): model enum IIFE parameters as symbols
PR (해당일 생성/머지)
상태는 조회 시점 기준입니다. merged는 아래 대상 브랜치에 병합됐다는 뜻이며, 기능 브랜치 병합과 main 반영을 구분합니다. 같은 PR이 생성일과 병합일 양쪽 기록에 나타날 수 있습니다.