Commit Graph

2208 Commits

Author SHA1 Message Date
Yichen Jiang
3c8cf3a564 fix(client-ui-plugin-config): refresh the key badge when the Host reports the credential changed
The card read the credential only when its settings scope published, and a
credential is not part of any settings section: a key written from the Models
page — which addresses the same reference — left this badge reporting a state
the Host had already replaced. It now re-reads on credentials/changed for the
reference it watches, and ignores the event for any other reference.
2026-08-11 18:00:24 +08:00
ZiyaZhang
ed4b27e1af Merge remote-tracking branch 'upstream/master' into feat/produced-files-folder
# Conflicts:
#	docs/module-graph.i18n.yaml
#	docs/module-graph.md
#	docs/module-graph.zh.md
2026-08-11 02:59:50 -07:00
Tianyi Cui
544a17f604 Merge origin/master into worktree/pr2177-export-fixes-20260811
Master advanced again after the first merge-forward checkpoint, adding the web human-transcript command-input change. Preserve the earlier checkpoint and merge the new exact e03b51d7 base as a separate commit instead of rebasing or rewriting this merge-heavy stack.\n\nThe incremental merge is conflict-free and keeps the session-export review fixes based on the repository's current integration state.
2026-08-11 17:53:13 +08:00
Chinesezjc
5867c00faf test(feedback): reach the per-file coverage gate
Cover the reachable controller and control branches: each failure code's
copy, dispose-during-flight, non-Error rejections, and non-conflict
mutation failures.

Two paths were unreachable rather than untested, so remove them instead:
commit() cannot run after disposal because mutate() refuses admission
first, and the mutation tail cannot reject because every queued operation
settles as a result. Pass the recorded rating into the note save so the
editor's render site proves it exists.
2026-08-11 17:52:09 +08:00
_Kerman
e991c63bdb test(client): cover workspace ordering transports 2026-08-11 17:51:40 +08:00
_Kerman
6898b06160 fix(client): restore host-confirmed workspace order 2026-08-11 17:51:31 +08:00
_Kerman
7222a99e33 refactor(client): remove dead sidebar ordering surfaces 2026-08-11 17:51:18 +08:00
Tianyi Cui
d1aae98895 docs(connection): describe native export handoff accurately
The fixture comment still said the Trajectory action used window.fetch after the implementation moved to a temporary download anchor. That wording implied client-side response handling and buffering which the browser-download design deliberately avoids.\n\nDescribe the actual native download-manager handoff while retaining the important contract: the fixture download stub only satisfies the host type and is unreachable through fixture dispatch.
2026-08-11 17:46:25 +08:00
creatixchu
87e3c95027 fix(web): review-round attachment refinements
Body-portal the lightbox and toast so transformed ancestors cannot trap
their fixed positioning (a lightbox opened from a chat message covered only
the chat column); make the toast pointer-transparent; observe the rail
element's own size instead of window resizes; consume vertical wheel ticks
exclusively via a non-passive listener with LINE/PAGE delta normalization;
keep the start position when the rail mounts over an existing draft; honor
prefers-reduced-motion for the toast, remove-control, and paging; retry
loads through the guarded load effect; note the deliberate promptError
re-announce; pin the intake toast in the assembled snapshot; sync the
superseded multimodal note and package docs.
2026-08-11 17:45:11 +08:00
Tianyi Cui
c626d5f53c Merge origin/master into worktree/pr2177-export-fixes-20260811
Refresh PR #2258 onto master at 5427cbcc19 so the session-log export fixes are evaluated and mergeable against the current repository.\n\nPreserve master's SDK-toolchain removal, client theme bootstrap, and Python finish-reason changes intact. The only textual overlap is the generated config-catalog pairing record: both English and Chinese catalogs merge cleanly with the PR's compression setting and master's package moves, so regenerate that sidecar from the merged owners instead of choosing either stale hash.
2026-08-11 17:39:19 +08:00
NI0317
d06a7e07e5 feat(web): show command inputs in the human transcript 2026-08-11 17:19:51 +08:00
Chinesezjc
5fe63fe138 Merge remote-tracking branch 'origin/master' into feat/web-message-feedback-ui 2026-08-11 17:14:28 +08:00
Chinesezjc
526febc44d feat(feedback): add the Web surface for message feedback
Consume the durable message-feedback sidecar from #2217 in the browser:
per-message Like/Dislike with an optional note, contributed through a
declared assistant-actions slot.

