fix(app): virtualize transcripts and stabilize long histories #99

Merged
morten-olsen merged 6 commits from feat/01a15f4c-virtualized-lists into main 2026-10-28 23:48:52 +01:00
Owner

Summary

Long conversations, activity and transcripts use LegendList to keep rendering bounded. Output starts at the newest entry, follows growing text at the bottom, and pauses while reading older entries; Latest resumes following. Expanded tools retain state, huge output stays bounded, and Copy text preserves the full source.

ChatList / LegendList → visible messages, activity and individual transcript tools
                    → stable reading position + follow/pause/Latest

Evidence

  • Production-served v0.56.0 mounted 1,000 rows for 1,000 tools. v0.56.1 mounts 30/24 on phone-sized web/desktop. Deployed 10,000-tool samples: 26/23 rows, 1.16/1.30s opening. Individual Chromium samples, not native-device or peak-memory guarantees.
  • 38/38 deployed-frontend checks passed, no skips/reruns. Actual production HTML/JS/assets, isolated test backend/data. Covers streaming, paused reading, focus, expansion, huge output/copying, earlier/archived history, resizing and a private representative transcript. Screenshots/method/hashes on HOMEIT-407.
  • Full quality: 1,046 passed / two opt-in Home Llama tests skipped. 695 branch, 696 PR, 698 main including image smoke, 699 release: all green. Earlier broader browser run: 75/76 plus successful isolated Markdown-selection rerun; HOMEIT-460 tracks that existing flake.
  • Merged at 1c4dc8fc and published/deployed as v0.56.1, following Morten’s explicit merge/release instruction. Signed APK and checksum published; independent checksum/ZIP checks passed. Native touch, keyboard and TalkBack remain unverified, tracked in HOMEIT-470.

Merge danger

Door: two-way for code/deployment. No schema, permissions, exposure or history-data change. Published release artifacts remain records.

Blast radius: app. Browser Find/whole-page selection can miss unmounted history, as accepted in scope. Downloads/cache and individual Markdown rendering costs remain unchanged.

Rollback and live verification

  • Rollback: revert apps commit c4f84cb4 to the verified 0.56.0 server/agent digest pair; preserve provider changes. No data restore.
  • Verified: updater changed exactly two pins; mirror has no error; ArgoCD Synced/Healthy at c4f84cb4; server 1/1 Ready, actual digest b6a49a15…, configured and newly running agent a68362a1…; existing claim Bound; public health HTTP200; deployed UI acceptance above passed.
  • Owner self-review resolved the long-line and clipboard findings. No security-triggering capability/exposure change or requested Designer sign-off. General monitoring/security advisories remain separately recorded in the task.
## Summary Long conversations, activity and transcripts use LegendList to keep rendering bounded. Output starts at the newest entry, follows growing text at the bottom, and pauses while reading older entries; Latest resumes following. Expanded tools retain state, huge output stays bounded, and Copy text preserves the full source. ```text ChatList / LegendList → visible messages, activity and individual transcript tools → stable reading position + follow/pause/Latest ``` ## Evidence - Production-served v0.56.0 mounted **1,000 rows for 1,000 tools**. v0.56.1 mounts **30/24** on phone-sized web/desktop. Deployed 10,000-tool samples: **26/23 rows**, **1.16/1.30s** opening. Individual Chromium samples, not native-device or peak-memory guarantees. - **38/38 deployed-frontend checks passed**, no skips/reruns. Actual production HTML/JS/assets, isolated test backend/data. Covers streaming, paused reading, focus, expansion, huge output/copying, earlier/archived history, resizing and a private representative transcript. Screenshots/method/hashes on [HOMEIT-407](https://mission-control.olsen.cloud/task/01a15f4c-160b-70e5-a606-2d9531aeef1d). - Full quality: **1,046 passed / two opt-in Home Llama tests skipped**. [695 branch](https://woodpecker.olsen.cloud/repos/32/pipeline/695), [696 PR](https://woodpecker.olsen.cloud/repos/32/pipeline/696), [698 main including image smoke](https://woodpecker.olsen.cloud/repos/32/pipeline/698), [699 release](https://woodpecker.olsen.cloud/repos/32/pipeline/699): **all green**. Earlier broader browser run: 75/76 plus successful isolated Markdown-selection rerun; [HOMEIT-460](https://mission-control.olsen.cloud/task/8e70f915-85dd-413c-b6a0-5b01e4783e3c) tracks that existing flake. - Merged at **1c4dc8fc** and published/deployed as [v0.56.1](https://code.olsen.cloud/ai/mission-control/releases/tag/v0.56.1), following Morten’s explicit merge/release instruction. Signed APK and checksum published; independent checksum/ZIP checks passed. Native touch, keyboard and TalkBack remain **unverified**, tracked in [HOMEIT-470](https://mission-control.olsen.cloud/task/a799fd14-c22b-43f9-8d0a-38da9df139c2). ## Merge danger **Door:** two-way for code/deployment. No schema, permissions, exposure or history-data change. Published release artifacts remain records. **Blast radius:** app. Browser Find/whole-page selection can miss unmounted history, as accepted in scope. Downloads/cache and individual Markdown rendering costs remain unchanged. ## Rollback and live verification - **Rollback:** revert apps commit c4f84cb4 to the verified 0.56.0 server/agent digest pair; preserve provider changes. No data restore. - **Verified:** updater changed exactly two pins; mirror has no error; ArgoCD Synced/Healthy at c4f84cb4; server **1/1 Ready**, actual digest **b6a49a15…**, configured and newly running agent **a68362a1…**; existing claim Bound; public health **HTTP200**; deployed UI acceptance above passed. - Owner self-review resolved the long-line and clipboard findings. No security-triggering capability/exposure change or requested Designer sign-off. General monitoring/security advisories remain separately recorded in the task.
fix(app): keep long histories responsive and follow latest output
All checks were successful
ci/woodpecker/pr/deploy-tools Pipeline was successful
ci/woodpecker/push/deploy-tools Pipeline was successful
ci/woodpecker/pr/image-agent Pipeline was successful
ci/woodpecker/pr/quality Pipeline was successful
ci/woodpecker/push/quality Pipeline was successful
ci/woodpecker/pr/native-push Pipeline was successful
ci/woodpecker/pr/docs Pipeline was successful
ci/woodpecker/push/docs Pipeline was successful
ci/woodpecker/pr/image Pipeline was successful
c5d01f2269
fix(app): stabilize activity loading and archived reading positions
Some checks failed
ci/woodpecker/push/deploy-tools Pipeline was successful
ci/woodpecker/pr/deploy-tools Pipeline was successful
ci/woodpecker/pr/image-agent Pipeline was successful
ci/woodpecker/push/quality Pipeline was successful
ci/woodpecker/pr/quality Pipeline was successful
ci/woodpecker/pr/native-push Pipeline was successful
ci/woodpecker/push/docs Pipeline was successful
ci/woodpecker/pr/docs Pipeline was successful
ci/woodpecker/pr/image Pipeline was canceled
53fb615d43
morten-olsen left a comment

