2026-09-06

요약 (AI 작성)

hwpjs 가 하루에 117커밋을 쌓은 날입니다. hwp5 문서 구조를 전수로 검증합니다 — ViewText 프레이밍, 소유된 revision text 수집, connector 소유권을 문서·CFB 로 교차 검증, group 자식 개수와 순서 있는 identity, memo 도형과 마커 소유권·목록 짝, drawing 메타데이터 접미사(예약 바이트는 정규화하지 않는다), fill image 참조, arc payload(추론 없이), picture 크기와 effects 뒤 alpha, 색 효과(손실 기본값 없이), history 레코드, 인덱스 레코드 계층과 문단 소유권, 겹치지 않는 완전한 표 격자. README 는 사용법에 집중하도록 줄였습니다.

maru 는 원격 파일 트리를 하루에 세웠습니다 — 백엔드가 원격을 읽고 원격 워커·§5 게이트·실물 sshd 왕복(RF2b), 트리에 원격이 서는 v1(따라가기·표시·펜스, RF3a), 원격 변경의 하부(저쪽 한 프로세스가 신원을 다시 재고 비대체로 옮긴다, RF6a), 원격에서 지우기(되돌릴 수 없다고 말하면서, RF6c), 만들기·밴드 진실·미러 정리(RF6d·e·f). 적대적 검증 5회가 낸 넷을 고치고 실서버 캡처로 눈으로 확인했습니다. 모바일은 브리지가 접근성 서술자를 내고 iOS 가 스크린 리더에 넘기며(M9 첫·둘째 슬라이스), 이름 없는 세션 줄이 통째로 사라지던 것과 보는 글자·읽는 글자가 다르던 것을 고쳤습니다.

편집기는 ⌥클릭 으로 커서를 추가·제거하고(§3.2c) ⌥더블/트리플클릭이 마지막 커서를 낱말·줄로 넓힙니다(§3.2d). 테스트는 AppSession 스위트를 같은 바이너리의 인덱스 샤드 4개로 나눠 병렬로 돌리고, prefix 제외 필터로 session_host 중복 실행 2,594개를 건너뛰며, CI 는 main 의 진행 중인 run 을 취소하지 않고 캐시는 그룹마다 최신 1세대만 남깁니다.

커밋

ohah/hwpjs

ohah/maru

ohah/pdf

PR (해당일 생성/머지)

