Commit Graph

1534 Commits

Author SHA1 Message Date
ZiyaZhang
4f5c730032 feat(web): combine plugin settings into tabs 2026-08-12 01:06:01 -07:00
ZiyaZhang
0fc77a7ba1 test(web): update onboarding settings snapshot 2026-08-11 23:13:28 -07:00
Ziya
29a089519d Merge branch 'master' into feat/web-loader-plugin-inventory-settings 2026-08-12 13:53:20 +08:00
Yichen Jiang
76805df26e Merge pull request #2326 from deepseek-harness/fix/onboarding-reads-every-provider
fix(web): 任意可用提供方即结束首次引导,setup 卡片可关闭
2026-08-12 13:52:45 +08:00
Ziya
91305c6240 Merge branch 'master' into feat/web-loader-plugin-inventory-settings 2026-08-12 13:49:57 +08:00
pku-xht
fc68949e1a Merge pull request #2296 from deepseek-harness/codex/workflow-run-auto-disclosure
feat(workflow): auto-follow run and phase disclosures
2026-08-12 13:49:36 +08:00
Ziya
91e073e5e1 Merge branch 'master' into feat/web-loader-plugin-inventory-settings 2026-08-12 12:51:46 +08:00
Yichen Jiang
d57463c2fb fix(web): end first-run onboarding on any usable provider
The step and the Models page both asked one question of a join that
describes every provider: is deepseek-official's credential stored? A user
who configured some other route was taken over on every blank session, and
the DeepSeek setup card opened over them on every visit to Models with a
Cancel that could not close it — while clearing the add card's draft,
because it shared the row-editor close handler.

providerUsable(row) now answers what both surfaces need: the route is
registered and whatever credential its profile names is stored. Readiness
(renamed onboardingReadiness) ends on any usable row, needsSetup takes the
same fact, and each card kind owns its own close handler.

Fixes #2325
2026-08-12 12:50:45 +08:00
_Kerman
d5ec13bdd9 Merge pull request #2250 from deepseek-harness/xtr/sidebar-workspace-controls
feat(web): improve workspace sidebar navigation
2026-08-12 12:41:53 +08:00
ZiyaZhang
2614a2df93 Refine plugin inventory card details 2026-08-11 21:10:14 -07:00
ZiyaZhang
6ed5df964e feat(web): add read-only Loader plugin inventory 2026-08-11 21:10:14 -07:00
Yichen Jiang
dfa2d91dcb Merge master into worktree/preset-user-root-in-package
Overlaps master on the preset e2e, the web scaffold, and the generated
config-catalog triplet; all merged textually, so the catalog is regenerated and
its pairing hashes re-recorded rather than trusted.
2026-08-12 11:08:55 +08:00
Ziya
4a8ee7674a Merge pull request #2287 from deepseek-harness/agent/black-whale-logo
style(web): use black hero whale with hover motion
2026-08-12 11:06:42 +08:00
_Kerman
3a0baa1e9d Merge remote-tracking branch 'origin/master' into dshw/pr-2250
# Conflicts:
#	packages/client/connection/tests/fake-api.client.ts
#	packages/client/runtime/tests/manager.client.spec.ts
#	packages/client/runtime/tests/workspaces-service.client.spec.ts
#	packages/host/apiproxy/tests/rpc-schemas.spec.ts
2026-08-12 04:50:51 +08:00
pku-xht
bbdeb5363b Merge commit 'a9cbb8db5009bccbd41746fc43c531b758e6a9fe' into codex/workflow-run-auto-disclosure 2026-08-12 02:53:08 +08:00
imccyu
19303da8de fix: no .map
fix: no map
2026-08-12 02:30:03 +08:00
imccyu
2c2d9f26e5 fix: client spec 2026-08-12 02:16:39 +08:00
_Kerman
ee3bdac52d test(web): refresh browser goldens for the compact workspace sidebar
Re-record the sidebar regions that the redesign intentionally changed:
group session counts are gone, search is a collapsed header action, and
grouping lives in the View options menu. Session rows also follow the new
recency ordering, so their tree order updates with the counts.
2026-08-12 01:32:23 +08:00
_Kerman
e76a03a20c test(web): adapt workspace browser e2e interactions to the compact sidebar
The sidebar redesign removed group session counts, collapsed search into a
header action, and moved grouping into the View options menu. Update the
browser scenarios that waited on the old surfaces:

