Commit Graph
2278 Commits
Author SHA1 Message Date
Yichen Jiang f3f1c7a87d Merge branch 'feat/plugin-mgmt-3-settings' into feat/plugin-mgmt-4-web
# Conflicts:
#	packages/bundle/web-app/package.json
#	packages/client/ui-agent-preset/README.i18n.yaml
#	packages/client/ui-agent-preset/README.md
#	packages/client/ui-agent-preset/README.zh.md
#	packages/client/ui-settings-plugin-inventory/README.md
#	packages/client/ui-settings-plugin-inventory/README.zh.md
#	packages/client/ui-settings-plugin-manager/README.i18n.yaml
#	packages/client/ui-settings-plugin-manager/package.json
#	packages/client/ui-settings-plugins/README.i18n.yaml
#	packages/client/ui-settings-plugins/README.md
#	packages/client/ui-settings-plugins/README.zh.md
2026-09-08 17:02:09 +08:00
Yichen Jiang 5a9e1760fd Merge remote-tracking branch 'origin/master' into feat/plugin-mgmt-1-boot
# Conflicts:
#	apps/cli/src/dump-config.ts
#	apps/cli/src/profile-boot.ts
#	docs/capability-seams.i18n.yaml
#	docs/capability-seams.md
#	docs/capability-seams.zh.md
#	packages/boot/app-boot/src/profile.ts
#	packages/util/launch-environment/tests/launch-environment.spec.ts
#	scripts/check-workspace-constraints.ts
#	scripts/gen-cordis-catalog.ts
2026-09-08 16:42:34 +08:00
Yichen Jiang af2ebda892 test(web): compose the scaffold's stack with its user-disabled rows
The profile runtime reads user-disabled rows from the committed composition
now, so the e2e scaffold's stack carries the empty set and no longer hands the
runtime a patch reader.
2026-09-08 16:32:20 +08:00
Kaige-Gao babf22b4cf Merge pull request #3557 from deepseek-harness/slash-command-i18n
feat(web): localize slash command descriptions
2026-09-08 15:38:00 +08:00
lsdsjy 0707f4af3e Merge pull request #3700 from deepseek-harness/fix/open-in-app-ssh
fix(open-in-app): hide workspace app actions over SSH
2026-09-08 14:11:41 +08:00
Kaige-Gao aed565f382 Merge master into slash-command-i18n 2026-09-08 13:32:55 +08:00
Tianyi Cui 0bb083d898 Merge pull request #3646 from deepseek-harness/fix/pr-ci-reliability-20260906
fix(ci): 隔离临时存储并稳定测试夹具
2026-09-08 13:06:58 +08:00
mektpoy 0dc6ce26d7 Merge remote-tracking branch 'upstream/master' into issue-1424-goal-resume-activation 2026-09-08 12:48:51 +08:00
lsdsjy 5b8c8b781f test(open-in-app): scope SSH snapshot to the session header 2026-09-08 12:43:55 +08:00
lsdsjy a8d960ecb6 Merge master into fix/open-in-app-ssh 2026-09-08 11:37:46 +08:00
lsdsjy 28d478a80d Merge pull request #3681 from deepseek-harness/fix/busy-send-button-follows-setting
fix(web): make the running Send button follow the busy-Enter setting
2026-09-08 11:35:25 +08:00
lsdsjy 7f47954cad fix(open-in-app,directory-picker): share inherited SSH detection 2026-09-08 11:32:36 +08:00
mektpoy 514f92ba53 Merge remote-tracking branch 'upstream/master' into issue-1424-goal-resume-activation
# Conflicts:
#	packages/goal/goal/tests/projection.spec.ts
2026-09-08 11:23:08 +08:00
Yichen Jiang acbb8e0a06 feat(web): group the plugin list by packs and plugins, and quiet the row states
The list splits into Plugin packs and Plugins, each with its count, in
place of one Installed group; a library counts among the plugins. Retry
and uninstall close a package's page at its bottom-right as outlined
buttons, uninstall in red. A row that is off says so in two words: Off
when the person switched it off, Off by default when the pack keeps it
off; the reason it cannot be switched on stays on the locked switch.
2026-09-08 10:54:31 +08:00
Yichen Jiang 2df9414138 feat(web): style a pack's rows as entries and drop the done notice
Each row on a package's page is an entry: a plugin icon, the row id over
the module it loads, its state with a dot at the right, then its switch;
rows sit on the page ground one hairline apart, so they read on a white
page too, where the filled bars vanished. A failure keeps its own line
under the entry. The modules a plugin declares addable read the same way.