Owner self-review of 53fb615d43 against main 5529986590, using change-review (Standards and Spec) with independent focused reviews.

Standards: no open code findings. Existing module boundaries, permanent identities, NativeWind and package APIs retained. The multiline-copy concern is resolved with Copy text over the original string. The clipboard boolean failure finding is resolved; both false and rejection show failure, with a retry check. Type-check, changed-file ESLint, dependency rules and formatting pass. Final CI 686/687 is running.

Spec: the blocking huge-single-line finding is resolved: 512-character preview/render units and a 320px expanded virtual window cover code and diffs, preserving the complete source for copying. Red-first browser checks cover the missed shapes. A stable replica read prevents archive toggles from clearing history. Settled keyboard navigation and an explicit reading anchor preserve the older position; archive/resize passed three repetitions per viewport. Full browser regression is being finalized. Native Android interaction and screen-reader acceptance remain unverified; no adb, emulator or connected device is available. No release or production acceptance is claimed.

Rollback: revert the four task commits and redeploy the previous 0.55.4 image; no data rollback. After authorized rollout, verify pipeline, mirror, Application revision, actual image digests/readiness, and long-history/live-follow/paused-reading/earlier-history behavior.

Findings per axis: Standards 0 open code findings; Spec 0 open code findings, with native and live acceptance outstanding.

Owner self-review of 53fb615d43192c974c7131678bd7cee60590a502 against main 5529986590327cc5ac87df1587e5590928450423, using change-review (Standards and Spec) with independent focused reviews. Standards: no open code findings. Existing module boundaries, permanent identities, NativeWind and package APIs retained. The multiline-copy concern is resolved with Copy text over the original string. The clipboard boolean failure finding is resolved; both false and rejection show failure, with a retry check. Type-check, changed-file ESLint, dependency rules and formatting pass. Final CI 686/687 is running. Spec: the blocking huge-single-line finding is resolved: 512-character preview/render units and a 320px expanded virtual window cover code and diffs, preserving the complete source for copying. Red-first browser checks cover the missed shapes. A stable replica read prevents archive toggles from clearing history. Settled keyboard navigation and an explicit reading anchor preserve the older position; archive/resize passed three repetitions per viewport. Full browser regression is being finalized. Native Android interaction and screen-reader acceptance remain unverified; no adb, emulator or connected device is available. No release or production acceptance is claimed. Rollback: revert the four task commits and redeploy the previous 0.55.4 image; no data rollback. After authorized rollout, verify pipeline, mirror, Application revision, actual image digests/readiness, and long-history/live-follow/paused-reading/earlier-history behavior. Findings per axis: Standards 0 open code findings; Spec 0 open code findings, with native and live acceptance outstanding.
test(app): measure real row positions and scope reply controls
All checks were successful
ci/woodpecker/pr/deploy-tools Pipeline was successful
ci/woodpecker/push/deploy-tools Pipeline was successful
ci/woodpecker/pr/image-agent Pipeline was successful
ci/woodpecker/push/quality Pipeline was successful
ci/woodpecker/push/docs Pipeline was successful
ci/woodpecker/pr/native-push Pipeline was successful
ci/woodpecker/pr/quality Pipeline was successful
ci/woodpecker/pr/docs Pipeline was successful
ci/woodpecker/pr/image Pipeline was successful
ci/woodpecker/tag/image-release Pipeline was successful
ci/woodpecker/tag/image-agent Pipeline was successful
ci/woodpecker/tag/deploy-release Pipeline was successful
ci/woodpecker/tag/release-android Pipeline was successful
be624944f1
morten-olsen left a comment

