Commit Graph
220 Commits
Author SHA1 Message Date
Turtle b11d3ac198 docs(official-bundles): limit the protected-list contract to its own refusal 2026-10-23 12:56:17 +08:00
Turtle 9b4aacb41a refactor(util): collect hardcoded official plugin lists in dsh-official-bundles
Move @deepseek-ai/dsh-official-bundles from packages/boot to packages/util
and move the plugin manager's protected plugin list and the Web plugin
page's hidden, ordered, and experimental bundle lists into it, so editing
any of these lists no longer touches app-boot or either plugin manager
package.
2026-10-23 12:12:38 +08:00
07akioni 84edeadc2b feat(i18n): add Spanish French German Russian and Portuguese 2026-10-22 19:53:52 +08:00
Turtle 1203a3151e Merge remote-tracking branch 'origin/master' into turtle/plugin-sticky-header-29bfdb179e18
# Conflicts:
#	packages/client/ui-plugin-manager/src/client/index.ts
2026-10-21 19:21:21 +08:00
imccyu d5d43d931d fix(remote-access): 按评审修正访问门控边界,插件导航改为可选依赖
- ui-entry-customization、voice-input 不再把 pluginNavigation 当必需服务:服务不在时隐藏「浏览插件」与「打开 / 查看详情」按钮,插件照常启动
- plugin-manager 每次授权时刷新已加载的列表
- settings-account 账号设置分区与 sign-in 一并按 account/watch 门控,revision 恢复 master 原样
- schedule 会话头部提醒另按会话 useAccess('schedule/list') 渲染
- 导出 staticAccessPlugin;补 whenAccess 归属、撤权与读者页启动测试
- 同步 README、web-server 子系统文档、webserver 包描述与 Agent Note
2026-10-21 17:57:52 +08:00
imccyu 09899f3a0f feat(remote-access): 插件注册跟随访问状态(whenAccess),index 按 Peer 注入访问快照
- remote-access 新增 whenAccess / whenResourceAccess,ui-session、ui-workspace 各自提供 whenAccess
- schedule、plugin-manager、settings-general、settings-account、directory-picker-native 的入口包进 global whenAccess;消息反馈按钮按会话 useAccess 渲染
- webserver/index-inject 带 Peer,renderIndex / collectIndexInjections 需要 Peer,remote-access 注入 snapshotFor(peer.principal)
- client-test-runtime 新增 StaticRemoteAccess、staticAccessPlugin 与 TestClientOptions.access
- implemented Agent Note 2026-10-21-when-access 与升级指南 webserver-index-peer

Refs #2940
2026-10-21 17:57:51 +08:00
Turtle da7a582491 Merge remote-tracking branch 'origin/master' into turtle/plugin-sticky-header-29bfdb179e18
# Conflicts:
#	apps/web/tests/plugin-manager.e2e.ts
#	apps/web/tsconfig.json
#	packages/client/ui-plugin-manager/README.i18n.yaml
#	packages/client/ui-plugin-manager/README.md
#	packages/client/ui-plugin-manager/README.zh.md
#	packages/client/ui-plugin-manager/src/client/PluginManagerPage.module.css
#	packages/client/ui-plugin-manager/src/client/PluginManagerPage.tsx
#	packages/client/ui-plugin-manager/tests/components.client.spec.tsx
#	packages/client/ui-primitives/README.i18n.yaml
#	tsconfig.host.json
2026-10-21 16:44:06 +08:00
Yif 3c26689899 fix(plugin-manager): make sticky header scrolling smooth
让插件主页面的吸顶过渡随滚动连续到位,而不是滚过 8px 后突然重排。

- 标题栏与列表共用滚动容器,保留展开态占位,避免收缩改变滚动范围
- 用不可交互的临时布局副本测量展开态和吸顶态,在同一组控件上按滚动距离更新位移和宽度
- 保持控件身份与焦点,补偿占空间的滚动条,防止水平偏移和临界位置来回抖动
- 小屏优先将 Tabs 与操作按钮排成一行,放不下时固定 Tabs 在上、按钮在下,吸顶前后不换序
- 仅 macOS 收起侧栏的吸顶态采用窗口安全区外 8px 留白,不再限制宽度;其他平台和状态不变
- 补充端点布局、滚动往返、短列表、滚动条和平台隔离回归

