mirror of
https://github.com/deepseek-ai/deepseek-harness
synced 2026-08-15 21:04:50 +00:00
1. 统一会话列宽度轴:新增 --dsh-chat-content-width(748px),输入框、todo、goal、queue、approval、plan review、ask question 等容器的宽度与边距全部由该变量推导,消除各面板之间的像素漂移,窄视口下的边缘留白也保持一致。 2. 输入框自适应与细节:控制行改为容器查询(460px 阈值以下权限选择器只显示图标+下拉,隐藏文字);卡片圆角 20→22、行内边距调整并整体下移 2px(发送按钮除外);permission/model 触发器统一 24px 圆角;Plan 与 Read Only 间距 +8。 3. 修复浮层菜单溢出:slash 菜单与命令弹层钳制到输入卡片宽度,超长行以省略号截断;Tooltip 增加 12px 视口边缘安全距离。 4. 增加与替换图标:Add provider 改用输入框同款加号图标(IconPlusOutline16),统一图标尺寸与字号。 5. 统一 Settings → Models 组件:补齐按钮 hover 态、select 下拉箭头不再贴边、标题区与 provider 卡片间距 +12。 6. 侧边栏交互:add workspace / group by / create session / 收起侧边栏四个图标按钮增加 500ms 延迟 tooltip(前两个向下弹出);展开态的 New Session 不再重复显示 tooltip;侧边栏窄屏自适应收起逻辑微调。 7. 其他:hero 区 workspace 徽章右移对齐;附带 Agent Note(中英双语)记录共享宽度轴与容器查询的设计取舍。
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.