Final owner review at be624944f1, against main 5529986590. The last commit only strengthens verification: real DOM geometry replaces missing-rectangle-as-zero, reply selectors target the hand-back control, and sign-in readiness allows the larger combined dataset.

Standards: no open findings. Type-check, ESLint, dependency boundaries, format/workflow checks and 1,038 tests in 147 files passed. Branch pipeline 690 and PR pipeline 691 are both success, including server/agent image builds and native-push checks. Earlier clipboard and module-size concerns are resolved.

Spec: no open implementation findings. The combined browser run passed 75/76; the existing desktop Markdown selection case passed its single rerun, with flakiness proposed as HOMEIT-460. All new long-history, stream, geometry, expansion, huge-line and clipboard cases passed. Ten repeated archive/resize checks passed. Final 10,000-tool samples mounted 26/23 tools and opened in 1.64/1.97s on phone/desktop web.

Native device interaction, screen-reader behavior and candidate production acceptance remain unverified. No merge, tag, release or production mutation has occurred. The next proposed step is Morten-approved test prerelease v0.55.5-virtualized.1 at this exact commit, for a signed Android artifact before stable publication.

Rollback: revert the task's app/store change and deploy the previous 0.55.4 images; no data rollback. After authorized rollout verify mirror/Application revision, exact live image digests/readiness and the original long-history/follow/pause/earlier-reading behavior.

Findings per axis: Standards 0 open; Spec 0 open implementation findings, with native/live acceptance explicitly outstanding.

Final owner review at be624944f16ab2bfef56b7be8680d7842463d39d, against main 5529986590327cc5ac87df1587e5590928450423. The last commit only strengthens verification: real DOM geometry replaces missing-rectangle-as-zero, reply selectors target the hand-back control, and sign-in readiness allows the larger combined dataset. Standards: no open findings. Type-check, ESLint, dependency boundaries, format/workflow checks and 1,038 tests in 147 files passed. Branch pipeline 690 and PR pipeline 691 are both success, including server/agent image builds and native-push checks. Earlier clipboard and module-size concerns are resolved. Spec: no open implementation findings. The combined browser run passed 75/76; the existing desktop Markdown selection case passed its single rerun, with flakiness proposed as HOMEIT-460. All new long-history, stream, geometry, expansion, huge-line and clipboard cases passed. Ten repeated archive/resize checks passed. Final 10,000-tool samples mounted 26/23 tools and opened in 1.64/1.97s on phone/desktop web. Native device interaction, screen-reader behavior and candidate production acceptance remain unverified. No merge, tag, release or production mutation has occurred. The next proposed step is Morten-approved test prerelease v0.55.5-virtualized.1 at this exact commit, for a signed Android artifact before stable publication. Rollback: revert the task's app/store change and deploy the previous 0.55.4 images; no data rollback. After authorized rollout verify mirror/Application revision, exact live image digests/readiness and the original long-history/follow/pause/earlier-reading behavior. Findings per axis: Standards 0 open; Spec 0 open implementation findings, with native/live acceptance explicitly outstanding.
chore: integrate current main before virtualization rollout
All checks were successful
ci/woodpecker/pr/deploy-tools Pipeline was successful
ci/woodpecker/pr/image-agent Pipeline was successful
ci/woodpecker/pr/native-push Pipeline was successful
ci/woodpecker/pr/quality Pipeline was successful
ci/woodpecker/pr/docs Pipeline was successful
ci/woodpecker/pr/image Pipeline was successful
ci/woodpecker/push/draft-release Pipeline was successful
ci/woodpecker/push/deploy-access Pipeline was successful
ci/woodpecker/push/deploy-tools Pipeline was successful
ci/woodpecker/push/quality Pipeline was successful
ci/woodpecker/push/docs Pipeline was successful
ci/woodpecker/push/image Pipeline was successful
ci/woodpecker/push/image-smoke Pipeline was successful
ci/woodpecker/tag/image-release Pipeline was successful
ci/woodpecker/tag/image-agent Pipeline was successful
ci/woodpecker/tag/deploy-release Pipeline was successful
ci/woodpecker/tag/release-android Pipeline was successful
1c4dc8fc9f
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
ai/mission-control!99
No description provided.