deepseek-harness/packages/client
Ziya b565df3442 feat(web): show exact per-turn token usage (#3005)
* feat(web): show exact per-turn token usage

* test(runtime): refresh exact token usage snapshots

* refactor(token-meter): own per-turn usage folding

* perf(ui-chat): bound paging anchor layout reads

* test(web): align usage golden with system prompt row

* fix(test): resolve token-meter client from source

* test(token-meter): cover retry without usage

---------

Co-authored-by: ZiyaZhang <199893125+ZiyaZhang@users.noreply.github.com>
2026-08-25 19:05:52 +08:00
..
connection test(web): keep credential fixtures package-local 2026-08-25 14:23:47 +08:00
hmr feat(client): use bounded plugin combo URLs 2026-08-25 06:43:24 +08:00
locale fix(web): authenticate the browser Host API 2026-08-25 14:23:45 +08:00
modules fix(client): preserve combo source identities 2026-08-25 06:43:25 +08:00
store fix(client): align domain split with repository gates 2026-08-23 16:28:19 +08:00
ui-agent-preset fix(web): authenticate the browser Host API 2026-08-25 14:23:45 +08:00
ui-approval chore(client): remove feature module externals 2026-08-23 23:06:38 +08:00
ui-attachment feat(web): 在 Trajectory 中展示图片附件 2026-08-24 17:59:02 +08:00
ui-brand-official chore(client): align split package graph 2026-08-23 16:28:18 +08:00
ui-chat feat(web): show exact per-turn token usage (#3005) 2026-08-25 19:05:52 +08:00
ui-commands fix(agent-presets): project selection and refresh client catalogs 2026-08-25 06:07:58 +08:00
ui-conversation fix(web): show system prompts in chat 2026-08-25 14:44:08 +08:00
ui-deliverables fix(system-prompt): centralize sparse section orders 2026-08-25 11:06:01 +08:00
ui-directory-picker-browse docs(client): restore boundary rationale 2026-08-23 23:54:06 +08:00
ui-directory-picker-native chore(client): align split package graph 2026-08-23 16:28:18 +08:00
ui-goal Merge pull request #2777 from deepseek-harness/fix/minimal-disable-goal-plugin 2026-08-24 09:18:48 +08:00
ui-input-trigger fix(agent-presets): project selection and refresh client catalogs 2026-08-25 06:07:58 +08:00
ui-jobs fix(client): align domain split with repository gates 2026-08-23 16:28:19 +08:00
ui-layout Merge remote-tracking branch 'origin/master' into worktree/localize-ui-strings-gate 2026-08-23 18:34:42 +08:00
ui-message-feedback fix(ci): preserve cross-platform lint suppressions 2026-08-23 21:48:32 +08:00
ui-model-selection feat(session): persist model selection and share its catalog 2026-08-25 06:07:42 +08:00
ui-permission-presets fix(web): authenticate the browser Host API 2026-08-25 14:23:45 +08:00
ui-plan Merge remote-tracking branch 'origin/master' into worktree/localize-ui-strings-gate 2026-08-23 18:34:42 +08:00
ui-primitives fix(web): show system prompts in chat 2026-08-25 14:44:08 +08:00
ui-reference chore(client): align split package graph 2026-08-23 16:28:18 +08:00
ui-renderer Merge remote-tracking branch 'origin/master' into worktree/localize-ui-strings-gate 2026-08-23 18:34:42 +08:00
ui-session fix(client): settle interactions during plugin teardown 2026-08-23 16:28:20 +08:00
ui-settings fix(web): authenticate the browser Host API 2026-08-25 14:23:45 +08:00
ui-settings-general fix(web): authenticate the browser Host API 2026-08-25 14:23:45 +08:00
ui-settings-models fix(web): authenticate the browser Host API 2026-08-25 14:23:45 +08:00
ui-settings-plugin-inventory chore(client): align split package graph 2026-08-23 16:28:18 +08:00
ui-settings-plugins chore(client): align split package graph 2026-08-23 16:28:18 +08:00
ui-sidebar style(client): stack local build metadata 2026-08-24 15:08:14 +08:00
ui-skill refactor(client): derive tool cards from raw events 2026-08-24 10:24:17 +08:00
ui-slots refactor(client): remove compatibility imports 2026-08-23 23:06:38 +08:00
ui-subagent refactor(subagent): consume shared session observations 2026-08-25 06:09:25 +08:00
ui-theme fix(web): authenticate the browser Host API 2026-08-25 14:23:45 +08:00
ui-tool fix(client): localize terminal send presentation 2026-08-24 10:24:18 +08:00
ui-trajectory fix(web): show system prompts in chat 2026-08-25 14:44:08 +08:00
ui-user-questions chore(client): remove feature module externals 2026-08-23 23:06:38 +08:00
ui-workflow-run fix(client): align domain split with repository gates 2026-08-23 16:28:19 +08:00
ui-workspace fix(ui-workspace): keep blank new sessions outside the fold quota 2026-08-25 14:36:56 +08:00
web fix(client-modules,webserver,webworker-runtime): preserve batched boot across transports 2026-08-24 20:49:12 +08:00
AGENTS.md docs: define client-derived tool presentation 2026-08-24 10:24:16 +08:00
README.i18n.yaml fix(client): align domain split with repository gates 2026-08-23 16:28:19 +08:00
README.md fix(client): align domain split with repository gates 2026-08-23 16:28:19 +08:00
README.zh.md fix(client): align domain split with repository gates 2026-08-23 16:28:19 +08:00
tsdown.client.ts feat(web): show exact per-turn token usage (#3005) 2026-08-25 19:05:52 +08:00

client/ — web-GUI browser half

English | 中文

The browser side of the dsh web GUI: shell boot, browser-host communication, shared UI services, and feature plugins. Authoring rules live in AGENTS.md; the host half is host/. All except test-runtime are product packages named @deepseek-ai/dsh-client-<name>.

Package Purpose
web/ Boots the browser shell from the client entry graph.
ui-renderer/ Binds slot data to React and mounts the assembled application after client boot settles.
modules/ Loads browser-side client modules.
connection/ Maintains browser-host RPC communication and event delivery.
hmr/ Refreshes client plugins during development.
locale/ Provides localization preferences and message dictionaries.
store/ Provides React-free observable and snapshot-store primitives.
test-runtime/ Provides shared repository test support for client feature packages.
ui-slots/ Defines how UI features register and compose extension slots.
ui-session/ Adapts Session Controller state into standard Slot sources and hooks.
ui-theme/ Applies the selected color theme.
ui-primitives/ Provides shared React controls, icons, and content renderers.
ui-attachment/ Registers composer and message-image attachment presentation.
ui-layout/ Arranges the main application regions.
ui-sidebar/ Presents workspace and session navigation.
ui-brand-official/ Fills the generic browser-brand slots with the official name and marks.
ui-workspace/ Provides workspace selection and creation surfaces.
ui-conversation/ Presents the active conversation and its input surface.
ui-chat/ Projects and renders the Chat conversation target.
ui-approval/ Presents approval requests and returns user decisions.
ui-tool/ Composes Tool call trees and keyed per-Tool views.
ui-workflow-run/ Replays durable workflow runs as nested Chat disclosures with live-only child navigation.
ui-goal/ Presents and manages the current goal.
ui-trajectory/ Presents alternate views of agent activity.
ui-commands/ Provides session-aware command discovery and dispatch.
ui-input-trigger/ Coordinates inline command and reference suggestions.
ui-skill/ Adds skill references to inline suggestions.
ui-reference/ Unified Web @file / @session reference source.
ui-subagent/ Provides subagent navigation, child transcript states, and inline references.
ui-jobs/ Lists this session's background jobs in the conversation header.
ui-model-selection/ Provides model selection in conversation surfaces.
ui-permission/ Configures default permissions and switches the current session's access.
ui-plan/ Presents active plan-mode status and its exit control.
ui-settings-plugins/ Owns the Plugins settings section, its tab extension point, and configurable host-plane plugin cards.
ui-user-questions/ Presents interactive questions requested by the agent.
ui-agent-preset/ Selects a session's agent preset and authors preset compositions.
ui-settings/ Hosts the settings interface and its extension areas.
ui-settings-general/ Provides the general settings section.
ui-settings-models/ Provides model-provider configuration and DeepSeek onboarding.
ui-settings-plugin-inventory/ Contributes the read-only Host Loader inventory tab to Plugins settings.

Each child reference owns its contract and detailed behavior. The slot system standard and web client architecture note own the cross-package composition and loading decisions.

The subsystem reference is client-modules.md; the slot system standard is the definitive slot model, and the web client architecture note owns the loading chain and object layer.