deepseek-harness/packages/client
creatixchu a94df18bcf Merge remote-tracking branch 'origin/doc/host-client-group-readmes' into feat/directory-picker
# Conflicts:
#	packages/client/connection/src/client/fixture.ts
#	packages/client/connection/tests/fake-api.ts
#	packages/client/runtime/src/client/workspaces/service.ts
#	packages/client/runtime/tests/fake-api.ts
#	packages/client/ui-workspace/src/client/WorkspaceBrowser.tsx
#	packages/client/ui-workspace/src/client/WorkspacePicker.tsx
#	packages/client/ui-workspace/tests/workspace-picker.spec.tsx
#	packages/host/apiproxy/README.i18n.yaml
#	packages/host/apiproxy/src/api-proxy.ts
#	packages/host/apiproxy/src/api/host.schema.ts
#	packages/host/apiproxy/src/api/host.ts
#	packages/host/apiproxy/src/api/rpc-map.ts
#	packages/host/apiproxy/src/fetch/client.ts
#	packages/host/apiproxy/src/fetch/handler.ts
#	packages/host/apiproxy/tests/api-proxy-workspace.spec.ts
#	packages/host/apiproxy/tests/client-handler.spec.ts
#	packages/host/apiproxy/tests/fetch-carrier.spec.ts
2026-07-28 21:21:21 +08:00
..
connection Merge remote-tracking branch 'origin/doc/host-client-group-readmes' into feat/directory-picker 2026-07-28 21:21:21 +08:00
hmr Merge remote-tracking branch 'origin/master' into worktree/web-session-model-selector 2026-07-27 12:17:38 +08:00
locale fix(web-ui): menu placement and scrolling, tool-row and settings polish 2026-07-28 04:25:18 +08:00
modules docs: translate remaining READMEs 2026-07-26 05:06:39 +08:00
runtime Merge remote-tracking branch 'origin/doc/host-client-group-readmes' into feat/directory-picker 2026-07-28 21:21:21 +08:00
ui-command Merge remote-tracking branch 'origin/master' into feat/scrollbar-tokens 2026-07-28 18:15:00 +08:00
ui-conversation Merge branch 'master' into feat/close-todo 2026-07-28 19:45:36 +08:00
ui-layout chore(lint): clear the semantic .tsx backlog 2026-07-27 22:23:41 +08:00
ui-model Merge remote-tracking branch 'origin/master' into feat/scrollbar-tokens 2026-07-28 16:23:44 +08:00
ui-models Merge remote-tracking branch 'origin/master' into worktree/i18n-complete-non-readme 2026-07-26 14:37:46 +08:00
ui-primitives fix(client): rebind the scrollbar indirection on three missed elevated surfaces 2026-07-28 17:42:57 +08:00
ui-question Merge remote-tracking branch 'origin/master' into feat/scrollbar-tokens 2026-07-28 18:15:00 +08:00
ui-settings Merge remote-tracking branch 'origin/master' into feat/scrollbar-tokens 2026-07-28 16:23: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 fix(web-ui): workspace chip placeholder, logo new-session shortcut, hero foot padding 2026-07-28 04:56:14 +08:00
ui-skill fix(client): contain notification-callback failures and document the source lifecycle 2026-07-28 14:33:37 +08:00
ui-slash Merge remote-tracking branch 'origin/master' into feat/scrollbar-tokens 2026-07-28 15:02:38 +08:00
ui-slots Merge remote-tracking branch 'origin/master' into worktree-guifork 2026-07-28 16:12:12 +08:00
ui-subagent fix(ui-slash): make the reference lexicon reactive end to end 2026-07-28 12:09:48 +08:00
ui-theme test(ui-theme): resolve elevated surfaces from the palette, not from rebinds 2026-07-28 18:31:52 +08:00
ui-trajectory ci: clear the snapshots-and-artifacts lane — lint sweep and TUI snapshot re-record 2026-07-28 11:48:01 +08:00
ui-workspace Merge remote-tracking branch 'origin/doc/host-client-group-readmes' into feat/directory-picker 2026-07-28 21:21:21 +08:00
web Merge remote-tracking branch 'origin/master' into feat/scrollbar-tokens 2026-07-28 16:23:44 +08:00
web-react docs: fix test and docs conflicts 2026-07-28 16:50:07 +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(gui): settings panel with locale and theme preferences 2026-07-26 00:28:43 +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.