本次到插件主页面的吸顶动画与布局优化为止。实验性插件相关页面的吸顶体验留待后续单独处理。
2026-10-21 16:09:06 +08:00
imccyu d4aa52c2be Merge pull request #6796 from deepseek-harness/07akioni/japanese-locale
feat(locale): 增加日语界面支持
2026-10-21 15:44:22 +08:00
Turtle 589790d6e9 Merge remote-tracking branch 'origin/master' into turtle/plugin-market-entry-8303d8c92886
# Conflicts:
#	apps/web/tests/inspector-late-enable.e2e.ts
#	packages/experimental/inspector-profile/README.i18n.yaml
#	packages/experimental/inspector-profile/README.md
2026-10-21 15:12:43 +08:00
07akioni 358c142716 Merge master for current locale keys 2026-10-21 13:47:53 +08:00
07akioni 6238020202 fix(locale): type additional dictionaries and complete Japanese registration 2026-10-21 13:42:49 +08:00
Turtle 11589ed104 feat(web): list custom plugin markets on the main experimental list
Developer Tools moves to the More page.
2026-10-21 13:34:13 +08:00
Turtle c7be617437 Merge remote-tracking branch 'origin/master' into turtle/plugin-sentence-case-299acab3ee89
# Conflicts:
#	packages/experimental/cua/src/application-access.ts
2026-10-21 13:28:18 +08:00
ZiyaandZiyaZhang e819a7126b feat(web): hide persistent terminal bundle controls (#6753)
Co-authored-by: ZiyaZhang <[email protected]>
2026-10-21 03:52:24 +00:00
07akioni 3007a15cdd fix(locale): align Japanese copy with current plugin settings 2026-10-21 11:44:22 +08:00
07akioni 342965a75b Merge remote-tracking branch 'origin/master' into 07akioni/japanese-locale 2026-10-21 11:42:35 +08:00
07akioni 3f9f36e92d feat(locale): add Japanese client and desktop translations 2026-10-21 11:42:12 +08:00
Turtle b9d049d041 fix(plugins): use sentence case for built-in plugin English copy
Refs #6790
2026-10-21 11:28:26 +08:00
ZiyaandZiyaZhang 5e9bb51724 feat(plugins): Ralph 循环和会话搜索默认从 GUI 隐藏 (#6754)
* feat(plugins): hide Ralph and session search from default discovery

* fix: keep hidden bundled plugins explicitly activatable

---------

Co-authored-by: ZiyaZhang <[email protected]>
2026-10-20 10:26:31 -07:00
creatixchu beae0efd91 fix(plugins): retain displayed details during activation refresh 2026-10-20 20:17:53 +08:00
creatixchu f8912d267f fix(plugins): retain independent row controls during query suspension 2026-10-20 20:17:53 +08:00
creatixchu 817d4ec740 fix(plugins): announce toggle progress through a persistent live region 2026-10-20 20:17:53 +08:00
creatixchu 3509e723a1 fix(cua): own query pauses with plugin management operations 2026-10-20 20:17:53 +08:00
creatixchu cf18b49144 fix(cua): pause permission queries while toggling the bundle 2026-10-20 20:17:31 +08:00
Yif 2951b75ffe fix(plugin-manager): keep the compact bar clear of macOS window controls
With the sidebar open the native window controls live in the sidebar, so the compact
bar only needs its own 16px inset. Collapsing the sidebar moves those controls above
the page, and the compact bar then adds the frame's top clearance so its controls stay
below them instead of underneath.

The style-driven motion between the expanded and compact bars still needs work; it lands
in a follow-up.
2026-10-20 20:09:59 +08:00
Stevring b7d8943cfa Merge origin/master into fix/touch-tooltip-interactions 2026-10-20 17:12:10 +08:00
imccyu 14e5add505 Merge master into DSH 0.2.1 entry customization synchronization branch
Bring master 45d1196d3fe into the release/dsh-0.2.1 squash commit of #6247
so the release commit stays an ancestor of master.

Conflict resolutions:
- apps/web/tsconfig.json, tsconfig.host.json: keep the entry-customization
  e2e and master's Computer Use e2e entries.
- docs/subsystems/slots.{md,zh.md}: keep both added paragraphs; re-record the
  slots, ui-primitives, and ui-workspace README translation pairs.
- ui-sidebar SidebarRoot.tsx and locales.ts: keep the More menu imports and
  copy next to master's version-copy toast.
- apps/web/tests/agent-preset-selection.e2e.ts: keep the New Session
  blank-reuse assertions, read presets through master's
  sessionProjections.checkpoint() instead of the deprecated stateOf().

Follow-ups on master's side:
- ui-sidebar sidebar-root spec: give master's version-copy render the entry
  pin props that SidebarRootInjected now requires.
- snapshots/web/steering/trajectory.expected.md: add the More conversation
  views trigger to master's new Trajectory golden.
2026-10-20 15:47:29 +08:00
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
Stevring dbb0d2bd83 Merge origin/master into fix/touch-tooltip-interactions 2026-10-20 14:34:15 +08:00
Turtle f8eafdc554 Merge pull request #6644 from deepseek-harness/turtle/discover-back-and-upgrade-0e7147938262
fix(plugin-manager): return to Discover from a bundle page opened there
2026-10-20 14:09:05 +08:00
imccyu 89b9e5b1e8 Merge pull request #6662 from deepseek-harness/fix/iphone-button-outline
fix(client): stabilize shared button outlines in Safari
2026-10-20 14:07:02 +08:00
Stevring dc1bd1c28e fix(client): unify shared button inset outlines 2026-10-20 13:41:45 +08:00
Stevring 94ffdd2377 fix(client): align touch tooltips and hover affordances 2026-10-20 12:50:31 +08:00
creatixchu d779dda9ab fix(web): move CUA to experimental plugins page 2026-10-20 12:16:39 +08:00
creatixchu f305312e84 refactor(web): classify experimental badges with an explicit list 2026-10-20 12:05:57 +08:00
Turtle 39d0232581 fix(plugin-manager): document the return tab and keep one origin per view 2026-10-20 10:40:26 +08:00
Turtle 00536d98a7 fix(plugin-manager): return to the opening tab from a bundle page
A bundle page opened from Discover now returns to Discover instead of
the Installed list.

Fixes #6643
2026-10-20 10:20:12 +08:00
Turtle 85aac4d95c fix(plugin-manager): keep the narrow update note inside the page head
At narrow widths the non-shrinking toolbar grew to the update note's
width and pushed the add menu past the window edge; the toolbar now caps
at the head's width and the note wraps. The collapsed bar keeps the page
heading for assistive technology, the bar and body share the same inset
margins, and every head row reads one top-inset variable.
2026-10-19 22:36:08 +08:00
TurtleandYifffan d04a96377a fix(plugin-manager): keep the collapsed bar when collapsing lets the list fit
Collapsing the page bar grows the list's scroll container. A list that
scrolled only a few pixels then fit, the browser clamped it back to the
top, and the bar reopened, so every scroll flipped the layout. The bar
now reopens at the top only while the list still scrolls, and an upward
wheel reopens it over a list that fits only under the collapsed bar.

Co-authored-by: Yifffan <[email protected]>
2026-10-19 22:19:24 +08:00
Turtle dbccedbc13 Merge remote-tracking branch 'origin/master' into turtle/plugin-sticky-header-29bfdb179e18
# Conflicts:
#	packages/client/ui-plugin-manager/README.i18n.yaml
#	packages/client/ui-plugin-manager/src/client/PluginManagerPage.tsx
#	packages/client/ui-primitives/README.i18n.yaml
2026-10-19 22:12:10 +08:00
Yif fbff97cd28 feat(plugin-manager): compact sticky header and responsive actions 2026-10-19 22:06:14 +08:00
turtle1999 3be4701a9d refactor(plugin-manager): show built-in feature previews through bundle detail documents 2026-10-19 22:04:01 +08:00
Turtle b702109a8c Merge pull request #6279 from deepseek-harness/turtle/plugin-detail-readme
feat(plugin-detail): show Markdown plugin details on bundle and market entry pages
2026-10-19 19:27:33 +08:00
turtle1999 9c8522bb64 feat(plugin-detail): show Markdown plugin details on bundle and market entry pages
Plugins bundle pages and Discover entry pages show the plugin's long
description first, as Markdown with images, in a height-limited region
without its own heading. The document is the file locale meta.detail
names, otherwise the package README, otherwise (market entries only)
the declared repository's README.

The new dsh-plugin-detail library selects documents and reads local
package directories and npm file CDNs without state. plugin-manager
reads installed and offered bundles through readBundleDetail; plugin-market
reads market entries through readEntryDetail, single-file APIs, and a
size-limited partial clone cache serialized across processes. Raw HTML is
omitted, relative links stay text, and relative images load from Host
routes with a sandbox CSP.
2026-10-19 19:13:22 +08:00
Turtle 8d00245b8e Merge pull request #6594 from deepseek-harness/turtle/plugin-market-enable-stay
fix(plugin-manager): keep the selected tab when enabling a bundle
2026-10-19 18:53:33 +08:00
Turtle ca735069a1 fix(plugin-manager): scroll the Plugins list in its own container under the page bar
A sticky bar let reverse keyboard navigation focus controls hidden under
it. The page bar and the More list's head now sit above a separate scroll
container, so focus and scrollIntoView always land in view. The tests read
the bar and body through data hooks, and the README pair documents the
pinned bar.
2026-10-19 18:38:25 +08:00
Turtle 37d0b6d2b0 feat(plugin-manager): pin the Plugins page title bar while scrolling
The Plugins page title, its actions, and the Installed/Discover tabs now
stay at the top of the page while the cards scroll beneath them. The More
list's back-and-title row stays pinned the same way.
2026-10-19 18:37:19 +08:00
turtle1999 0d9577c981 fix(plugin-manager): keep the selected tab when enabling a bundle
Enable now marks the added bundle for scrolling, and the page also
selected Installed for that mark, so enabling from Discover left the
market tab. The mark scrolls only to a card on the current page, and
activation guidance renders only beside the Installed list.
2026-10-19 18:12:26 +08:00
turtle1999 b8c7fa91d5 fix(plugins): keep the Refresh label on the refresh button 2026-10-19 18:00:21 +08:00