Commit Graph
4023 Commits
Author SHA1 Message Date
yudshj e8488f6b41 fix(shell): preserve missing exit codes in terminal presentation 2026-10-15 15:57:11 +08:00
yudshj 95e76236bf refactor(ui-tool): isolate exit badge and cover long descriptions 2026-10-15 15:46:03 +08:00
yudshj 97a833471f fix(ui-tool): reserve inline space for exit capsules 2026-10-15 15:02:29 +08:00
yudshj 00f897b048 fix(ui-tool): show command exits in neutral inline capsules 2026-10-15 14:20:22 +08:00
Yichen Jiang 034f2cf8bd Merge pull request #5935 from deepseek-harness/worktree/command-delete-as-whole-21017f
feat(web): claim slash commands as atomic composer chips
2026-10-15 13:42:27 +08:00
Yichen Jiang 6f8b55f3eb fix(web): restore a claimed command chip after reload
The persisted draft now records the leading command chip's claim token
(DraftSnapshot.command). Restoring the draft asks the trigger pipeline's
new resolveClaim, which polls the optional InputTriggerSource.matchClaim
hook: the command source awaits its catalog and answers only a
leadingInput claim, never opening a popup, running an action, or
executing the command. The input rebuilds the chip once the claim
resolves, only at the revision the restore produced and merged into the
seed's history entry; otherwise the literal token stays and Enter still
adjudicates it.
2026-10-15 13:18:01 +08:00
imccyu 5026df8fd1 Merge pull request #6250 from deepseek-harness/worktree-optbundles
feat(webworker): offer optional bundles in the preview and fetch lazy chunks on demand
2026-10-15 12:17:34 +08:00
imccyu 93d2ad2d25 feat(webworker): boot the preview from the shipped profile and fetch lazy chunks on demand
The packer images the web template bundles, every optional bundle, and an installation manifest instead of a dumped composition, and the Worker boots that profile through app-boot like dsh web. Package-local lazy client chunks move into content-addressed archives that the VFS fetches on first asynchronous read; client-modules reads chunks asynchronously.

The Worker replaces node-addon-require-builtin with Node v24.18.0 internal-module interfaces and reports Node 24, so plugin metadata, the Cordis Loader, and HMR reach one cascaded loader backed by the Worker loader. Resolution failures carry Node error codes, the empty load cache lets HMR apply profile changes, and every optional bundle switches on and off live. Platform stubs throw ERR_FEATURE_UNAVAILABLE_ON_PLATFORM.
2026-10-15 11:30:45 +08:00
turtle1999 b227127d62 fix(plugin-market): keep the Installed tab panel and list the markets bundle under More
The Installed tab panel now wraps its loading, unavailable, and empty states.
Custom plugin markets joins the bundles the More page holds back until the
profile enables them, and the repository field and its directory rule are
documented.
2026-10-15 05:37:44 +08:00
turtle1999 3de3a977e0 feat(plugin-market): add the Custom plugin markets bundle and Discover tab
Read configured plugin market indexes on the Host, search them with fuzzy
multilingual matching, and install a chosen version from the Plugins page.

- dsh-plugin-market-index validates format-1 indexes and builds install
  arguments; inline icons are capped at 32 KiB.
- The pluginMarket service fetches configured http(s) URLs, parses bodies in
  a Worker Thread, caches documents, and pages filtered, ordered results with
  installation status and engines.dsh compatibility.
- Discover is an opt-in experimental bundle; the Plugins page gains a
  plugins.tab slot and confirmed installs.
- The plugin_market tool lists indexes, plugins, and versions for Creator mode.
- Plugin compatibility reads engines.dsh before DSH peer dependencies.
2026-10-15 05:37:44 +08:00
imccyu bf1a2bf69c fix(inspector): serve the Client bootstrap while the Inspector Worker starts
A Client plugin loaded after the page starts fetches its bootstrap once. The Host now registers that route before starting the Worker and answers once the Worker is ready, so enabling Developer Tools on a running page opens the bottom DevTools without a reload. A failed start answers 503.

