개선 #693
완료됨개선 #689: 롱 호라이즌 채팅·고빈도 스트림 안정화 총괄
[롱 호라이즌 스트림] transcript long-history virtualization·paging·scroll anchoring 강화
100%
설명
배경:
- 수시간 이상 지속되는 롱 호라이즌 채팅과 고빈도 스트림에서 요청 입력 불가, 이전 작업 확인 곤란, CPU/메모리 상승 위험을 줄이기 위한 안정화 작업이다.
- Codex app reverse-engineering에서 확인한 힌트: raw delta opt-out, incoming line queue와 overflow fail-safe, requestAnimationFrame 기반 text delta coalescing, 50ms command output batching, output cap/truncation marker, owner/follower patch+revision sync, turn-level virtualization과 scroll anchoring.
- 목표는 오래된 대화를 잘라내는 것이 아니라, 메모리/CPU 상한을 넘지 않도록 하면서 사용자가 필요한 대화 내용을 계속 열람할 수 있게 하는 것이다.
책임 경계:
- 긴 대화의 표시/스크롤/이전 turn 로딩/DOM 유지 범위를 담당한다.
- 이벤트 수신 백프레셔나 delta reducer 큐 구현은 이 일감 범위가 아니다.
구현 범위:
- 오래된 대화를 삭제하지 않고 cursor pagination과 windowing으로 필요 시 다시 볼 수 있게 한다.
- turn 단위 virtualization, measured height cache, ResizeObserver/requestAnimationFrame 측정 병합, content-visibility 적용 여부를 점검한다.
- 사용자가 아래에 있을 때만 bottom pin을 유지하고, 위로 스크롤하면 pending bottom restore를 취소한다.
- 이전 메시지 로딩 중 scroll position이 튀거나 입력 영역이 밀리는 문제를 방지한다.
완료 조건:
- 긴 transcript fixture에서 DOM node 수와 렌더 시간 상한을 검증한다.
- 이전 대화 스크롤/추가 page load/streaming 중 manual scroll 유지 회귀 테스트가 있다.
- 오래된 turn 열람 가능성과 메모리 상한이 동시에 충족된다.
Carl Friedrich Gauss이(가) 7일 전에 변경
- 완료일을(를) 2026/07/02(으)로 지정되었습니다.
- 시작일을(를) 2026/06/30에서 2026/07/02(으)로 변경되었습니다.
- 다음 일감을 우선 진행:에 개선 #691: [롱 호라이즌 스트림] renderer 텍스트 delta 병합 큐와 순서 보존 적용이(가) 추가되었습니다.
Carl Friedrich Gauss이(가) 7일 전에 변경
- 다음 일감을 우선 진행:에 개선 #692: [롱 호라이즌 스트림] command/process output 전용 buffer와 truncation 표시 분리이(가) 추가되었습니다.
Carl Friedrich Gauss이(가) 7일 전에 변경
- 다음에 진행할 일감:에 개선 #694: [롱 호라이즌 스트림] 고빈도 스트림 성능 시나리오·계측·회귀 게이트 구축이(가) 추가되었습니다.
Carl Friedrich Gauss이(가) 7일 전에 변경
- 다음 일감을 우선 진행: 값이 지워졌습니다. (개선 #691: [롱 호라이즌 스트림] renderer 텍스트 delta 병합 큐와 순서 보존 적용)
Carl Friedrich Gauss이(가) 7일 전에 변경
- 다음 일감을 우선 진행: 값이 지워졌습니다. (개선 #692: [롱 호라이즌 스트림] command/process output 전용 buffer와 truncation 표시 분리)
Carl Friedrich Gauss이(가) 7일 전에 변경
- 다음에 진행할 일감: 값이 지워졌습니다. (개선 #694: [롱 호라이즌 스트림] 고빈도 스트림 성능 시나리오·계측·회귀 게이트 구축)
Carl Friedrich Gauss이(가) 7일 전에 변경
- 다음 일감에게 막혀 있음:에 개선 #691: [롱 호라이즌 스트림] renderer 텍스트 delta 병합 큐와 순서 보존 적용이(가) 추가되었습니다.
Carl Friedrich Gauss이(가) 7일 전에 변경
- 다음 일감에게 막혀 있음:에 개선 #692: [롱 호라이즌 스트림] command/process output 전용 buffer와 truncation 표시 분리이(가) 추가되었습니다.
Carl Friedrich Gauss이(가) 7일 전에 변경
- 다음 일감의 해결을 막고 있음:에 개선 #694: [롱 호라이즌 스트림] 고빈도 스트림 성능 시나리오·계측·회귀 게이트 구축이(가) 추가되었습니다.
Carl Friedrich Gauss이(가) 7일 전에 변경
- 완료일 값이 지워졌습니다. (
2026/07/02) - 시작일을(를) 2026/07/02에서 2026/06/30(으)로 변경되었습니다.
Carl Friedrich Gauss이(가) 4일 전에 변경
- 상태을(를) 신규에서 진행(으)로 변경되었습니다.
- 담당자을(를) 정인 김에서 Carl Friedrich Gauss(으)로 변경되었습니다.
작업을 시작합니다.
Carl Friedrich Gauss이(가) 4일 전에 변경
[#689 / #693 progress] transcript long-history windowing and scroll anchoring integrated on branch codex/redmine-689-long-horizon-stream.
Commit: b3662390 #693 긴 transcript windowing과 scroll anchoring 강화
CodeCommit: https://ap-northeast-2.console.aws.amazon.com/codesuite/codecommit/repositories/hive-x-electron/commit/b3662390?region=ap-northeast-2
Summary:
- TranscriptView now renders a bounded tail window by default and lets users reveal older turn groups with the top button or near-top scroll.
- Older-history reveal preserves scroll anchoring by compensating for prepended content height.
- Window state resets across thread ids and uses an internal conversation ref, so SubagentPanel/no external ref paths keep click-reveal anchoring.
- Active new-turn groups and the first batch approval target are pinned into the rendered window when they would otherwise fall outside the tail.
- App expands the initial transcript window for saved non-sticky manual scroll restore.
Verification:
- npx vitest run src/renderer/components/TranscriptView.behavior.test.tsx -> PASS, 128 tests.
- npx vitest run src/renderer/App.conversation-scroll.behavior.test.tsx -> PASS, 17 tests.
- npx vitest run src/renderer/App.behavior.test.tsx src/renderer/App.conversation-scroll.behavior.test.tsx src/renderer/components/TranscriptView.behavior.test.tsx -> PASS, 459 tests.
- npm run typecheck -> PASS.
- targeted ESLint -> PASS.
- git diff --check -> PASS.
- npm run ci:production -> PASS: lint, typecheck, 148 Vitest files / 2006 tests, renderer build, fixture validation, package-config validation; signing check skipped because HIVE_RELEASE_BUILD is not enabled.
Cross-check:
- Two read-only cross-verify passes requested fixes for thread switch window reset, hidden active new-turn rendering, click reveal anchoring without external refs, pending approval pinning, and saved manual scroll restore. All were fixed with regression tests.
Completion remains deferred until the final branch/main-reflected closeout step for #689.
Carl Friedrich Gauss이(가) 4일 전에 변경
- 완료일을(를) 2026/07/03(으)로 지정되었습니다.
- 상태을(를) 진행에서 완료(으)로 변경되었습니다.
- 진척도을(를) 0에서 100(으)로 변경되었습니다.
통합 커밋: https://ap-northeast-2.console.aws.amazon.com/codesuite/codecommit/repositories/hive-x-electron/commit/ab8b9dda0186841702c41dd606b4fe01db6dc7a7?region=ap-northeast-2
최종 검증: main 병합 트리에서 npm run ci:production 통과(150 test files / 2025 tests, renderer build, fixtures, package config, signing check skipped).