Commit Graph

2130 Commits

Author SHA1 Message Date
Ziya
21a23db789 Merge branch 'master' into feat/produced-files-folder 2026-08-11 15:43:31 +08:00
_Kerman
d672eace2f style(client): refine drag insertion markers 2026-08-11 15:42:44 +08:00
imccyu
f0a6c25291 fix(client): apply theme before plugin loading 2026-08-11 15:35:32 +08:00
Turtle
5d591e55c1 Merge pull request #610 from deepseek-harness/codex/replace-surface-terminology
Replace overloaded surface terminology
2026-08-11 15:34:34 +08:00
_Kerman
3f09330f4b docs(web): record workspace sidebar behavior 2026-08-11 15:25:11 +08:00
_Kerman
6e303ac0b7 test(web): cover workspace sidebar behavior 2026-08-11 15:25:11 +08:00
_Kerman
8005ab78bd fix(client): keep flat sessions ordered by recency 2026-08-11 15:25:11 +08:00
_Kerman
c4affa852c style(client): reduce conversation tab indicator 2026-08-11 15:25:11 +08:00
_Kerman
23889483cf style(client): refine conversation tab indicator 2026-08-11 15:25:11 +08:00
_Kerman
3f315a0134 feat(client): refine workspace sidebar interactions 2026-08-11 15:25:11 +08:00
_Kerman
d86ecf7b29 style(client): collapse search into header action 2026-08-11 15:25:11 +08:00
_Kerman
4ce51888be fix(client): inherit current workspace for new sessions 2026-08-11 15:25:11 +08:00
_Kerman
a46a7bf912 style(client): simplify expanded workspace icon 2026-08-11 15:25:11 +08:00
_Kerman
325da4dab1 fix(client): preserve workspace browser interactions 2026-08-11 15:25:11 +08:00
_Kerman
e713cc820d style(client): polish sidebar spacing 2026-08-11 15:25:11 +08:00
_Kerman
1a1729a138 feat(client): refine workspace sidebar interactions 2026-08-11 15:25:11 +08:00
_Kerman
b3e843056e feat(workspace): support persistent workspace ordering 2026-08-11 15:25:11 +08:00
_Kerman
1d4ab4492e style(client): tighten sidebar layout 2026-08-11 15:25:11 +08:00
_Kerman
8e0cb2bdba feat(client): improve workspace session browsing 2026-08-11 15:25:11 +08:00
Turtle
0c708cb10d refactor: replace overloaded surface terminology 2026-08-11 15:23:05 +08:00
Yichen Jiang
63a294fa1b Merge remote-tracking branch 'origin/master' into worktree/custom-provider-edit-parity-f8c160 2026-08-11 15:16:23 +08:00
Tianyi Cui
7f14c7e165 refactor(web): hand session exports to browser downloads
The export endpoint already streams a ZIP response, but the web client immediately converted that response into a Blob. That forced the complete archive through JavaScript memory before a download could start and coupled transport, buffering, object-URL lifetime, and filename handling to the trajectory view.

Navigate a temporary download anchor directly to the export endpoint instead. The browser now owns streaming and HTTP failure presentation, while a standalone delivery module owns URL construction and filename sanitization. Focused tests cover the handoff, rejection behavior, and the assembled session view; the package README and feature note record the new ownership boundary.
2026-08-11 14:57:38 +08:00
Yichen Jiang
ab300feb80 Merge pull request #2245 from deepseek-harness/fix/preset-card-description-clamp
修复 web 端 Agent 预设卡片被长描述顶高
2026-08-11 14:39:29 +08:00
Yichen Jiang
d6d7953ae9 fix(web): flip a tooltip that the viewport has no room for
The bubble clamped horizontally and did nothing vertically, so a long
label under an anchor low on the page ran off the bottom. Preset cards
made that the common case: custom presets sit at the end of the roster
and carry the longest descriptions.

A `top` or `bottom` bubble now flips to the other side, and only into a
side that genuinely fits — an anchor with room on neither keeps the
requested placement rather than oscillating. Sliding the bubble
vertically instead would cover the text being read.
2026-08-11 14:26:18 +08:00
Yichen Jiang
9f5eb5da8a fix(web): clamp preset card descriptions instead of sizing the roster
A preset publishes its own description, of any length, and `.cards` sizes
rows with `grid-auto-rows: 1fr` — which makes every implicit row the same
height, not just the row holding the tall card. One long description
therefore set the height of the whole roster.