repo#상태제목
ohah/maru#3346mergedfeat(session-host): bind live workflow steps
ohah/maru#3345mergedfix(agent): ssh 에 ServerAlive 를 붙여 반개방 TCP 를 감지한다 — 원격 배지가 5 시간 36 분 굳은 루트커즈
ohah/maru#3344mergedfeat(session-host): own live workflow invocations
ohah/maru#3343closedfix(agent): 침묵한 원격 이벤트 전송을 다시 띄운다 — EOF 만 사망으로 본 사각지대
ohah/maru#3342mergedfeat(session-host): hand off fixed workflow checkpoints
ohah/maru#3341mergedfix(agent-activity): 캡처가 연 결함 여덟 — 적대적 검증 38회로 다듬은 활동 뷰
ohah/maru#3340mergedfeat(session-host): workflow reducer 상태를 안전하게 전달한다
ohah/maru#3339mergedfeat(session-host): aggregate child 관측을 reducer에 직접 적용한다
ohah/maru#3338mergedfeat(session-host): validator 종료를 dual-stream으로 bounded 관측한다
ohah/maru#3337mergedfeat(session-host): aggregate process 결과를 reducer event에 결속한다
ohah/maru#3336mergedfeat(session-host): aggregate command outcome을 닫아 live release 판정을 고정한다
ohah/maru#3335mergedfeat(agent-activity): 도구 호출이 화면에 뜬다 — 활동 뷰 AV1-b
ohah/maru#3334mergedfeat(session-host): published aggregate를 검증해 정리한다
ohah/maru#3333mergedfeat(agent-activity): 인덱스가 도구 호출도 담는다 — 활동 뷰 AV1-a
ohah/maru#3332mergedfeat(agent): 주인 없는 nonce 를 알린다 — 마지막 한 칸이 조용했다
ohah/maru#3331mergeddocs(agent-activity-view): 갤러리를 「에이전트 활동 뷰」로 넓히는 계약과 계획을 세운다
ohah/maru#3330mergedfix(image-gallery): 크게 본 채 도크를 접으면 그림이 사라졌다 — 회수 규율이 그 한 장을 빼먹었다
ohah/maru#3329mergedfeat(session-host): published cleanup 자산 ID를 재인증한다
ohah/maru#3328mergedperf(test): AppSession 스위트 샤드를 4 로 되돌린다 — 반복 횟수 대기는 #3327 이 고쳤다
ohah/maru#3327mergedfix(test): 이미지 갤러리 판정자의 워커 대기를 반복 횟수 대신 벽시계 마감으로 — 부하에서 안 흔들리게
ohah/maru#3326mergedfeat(mobile): 줄이 «전체 중 몇째» 인지 말한다 — 그 길이 아예 없었다
ohah/maru#3325mergedperf(test): AppSession 스위트 샤드를 4 → 3 으로 — 러너의 코어당 프로세스 하나
ohah/maru#3324mergedfix(input): 편집기 컨텍스트 chord 가 메뉴 keyEquivalent 를 이긴다
ohah/maru#3323mergedfeat(session-host): recover aggregate cleanup after crashes
ohah/maru#3322mergeddocs(mobile): 접근성이 닫힌 뒤에도 «없다» 고 적혀 있던 넷을 고친다
ohah/maru#3321mergedfix(test): 파일 열기 훑기의 조기 종료는 성공한 스텝에서만 정한다 — #3296 의 새 실패 모드를 닫는다
ohah/maru#3320mergedfix(mobile): 본문에서 보는 글자와 읽는 글자가 달랐다 — 결합·자리·커서
ohah/maru#3319mergeddocs(remote-watch): 폴링 비용은 결함이 아니라 튜닝이다 — 범위와 착수 조건을 못박는다
ohah/maru#3318mergedci(cache): 캐시 청소가 main 그룹마다 최신 1세대만 남긴다 — 복원은 전부 접두 폴백이라 2세대가 필요 없다
ohah/maru#3317mergedfeat(mobile): 터미널 본문이 줄마다 읽힌다 — M9 여섯째 슬라이스
ohah/maru#3316mergedci: main 의 진행 중인 run 은 취소하지 않는다 — PR ref 만 취소한다
ohah/maru#3315mergedfeat(session-host): delete published aggregate safely
ohah/maru#3314mergedfix(mobile): 이름 없는 세션 줄이 스크린 리더에서 통째로 사라졌다
ohah/maru#3313mergedci(check-boundaries): 경계 게이트를 인덱스 샤드 넷으로 나누고 imports.zig 를 ReleaseSafe 로 돈다
ohah/maru#3312mergedfix(file-tree): 적대적 검증 5 회가 낸 넷을 고친다 — 정리·스탬프·비용·픽스처·목적지
ohah/maru#3311mergedfeat(mobile): 남은 화면 넷이 읽힌다 — 서버 목록·설정·편집·물어보는 화면들
ohah/maru#3310mergeddocs(remote-file-tree): 남은 후속 둘을 조건 대기로 닫고, 슬롯 상한을 실측으로 뒷받침한다
ohah/maru#3309mergedfeat(session-host): 재개 publication 명령을 실행한다
ohah/maru#3308mergedfeat(file-tree): 원격 만들기·밴드 진실·미러 정리 (RF6d·RF6e·RF6f)
ohah/maru#3307mergedperf(test): 샤드 넷을 래퍼 한 스텝 안에서 동시에 돌린다 — zig build 는 inherit run 스텝을 직렬로 돈다
ohah/maru#3306mergedfeat(editor): ⌥더블/트리플클릭이 마지막 커서를 낱말·줄로 넓힌다 (§3.2d)
ohah/maru#3305mergedfeat(mobile): 세션 목록이 읽힌다 — M9 넷째 슬라이스
ohah/maru#3304mergedtest(remote-file-tree): 감시·이름 변경·삭제를 실서버 캡처로 눈으로 확인한다
ohah/maru#3303mergedfeat(session-host): 재개된 publication suffix를 조합한다
ohah/maru#3302mergedperf(test): AppSession 스위트를 같은 바이너리의 인덱스 샤드 4개로 나눠 병렬로 돈다
ohah/maru#3301mergedperf(session-host): ledger 해제 1건의 재계산을 정책 변경 없이 5분의 1로 줄인다
ohah/maru#3300mergedfeat(file-tree): 원격에서 지운다 — 되돌릴 수 없다고 말하면서 (RF6c)
ohah/maru#3299mergedfeat(mobile): Android 가 서술자를 TalkBack 에게 넘긴다 — M9 셋째 슬라이스
ohah/maru#3298mergedfeat(session-host): 재개된 publication asset graph를 투영한다
ohah/maru#3297mergedfeat(file-tree): 원격 트리에서 이름을 바꾼다 — 펜스를 여는 대신 문을 하나 더 낸다 (RF6b)
ohah/maru#3296mergedperf(test): 훑기 셋에 조기 종료를 두고 ledger 상한 판정자의 뒷정리를 drainAll 로 바꾼다
ohah/maru#3295mergedrefactor(mobile): 읽는 순서를 브리지가 정한다 — host 가 다시 세우지 않는다
ohah/maru#3294mergedfeat(file-tree): 원격 변경의 하부를 연다 — 저쪽 한 프로세스가 신원을 다시 재고 비대체로 옮긴다 (RF6a)
ohah/maru#3293mergedperf(test): 러너 keep-only prefix — rx_read_test_support 바이너리의 session_host 중복 실행 1,556개를 끊는다
ohah/maru#3292mergedrefactor(session-host): publication suffix 정책을 단일화한다
ohah/maru#3291mergedfeat(file-tree): 원격 트리가 스스로 갱신된다 — 채널 하나를 두 뷰가 나눠 쓴다 (RF5a)
ohah/maru#3290mergedfeat(mobile): iOS 가 서술자를 스크린 리더에게 넘긴다 — M9 둘째 슬라이스
ohah/maru#3289mergedbuild: test-session-host 는 잡의 -Doptimize 모드 하나만 컴파일한다 — 하위 스텝 스텝째 의존이 두 모드를 물려받았다
ohah/maru#3288mergedtest(remote-file-tree): 실서버 캡처로 원격 트리와 읽기 전용 열기를 눈으로 확인한다
ohah/maru#3287mergedfix(session-host): fd 슬롯 예약을 준비 작업보다 앞으로 옮겨 업그레이드 경합을 없앤다
ohah/maru#3286mergedfeat(editor): ⌥클릭으로 커서 추가·제거 (§3.2c)
ohah/maru#3285mergedtest(session-host): openpty 판정자가 자식을 기다리는 동안 master 를 비운다 — p5c3c-3b TestTimedOut 데드락
ohah/maru#3284mergedfix(session-host): resume manifest와 aggregate bytes를 교차 결속한다
ohah/maru#3283mergedfeat(session-host): 업그레이드 스캔 스킵과 fd 슬롯 점유자를 로그로 남긴다
ohah/maru#3282mergedfeat(mobile): 브리지가 접근성 서술자를 낸다 — M9 첫 슬라이스
ohah/maru#3281mergedfeat(file-tree): 원격 파일이 열린다 — 임시 미러·read_only·안내 3종 (RF4)
ohah/maru#3280mergedperf(test): 러너에 prefix 제외 필터 — app-host-abi 의 session_host 중복 실행 2,594개를 건너뛴다
ohah/maru#3279mergedfeat(agent): 원격 이벤트가 어느 조건에서 안 붙는지 남긴다
ohah/maru#3278mergedfix(file-tree): 원격 탐색기 리메디에이션 — 실패는 비활성으로·펜스 키는 발행 출처로 (적대적 검증 3회)
ohah/maru#3277mergedfeat(session-host): rebuild stage5 resume authority
ohah/maru#3276mergedfeat(file-tree): 트리에 원격이 선다 — 원격 탐색기 v1(따라가기·표시·펜스) (RF3a)
ohah/maru#3275mergedbuild: test-session-host 도 release adapter 판정자를 집계 둘로 묶는다 — 개별 82 바이너리 → 2
ohah/maru#3274mergedfeat(file-tree): 백엔드가 원격을 읽는다 — 원격 워커·§5 게이트·실물 sshd 왕복 (RF2b)
ohah/maru#3273mergedfeat(session-host): attest stage4 authored pair
ohah/maru#3272mergedfeat(session-host): stage 3 preparation 명령을 연다