2026-07-22

요약 (AI 작성)

영속 세션을 "실제로 살아남는" 물건으로 만든 날입니다. session.keep-alive-after-quit 게이트를 넣고 connect-or-launch 오케스트레이션과 AppSession 의 host-backed 배선을 붙인 뒤, host 연결을 앱 전역으로 올려 멀티 윈도우를 지원하고 workspace 에 runtime_id 를 영속시켜 재접속 경로를 열었습니다. 앱을 종료해도 host-backed 터미널이 detach 되어 살아남고, 그 대신 "Quit and End All Sessions" 종료 게이트와 keep-alive 연결 실패 알림을 P4 계약대로 제공합니다. 설정 GUI 에도 영속 세션 토글을 노출했습니다.

원격 화면의 충실도를 크게 끌어올린 것도 이날입니다. 원격 이미지 wire 모델을 kitty 충실로 재정의해 host 가 snapshot 에 kitty 이미지를 방출하고 client 조립기가 저장·재조립하며 세션 중 새 이미지는 delta 로 보내도록 했고, 원격 화면 색을 theme-aware 하게 만들고 OSC 133 prompt 마크를 전달하도록 했습니다. host-backed 터미널의 상호작용 패리티도 #6a~#6c 로 채웠습니다 — 스크롤백 host 스크롤 라우팅, 드래그 선택과 복사, 단어·줄 선택의 host 경계 계산, 스크롤백 검색(하이라이트+매치수)과 현재 매치 강조·⌘G 네비까지 전부 host-side 로 지원합니다. OSC 9/777 알림도 client 를 거쳐 GUI 알림 경로에 연결했습니다. 안정화로는 화면 desync 시 fresh snapshot 재요청 복구(#7), attach/detach 가 영속 runtime 을 terminate 하지 않게 한 수정(R1), 공유 connection 의 stream_id demux(R2), host 사망 시 in-process 폴백(R3), takeNotification 의 수동 디코더 전환, 그리고 /code-review max 리메디에이션 15건이 있었습니다.

파일 패널은 뷰어를 넓혔습니다. image·pdf 뷰어(FP14/FP15)를 격리 loadFileURL 재사용으로 붙이고 panzoom 이미지 뷰어와 탭 가로 스크롤·뷰어 겹침 수정을 더했으며, text/code·svg 열기와 터미널 테마 하이라이트를 지원했습니다. 프리뷰 쪽은 코드 하이라이트와 mermaid 테마를 적용하고 검은 박스·코드펜스 로드 실패를 고쳤지만, 라이브 프리뷰 자체는 백로그로 돌리고 당분간 읽기|소스 두 모드만 노출하기로 했습니다.

커밋

ohah/maru

PR (해당일 생성/머지)

repo#상태제목
ohah/maru#1549mergedfix(session): /code-review max 리메디에이션 — 원격 화면 15건 수정
ohah/maru#1548mergeddocs(session): 영속 세션 host 문서를 현행화합니다
ohah/maru#1547mergedfeat(config): 영속 세션 토글을 설정 GUI에 노출합니다
ohah/maru#1546mergedfeat(session): 원격 화면이 OSC 133 prompt 마크를 전달합니다
ohah/maru#1545mergedtest(session): 원격 파이프라인 RenderSnapshot parity 인프라를 추가합니다
ohah/maru#1544mergedfeat(session): 세션 중 새 kitty 이미지를 delta로 전송합니다
ohah/maru#1543mergedfeat(session): 원격 화면이 kitty 이미지를 렌더에 노출합니다
ohah/maru#1542mergedfeat(session): client 조립기가 원격 kitty 이미지를 저장·재조립합니다
ohah/maru#1541mergedfeat(session): host가 원격 snapshot에 kitty 이미지를 방출합니다
ohah/maru#1540mergedfeat(session): 원격 이미지 wire 모델을 kitty 충실로 재정의합니다
ohah/maru#1539mergedfeat(file-panel): 탭 가로 스크롤 + 뷰어 겹침 수정 + 이미지 뷰어(panzoom)
ohah/maru#1538mergedfeat(session): 원격 화면 색을 theme-aware하게 합니다
ohah/maru#1537mergedfeat(session): host-backed 검색에 현재 매치 강조 + ⌘G 네비(매치로 스크롤)를 추가합니다 (#6c-2)
ohah/maru#1536mergedfeat(session): host-backed 터미널의 스크롤백 검색(하이라이트+매치수)을 host-side로 지원합니다 (#6c-1)
ohah/maru#1535mergedfeat(session): host-backed 터미널의 단어/줄 선택을 host 경계 계산으로 지원합니다 (#6b-2)
ohah/maru#1534mergedfeat(session): host-backed 터미널의 드래그 선택 + 복사를 host-side로 지원합니다 (#6b-1)
ohah/maru#1533mergedfeat(file-panel): 프리뷰 mermaid·코드 하이라이트 수정 + 라이브 프리뷰 백로그화(읽기·소스)
ohah/maru#1532mergedfeat(session): host-backed 터미널의 스크롤백을 host 스크롤 라우팅으로 지원합니다 (#6a)
ohah/maru#1531mergedfix(session): host-backed 화면 desync를 fresh snapshot 재요청으로 복구합니다 (#7)
ohah/maru#1530mergedfeat(file-panel): image·pdf 파일 뷰어(FP14/FP15) — 격리 loadFileURL 재사용
ohah/maru#1529mergedfeat(session): host-backed 터미널의 OSC 9/777 알림을 GUI 알림 경로에 연결합니다 (P4 §6.32)
ohah/maru#1528mergeddocs(session)+refactor: stale 배너 갱신 + siblingMaruPath 중복 제거 (R4)
ohah/maru#1527mergedfix(session): host 사망 시 in-process 폴백 + keep-alive 토글 설정 UI 숨김 (R3)
ohah/maru#1526mergedfix(session): 공유 connection에서 stream_id로 화면 배치를 demux합니다 (R2)
ohah/maru#1525mergedfeat(file-panel): text/code·svg 파일 열기 + 터미널 테마 하이라이트 + 라이브 프리뷰 루프·플리커 수정
ohah/maru#1524mergedfix(session): attach/detach 경로가 영속 runtime을 terminate하지 않게 합니다 (R1)
ohah/maru#1523mergedfeat(session-host): host-backed 터미널의 OSC 9/777 알림을 client로 전달합니다
ohah/maru#1522mergedfeat(session-host): keep-alive host 연결 실패를 사용자에게 알립니다(P4 §6)
ohah/maru#1521mergedfeat(session-host): Quit and End All Sessions을 추가합니다(P4 종료 gate)
ohah/maru#1520mergedfeat(session-host): 앱 종료 시 host-backed 터미널을 detach해 생존시킵니다
ohah/maru#1519mergedfeat(session-host): workspace에 runtime_id 영속 + 재접속을 배선합니다
ohah/maru#1518mergedfeat(session-host): 기존 host runtime 재접속 plumbing을 추가합니다
ohah/maru#1517mergedfeat(session-host): host 연결을 앱 전역으로 올립니다(멀티 윈도우)
ohah/maru#1516mergedtest(session-host): keep-alive AppSession 통합 스모크를 추가합니다
ohah/maru#1515mergedfeat(session-host): AppSession을 host-backed backend에 배선합니다
ohah/maru#1514mergedfeat(config): session.keep-alive-after-quit 게이트를 추가합니다
ohah/maru#1513mergedfeat(session-host): connect-or-launch 오케스트레이션을 추가합니다