The description now clamps to four lines and offers the rest through the
shared Tooltip, attached only while the element actually overflows. Card
height stays derived: with the description bounded, `grid-auto-rows: 1fr`
already equalizes, and a card carrying the broken-preset reason or a
revealed path still sizes itself.

Tooltip gains an optional `maxWidth`; its default half-viewport cap
renders a description wider than the settings dialog it belongs to.

The failed-shape-check badge reads "Failed to load" rather than "Broken":
discovery reports a composition that is missing, unreadable, or malformed,
which overstates as damage.

Fixes #2238
2026-08-11 14:09:04 +08:00
_Kerman
c2569c3f9d feat(web): include referenced media in the session-log export
The export ZIP now carries every image any included log references under
media/<attachmentId>.<ext>, read and verified from the attachment store with
one entry per shared image. The endpoint requires the attachments service
alongside persistence and session-query; a referenced image that cannot be
read fails the stream like a missing descendant.
2026-08-11 14:08:58 +08:00
_Kerman
c8a201bebd Merge remote-tracking branch 'origin/master' into feat/web-session-log-export 2026-08-11 13:46:46 +08:00
Ziya
548b89c3d0 Merge branch 'master' into feat/produced-files-folder 2026-08-11 13:24:43 +08:00
Terra
346bfd23bf Merge pull request #1866 from deepseek-harness/feature/workspace-picker-composer
feat(web): open workspace picker from the composer
2026-08-11 13:01:38 +08:00
_Kerman
1b8175ddfd Merge remote-tracking branch 'origin/master' into feat/web-session-log-export 2026-08-11 12:59:05 +08:00
ZiyaZhang
4357be1565 test(web): cover produced-file lifecycle edges 2026-08-10 21:53:38 -07:00
ZiyaZhang
ee1a88c9f1 feat(web): make produced-file overflow discoverable 2026-08-10 21:53:38 -07:00
_Kerman
3a6112f641 fix(web): satisfy contracts-ready lint and dedup the stable-file read
Rescope nothing new: drop the needless async from the inherited readRaw
default (reject explicitly on abort), fix the void arrow shorthand in
downloadBlob, and share one revision-stable file-read loop between readRaw
and readPrefix in the JSONL backend.
2026-08-11 12:49:27 +08:00
_Kerman
118b1a8787 Merge remote-tracking branch 'origin/master' into feat/web-session-log-export
# Conflicts:
#	docs/subsystems/persistence.i18n.yaml
#	docs/subsystems/persistence.md
#	docs/subsystems/persistence.zh.md
#	packages/client/ui-trajectory/README.i18n.yaml
#	packages/client/ui-trajectory/README.md
#	packages/client/ui-trajectory/README.zh.md
#	packages/client/ui-trajectory/package.json
#	packages/client/ui-trajectory/src/client/TrajectoryView.tsx
#	packages/client/ui-trajectory/src/client/index.ts
#	packages/client/ui-trajectory/tests/client-bundle.spec.ts
#	packages/client/ui-trajectory/tests/views.spec.tsx
#	packages/host/apiproxy/package.json
#	pnpm-lock.yaml
2026-08-11 12:42:53 +08:00
Yichen Jiang
58cdf3d7f7 fix(client): adopt the renamed client plugin manifest key
Master moved the browser-half declaration from a top-level `dshClient` to
`dsh.client`, and the new package still carried the old key. The Loader row
resolved, the host half applied, and the bundle built — the browser simply
never mounted the entry, so the session header rendered no task control at all
while `ctx.tasks` held a running task. Nothing reported it; the web e2e is
what caught it.

