deepseek-harness/packages/client
ZiyaZhang 3dd0ce33f4 Merge remote-tracking branch 'upstream/master' into fix/gui-todo-default-collapsed
# Conflicts:
#	packages/client/ui-conversation/README.i18n.yaml
2026-07-29 08:10:13 -07:00
..
connection Merge remote-tracking branch 'origin/master' into worktree-renameweb 2026-07-29 20:58:22 +08:00
hmr docs(i18n): record proofread README pairs 2026-07-29 15:30:44 +08:00
locale docs(i18n): record proofread README pairs 2026-07-29 15:30:44 +08:00
modules docs(i18n): record proofread README pairs 2026-07-29 15:30:44 +08:00
runtime Merge remote-tracking branch 'origin/master' into worktree-renameweb 2026-07-29 21:45:29 +08:00
test-runtime refactor(client): isolate trajectory history 2026-07-29 20:21:37 +08:00
ui-command feat(client): localize composer hints and rework input command interaction 2026-07-29 19:46:48 +08:00
ui-conversation Merge remote-tracking branch 'upstream/master' into fix/gui-todo-default-collapsed 2026-07-29 08:10:13 -07:00
ui-goal docs(client): sync package READMEs and agent notes with the input interaction rework 2026-07-29 20:46:29 +08:00
ui-layout refactor(client): isolate trajectory history 2026-07-29 20:21:37 +08:00
ui-model docs(i18n): address final line audit 2026-07-29 16:53:53 +08:00
ui-models docs(i18n): record proofread README pairs 2026-07-29 15:30:44 +08:00
ui-permission docs(client): sync package READMEs and agent notes with the input interaction rework 2026-07-29 20:46:29 +08:00
ui-plan docs(client): sync package READMEs and agent notes with the input interaction rework 2026-07-29 20:46:29 +08:00
ui-primitives Merge remote-tracking branch 'origin/master' into mergebot/pr908 2026-07-29 22:27:37 +08:00
ui-question style: satisfy the eslint lane on the plan surfaces 2026-07-28 22:36:35 +08:00
ui-settings docs(i18n): record proofread README pairs 2026-07-29 15:30:44 +08:00
ui-settings-general fix(web-ui): menu placement and scrolling, tool-row and settings polish 2026-07-28 04:25:18 +08:00
ui-sidebar docs(i18n): record proofread README pairs 2026-07-29 15:30:44 +08:00
ui-skill Merge remote-tracking branch 'origin/master' into feat/input-command-interaction 2026-07-29 21:23:13 +08:00
ui-slash Merge remote-tracking branch 'origin/master' into feat/input-command-interaction 2026-07-29 21:23:13 +08:00
ui-slots docs(i18n): record proofread README pairs 2026-07-29 15:30:44 +08:00
ui-subagent docs(i18n): standardize reviewed README headings 2026-07-29 20:16:45 +08:00
ui-theme docs(i18n): record proofread README pairs 2026-07-29 15:30:44 +08:00
ui-trajectory Merge remote-tracking branch 'origin/master' into mergebot/pr908 2026-07-29 22:15:22 +08:00
ui-workspace fix(client): fixture rename via requireSession, unchanged-title pin gesture 2026-07-29 20:11:43 +08:00
web docs(i18n): address automated review 2026-07-29 17:46:06 +08:00
web-react docs(i18n): address final line audit 2026-07-29 16:53:53 +08:00
AGENTS.md docs(client): state the reactive-read rules positively 2026-07-28 14:52:04 +08:00
README.i18n.yaml doc(packages): add the host/ and client/ group READMEs and table rows 2026-07-28 15:04:59 +08:00
README.md doc(packages): add the host/ and client/ group READMEs and table rows 2026-07-28 15:04:59 +08:00
README.zh.md doc(packages): add the host/ and client/ group READMEs and table rows 2026-07-28 15:04:59 +08:00
tsdown.client.ts feat(ui): complete trajectory request inspection 2026-07-28 09:53:32 +08:00

client/ — web-GUI browser half

English | 中文

The browser side of the dsh web GUI: shell kernel, module system, wire consumer, React-free object services, the slot system, and the ui-* feature-plugin roster. Authoring rules live in AGENTS.md; the host half is host/. All product packages, named @deepseek-ai/dsh-client-<name>.

Package Role ctx key / slot
web/ Shell kernel: AppWebEntry runs the two-stage boot over the host-pushed entry graph (boots the tree)
modules/ Client module system: browser peer of Node's ESM loader as a lazy CJS table under the vendored cordis Loader (module face)
web-react/ Shell-side React glue: createSlotRenderer + SessionProvider render seats (renderer install)
connection/ Wire consumer both ends: browser ctx.connection (shared api client + stream loop) and the node half mounting the /api route with its browser-trust fence ctx.connection
runtime/ Client cordis boot and React-free object services: slots, Sessions, Workspaces, per-session bindings ctx.slots ctx.sessions ctx.workspaces
hmr/ Dev-only hot reload for fetch-arrival client plugins (--dev graphs) (dev entry)
locale/ Browser locale preference (zh/en) plus the ns×locale dictionary registry ctx.locale
ui-slots/ Slot registry pure core: SlotMap merging, single register API, the four-share props family (types + core)
ui-theme/ Theme preference over the --dsw-* token stylesheets (light/dark/system) ctx.theme
ui-primitives/ Pure React atoms: icons, Button/Pill/Menu/Modal/Input, markdown family (component library)
ui-layout/ Shell three-column AppFrame; declares sidebar / conversation / details / conversation.empty ctx.layout
ui-sidebar/ Sidebar shell: Workspace/session rail, search, collapse; declares sidebar.workspaces (slot host)
ui-workspace/ Shared Workspace picker: browser region + hero picker over the same creation flow (fills sidebar.workspaces, conversation.hero.workspace)
ui-conversation/ Conversation domain: skeleton, chat view, input dock, per-tool row slots (slot host)
ui-trajectory/ Trajectory/Waterfall view tabs; the minimal pure-consumer plugin exemplar (fills conversation.view)
ui-command/ Command surface: session-keyed directory cache, / source, three-kind dispatch ctx.command
ui-slash/ Input trigger pipeline: / and @ detection, grouped candidate menu, source roster ctx.slash
ui-skill/ /-trigger skill reference source over the skill.list RPC (registers into ctx.slash)
ui-subagent/ @-trigger subagent reference source over the sessions snapshot (registers into ctx.slash)
ui-model/ Model selection: /model popupSelect + the composer model seat over ModelService ctx.models
ui-question/ Web ask_user_question: host half mounts the tool, browser half fills the composer seat (fills conversation.composer)
ui-settings/ Settings shell: trigger chrome + modal panel; declares the settings.* slots (slot host)
ui-settings-general/ Settings ownerless copy: chrome content + General section skeleton (fills settings.*)
ui-models/ Models settings nav entry (content column lands in a later phase) (fills settings.section)

Feature UI composes only through the slot system (ctx.slots.register) — the slot system standard is the definitive model; the web client architecture note owns the loading chain and object layer.