A finished enable, disable, retry, uninstall, or added row no longer posts
a notice: the re-read list shows the new state, and only a restart the
change waits for, or a failure, has something to say.
2026-09-08 10:36:53 +08:00
Yif 0ffbd65843 test(web): follow hero headline nesting and Tool definitions copy in e2e 2026-09-08 01:42:35 +08:00
Yifffan 7005d500b4 Merge branch 'master' into fix/input-placeholder-stat-ui-polish 2026-09-07 19:18:33 +02:00
Yif 256afa848c Merge remote-tracking branch 'origin/master' into fix/input-placeholder-stat-ui-polish
# Conflicts:
#	packages/client/ui-chat/src/client/locale.ts
#	packages/client/ui-chat/tests/gate-branch-tails.client.spec.tsx
2026-09-08 00:45:29 +08:00
Yif 2c45dfe71e fix(client): address review — pill accessible names, static untimed pill, exclusive stat dialogs
StatsPills buttons carry explicit aria-labels separating segments with
' · '; a log with no timed figure renders the counts pill as a static
reading instead of a button opening an empty dialog; the pills row owns
one exclusive open slot so sibling dialogs never stack. ContextMeter
restores the '~' approximation prefix (usedTokens prefers heuristic
projectedTokens). ModelSelect's jscpd:ignore now names the real gap
(useAnchoredPosition places from the left edge only). The pills Agent
Note's stale facts (locale keys, context occupancy, golden ownership)
are rewritten in place, en+zh. plan-review.e2e.ts parks the pointer
after Approve so the ContextMeter tooltip cannot leak into the aria
captures; affected goldens refreshed.
2026-09-08 00:35:04 +08:00
Tianyi Cui e73906d06f test(web): await seeded workspace membership before selection 2026-09-08 00:28:25 +08:00
Tianyi Cui ccb861d0e2 Merge branch 'master' into fix/pr-ci-reliability-20260906 2026-09-08 00:23:08 +08:00
Yichen Jiang 483e6b4920 feat(web): give every plugin package its own page
A card keeps the summary — name, one-liner, tags, its switch or Add to… —
and opens the package's page behind a crumb, as a preset card opens its
detail page: the version and source; a pack's rows as a list, every row on
one line with its state, its failure when one is recorded, and its switch
where the pack is switchable, with a filter past ten rows; the built-in
rows the pack changes; the modules the package declares addable, each
saying where it is composed, with an Add to… of its own; and retry and
uninstall. The expanded card and its component chips are gone with it.
2026-09-08 00:20:07 +08:00
Yichen Jiang f4f734964a feat(web): switch a plugin pack's components one by one
Each component chip of an external pack composed on a live-reload profile
carries a Switch that calls plugins.setRowDisabled against the profile's
global user layer: off writes `disabled: true` for the row id, on deletes
the key, and the tree recomposes at once while the rest of the pack keeps
running. A component the pack itself keeps off is locked with the reason,
since the user layer only denies; a failing component can be switched off;
a row another layer owns has nothing to switch. Built-in packs, packs that
are off, and profiles that apply patches at their next start keep the
read-only chips. Only the row with a write in flight goes inert.
2026-09-07 23:51:40 +08:00
imccyu 4a60189a63 fix(layout): prepare destination widths before fullscreen retreat 2026-09-07 23:00:56 +08:00
imccyu 77690644b5 fix(sidebar): show full file paths and refine split and fullscreen controls 2026-09-07 22:37:45 +08:00
Yif e939a482e9 Merge origin/master: reconcile placeholder rewording with steer-all and note archival
Master archived three Agent Notes this branch had fact-updated (archived
copies restored to their frozen master content; the pills note now links
the archived path), extended the steer-all placeholder to continuable
children (spec and subagent e2e take master's behavior with this branch's
reworded copy), and dropped the session-sharing sentence from feedback
acks (goldens re-refreshed with the new placeholder).
2026-09-07 22:01:06 +08:00
imccyu fe5aee7e71 test(web): cover Sidebar interactions and refresh recorded UI expectations 2026-09-07 21:29:42 +08:00
imccyu 508831624f chore(web): assemble Sidebar domains and register workspace packages 2026-09-07 21:29:41 +08:00
Yif 3997f36999 feat(client): replace the stats strip with two icon pills and click-open stat dialogs
The A/B winner over the single-line StatsLine: a gauge pill (counts + TPS,
opening the session-stats dialog) and a database pill (billed total +
cache-hit share, opening the exact token-usage dialog), sharing a new
stat-dialog module. StatsLine and its dead locale keys are deleted, the
gauge icon is optically centered, and the composer keeps its 4px clearance
through the data-composer-stats contract. Agent Note added; stale
StatsLine references across implemented notes updated in place.
2026-09-07 20:59:19 +08:00
Tianyi Cui 98c043ab0f Merge branch 'master' into fix/pr-ci-reliability-20260906 2026-09-07 19:44:51 +08:00
Yichen Jiang e379fa8bdd release(dsh): 0.1.3-alpha.2 2026-09-07 19:27:06 +08:00
lsdsjy 9a5ed6fb60 fix(web): make the running Send button follow the busy-Enter setting
The ui-conversation.busyEnter setting selected Queue or Steer for plain
Enter only; the running draft's Send button always submitted through the
public InputActions.submit() face, which is fixed to Queue, while labeled
"Send message". A user who chose Steer got Steer from Enter and Queue
from the button beside the same draft with nothing explaining why.