- carry MessageId on finalized AssistantMessageNode so a target is nameable
- declare conversation.chat.assistant-actions and render it in the
  IconActions row between copy and branch
- hold one FeedbackController per Session with per-item ifVersion CAS,
  reconciling a version-conflict from the reply's authoritative item
- mount messageFeedbackRemote alongside goalsRemote
2026-08-11 17:14:21 +08:00
Ziya
6e573475ec Merge branch 'master' into feat/produced-files-folder 2026-08-11 17:02:30 +08:00
creatixchu
e611e825b1 feat(web): align attachment display with DeepSeek Chat via ui-attachment atoms
Single-click original preview in the composer rail and chat history; remove
control inside the thumbnail, revealed on hover/focus (always on touch);
hidden-scrollbar rail overflow paged by edge arrows with wheel panning and
end-reveal on add; image-intake rejections and prompt failures announce as a
transient top-center toast instead of inline strips.

The attachment atoms move to a new zero-cordis package
@deepseek-ai/dsh-client-ui-attachment (rail, message gallery, lightbox),
seeded as a platform module; the toast is a ui-primitives atom. Strings
arrive as label props bridged from the conversation dictionary.
2026-08-11 17:01:29 +08:00
_Kerman
ed39516c20 test(client): type session timestamp assertions 2026-08-11 16:49:29 +08:00
_Kerman
79b9f3d524 style(client): reduce expanded search height 2026-08-11 16:49:26 +08:00
_Kerman
fcbe3ac836 fix(client): preserve sidebar drag ordering 2026-08-11 16:49:21 +08:00
_Kerman
5b1da441d5 fix(client): refine workspace view controls 2026-08-11 16:46:52 +08:00
Tianyi Cui
f21977383b Merge remote-tracking branch 'origin/master' into worktree/pr2177-export-fixes-20260811
# Conflicts:
#	docs/config-catalog.i18n.yaml
#	docs/subsystems/persistence.i18n.yaml
#	packages/session/session-persistence-jsonl/README.i18n.yaml
#	packages/session/session-persistence/README.i18n.yaml
2026-08-11 16:18:28 +08:00
_Kerman
34e90dc3fe test(client): accept session creation timestamps 2026-08-11 16:03:13 +08:00
_Kerman
bc390318ac Merge remote-tracking branch 'origin/master' into xtr/sidebar-workspace-controls 2026-08-11 15:59:40 +08:00
_Kerman
2ad471123d fix(client): persist workspace drag order 2026-08-11 15:57:43 +08:00
_Kerman
31768a348e fix(client): update recency from user messages 2026-08-11 15:57:34 +08:00
Chinesezjc
b86c2f351c Merge remote-tracking branch 'origin/master' into codex/disable-telemetry-default
Resolve three conflicts:

- packages/bundle/base/tests/base.spec.ts: keep both assertion sets — this
  branch's telemetry-otel mode expression and master's subagent rows plus
  manifest dependencies.
- packages/session/session-telemetry-otel/tests/otel.spec.ts: keep master's
  per-mode sharing disclosure test, but select FULL explicitly instead of
  relying on an omitted mode, because the default is now DISABLED; the
  default-construction test keeps asserting disabled delivery and gains a
  case pinning that an omitted mode reports 'disabled' sharing.
- scripts/snapshots/translation-prompt-v4/request-response.expected.json:
  re-recorded from the merged READMEs rather than hand-merging the embedded
  document text.
2026-08-11 15:57:02 +08:00
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