Commit Graph
2008 Commits
Author SHA1 Message Date
creatixchu 6516fbcde8 Merge origin/master into worktree/steer-followup-images 2026-08-31 10:37:39 +08:00
imccyu 8769d57c98 fix(web): localize permission preset labels 2026-08-30 14:24:23 +08:00
Yichen Jiang 8448c05277 Merge pull request #3316 from deepseek-harness/worktree/plugin-list-display-cbe885
feat(plugin-inventory): scope-grouped plugin list carrying agent preset compositions
2026-08-30 14:00:23 +08:00
Yichen Jiang cf50cfa8ac Merge pull request #3315 from deepseek-harness/worktree/issue-3310-verification-a39d1a
fix(web): publish the drill claim before the descent edit
2026-08-30 12:46:30 +08:00
Yichen Jiang 6ff02e8a96 Merge remote-tracking branch 'origin/master' into worktree/plugin-list-display-cbe885
# Conflicts:
#	packages/client/tsdown.client.ts
2026-08-30 12:00:06 +08:00
imccyu 9135a13a8b refactor(consumers): remove cross-package runtime relays 2026-08-30 02:29:52 +08:00
Yichen Jiang 8349cc6c73 fix(agent-presets): live-mount-first inventory, per-runtime mounts, localized shipped preset names
Review round on #3316: the composition inventory answers from a standing
mount before the broken verdict (a file corrupted after mounting no longer
hides the running composition), livePresetMounts filters by the caller's
root fiber so a second Cordis runtime in one process never answers for it,
compositions carry trust and the plugin list resolves shipped preset names
through the shared dsh-agent-presets/display fold over ui-agent-preset's
dictionaries (INLINE_SAFE inline import; no cross-plugin runtime import),
the condition detail label reads Disabled when/禁用条件, and the stale
four-surfaces comment says three.
2026-08-29 20:41:01 +08:00
Yichen Jiang 3b73a415c2 Merge origin/master: RemoteError wire vocabulary and ctx-based preset stores
Reconciled with the scope-grouped plugin list: compositionInventory keeps
its additive block over master's RemoteError refactor; the slimmed
settings-store keeps ctx-based signatures while staying a display-only
roster store (no describeFace, no select); dead transport-rejection tests
dropped with the wire that no longer rejects; module graph, catalogs, and
harnesses regenerated against the merged tree.
2026-08-29 17:13:45 +08:00
Yichen Jiang 5eb7195f9d refactor(plugin-inventory): menu-pill preset switcher, collapsible groups, inline preset-provided rows
Review-driven refinements to the scope-grouped plugin list:

- The preset switcher becomes the General-settings selector pill over the
  shared Menu primitive instead of a native select, and the preset group
  is collapsible like the global one (search still forces both open).
- The session-plugins drawer is removed: rows the presets took over sit
  inline in the global list with the preset-provided tag and per-preset
  details, since the preset group above already shows those compositions.
- The status dot renders only for a live root fiber, so file-state rows
  of an unmounted preset carry their enablement tag alone instead of a
  column of grey dots.
- PresetTree reclaims the owning entry's subtree slot: EntryTree's
  constructor filed the standing mount under the roster's own Loader row,
  so after the first session composed a preset the whole composition
  leaked into root loader.entries() as host rows (each preset overwriting
  the last). A regression test holds the root entry list identical across
  a mount.
2026-08-29 17:13:45 +08:00
Yichen Jiang e5f36cc70f feat(plugin-inventory): carry every agent preset's composition and group the settings plugin list by scope
The settings plugin list projected ctx.loader.entries() alone, hiding the
plugins sessions actually run and rendering the web overlay's deliberate
disabled tombstones (tool-bash, tool-fs, ...) as two dozen plainly disabled
rows while the same modules ran in every standard-preset session.

- dsh-agent-presets: compositionInventory() answers flattened rows per
  preset — newest live standing generation when mounted, composition file
  otherwise with !!js disabled gates evaluated against the Loader context;
  reading never mounts (regression-tested), refusal stays 'conditional',
  raced files report broken with the reason.
- dsh-host-plugin-inventory: list() gains an optional agentPresets block,
  resolving the roster as an optional peer and mapping fiber states to the
  public phase vocabulary.
