Files
deepseek-harness/packages/client/README.zh.md
T
5ff29190ed feat(ui): add navigation entry customization (#6247)
* fix(ui): avoid tooltip trigger overlap when a side fits

* feat(ui): add navigation entry customization

* fix(test): keep tooltip geometry independent of JSX types

* fix(ui): align customization catalogs and integration fixtures

* test(ui): complete customization lifecycle and release integration coverage

* fix(ui): return entry discovery to the installed plugin list

* docs: refresh module graph for entry customization

* build: refresh workspace links for the moved entry customization package

* docs: regenerate catalogs and pairing hashes for the moved entry customization package

* test(web): cover default-loaded entry customization in the Web e2e

* test(ui): describe entry customization as a browser plugin in the host entry spec

* build: order entry customization publication files as workspace constraints require

* test(release): drop the moved entry customization package from the experimental family list

* style(ui): use the shared focus ring color on entry customization triggers

* test(web): re-record goldens for the default-loaded More navigation menus

* test(web): add the More conversation views trigger to the remaining CI-reported goldens

* docs: record region-owned pins for plugin entry customization

* refactor(ui): rebuild entry customization on region-owned pins and More menus

- Each navigation region (left sidebar, Conversation header, right sidebar
  guide) persists its own unpinned list under
  dsh.slot.manual-order.<list slot key>.v1, filters its own launchers, and
  draws its own More button and Menu around its actions slot.
- ui-entry-customization only registers the shared menu rows (entries with
  pin buttons, Browse other plugins, Create your plugin) into the three
  actions slots and keeps no state.
- Remove ctx.layout.entryVisibility, the plugin store, left-sidebar drag
  reordering, and agentPresetNavigation; ui-layout and ui-agent-preset match
  release/dsh-0.2.1 again.
- Keep the release <nav> and Conversation tab-bar visibility conditions.
- Move the More glyph into ui-primitives as IconAppsAddOutline{Regular,Medium}.

* docs: compile the entry customization owner props example

* docs(ui): describe the wrapping Conversation tab row in the header comment

* fix(ui): return New Session to the Workspace blank and its unsent draft

- New Session (startSession without options) takes the blank-reuse path
  again instead of creating a fresh Session on every call, which hid the
  previous blank and its unsent draft since a5c9c2aaeef (#5775).
- A request that names an Agent preset skips blanks listing a different
  preset, so Creator entries no longer take over an ordinary draft.
- Record the change in a v0.2.1-rc.2 upgrade guide; the Host refresh of a
  stale loaded blank stays deferred (see the Agent Note).

* docs: regenerate the Cordis inspect catalog for New Session blank reuse

* fix(ui): keep the selected entry visible while unpinned

- Left-sidebar rows and View tabs keep the selected entry, with aria-current or aria-selected, until another entry is selected.
- Entry menu Creator action takes no region argument; the registration's region selects the prompt.
- Document the 2px panel-row and 32px View-tab gaps; drop commit hashes from the New Session Agent Note.

* fix(ui): leave a blank of another preset unstaged when starting Creator

startCreatorDraft stages cordis only when the main blank lists no preset or already lists cordis; navigation opens a separate Creator blank otherwise, so a Standard draft blank keeps its preset.

* feat(ui): choose whether a draft prompt replaces, appends to, or keeps an existing draft

- DraftInitializationOptions gains whenDraftExists ('replace' | 'append' | 'keep', default 'keep'); clearPreviousDraft stays and maps to 'replace' only when whenDraftExists is omitted.
- Append adds the prompt as new paragraphs after the existing text and references; attachments stay in every mode.
- The three Create your plugin entries append their regional prompt.

* test(web): align e2e with New Session blank reuse and the visible selected entry

* refactor(ui): share the draft paragraph writer between setDraft and appendDraft

---------

Co-authored-by: Yif <[email protected]>
Co-authored-by: imccyu <[email protected]>
2026-10-20 15:17:13 +08:00

9.3 KiB

description, kind
description kind
web GUI 浏览器侧的包映射:外壳启动、浏览器与宿主通信、共享客户端服务、本地化、开发重载与 UI 功能插件。 package-group

client/ — Web GUI 浏览器侧

English | 中文

概述

client/ 组提供 dsh web GUI 的浏览器体验,包括对话、导航、设置、批准、文件访问及其他交互功能。添加浏览器中可见的行为时,请选择本系列中的包;服务端页面交付与宿主集成则使用 host/。本系列同时涵盖共享浏览器基础与专门的 UI 功能,各子包 README 拥有其配置与行为说明。编写规则见 AGENTS.md,下方相关文档解释跨包组合方式。

目录


包

内核包负责启动与服务于页面,UI 功能包负责呈现页面。各包的 README 拥有自己的约定与配置。

包 职责 ctx 键
web/ 启动浏览器外壳 —
modules/ 加载浏览器侧客户端模块 ctx.clientModules / ctx.modules
connection/ 维护浏览器与宿主之间的 RPC 通信与事件投递 ctx.connection
file-upload/ 在页面线程之外发送原始 Blob 与字节流请求体 ctx.fileUpload
shortcuts/ 注册应用键盘命令 ctx.shortcuts
ui-shortcuts/ 展示快捷键速查 —
store/ 提供不依赖 React 的 observable 与快照存储原语 —
hmr/ 在开发期间刷新客户端插件 —
locale/ 提供本地化偏好与消息词典 ctx.locale
test-runtime/ 为客户端功能包提供共享的仓库测试支持 —
ui-renderer/ 将 slot 数据绑定到 React,并挂载组装完成的应用 ctx.uiRenderer
ui-slots/ 定义类型化扩展 Slots 与可复用 Component Factory —
ui-session/ 把会话控制器状态适配为标准 Slot source 与钩子 —
ui-theme/ 应用所选颜色主题 —
ui-primitives/ 提供共享 React 控件、图标与内容渲染器 —
ui-attachment/ 注册输入框与消息图片的附件呈现 —
ui-layout/ 排列应用的主要区域 —
ui-dockkit/ 提供停靠布局操作与 React 组件 —
ui-sidebar/ 展示工作区与会话导航 —
ui-sidebar-right/ 管理右侧 Sidebar 及其 tab 类型 ctx.sidebarRight, ctx.sidebarRightTabs
ui-sidebar-documentpreview/ 在右侧 Sidebar 的 tab 中显示文档 ctx.documentPreviews
ui-sidebar-browser/ 在右侧 Sidebar tab 中浏览 sandboxed HTTP(S) 页面,包括 loopback 服务 —
resources/ 统一资源模型:useResource 会话标准钩子背后的协议提供方 ctx.resources
ui-sidebar-files/ 右侧 Sidebar 的工作区文件树 tab 类型 —
ui-brand-official/ 用官方名称与标记填充通用浏览器品牌 slot —
ui-workspace/ 提供工作区选择与创建界面 —
ui-conversation/ 展示当前对话及其输入界面 —
ui-chat/ 投影并渲染 Chat 对话 target —
ui-approval/ 展示批准请求并返回用户决策 —
ui-tool/ 编排工具调用树与按工具键控的视图 —
ui-workflow-run/ 把持久工作流运行回放为嵌套对话折叠项 —
ui-goal/ 展示与管理当前目标 —
ui-trajectory/ 提供 agent(智能体)活动的其他视图 —
ui-commands/ 提供会话感知的命令发现与分发 —
ui-input-trigger/ 协调内联命令与引用建议 —
ui-skill/ 向内联建议添加 skill(技能)引用 —
ui-reference/ 统一的 Web @file / @session 引用 source —
ui-secret-mask/ 遮挡已发送用户文本中可识别的凭据 —
ui-subagent/ 提供 subagent 导航、子级 transcript(文本记录)状态与内联引用 —
ui-jobs/ 列出本会话的后台任务,并提供按需展开的流式输出面板 —
ui-schedule/ 在只读标题栏目录中列出当前会话中生效的提醒 —
ui-model-selection/ 在对话界面中提供模型选择 —
ui-deepseek-model-label-1017/ 为官方 DeepSeek Flash 模型名称添加临时的 1017 角标 —
ui-permission-presets/ 配置默认权限并切换当前会话的访问模式 —
ui-plan/ 展示生效中的 plan mode 状态及其退出控件 —
ui-settings-plugins/ 负责「内置插件」设置分区壳及其标签页扩展点 —
ui-user-questions/ 展示 agent 请求的交互式问题 —
ui-agent-preset/ 选择会话的 agent 预设并编写预设组合 —
ui-settings/ 承载设置界面及其扩展区域 —
ui-settings-general/ 提供常规设置分区 —
ui-settings-models/ 提供模型提供方配置与 DeepSeek 引导 —
ui-settings-shell/ 在插件页提供终端设置页 —
ui-settings-agent-loop/ 在插件页提供 Agent 循环设置页 —
ui-settings-session-log/ 在通用设置中控制随 API 上传会话日志 —
ui-settings-subagent/ 在插件页提供子智能体设置页 —
ui-settings-web-search/ 在插件页提供网页搜索设置页 —
ui-plugin-manager/ 贡献侧栏的“插件”面板:安装、启用、停用、重试与组合已安装的包 —
ui-entry-customization/ 添加分区域的“更多”菜单,固定或收起插件入口,并开始创建插件的草稿 —
ui-plugin-market/ 为“插件”页面贡献“发现”标签页:浏览市场索引并安装其中的组合包 —
ui-settings-plugin-inventory/ 向「插件」设置贡献只读的 Host Loader 清单标签页 —
ui-deliverables/ 生成改动文件卡片及其对比 tab、交付文件卡片与可点击的最终响应文件引用 —
ui-message-feedback/ 提供消息赞踩,以及从赞踩、/feedback 或会话标题栏菜单打开的反馈弹窗 ctx.feedbackUi
ui-directory-picker-browse/ 面向工作区目录流程的应用内目录浏览界面 —
ui-directory-picker-native/ 驱动本地 Desktop 或 Host OS 选择器的原生目录选择界面 —
ui-open-in-app/ 在已安装应用中打开工作区目录的会话标题栏拆分按钮,以及文档预览里用默认应用打开单个文件的控件 —

相关文档

先从子系统参考与两份拥有跨包组合决策的 Agent Note 读起,再看服务于本页的宿主半侧。

开发备注

维护者的工作上下文——点击展开

无。