2026-09-27

한국 시간(KST) 기준으로 하루를 나눴습니다. 커밋은 커미터 시각(committer date), PR은 생성·병합 시각으로 분류했습니다. 조회: 2026-10-06 KST. 공개 저장소에서 조회한 활동만 포함합니다.

요약 (AI 작성)

maru는 자정 직후 전날 밤 열린 편집기·터미널 PR을 차례로 병합했습니다. 랩된 줄에서 아래로 두 번 이동하면 목표 열이 0으로 무너지던 문제, 줄 끝에서 세로 이동하면 계속 줄 끝을 따라가던 동작(Goal.line_end 제거, #3975), 맞닿기만 한 두 선택 범위가 합쳐지던 문제, ⌘⌫가 들여쓰기를 남기던 문제, 편집기 pane에서 커서가 깜빡이지 않던 문제를 고쳤습니다. 한글 조합을 Enter로 확정하면 문자열이 편집기 문서에 들어가지 않던 IME 경로는 #3968에서 수정했습니다. 터미널은 앱이 maru를 몰라 하이퍼링크를 보내지 않던 문제를 능력 알림으로 풀고(#3972), 이름을 바꿔야 하는 사용자를 위한 term-program 설정을 더했습니다(#3974). 이 병합 뒤 main이 컴파일되지 않던 호출자 누락은 #3977에서 고쳤고, 같은 무렵 main 검사를 되살리려던 #3978은 병합 없이 닫혔습니다.

session host는 업그레이드 preflight 실패가 BadMagic 한 줄로만 남던 진단을 보강하고(#3976), exec으로 승계한 host가 자기 자리 시각을 갱신하지 않아 /tmp 정리에 owner.lock 이름을 잃던 문제를 고쳤습니다(#3979). 승계 거절이 upgrade_busy 하나로만 보이던 것은 일곱 가지 사유로 나눠 host 로그에 남기게 했습니다(#3980). 실패한 host의 재교체 정책 문서 #3942도 병합됐지만 구현은 별도로 남아 있습니다. 판정자가 코드의 존재만 재고 효과는 재지 않아 돌연변이가 살아남던 자리를 메우고(#3982), 그 규율을 docs/pr-checklist.md의 단일 출처로 정리했습니다(#3983). 편집기에서는 괄호 색·강조·점프의 판정을 하나로 통일한 #3964가 병합됐고, IME 재변환·한자 후보·접힌 선택 영역을 다룬 #3981과 테스트 실패 메시지 보강 #3984는 이날 열려 9월 28일 새벽에 병합됐습니다.

hwpjs의 공개 커밋 177개는 새벽의 HWPX 각주·미주 본문, 주석 안 번호 제어와 텍스트, 주석 출처 위치, HWP5 주석 자동 번호 진단 기능을 빼면 대부분 구현 문서의 계약을 현재 코드와 근거 자료에 다시 대조한 검증 기록입니다. HWPX의 주석·표·바탕쪽·헤더·섹션 계약을 다시 확인한 뒤, HWP5의 문서 컨테이너·변경 이력·요약 정보·본문·BinData·배포용 문서 ViewText·변경 추적·미리보기 이미지, CFB 스트림 교체, GIF·BMP·PCX·TIFF·PNG·zlib 구조, BCP47 언어 태그, ICC 프로필의 태그·곡선·역함수, WMF와 EMF 레코드를 차례로 훑었고, ICC 기초 거절 감사 테스트를 강화했습니다.

zntc는 새벽에 ES5 for-of의 반복자·단계·완료·catch 심볼과 for-of using 머리를 심볼에 결속하고, ES5 클래스 자기 참조와 구조 분해 임시 변수 결속을 다듬었으며, 네이티브 스크립트 mangling이 변환 뒤 의미 그래프를 재사용하도록 했습니다(#4870). 오후에는 생성된 심볼의 식별자와 스코프 검증, 네이티브·async generator for-await 임시 변수의 심볼 결속, ES5 async generator 상태 심볼 보존, 합성 심볼의 정확한 스코프 요구가 이어졌습니다.

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

커밋

ohah/hwpjs

ohah/maru

ohah/zntc

PR (해당일 생성/머지)

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

저장소PR해당일 활동상태대상 브랜치제목
ohah/maru#3984생성mergedmaintest(editor): NS9 의 익명 실패에 이름을 붙인다 — 어느 단언인지 말하지 않던 것
ohah/maru#3983생성 · 병합mergedmaindocs(pr-checklist): 판정자 규율을 단일 출처로 세운다 — 「있다」가 아니라 「효과가 난다」를 재라
ohah/maru#3982생성 · 병합mergedmaintest(session-host): 판정자가 «있다» 만 재던 열 자리를 효과로 바꾼다 — 배선을 안 보면 초록인 채로 동작이 바뀐다
ohah/maru#3981생성mergedmainfix(editor): preserve IME reconversion, Hanja candidates, and folded selections
ohah/maru#3980생성 · 병합mergedmainfix(session-host): 승계 거절이 «upgrade_busy» 한 이름으로 접혀 이유에 못 닿던 것
ohah/maru#3979생성 · 병합mergedmainfix(session-host): 승계한 host 가 자기 자리를 안 지켜 owner.lock 이름을 잃던 것 — 갱신을 양쪽에 두고, 잃으면 되세운다
ohah/maru#3978생성closedmainfix(ci): main 의 check 를 되살린다 — fmt-check 와 check-mobile-contract 둘
ohah/maru#3977생성 · 병합mergedmainfix(app-session): spawnRequest 호출자 여섯을 놓쳐 main 이 안 컴파일되던 것
ohah/maru#3976생성 · 병합mergedmainfix(session-host): preflight 실패가 «BadMagic» 한 이름으로 접혀 원인에 못 닿던 것 (PFD1)
ohah/maru#3975생성 · 병합mergedmainfix(editor): 줄 끝에서 세로로 가면 계속 끝을 따라다니던 것 — Goal.line_end 를 없앤다
ohah/maru#3974병합mergedmainfeat(config): term-program 설정 — 화이트리스트 때문에 위장이 필요한 사람에게 탈출구를 준다
ohah/maru#3972병합mergedmainfix(pty): 앱이 maru 를 몰라 하이퍼링크를 안 보내던 것 — 능력을 알린다 (ENVHL1)
ohah/maru#3971병합mergedmainfix(editor): 편집기 pane 에서 커서가 안 깜빡이던 것 — 게이트에 편집기가 없었다 (BLINK-E1)
ohah/maru#3970병합mergedmainfix(editor): ⌘⌫ 가 들여쓰기를 남기고, 들여쓰기 «안쪽» 에서는 공백 한 칸만 지우던 것 (DEL1)
ohah/maru#3969병합mergedmainfix(editor): 맞닿기만 한 «범위» 둘을 합쳐 버리던 것 — 점이 낄 때만 합친다 (SEL-M1)
ohah/maru#3968병합mergedmainfix(editor): preserve IME Enter commits and document ranges
ohah/maru#3966병합mergedmainfix(editor): 랩된 줄에서 ↓ 를 두 번 누르면 목표 열이 0 으로 무너지던 것 (MOV15)
ohah/maru#3965병합mergedmaintest(remote-agent): RF7 을 test-remote-activity-vertical 에 넣는다 — 전수 스위트에서만 돌아 개발 중엔 안 돌던 판정자
ohah/maru#3964병합mergedmainfix(editor): 괄호 색·강조·점프의 판정을 하나로 통일
ohah/maru#3942병합mergedmaindocs(session-host): 실패한 host 의 재교체 정책 — 같은 앱 번들만, 시작 시 붙이기 전, 다음 시작에 계속, UI 먼저 (미구현)
ohah/zntc#4878생성 · 병합mergedmainfix(transformer): require exact synthetic symbol scopes
ohah/zntc#4877생성 · 병합mergedmainfix(transformer): preserve ES5 async-generator state symbols
ohah/zntc#4876생성 · 병합mergedmainfix(transformer): bind async-generator for-await temps by symbol
ohah/zntc#4875생성 · 병합mergedmainfix(transformer): bind native for-await temps by symbol
ohah/zntc#4874생성 · 병합mergedmaintest(transformer): verify generated symbol identity and scope
ohah/zntc#4873생성 · 병합mergedmainfeat(semantic): bind stable for-of using head
ohah/zntc#4872생성 · 병합mergedmainfix(transformer): preserve immutable ES5 class self writes
ohah/zntc#4871생성 · 병합mergedmainfeat(semantic): bind ES5 for-of catch symbols
ohah/zntc#4870생성 · 병합mergedmainfeat(transpile): reuse semantic graph for native script mangling
ohah/zntc#4869생성 · 병합mergedmainfix(transformer): bind destructuring assignment temp references
ohah/zntc#4868생성 · 병합mergedmainfeat(semantic): bind ES5 for-of completion symbol
ohah/zntc#4867생성 · 병합mergedmainfeat(semantic): bind ES5 for-of step symbols
ohah/zntc#4866생성 · 병합mergedmainfeat(semantic): bind ES5 for-of iterator symbols
ohah/zntc#4865생성 · 병합mergedmainfix(transformer): bind lexical destructuring temps
ohah/zntc#4864생성 · 병합mergedmainfix(transformer): preserve class self in ES5 IIFE constructors
ohah/zntc#4863생성 · 병합mergedmainfix(transformer): bind ES5 destructuring declaration temps
ohah/zntc#4862생성 · 병합mergedmainfix(transformer): preserve simple ES5 class self identity