summaryrefslogtreecommitdiffhomepage
path: root/src/app.css
diff options
context:
space:
mode:
authorAdam Malczewski <[email protected]>2026-10-10 01:36:39 +0900
committerAdam Malczewski <[email protected]>2026-10-10 01:36:39 +0900
commit551a7a050e8cd25e795026a1060c9d5b5ea028bf (patch)
treecba29eb5ada26778c09aea7cc767e2ddf665bce8 /src/app.css
parentd8381e201cb1407a939b496642a0803aec58a47d (diff)
downloaddispatch-web-551a7a050e8cd25e795026a1060c9d5b5ea028bf.tar.gz
dispatch-web-551a7a050e8cd25e795026a1060c9d5b5ea028bf.zip
perf(chat): fast open of long in-flight turns
- Batch live chat events: fold a burst in one pass per animation frame (rAF + timeout fallback for hidden tabs) instead of one reactive cycle per WS frame. Flushed before send/resync to keep ordering. - De-dup the late-join replay against committed history: provisional chunks of the in-flight turn already persisted (CR-6 per-step persistence) are hidden by aligned-prefix matching (fail-safe: mismatch shows, never hides). - Memoize chunks/turnMetrics getters by state identity. - LazyCollapse: tool/thinking card bodies mount only on first open. - content-visibility:auto on transcript rows. - scripts/probe-replay.ts + bench-pure.ts for measuring the replay path.
Diffstat (limited to 'src/app.css')
-rw-r--r--src/app.css10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/app.css b/src/app.css
index f5b269c..e5e2a99 100644
--- a/src/app.css
+++ b/src/app.css
@@ -127,3 +127,13 @@ body,
body {
overflow: hidden;
}
+
+/* Transcript rows: skip layout + paint for rows scrolled out of view. A long
+ turn has hundreds of rows; without this every one is laid out on first
+ paint (and on every resize). `contain-intrinsic-size: auto <h>` makes the
+ browser remember each row's last rendered height, so scrolling back up
+ doesn't jump; the 64px is only the estimate for never-rendered rows. */
+.chat-row {
+ content-visibility: auto;
+ contain-intrinsic-size: auto 64px;
+}