perf(ui): surface chat ACK server timing#89801
Conversation
|
ClawSweeper status: review started. I am starting a fresh review of this pull request: perf(ui): surface chat ACK server timing This is item 1/1 in the current shard. Shard 0/1. This placeholder means the worker is alive and reading the current context. I will edit this same comment with the actual review when the claws are done clicking. Crustacean status: shell secured, claws on keyboard, evidence pebbles being sorted. |
|
Nice scope for the ACK timing split — this looks useful for separating gateway work from client-side paint/queue delays. One follow-up I’d love a maintainer sanity check on: this adds a new response field on |
|
Land-ready proof for
Known proof gap: no live provider timing capture; this PR only adds/threads telemetry and proves the Gateway/UI contract shape. |
Summary
chat.sendACK server timing for operator UI clients so Control UI can separate server pre-ACK time from browser/request time on first sends.control-ui.chat.sendACK timing events.Linked context
Maintainer-requested follow-up for Control WebUI clean first-message slowness discovery.
Real behavior proof
node scripts/run-vitest.mjs run src/gateway/server.chat.gateway-server-chat-b.test.ts -- --reporter=verbosenode scripts/run-vitest.mjs run ui/src/ui/controllers/chat.test.ts ui/src/ui/app-chat.test.ts -- --reporter=verbosenode scripts/run-vitest.mjs run --config test/vitest/vitest.ui-e2e.config.ts --configLoader runner ui/src/ui/e2e/chat-flow.e2e.test.ts -- --reporter=verbosegit diff --checkOPENCLAW_OXLINT_SKIP_PREPARE=1 OPENCLAW_OXLINT_SKIP_LOCK=1 node scripts/run-oxlint.mjs --tsconfig config/tsconfig/oxlint.core.json src/gateway/server-methods/chat.ts src/gateway/server.chat.gateway-server-chat-b.test.ts ui/src/ui/controllers/chat.ts ui/src/ui/app-chat.ts ui/src/ui/controllers/chat.test.ts ui/src/ui/app-chat.test.ts.agents/skills/autoreview/scripts/autoreview --mode branch --base origin/mainnode scripts/crabbox-wrapper.mjs run --provider blacksmith-testbox --label control-first-message-next-rebased-check --idle-timeout 90m -- env OPENCLAW_CHECK_CHANGED_REMOTE_CHILD=1 OPENCLAW_CHANGED_LANES_RAW_SYNC=1 corepack pnpm check:changedmode=webchatreceivingserverTiming; publicwebchat-uiregression verifies the field is omitted. Testboxtbx_01kt6jcjzh9esd723hvjnjvekhpassedcheck:changedwithlanes=core, coreTests.serverReceivedToAckMs,serverLoadSessionMs, and optionalserverPrepareAttachmentsMswhen the Gateway provides them.Tests and validation
git diff --check, targeted oxlint clean.tbx_01kt6jcjzh9esd723hvjnjvekh.Risk checklist
NoNoNoserverTiming.Current review state
mode=webchatgating bug; the fix and regression coverage are included.