When the platform cannot run the Worker (ERR_FEATURE_UNAVAILABLE_ON_PLATFORM), the Host warns once and stays active with only the 503 bootstrap route; serve-static and open load after the Worker starts. Every other startup failure still fails the fiber.
2026-10-15 03:56:26 +08:00
Yichen Jiang 5d7d13289c test(web): decouple plugin snapshots from release versions 2026-10-14 20:59:15 +08:00
Yichen Jiang 853b1d3609 Merge master into DSH 0.2.1-alpha.3 synchronization branch 2026-10-14 20:34:43 +08:00
Yichen Jiang 36acfb1e88 release(dsh): 0.2.1-alpha.3 2026-10-14 19:38:37 +08:00
ZiyaZhang c1269a8f75 feat(plugins): standardize built-in previews and illustrate voice input 2026-10-14 02:19:42 -07:00
Turtle 4b3cb7629e Merge pull request #6206 from deepseek-harness/feat/builtin-plugin-preview-hardcoded
feat(plugin-manager): show a built-in feature preview for the badge skill
2026-10-14 17:07:10 +08:00
imccyu a941635df3 Merge pull request #5945 from deepseek-harness/worktree/client-control/operator-connect
feat(connection): scope the connect handshake to one operator
2026-10-14 16:56:53 +08:00
turtle1999andZiyaZhang a2141868de fix(plugin-manager): reset a failed preview by source instead of a key
Co-authored-by: ZiyaZhang <[email protected]>
2026-10-14 16:55:21 +08:00
turtle1999andZiyaZhang 7fcaf07051 feat(plugin-manager): show a built-in feature preview for the badge skill
Plugin Manager hardcodes feature previews by package name, like its
experimental bundle lists, instead of reading a package manifest field.
The DSH badge skill bundle shows an English or Chinese illustration
below its description. Client bundles embed imported SVG, PNG, and
WebP files as data URLs through the shared tsdown preset, which
replaces the account package's own asset loader.