- Wait on the Ungrouped bucket row instead of the removed session-count text.
- Expand the collapsed search control before filling the renamed input.
- Open the View options menu instead of the removed Group by button.
- Assert the persisted grouping under the new dsh.workspace.view.v4 key.
- built-boot: assert the fixture workspace group row instead of its count.
2026-08-12 01:32:08 +08:00
pku-xht
1b91e5b4fe fix(workflow): refold coalesced disclosure cycles 2026-08-12 01:01:25 +08:00
Ziya
dd0898ad9c Merge branch 'master' into agent/black-whale-logo 2026-08-12 00:54:39 +08:00
pku-xht
3dff212c5d feat(workflow): auto-follow run and phase disclosures 2026-08-12 00:38:46 +08:00
ZiyaZhang
d5820df03b fix(web): stabilize hero whale hover 2026-08-11 08:53:39 -07:00
imccyu
6332bd3513 fix: build 2026-08-11 23:33:18 +08:00
imccyu
027cbdfe5d refactor(faces): keep the generated contributions out of the Host aggregate
The Gateway and the carrier each compiled both halves under one tsconfig, so
the Host aggregate built their browser faces — including the face that owns
`ctx.remote`, the most likely future consumer of a generated `/remote`
contribution. Both packages now expose a host and a client face, and each
aggregate references only its own; three modules the halves share appear in
both file lists, as api/remotes already does.

The two apps/web specs in the Host aggregate restate the conversation engine's
Context key format instead of importing the Client runtime for it. A drift
makes the key miss its rendered node, so the assertion fails loudly.

The Host aggregate now reaches one Client project, the carrier's host face,
which the Gateway's own dispatch face needs; no generated contribution is
reachable from it.
2026-08-11 23:33:16 +08:00
imccyu
40af20cafe refactor(picker): split the directory-picker faces into their own packages
The browse and native backends were dual-face packages: a Node backend plus a
browser surface under one tsconfig that referenced Client packages. That put
Client projects — and through them the Client runtime — inside the Host
compiler aggregate, which builds before the generated Remote contributions
exist. Each browser half moves to its own Client package, and both backends
become Node-only.

The interaction is still one choice: the adaptive chooser mounts the backend
and its surface as a pair of Loader entries and tears both down in reverse, so
a resolved kind still swaps both faces. Compositions that pin an interaction
directly now pin the pair, and the chooser's runtime-string package list keeps
naming everything a composing app must resolve.
2026-08-11 23:33:16 +08:00
_Kerman
a2432be53b Merge remote-tracking branch 'origin/master' into dshw/pr-2250 2026-08-11 23:10:27 +08:00
imccyu
5ca7be5dcb release(dsh): 0.0.1-rc.2 2026-08-11 22:52:39 +08:00
_Kerman
a1d0d6a3a1 Merge remote-tracking branch 'origin/master' into dshw/pr-2250 2026-08-11 22:33:12 +08:00
Yichen Jiang
5091d31370 test(web): wait for the transcript the subagent golden pins
CI captured `- text: Loading history…` where the golden holds the grandchild's
first message. The only wait before that capture is the offline banner, which
renders from the descriptor and says nothing about the transcript below it,
and `captureStableAria` calls two identical polls stable — two of which can
both be the loading placeholder on a loaded machine.

Waiting for the message the golden asserts makes the precondition match the
assertion. The race is not observable here (the history is already loaded when
the banner appears, so the wait returns in ~1ms), so this is reasoned from the
CI log and the helper's semantics rather than from a local reproduction; if
the history instead never arrives on CI, the lane now times out on the missing
message rather than committing a loading placeholder to the diff.
2026-08-11 22:03:50 +08:00
Yichen Jiang
a5853244ed Merge remote-tracking branch 'origin/master' into worktree/minimal-profiles-bare-runtime 2026-08-11 21:45:38 +08:00
Yichen Jiang
d9dca88f33 test: stabilize steering mid-turn snapshot 2026-08-11 21:45:30 +08:00
Yichen Jiang
adfd54dc5c Merge branch 'master' into worktree/minimal-profiles-bare-runtime 2026-08-11 21:11:32 +08:00
Yichen Jiang
5c7dd6f8eb feat(agent-presets): own the writable preset root instead of awaiting an app
`Config.roots` defaulted to `[]`, so a deployment that did not patch both roots
in got a roster with none — `dsh run` once booted exactly that and failed
resolving `standard`. The user root never needed an app: `<dshHome>/.agent-presets`
is the same place in every deployment, resolvable here the way
`dsh-skill-local` resolves `<dshHome>/skills`.