InputBar now resolves the primary click through the same `enter` gesture
and steer-availability predicate as the keyboard path (ordinary Sessions
and continuable children) and submits via ComposerKeyboard.submit(mode).
While that delivery is available the button's tooltip and accessible name
state it ("Queue message" / "Steer message"; 排队发送 / 插话发送), so the
mode is never hidden; idle sessions, one-shot children, and locked
composers keep the plain Send label. The composer bar inject face
publishes the live preference as hooks.busyEnter instead of a resolver
closure, and resolveSubmitMode is a pure function taking the preference
explicitly, so label and delivery derive from one value in one render and
the label follows live Settings changes. The Settings row is retitled
"Send behavior while busy" with a description that names both Enter and
the button; the busyEnter field, its default, and the Host schema are
unchanged.

Tests pin both preferences on the running button for ordinary sessions
and continuable children, the live relabel, the idle Queue path, and the
pure resolver; the settings-chrome ARIA goldens and the live-interactions
running-draft and queue-actions failed goldens carry the new copy. A new
Agent Note owns the decision and reverses the pointer-ignores-preference
clause of the archived 2026-08-20 running-draft note.
2026-09-07 19:14:21 +08:00
Tianyi Cui f3c98e4539 test(web): settle queue tooltip and select exact seeded session 2026-09-07 19:03:25 +08:00
pku-xht 0f83a2cdc0 Merge remote-tracking branch 'origin/master' into codex/subprocess-native-containment 2026-09-07 18:02:44 +08:00
ihsiang 9292dd8a2d feat(workspace): open the workspace in local apps from the web UI (#3409)
Add the first-party open-in-app host and client packages with a localized Open In menu in the Web Session header.

Resolve installed applications on macOS, Windows, and Linux, launch workspace directories through platform-specific adapters, and remember the selected application.

Closes #1500.

Co-authored-by: ihsiang <[email protected]>
2026-09-07 17:58:11 +08:00
pku-xht e9f1b6c53e Merge remote-tracking branch 'origin/master' into codex/subprocess-native-containment
# Conflicts:
#	.agents/notes/implemented/architecture/2026-07-16-explicit-turn-cancellation.i18n.yaml
#	.agents/notes/implemented/architecture/2026-07-16-explicit-turn-cancellation.md
#	.agents/notes/implemented/architecture/2026-07-16-explicit-turn-cancellation.zh.md
#	.agents/notes/implemented/architecture/2026-09-05-canonical-feedback-log.i18n.yaml
#	.agents/notes/implemented/architecture/2026-09-05-nonofficial-feedback-otel.i18n.yaml
#	.agents/notes/implemented/architecture/2026-09-06-embedded-stream-record-readers.i18n.yaml
#	.agents/notes/implemented/bug-fix/2026-09-03-normalized-unread-fs-tool-diagnostic.i18n.yaml
#	.agents/notes/implemented/bug-fix/2026-09-06-windows-python-console-spawn-wait.i18n.yaml
#	.agents/notes/implemented/feature/2026-08-26-generic-file-upload.i18n.yaml
#	.agents/notes/implemented/feature/2026-09-07-model-switch-notice.i18n.yaml
#	.agents/notes/implemented/process/2026-09-03-semantic-issue-templates-and-policy.i18n.yaml
#	packages/shell/bash-local/tests/executor.spec.ts
#	packages/subprocess/subprocess-local/README.i18n.yaml
#	packages/subprocess/subprocess-local/README.md
#	packages/subprocess/subprocess-local/README.zh.md
#	packages/subprocess/subprocess-local/src/spawn.ts
#	packages/subprocess/subprocess-local/tests/spawn.spec.ts
#	packages/subprocess/win32-process/package.json
2026-09-07 17:43:45 +08:00
Tianyi Cui 7ef325619f Merge branch 'master' into fix/pr-ci-reliability-20260906 2026-09-07 16:46:31 +08:00
Dudu-0223 96ead6091d feat(subagent): align human inbox controls (#3223)
* feat(subagent): align continuable human inbox controls

* fix: repair rebase documentation and close test persistence

* docs: refresh rebased module dependency graph
2026-09-07 07:39:39 +00:00
Tianyi Cui fa6bf62a98 fix(chat): settle pinned scroll deliveries before layout growth 2026-09-07 13:24:04 +08:00
mektpoy 03ce9c2ab3 Merge remote-tracking branch 'upstream/master' into issue-1424-goal-resume-activation
# Conflicts:
#	packages/terminal/terminal-bash/tests/local.spec.ts
#	snapshots/session/persistent-pwsh-tool-turn/session.v2.jsonl
#	snapshots/session/pwsh-tool-turn/session.v2.jsonl
2026-09-07 12:41:49 +08:00
Tianyi Cui fd9debed10 Merge branch 'master' into fix/environment-prompt-suffix 2026-09-07 12:41:16 +08:00
Tianyi Cui d49cbed379 Merge master and retain independent PR CI reliability fixes 2026-09-07 12:38:27 +08:00
mektpoy 35bc3a3c60 test(web): normalize browser timezone in snapshots 2026-09-07 12:12:02 +08:00
Tianyi Cui 24f6b30d10 test(web): isolate browser timezone and settle reference fixture queries 2026-09-07 12:00:18 +08:00
Yichen Jiang 9f8373df2b Merge branch 'feat/plugin-mgmt-3-settings' into feat/plugin-mgmt-4-web
# Conflicts:
#	docs/event-producer-consumer.i18n.yaml
#	docs/event-producer-consumer.zh.md
2026-09-07 11:53:38 +08:00
Yichen Jiang 84006d8d1f Merge remote-tracking branch 'origin/master' into feat/plugin-mgmt-1-boot 2026-09-07 11:44:35 +08:00
Tianyi Cui 571ee55ca6 test(web): pin recorded Cordis browser timezone 2026-09-07 11:38:36 +08:00
mektpoy ab62273984 Merge remote-tracking branch 'upstream/master' into issue-1424-goal-resume-activation 2026-09-07 11:37:52 +08:00
Tianyi Cui f5302b2b4d fix(test): isolate recorded Web browser timezone 2026-09-07 11:17:42 +08:00
Tianyi Cui 40792330c0 fix(system-prompt): keep model persona prefix and place cwd in suffix 2026-09-06 20:35:42 +08:00