hermes-agent/apps
Brooklyn Nicholson 975f4ef38d perf(desktop): budget the transcript live tail in parts, not turns
The content-visibility virtualization from #66470 stopped engaging on agent
sessions. Its live tail — the newest turns kept always-rendered so a turn is
only virtualized once its height has settled — was sized as a raw count of 6
turns, while everything else in this file budgets in rendered PARTS
(RENDER_BUDGET=300, FIRST_PAINT_BUDGET=20).

Those units diverge badly on agent transcripts. A chat turn is 2-6 parts, but a
turn with tool calls is 50-200, so "6 turns" can exempt the entire visible
transcript. Measured on a 5-tile window (7/3/5/3/2 groups per tile): zero
content-visibility containers were active anywhere, and every Radix overlay
open paid the full whole-document style recalc that #66470 exists to avoid
(~610ms of a ~700ms open, in a handful of enormous recalcs rather than any
long task).

Size the tail by parts instead, clamped to [2, 6] turns. The floor keeps the
streaming turn rendered when turns are huge, preserving the anti-drift
guarantee; the ceiling stops a tail of tiny turns from reaching further back
than the old turn-count policy did, so no transcript shape renders more than
before. `liveTailStart` replaces the per-row `isVirtualizedGroup` predicate and
is computed once per render off the weighted groups.

Parts left always-rendered, real transcript shapes:

| shape                        | before | after |
|------------------------------|--------|-------|
| agent tile (7 tool-heavy)    |    690 |   270 |
| agent tile (5 turns)         |    535 |   225 |
| long agent session (40)      |    720 |   240 |
| long chat (40 short turns)   |     24 |    24 |
2026-07-30 02:38:41 -05:00
..
bootstrap-installer fix(update): let the GUI updater's hermes update child pass the lock it already holds 2026-07-30 00:51:33 -05:00
desktop perf(desktop): budget the transcript live tail in parts, not turns 2026-07-30 02:38:41 -05:00
shared refactor: drop the shared subpath export, keeping package.json untouched 2026-07-28 03:54:49 -05:00