openclaw/docs/web
Peter Steinberger 27ee259fb8
perf(ui): resolve warm chat routes before Gateway connect (#162794)
Agent discovery became live-only in #161019, but short-route cache
resolution still required agentsList to provide routing defaults. A warm
reload could finish reading its transcript snapshot and still wait for
Gateway connect before returning the route.

Project only mainKey and scope through the existing session cache lifecycle.
Retire these hints on connect, credential/Gateway changes, and disposal.
Keep agent discovery live-only, preserve reserved main-key URL parsing,
and retain exact-session live revalidation and refusal on reconnect.

Bundled Chromium reloads on two isolated Gateways using the same compiled
runtime at 83a974025c, identical synthetic sessions, immutable assets, and
TCP delays: four interleaved rounds per RTT, alternating before/after order.
Median visible time (ms): 0 RTT 321 -> 314; 80 RTT 436.5 -> 316.5;
200 RTT 766 -> 404.5. Per-run before/after values:
0: 329,313,343,307 / 315,313,313,396
80: 429,439,441,434 / 327,323,310,290
200: 770,760,762,776 / 400,417,403,406
At 200 RTT, the original trace read the snapshot at 337 ms, received
connect at 671 ms, and rendered at 759 ms. The fixed trace read at 358 ms,
rendered at 436 ms, and received connect at 723 ms.

Regression proof fails on original production code and passes with the fix.
Relevant role-discovery, routing, cache, and reconnect coverage passes:
270 tests across 16 focused files. Repaired the cold-route fixture's missing
session capability without changing its assertions. Per-file test wall cost:
route-warm-boot 3.49 s; session-roster-warm-boot 10.05 s; route 3.84 s.

Validation: core/UI/core-test/root-test tsgo; both import-cycle checks (0);
all five typed core lint stripes; oxfmt; diff check; bundled UI build and
performance budgets; independent Codex review scoped-clean through P2.
2026-10-01 08:52:28 -07:00
..
control-ui perf(ui): resolve warm chat routes before Gateway connect (#162794) 2026-10-01 08:52:28 -07:00
control-ui.md fix(ui): sidebar hides saved-draft and attachment outbox badges until the conversation is reopened (#162049) 2026-09-30 20:57:41 -07:00
dashboard-architecture.md fix: allow HTML widgets up to 10 MiB (#159970) 2026-09-28 00:37:33 +00:00
dashboard.md docs: fix one-way and absolute links across cli, tools, gateway, and channels (#143157) 2026-09-10 07:40:16 +09:00
dashboards.md fix(ui): hide single-widget pill in split dashboards (#160117) 2026-09-30 15:00:17 -07:00
index.md fix(auth): reconcile Gateway secret guidance and macOS password prompts (#141723) 2026-09-07 19:41:17 -07:00
lobster.md feat(themes): support plugin hats and critter artwork (#154935) 2026-09-21 10:30:47 -07:00
notifications.md perf(web-push): unblock browser settings during notification preparation (#159709) 2026-09-27 15:02:47 +00:00
tui.md fix(tui): keep history and sends on the selected session (#159166) 2026-09-26 16:54:03 -07:00
urls.md refactor(ui): retire the global Tasks workspace (#158217) 2026-09-25 17:10:15 -07:00
webchat.md fix(chat): hide explicitly removed queued messages (#159503) 2026-09-27 19:46:40 -07:00