The roster now derives that root itself unless `includeUserRoot` is false, and
`apps/cli` supplies only the SHIPPED root, whose path an installed app alone
can resolve. The derived root is appended after every configured root, so a
shipped id still shadows a home directory claiming it and `writableRoot()`
still prefers an explicitly configured `user` root; the set is resolved once at
construction, because a root set that changed between a `list()` and the
`copy()` acting on its answer would author into a directory the caller never
saw.

Every test that pins an exact roster now says `includeUserRoot: false` — the
machine's real harness home must not decide what a golden or an assertion
counts.
2026-08-11 21:09:35 +08:00
ZiyaZhang
3545bbbaaf Merge remote-tracking branch 'upstream/master' into feat/produced-files-folder 2026-08-11 05:58:13 -07:00
ZiyaZhang
67a5b2ceca Merge upstream master into feat/produced-files-folder 2026-08-11 05:40:11 -07:00
Tianyi Cui
01033361c1 Merge branch 'worktree/schedule-explicit-at' into worktree/schedule-fixed-rate 2026-08-11 20:34:42 +08:00
Tianyi Cui
7583778fbd Merge branch 'worktree/schedule-conversational-after' into worktree/schedule-explicit-at
# Conflicts:
#	packages/client/runtime/README.i18n.yaml
#	packages/client/runtime/README.md
#	packages/client/runtime/README.zh.md
2026-08-11 20:34:34 +08:00
Tianyi Cui
9dc4af386d Merge branch 'master' into worktree/schedule-conversational-after 2026-08-11 20:31:49 +08:00
ZiyaZhang
693a093dfe Merge upstream master into feat/produced-files-folder 2026-08-11 05:22:59 -07:00
Tianyi Cui
d991327507 Merge branch 'worktree/schedule-explicit-at' into worktree/schedule-fixed-rate 2026-08-11 20:07:51 +08:00
Tianyi Cui
3e131befb5 Merge branch 'worktree/schedule-conversational-after' into worktree/schedule-explicit-at 2026-08-11 20:06:58 +08:00
Yichen Jiang
f7efe2a3b3 Merge remote-tracking branch 'origin/master' into worktree/web-plugin-config 2026-08-11 20:03:23 +08:00
Tianyi Cui
466854a1d6 Merge remote-tracking branch 'origin/master' into worktree/schedule-conversational-after 2026-08-11 20:03:21 +08:00
Tianyi Cui
ac9ba8ce28 Merge branch 'worktree/schedule-explicit-at' into worktree/schedule-fixed-rate 2026-08-11 20:00:32 +08:00
_Kerman
ef3eb0494c Merge remote-tracking branch 'origin/master' into xtr/sidebar-workspace-controls 2026-08-11 19:58:15 +08:00
Tianyi Cui
e4fdd4b1e9 Merge branch 'worktree/schedule-conversational-after' into worktree/schedule-explicit-at 2026-08-11 19:57:55 +08:00
Tianyi Cui
5f64b6815c Merge remote-tracking branch 'origin/master' into worktree/schedule-conversational-after
# Conflicts:
#	docs/event-producer-consumer.i18n.yaml
#	docs/event-producer-consumer.md
#	docs/event-producer-consumer.zh.md
2026-08-11 19:54:39 +08:00
Yichen Jiang
fb6fb1fa12 Merge origin/master into worktree/web-plugin-config, adapting to ctx.remote.$on
#2201 landed three moves this branch sits on top of. `bindSettingsScope` became
`ctx.settingsScope.bind` on the Settings surface, so the section injects that
service and the Remote face instead of importing a free function; the
`SettingsScope` types moved into the runtime contract module, which is where
this branch's `base`, `user`, and `unset` now live; and the client
`credentials/changed` event became the forwarded owner event
`credentials/updated`, which the web-search card subscribes to through
`ctx.remote.$on`.

The generated module graph crossed mermaid's 1000-edge render guard with this
branch's 14 new edges. The guard doubles again, exactly as it did at 500 — the
graph counts real package edges, and trimming them to fit a renderer default
would make the document lie about the dependency set.
2026-08-11 19:52:34 +08:00
creatixchu
b9e6113af0 Merge remote-tracking branch 'origin/master' into worktree/multimodal-ui
# Conflicts:
#	docs/module-graph.i18n.yaml
#	docs/module-graph.md
#	docs/module-graph.zh.md
2026-08-11 19:44:01 +08:00