Co-authored-by: ZiyaZhang <[email protected]>
2026-10-14 16:22:56 +08:00
imccyu 0f7ac58213 feat(connection): isolate API operators without changing browser identity 2026-10-14 14:44:00 +08:00
lsdsjy 2a7ba15ee1 fix(account): 同步头像渲染失败并完善恢复验证 2026-10-14 14:37:22 +08:00
lsdsjy 521c7c000f fix(account): 共享头像加载结果并在打开设置时重试 2026-10-14 14:06:32 +08:00
lsdsjy cb18185c9d Merge pull request #5532 from deepseek-harness/fix/bonus-notice-onboarding
fix(account): 延后赠金通知并隔离身份补齐通知
2026-10-14 13:27:37 +08:00
lsdsjy 5102f4f715 fix(account): 保留浏览器赠金通知并补齐身份订阅说明 2026-10-14 13:17:17 +08:00
Turtle bae0b78718 Merge pull request #5860 from deepseek-harness/turtle/stop-reason-visible-6a05d9dbbed1
fix(ui-chat): show a stopped notice for turns interrupted by a DSH stop
2026-10-14 12:41:24 +08:00
Magolor 7110b615eb fix(llm): 生成提供方元数据并显示凭据检测状态 (#6106)
* fix(llm): generate provider metadata and clarify credential hints

* fix(settings): shorten credential hints and mark detected sources in green

* fix(llm): verify staged provider metadata and document regeneration

* fix(provider-metadata): reconcile authentication hints and key controls

* test(user-text): calibrate ratio headroom across unmatched workloads

* test(gates): include provider metadata in hygiene expectations

* fix(models): hide authentication hints for entered keys
2026-10-14 12:29:31 +08:00
lsdsjy 6514255930 Merge origin/master into fix/bonus-notice-onboarding 2026-10-14 11:20:42 +08:00
Yichen Jiang 2182e3ad09 Merge remote-tracking branch 'origin/master' into worktree/command-delete-as-whole-21017f
# Conflicts:
#	packages/client/ui-conversation/README.i18n.yaml
2026-10-14 10:58:07 +08:00
imccyu 7f7940f0e2 fix(ui-chat): address second review on single fold motion
- A tail request counts only for closing rows that can start a batch,
  using the same membership rule as the batch, and detaching clears it.
- A batch keeps the reader landing while reading movement awaits
  sampling, so an unsampled scroll away from the tail is not undone.
- Reader scrolling during a reader landing moves the reference row's
  recorded position, so the final correction keeps only layout changes.
- The blank-area matrix releases a partly opened world, fails a case on
  cleanup errors, mounts only the provider catalog for the Turn that fails
  before its model call, names its gap as a layout gap, and labels the
  steering case as a no-fold control.
- The note records the pending-sampling rule and the opacity of a row
  that joins the travelling set after fading.
2026-10-14 01:53:16 +08:00
imccyu 06829b67b6 test(web): bound the fold matrix's live-Turn waits
The queued and steer cases held the model call at a global call index and
waited without bounds, so any shifted or missing call stalled the case
until the 240 s test timeout. The hold now targets the first call in the
case's Session that streams the case's marker text, every wait has an
explicit timeout whose error lists the observed calls and the Session's
latest events, scroll settling is bounded, and the cases use the web
lane's default timeout.
2026-10-14 00:51:05 +08:00
imccyu 25a69605ad fix(ui-chat): address review on single fold motion
- A tail request counts only while a fold batch runs or is scheduled,
  so rows still closing on CSS transitions cannot strand own input.
- A reader-content-still landing adds the reader's own scrolling between
  frames to the position it keeps still.
- A newer tail request that takes over a running batch recomputes which
  closing rows travel with the content.
- Symmetric cancel and resume guards; Set-based travelling bookkeeping.
- The blank-area matrix holds the subagent continuation route for child
  sends, writes per-frame evidence only on failure, and labels the parent
  message case as a no-fold control.
- The group-tree note now links the single fold motion for input without
  an echo on this page.
2026-10-14 00:32:00 +08:00
imccyu a4426261ab fix(ui-chat): fold next-message work details on one frame clock
Folding on the next message reserved the whole closing height as bottom
room and kept scrollTop whenever the input had no transcript echo on this
page: a message from another tab, a queued message delivered after the
previous Turn, or a send from a subagent child in the right Sidebar. A
reader below the fold was left on an empty viewport.

Every batch of closing rows now runs on the viewport's frame-clock driver.
It lands at the tail for this client's own input or a following reader and
otherwise keeps the reader's content still, installing only the room the
landing lacks. Subagent child sends register a local echo and pass its
request id to subagents.prompt, so the child's recorded message retires it.
2026-10-14 00:31:59 +08:00
turtle1999 879ad372ac feat(hmr): replace plugins whose package files changed during profile recomposition
With HMR, installing, enabling, disabling and removing bundles take effect live. Each profile recomposition compares
the loaded modules below the profile directory and its linked targets with disk, stops the plugins whose files
changed, and recomposes the profile through app-boot's recomposeProfile(): the rows the next generation drops are
removed first, the latest runtime resolution is published once, and the generation is applied and judged. Afterwards
HMR evicts the modules below the mappings the recomposition dropped.

- app-boot: recomposeProfile(); PluginPackages.resolution; ResolutionRestartRequired; the resolver accepts in-place
  version changes and relinks, and relocates Node's cached link real paths.
- plugin-manager: with HMR, installBundle refuses an installed package (already-installed), so an upgrade is a
  removal and an installation; every restart-required result carries a restartReason; removal uses the registry the
  package was installed from.
- ui-plugin-manager: the Official Update removes and then installs; restart prompts name their reason.
2026-10-13 22:15:57 +08:00
lsdsjy 32f81a511b test(web): use account menu in workspace hover tests 2026-10-13 16:06:53 +08:00
lsdsjy 2009b90d7e Merge remote-tracking branch 'origin/master' into feat/web-account-login
# Conflicts:
#	apps/web/tests/sidebar-terminal.e2e.ts
2026-10-13 15:48:48 +08:00
Yichen Jiang a611c4e891 Merge pull request #6117 from deepseek-harness/ui/header-actions-band-order
fix(web): 页头操作区顺序改为 预设 → 子智能体 → 后台任务
2026-10-13 15:39:01 +08:00
dsh-portal[bot] a6207eae63 fix(ui-subagent): order the header band preset, subagent catalog, background tasks
The root-session descendant-count dropdown registered at order -30, which put
it ahead of the preset label at the start of the header actions band. Order 10
places the catalog between the preset label (-10) and background tasks (20),
after Team navigation (-20), and off the list slot's default 0 that unordered
registrations share.

The web e2e assertion and header golden that pin these contributors' relative
order move with it.
2026-10-13 14:44:37 +08:00
Dudu-0223 b9958b901b Merge master into subagent-agent-presets and resolve integration conflicts 2026-10-13 14:10:56 +08:00
LogosVeritas 9f68f9be4a Merge pull request #6032 from deepseek-harness/feature/minimal-compact-image
Enable image reading and automatic context compaction in Minimal GUI and SDK profiles, with /compact in the GUI and per-tool filesystem configuration. Include image-budget recovery, cancellation handling, documentation, and updated runtime snapshots.
2026-10-13 13:56:25 +08:00
LogosVeritas 2de77d0339 test(snapshot): stabilize minimal compaction estimates 2026-10-13 12:10:16 +08:00
LogosVeritas b560423995 fix(minimal): configure tools and complete image offload recovery 2026-10-13 11:25:18 +08:00
LogosVeritas 4703022ad6 Merge remote-tracking branch 'origin/master' into feature/minimal-compact-image 2026-10-13 11:19:17 +08:00
fz 59b63f4ced Merge origin/master to include Azure native auth fix 2026-10-13 11:11:02 +08:00
Yichen Jiang 7a27ac50aa Merge pull request #6095 from deepseek-harness/worktree/hotfix-azure-native-auth
fix(llm-pi-ai): align Azure provider IDs with pi-ai 1.1.0
2026-10-13 11:03:04 +08:00
Dudu-0223 c6f60e68f0 Merge pull request #6008 from deepseek-harness/fix/subagent-depth-awareness
fix(subagent): announce exhausted delegation depth
2026-10-13 10:55:07 +08:00
Yichen Jiang 23a542fcfa fix(llm-pi-ai): align preview and settings with the Azure provider ID 2026-10-13 10:51:10 +08:00
LogosVeritas 00a007d833 Merge branch 'master' into feature/minimal-compact-image 2026-10-13 10:32:01 +08:00
fz 5d84c56d84 refactor(web): share font shortcut bindings and order actions 2026-10-13 10:23:43 +08:00
fz 3ea4f4baa3 Merge remote-tracking branch 'origin/master' into feat/page-font-size-shortcuts
# Conflicts:
#	apps/web/tests/expected/plugin-manager/header-responsive.expected.md
#	apps/web/tests/plugin-manager.e2e.ts
2026-10-13 10:13:38 +08:00
Magolor 5249d9a4ce fix: prefer saved credentials and use environment keys in headless (#5483)
* ui: show locked API key environment reference

* fix(ui-settings-models): skip unused pi-ai credential reference

* fix(ui-settings-models): show active provider auth source

* test(llm): cover provider auth check failures

* docs(ui-settings-models): clarify active provider authentication

* test(web): update model key copy snapshots

* fix(ui-settings-models): clarify native authentication source hint

* fix: address PR 5483 review feedback

* docs(llm): state empty auth lookup behavior

* fix: refresh auth hints with credential snapshots

* fix: require credential refresh revision

* test: cover auth status projection

* fix: refresh catalog and browser expectations after rebase

* fix: keep auth status projection internal and explicit

* fix: preserve credential source checks with signed-in account rows

* test: pin Models authentication instead of inheriting host keys

* fix: prioritize stored credentials across providers

* fix: use one environment fallback hint

* docs: refresh credential contract

* docs: refresh config catalog

* test: align provider hint verification

* fix: use provider-native auth hints and endpoints

* fix: cover oauth-capable provider auth hints

* fix: show canonical endpoint defaults

* fix: avoid misleading endpoint fallback

* fix: label catalog endpoint defaults

* fix: shorten auth hints with hover details

* fix: clarify native auth resolution

* test: align DeepSeek endpoint hint

* fix: pair help button corner shape

* fix: address credential precedence review

Record the stored-credential precedence in a superseding Agent Note and
an upgrade guide, and align the credentials subsystem page, package
READMEs, and JSDoc with the order file > launch env > $cwd/.env >
$DSH_HOME/.env.

Report each pi-ai route's catalog endpoint and native-auth environment
names through the provider directory, check the names against the
installed pi-ai resolvers, and remove the llm/checkAuth and credential
describe operations that no Models page code calls.

Restore the route-derived key reference and the home expansion that
reads the home directory only for a leading ~.

* fix: clarify model authentication guidance

* fix: explain native provider OAuth requirements

* fix: keep authentication guidance method neutral

* fix: show credential reference source in model editor

* fix: use environment authentication in headless profile

* fix: validate headless authentication and current provider metadata

* test: retain authentication guidance coverage with account catalog updates

* test: retain writable Models credentials with the pinned environment
2026-10-13 10:10:06 +08:00