Also carried the merged tree onto master's current package rules: the release
manifest shape (version, repository, workspace-protocol peers, no `private`)
and `@deepseek-ai/cordis` in place of the old `cordis` specifier, plus the
connection handle the locale plugin's settings scope now reads in tests.
2026-08-11 12:03:30 +08:00
Yichen Jiang
1a1c81f309 Merge remote-tracking branch 'origin/master' into worktree/web-background-tasks-display-258f7e
# Conflicts:
#	docs/subsystems/tasks.i18n.yaml
#	docs/subsystems/tasks.md
#	docs/subsystems/tasks.zh.md
#	packages/host/apiproxy/README.i18n.yaml
#	packages/host/apiproxy/README.md
#	packages/host/apiproxy/README.zh.md
#	packages/host/apiproxy/src/api-proxy.ts
#	packages/tasks/tasks-local/src/index.ts
#	packages/tasks/tasks/README.i18n.yaml
#	packages/tasks/tasks/README.md
#	packages/tasks/tasks/README.zh.md
#	packages/tasks/tasks/src/index.ts
2026-08-11 11:57:33 +08:00
_Kerman
2076c43442 fix(web): keep trajectory toolbar Duration/Turns/Calls/Export untranslated
Show the four toolbar terms in English even in the Simplified Chinese
dictionary, including their tooltips, aria labels, and the export failure
message, and update the pinned-zh specs to match.
2026-08-11 11:53:32 +08:00
_Kerman
ec9a08f1e2 refactor(web): rename trajectory detail tabs source→raw and origin→source
The markdown raw-source tab becomes Raw and the message-origin tab becomes
Source, keeping the renamed identifiers, labels, and overview links in sync.
2026-08-11 11:53:28 +08:00
Yichen Jiang
f9d36b05a1 Merge origin/master into worktree/web-plugin-config
Master gave the agent-preset nav its own glyph; this branch's plugins glyph
sits beside it, and both keep their own icon. Master's stricter
no-base-to-string rule also reaches this branch's new provider test, whose
fetch-call assertion now names the types it reads instead of stringifying an
unknown body.
2026-08-11 11:38:46 +08:00
Yichen Jiang
ca119b0e10 fix(web-plugin-config): address review — one options snapshot per search, no public value exports
Three findings from review survived against the staged-save head:

The search provider read its options thunk per property, so a settings write
landing inside credential resolution sent the key resolved from the old
section to the endpoint named by the new one. Each operation now snapshots
once at its entry and threads that snapshot into credential resolution; a
regression test drives a commit into the middle of a search and pins that the
endpoint, model, and key all come from the section the search started on.

The /client entry exported components, controllers, and namespace constants
with no consumer, which the client export discipline allows only with sign-off.
Only types remain. The duplicate per-card Injected/Face interface pairs are
one declaration each now, so a member added to one side cannot silently miss
the other.

The credential state carries the reference it describes and its writability: a
reference change no longer projects the old answer onto the new name, an
out-of-order response for a stale reference is dropped, and a key that a
deployment sources from the process environment disables the control instead
of inviting a write the Host must refuse.

Also corrected three prose claims against the code they describe: the card's
fields do not differ by platform (the served schema does), the section's empty
line counts registered rather than visible cards and is read once, and the
search README overstated what a configuration surface learns about a key.
2026-08-11 11:16:42 +08:00
Yichen Jiang
fdd64e9283 Merge origin/master into worktree/web-plugin-config
Master moved every workspace edge to workspace:^ and added release-member
fields; this branch's manifests follow, keeping only the dependency edges it
contributes. The client-runtime README keeps this branch's paragraph: master
did not touch it, and the base/user layers and `unset` it describes are what
this branch added.
2026-08-11 11:16:29 +08:00
NI0317
90a2a67b7e Merge remote-tracking branch 'origin/master' into feature/workspace-picker-composer 2026-08-11 11:09:36 +08:00
NI0317
1ac522ab5a docs(web): clarify workspace picker accessibility state 2026-08-11 11:08:14 +08:00
imccyu
45befb87e2 Merge branch 'master' into fix/agent-preset-ui-flow 2026-08-11 10:54:13 +08:00
NI0317
e3b4196ca0 Merge master into feature/workspace-picker-composer 2026-08-11 10:32:28 +08:00
imccyu
1af8c96682 perf(ui-trajectory): avoid locale formatting in hot path 2026-08-11 03:29:04 +08:00
imccyu
d66e693c63 fix(ui-trajectory): place steering before request boundary 2026-08-11 03:29:04 +08:00
imccyu
98a4cc6569 style(ui-trajectory): align presentation render tree 2026-08-11 03:29:04 +08:00
imccyu
2695f31edb test(ui-trajectory): assert deferred preview sources 2026-08-11 03:29:04 +08:00
imccyu
e27dba8457 perf(ui-trajectory): defer trajectory text processing 2026-08-11 03:29:04 +08:00