- ui-settings-plugin-inventory: preset group first behind a display-only
  switcher opening on the default preset; global group collapsed with
  failures floated; host-disabled modules enabled by >=1 preset fold into a
  session-plugins drawer naming providers; search spans scopes and points
  at matches in unselected presets.
- ui-agent-preset: the General-settings default-preset row is deleted — the
  roster section's make-default and the new-session chip keep the field —
  and the settings store slims to the display roster the header label reads.

Docs, catalogs, module graph, settings-chrome goldens, and the bilingual
Agent Note ride along.
2026-08-29 17:13:45 +08:00
Yichen Jiang d5a9e5b274 fix(web): publish the drill claim before the descent edit
A pointer drill in the @ menu left no breadcrumb and a crumb click dropped
the header, while the keyboard drill worked. InputTriggerController.settle
assigned `drilled` after execute() returned, but a pointer mousedown runs
outside any Lexical update, so the descent edit commits discretely and
re-enters track() during execute() — where refreshHeaders and
fetchCandidates both read the claim while it was still clear.

settle now claims the drill before dispatching the edit and withdraws it
only when the edit is refused, which mutates nothing and so drives no
re-entrant track().
2026-08-29 16:52:39 +08:00
imccyu 84c7ae3398 fix(web): align connection indicator labels 2026-08-29 11:18:58 +08:00
imccyu 18480ff902 test(connection): verify and document recovery behavior 2026-08-29 11:18:58 +08:00
imccyu 804b1ffbfc refactor(api): converge the Remote failure vocabulary and client surface
Single RemoteError with a merge-extensible, domain-prefixed code map;
owners throw at the failure point; streams surface marked failures;
clients consume ctx.remote directly with isRemoteFailure as the only
discrimination point and construct no failure instances.
2026-08-28 22:37:36 +08:00
Yifffan 12d7b4ed0c Merge pull request #3262 from deepseek-harness/feat/session-turn-stats-display
feat(web): turn-tail usage and time stat pills with anchored dialogs
2026-08-28 13:52:02 +02:00
Yif a0a350f640 Merge remote-tracking branch 'origin/master' into fix/web-ui-polish 2026-08-28 16:25:42 +08:00
Yif 3a0dd5d38b Merge remote-tracking branch 'origin/master' into feat/session-turn-stats-display
# Conflicts:
#	packages/client/ui-primitives/tests/icons.client.spec.tsx
2026-08-28 16:04:13 +08:00
creatixchu adfd7074f3 Merge remote-tracking branch 'origin/master' into worktree/steer-followup-images 2026-08-28 15:23:15 +08:00
Yif 21d039be1b fix(web): label the Turn-time TTFT row as first-token latency, not an average
The Turn fold publishes the first step's TTFT (contract/turn-metrics.ts
firstStepTtftMs), never an average; only the Session StatsLine averages
across steps. Rename the dialog row in both locales and align the Agent
Note with what actually ships.
2026-08-28 15:03:47 +08:00
Yif d461922627 Merge remote-tracking branch 'origin/master' into fix/web-ui-polish 2026-08-28 12:50:49 +08:00
Yif 66d0bbd5b5 test(web): align e2e suite with the hero-glow removal and menu retention
conversation-column-overflow existed solely to verify the glow bleed was
clipped; delete it with its golden. The geometry golden picks up the
scroll body losing overflow-x: hidden. reference-composer now waits for
the stale '@' rows to settle before clicking: the menu keeps the
previous query's rows while the next loads, and index-keyed rows swap
content in place.
2026-08-28 12:50:25 +08:00
Yif d6b30db252 Merge remote-tracking branch 'origin/master' into feat/session-turn-stats-display 2026-08-28 11:19:23 +08:00
creatixchu 878857a5f2 Merge remote-tracking branch 'origin/master' into worktree/steer-followup-images 2026-08-28 10:35:50 +08:00
pku-xht 5a8ef5f3f5 fix(web): tighten schedule catalog evidence 2026-08-28 09:28:33 +08:00
pku-xht 1a5d004524 Merge commit 'bc954280ae67e349291e51e5787c6987e767fa40' into schedule-web-catalog
# Conflicts:
#	packages/client/ui-workspace/src/client/rows/Rows.tsx
#	tsconfig.base.json
2026-08-28 07:24:24 +08:00
Yif 9effa0c6b3 feat(ui-chat): split turn stats into usage and time pills with dialogs
The turn tail's exposed meta line collapses into two icon pills — Usage
(database glyph, turn total) and Ran-for (clock glyph, wall time) — each
click-opening a details dialog; the calendar clock trails as plain text.
Cache hit, TPS, and TTFT move dialog-only, and narrow viewports collapse
the pills to bare icons. The TEMPORARY flat variant keeps the whole-line
trigger for the A/B test.
2026-08-28 01:34:18 +08:00
creatixchu b9060b4f9b Merge remote-tracking branch 'origin/master' into worktree/steer-followup-images
# Conflicts:
#	packages/context/file-reference-local/tests/search.spec.ts
2026-08-27 23:29:17 +08:00
Tianyi Cui 3ca9c7d489 rename code-mode to ptc (PTC mode), except session-persistent vocabulary
Rename the tool-presentation transport from code-mode to ptc everywhere
that is not written into session logs: the mode config value becomes 'ptc',
the preset directory/id becomes ptc, the demo becomes demo:ptc, the
dispatch waterfall becomes tools/ptc-dispatch-log (types PtcDispatch*), the
prompt rule becomes tools:ptc-only, source/test files become ptc.ts etc.,
and prose says PTC mode / PTC 模式. The session-persistent vocabulary
(durable events tool/code-dispatch*, logged plugin name tools-code-mode,
sub-call id segment :code:) intentionally stays and moves in the stacked
persistence PR, which is blocked until the SESSION_FORMAT_VERSION v0→v1
migration lands with it. run_code, its code parameter, CodeSdkLanguage,
CodeRunFailedError, the dsh-code-runtime family, third-party codex names,
and frozen archived notes keep their names.
2026-08-27 23:14:31 +08:00
Yif f15078532f feat(ui-chat): reshape the usage trigger as an icon-row pill
The whole-line meta trigger read as plain text and hid what was clickable.
The Turn-usage trigger is now a data-icon pill (Usage {total} · Cache hit
{percent}%) seated right of the branch action with the action buttons'
hover chrome, so the one interactive element in the tail is visibly a
button; the timing facts (clock, run time, speed, TTFT) return to plain
non-clickable text behind a dot separator. The details dialog keeps the
Turn-usage title and full token buckets, gains a permanent cache-hit row,
and breathes with wider vertical padding. Narrow columns trim the pill
label to an ellipsis instead of widening the chat column. User rows and
turn tails share the recency gate: only the latest row of each kind keeps
its actions visible without hover.
2026-08-27 23:14:08 +08:00
creatixchu 0158adc926 Merge remote-tracking branch 'origin/master' into worktree/steer-followup-images
# Conflicts:
#	docs/event-producer-consumer.i18n.yaml
#	docs/event-producer-consumer.md
#	docs/event-producer-consumer.zh.md
2026-08-27 22:33:20 +08:00
imccyu e57e7c3f25 docs(api): describe Connection-owned transport 2026-08-27 22:26:30 +08:00
imccyu e14d354e83 refactor(connection): own RPC transport contracts 2026-08-27 22:26:29 +08:00
imccyu 40929d6e1a refactor(client): replace host description consumers 2026-08-27 22:26:28 +08:00
imccyu 18ae39a665 fix(api): preserve native path opening behavior 2026-08-27 21:57:58 +08:00
imccyu 160706be60 test(api): refresh Remote migration artifacts 2026-08-27 21:57:56 +08:00
creatixchu 145f936946 test: stabilize queued image browser snapshot 2026-08-27 20:29:25 +08:00
creatixchu b71d0a35ef Merge remote-tracking branch 'origin/master' into worktree/steer-followup-images 2026-08-27 19:46:54 +08:00
Yif bb1df10c69 feat(ui-chat): collapse the turn tail into one clickable meta line
Replace the two-row footer (TurnUsageDisclosure + icon-row clock chrome)
with a single whole-line trigger (clock · run time · turn usage · cache
hit · speed · TTFT) that opens a per-Turn usage dialog. The latest turn
keeps its tail always visible; older turns reveal the whole row on
hover/focus. Turns without usage data keep the plain clock line with
identical spacing.
2026-08-27 18:27:02 +08:00
lsdsjyandYif 8b09a0be52 feat(ui-conversation): fold turn process before final answer (#2547)
* feat(ui-conversation): fold turn process before final answer

* fix(ui-chat): polish turn-process control row from review

* test(web): drive preset slash catalog with gestures

* fix(ui-chat): keep turn process order stable

* fix(ui-chat): preserve prompt order after pagination

Co-authored-by: Yif <877193178@qq.com>
2026-08-27 10:12:39 +00:00
creatixchu bf85410fbb Merge remote-tracking branch 'origin/master' into worktree/steer-followup-images 2026-08-27 16:35:03 +08:00
creatixchu ba810b3539 fix: harden subagent image follow-up admission 2026-08-27 16:31:04 +08:00
Yichen Jiang efd816c0dd Merge pull request #3182 from deepseek-harness/worktree/web-mention-ux-polish-1bf698
feat(web): trim @ mention rows and cut their discovery cost
2026-08-27 16:12:02 +08:00
creatixchu 381ea9fc5d Merge branch 'master' into worktree/steer-followup-images
# Conflicts:
#	packages/api/session-controller/src/client/contract/session.ts
2026-08-27 15:53:14 +08:00
Yichen Jiang 317ab06b24 Merge pull request #3176 from deepseek-harness/worktree/web-readable-ask-question-cards
fix(web): render readable ask-user transcripts
2026-08-27 15:45:58 +08:00
Yichen Jiang 093048d256 Merge remote-tracking branch 'origin/master' into worktree/web-mention-ux-polish-1bf698 2026-08-27 15:35:28 +08:00
CreatixChu c10be57913 Merge pull request #3111 from deepseek-harness/worktree/3003-instant-pending-submit
feat(web): 图片询问点击发送即回显,压缩与传输转入后台
2026-08-27 15:31:01 +08:00
creatixchu 7c38fd8102 fix: deliver images reliably with steer and follow-up messages
A steer or follow-up accepted while a turn is closing is now claimed by a
fresh turn at the driver's clean exit instead of stranding in the inbox;
cancellation and pre-step rejection still park accepted work. Continuable
subagent follow-ups accept image parts: the wire is upload-shaped, the Host
admits and persists each batch before inbox acceptance, and delivery is
refused when the child model declines image input. The queue dock renders
durable image thumbnails instead of an [image] text marker.

Fixes #3186
2026-08-27 15:30:35 +08:00
Yichen Jiang 8e9da9debf refactor(session-reference): label discovery from projections alone
A title now comes from an attached session's live projection cut or a cold
one's durable checkpoint, and from nothing else. Attachment is decided by the
session store at read time, so a session that attached after the listing is no
longer answered from a checkpoint its log has moved past — the stale-title case
`api-session.list` already handles this way.

The log fold and its per-log memo are gone. Folding one title costs a whole
log, and this call sits under every keystroke; a session no projection answers
for is labeled by its id and regains its title the first time it is opened.

`lib` leaves the default exclusions: Ruby gems and many npm packages keep
sources there, and the miss would be silent and total. A traversal whose root
is unreadable now rejects instead of publishing an empty index over entries
that are still good, which is what the stale-while-revalidate path claimed but
could not do while every readdir error was swallowed. A drill marks the menu
drilled only when its edit actually reached the draft.

Refs #3154
Refs #3180
2026-08-27 15:21:08 +08:00
Yichen Jiang 49753b33fa fix(web): keep question card props data-only 2026-08-27 13:21:22 +08:00
Yichen Jiang db14361372 test(web): scope the aria age normalizer to the region that needs it
Collapsing every relative-time bucket to `{{age}}` reached the session-tree
goldens, where a literal age is the assertion: a fresh row reads `now` and an
older one does not. Six e2e files failed, two of them by aborting mid-scenario
and leaving their replay fixtures half-consumed.

`captureStableAria` now takes the rule as an opt-in, and only the reference
menu — whose rows are dated from the live Host list — asks for it.

Refs #3154
2026-08-27 12:10:52 +08:00