| 1 | # Chat presentation design QA |
| 2 | |
| 3 | ## Harness source port, 2026-09-12 |
| 4 | |
| 5 | - Source provenance and host adaptations: `desktop/frontend/src/components/harness-chat/README.md`. |
| 6 | - Ported disclosure, reasoning, turn-process, context-record, tool-row, terminal, |
| 7 | diff, web-source, status and folding primitives; copied scoped Markdown styling. |
| 8 | - Preserved Reasonix's safe-link host, Markdown workers, composer, approvals, |
| 9 | fork capability checks and content API. No feedback voting controls. |
| 10 | - Removed Settings → Conversation experience → Standard/Deep and its search |
| 11 | summary. Kept the approval control and persisted compatibility field. |
| 12 | - Completed tool errors can fold with a successful final answer; a visible |
| 13 | failed-call count remains in the process summary. Interrupted/terminal |
| 14 | failure records stay visible. Permission text is disclosed on demand. |
| 15 | - In real Electron, opened the user's existing weather turn, expanded and |
| 16 | collapsed its seven tools, and verified the two failed calls remained visible |
| 17 | in the summary. Inspected the settings screen and confirmed there are only |
| 18 | the three default approval choices in that section. |
| 19 | - Production ZIP: SHA256 `3409b930ca85eebc7dae8e266821300e2358518827736394602769c4ddf303ce`. |
| 20 | Build `v0.0.0-dev`, commit label `0e5319ad145b` plus current worktree changes, |
| 21 | build time `2026-09-12T12:54:05Z`, macOS arm64 / Electron 44.2.0. |
| 22 | - Ad-hoc signature verification and packaged smoke passed: 3.1s handshake, |
| 23 | real renderer `Version` call, normal shell and service exit. The user-facing |
| 24 | launch uses the isolated `Reasonix-Test-ChatRefactor` profile. |
| 25 | - The final font-only correction uses a root-owned token for portaled usage/time |
| 26 | dialogs; the typography contract passed all 165 assertions. Long-history |
| 27 | replay numbers above were captured before that portal-only correction. |
| 28 | - Browser evidence: `docs/evidence/harness-chat-port/`. Synthetic weather |
| 29 | screenshots use fixture data, not a fresh weather query. Each tool header is |
| 30 | 24px high; collapsed processes do not mount tool bodies. |
| 31 | - WebKit 26.6: 1,000 turns input P95 103ms, switch P95 40ms. Its Long Tasks |
| 32 | API is unavailable, so no maximum-long-task claim is made for WebKit. |
| 33 | - Chromium 153: 1,000 turns input P95 120.7ms, max long task 138ms, |
| 34 | switch P95 32.8ms, released heap growth 125,396 bytes over 20 switches. |
| 35 | - Electron 44.2.0 replay: 1,000 turns input P95 43.4ms, max long task 142ms, |
| 36 | switch P95 20.3ms. Stream anchor drift 0px; prepend drift 0.094px. |
| 37 | - Native WebView hosts on other platforms, native IME soak and exposed native |
| 38 | scrollbar dragging were not rerun in this pass. This is a local test build, |
| 39 | not a published or notarized release. |
| 40 | |
| 41 | ## Earlier footer verification |
| 42 | |
| 43 | ## Reference |
| 44 | |
| 45 | - DeepSeek Harness commit: `c291e7961a` |
| 46 | - Source components: |
| 47 | - `<deepseek-harness>/packages/client/ui-chat/src/client/chat/TurnUsagePanel.tsx` |
| 48 | - `<deepseek-harness>/packages/client/ui-chat/src/client/chat/MessageIconActions.tsx` |
| 49 | - Visual references supplied by the user: |
| 50 | - Reference screenshot: assistant footer actions and turn metrics. |
| 51 | - Reference screenshot: token usage detail popover. |
| 52 | - Reference screenshot: elapsed-time detail popover. |
| 53 | |
| 54 | ## Implemented target |
| 55 | |
| 56 | - Assistant turn footer contains copy, branch-in-new-chat, usage, duration, and timestamp. |
| 57 | - Like and dislike actions are intentionally omitted. |
| 58 | - Usage popover shows exact total tokens, provider/model route, cache hit rate, uncached input, cache-read input, output, and reasoning output. |
| 59 | - Duration popover shows total turn time and live throughput when the active turn exposes it. |
| 60 | - Compact values use the same `K tok` treatment as Harness while popovers retain exact values. |
| 61 | - Long provider/model routes remain on one line with ellipsis and expose the full route as a native title. |
| 62 | - Branch action uses the existing checkpoint and capability checks and creates a real conversation fork. |
| 63 | - Popovers dismiss with Escape or outside interaction and return focus to their trigger. |
| 64 | |
| 65 | ## Native verification |
| 66 | |
| 67 | - App: `~/Applications/Reasonix-Canary/Reasonix.app` |
| 68 | - Platform: macOS arm64, Electron 44.2.0 |
| 69 | - Data directory: isolated `Reasonix-Test-ChatRefactor` profile |
| 70 | - Compared the Harness reference and the running app in one visual comparison input. |
| 71 | - Verified a real newly completed turn displayed `用量 7.4K tok`, `用时 2秒`, and a timestamp. |
| 72 | - Verified its usage details displayed 7,370 total tokens, 96.7% cache hit, 238 uncached input, 7,040 cache-read input, 92 output tokens, and 25 reasoning tokens. |
| 73 | - Verified the duration dialog, usage dialog, copy action, branch action, keyboard dismissal, and normal transcript scrolling. |
| 74 | - Found and fixed a queued-turn timing bug that could reuse the preceding turn start time; the new regression test covers this event order. |
| 75 | |
| 76 | ## Result |
| 77 | |
| 78 | PASS. The footer hierarchy, spacing, subdued metadata treatment, popover content, and interaction match the supplied Harness target within the existing Reasonix theme. No like or dislike control is present. |
| 79 |