1961 Commits
Author SHA1 Message Date
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
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
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
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
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
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
Dudu-0223 cbacceca4b fix(ui-settings-plugins): place Subagent after Agent loop 2026-08-27 12:00:02 +08:00
Dudu-0223 d5787b1847 test(web): expect plugin cards to collapse after save 2026-08-27 12:00:02 +08:00
Dudu-0223 0b2f476071 fix(ui-settings-plugins): align Subagent configuration card 2026-08-27 12:00:02 +08:00
Dudu-0223 7c626fb5d2 fix(subagent): gate model selection with explicit allowlist 2026-08-27 12:00:02 +08:00
Dudu-0223 aefc083be7 feat(subagent): authorize selectable child models 2026-08-27 12:00:01 +08:00
Dudu-0223 f887a8f907 fix(web): move subagent model switch to Plugins 2026-08-27 12:00:01 +08:00
Yichen Jiang 97e0299f74 feat(web): trim @ mention rows and cut their discovery cost
Session candidates labelled from projection checkpoints instead of a full
log fold per keystroke, with the uncheckpointed remainder folded once and
memoized while its log stays cold. The file index keeps answering while an
invalidated traversal rebuilds behind the caret, and its default exclusions
now cover build outputs so deep sources stay reachable.

Rows carry only what distinguishes them: a file names its parent directory,
a session names its workspace only when that workspace is not the current
one, and a drilled listing names none because its new breadcrumb does.

Resolves #3180
Related to #3154
2026-08-27 11:42:06 +08:00
Yichen Jiang 94db8e881b fix(web): render readable ask-user transcripts 2026-08-27 11:28:59 +08:00
creatixchu 25ae5ae6e0 Merge remote-tracking branch 'origin/master' into worktree/feedback-otel-enable 2026-08-27 11:19:57 +08:00
creatixchu 16a7ead9ab Merge remote-tracking branch 'origin/master' into codex/pr-3111-review
# Conflicts:
#	scripts/ci-workflow.spec.ts
2026-08-27 10:57:27 +08:00
Yichen Jiang a24c71127f Merge pull request #3155 from deepseek-harness/feat/web-input-trigger-menu-polish
feat(web): 输入触发菜单(/ 与 @)呈现打磨
2026-08-27 10:12:39 +08:00
imccyu 9fdbec00ee fix(web): reuse the preview Remote helper 2026-08-27 03:06:59 +08:00
imccyu 5918dd205e refactor(client): use settings Remote namespaces 2026-08-27 03:01:02 +08:00
imccyu 011d53862d refactor(client): use directory-picker Remote 2026-08-27 02:20:38 +08:00
Yif 9ec543c943 Merge remote-tracking branch 'origin/master' into feat/web-input-trigger-menu-polish
# Conflicts:
#	apps/web/tests/agent-preset-selection.e2e.ts
2026-08-26 21:35:21 +08:00
Yif 0114dc1f81 feat(web): polish the input trigger menu presentation
Candidate rows lead with domain icons instead of localized text
prefixes; pointer and keyboard share one reducer-owned highlight (last
input wins); drillable folder rows reveal a localized Browse-folder +
Tab keycap hint with the library chevron; pending sources render
skeleton bars; the menu spans the composer card. The editable @dir/
text decorates color-only — the domain icon now belongs exclusively to
the settled reference chip. Composer placeholders advertise / and @,
and the zh copy for commands is unified to 指令.
2026-08-26 21:17:46 +08:00
yx.zhang 9e33469913 fix(review): correct the secondary-tier floor claim and pin engine-resolved sizes
The Agent Note (both languages), the PR prose, and the commit message
claimed a 13px floor for the table variants; the formula has none —
max(13px, setting − 2px) selects the −1 branch at low settings rather
than clamping the result, so the tier bottoms out at 11px at the 12px
setting, matching think text. Rewrite the claim, say so in the axis
comment, and split the README sentence that lumped body-pair and
secondary-pair consumers together.

Assert the engine-resolved secondary size in the settings-chrome e2e
(13px at the default, 13px at the 15px boundary, 14px at 16px,
unchanged across reload), sync the StatsLine and workflow-panel spec
headers with the tier they now pin, and note why memberLabel stays at
the body size.
2026-08-26 19:28:04 +08:00
Yichen Jiang 21a2a38a2f Merge pull request #3125 from deepseek-harness/worktree/composer-editable-gate
test(web): gate composer gestures on the editable attribute
2026-08-26 16:54:37 +08:00
Yichen Jiang 21e5ee9071 test(web): derive the editable gate from the gesture target
Review follow-ups: wait on the caller's own locator instead of assuming
it is the page's first composer, describe the actual read-only window
(submit adjudication and locked states — a running turn stays editable
for queueing), drop the pre-Lexical narration from the JSDoc, and record
the gesture-semantics trap as an Agent Note.
2026-08-26 16:35:49 +08:00
Yichen Jiang 10d1c603be Merge remote-tracking branch 'origin/master' into worktree/composer-editable-gate
# Conflicts:
#	apps/web/tests/permission-policy-context.e2e.ts
2026-08-26 16:11:32 +08:00
Yichen Jiang e5d39b6076 Merge origin/master into worktree/fix-question-drafts-session-switch 2026-08-26 15:51:15 +08:00
creatixchu 3031cb0e33 Merge remote-tracking branch 'origin/master' into codex/pr-3111-review
# Conflicts:
#	packages/api/session-controller/src/client/contract/snapshot.ts
#	packages/test-support/client-runtime/src/sessions.ts
2026-08-26 15:34:18 +08:00
ChinesezjcandCodesmith ac36c6b975 test(web): drain trajectory scroll timer before teardown
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
2026-08-26 15:09:49 +08:00
imccyu 5dba32bb48 Merge pull request #3083 from deepseek-harness/worktree-apire-b
refactor(apiproxy): subagent control to Remote
2026-08-26 15:08:59 +08:00
Chinesezjc 41591aa57f Merge branch 'master' into worktree/composer-editable-gate 2026-08-26 15:00:57 +08:00
Yichen Jiang 605e33a2f5 fix(web): address question draft review feedback 2026-08-26 14:53:37 +08:00
imccyu 00c37f4ead test(web): drive preset slash catalog with gestures 2026-08-26 14:52:54 +08:00
imccyu b8360cac53 test(web): wait for editable permission composer 2026-08-26 14:52:53 +08:00
imccyu 91fea67745 test(subagent): cover Remote control migration 2026-08-26 14:52:53 +08:00
Yichen Jiang 56d3e8f82a fix(agent-presets): answer health from the walk alone, and keep the reason reachable
`import.meta.resolve`'s `parentURL` argument takes effect only under
`--experimental-import-meta-resolve`, which no launch passes, so the
fallback resolved from this module rather than from the harness — the one
question it existed to answer. The disk walk is the whole answer now, and
the refusal memo it needed goes with it. A `file:` URL joins the file
branch rather than the package one, where a resolver would only normalize
it and report a missing target as present, and a row is skipped on the
Loader's own `Boolean(disabled)` so `disabled: 0` is checked like the
Loader checks it.

A broken card says so through `aria-disabled` rather than `disabled`, and
refuses the pick in its own handler. `disabled` took it out of the tab
order, which with the reason moved onto the badge left it unreachable
without a pointer — reachable before this change, so hiding it was a
regression rather than a path that never existed.

Both notes this decision partly supersedes are updated in place and
cross-linked, one README pair loses an editing residue that repeated a
sentence, and the single-row diagnostic no longer reads "row row 1".
2026-08-26 14:42:39 +08:00
Yichen Jiang f95cbca9ce test(web): target the editable command composer 2026-08-26 14:39:58 +08:00
Yichen Jiang 2831054b97 test(web): await editable composer between turns 2026-08-26 14:30:56 +08:00
creatixchu fab41be07e Merge remote-tracking branch 'origin/master' into codex/pr-3111-review 2026-08-26 14:21:56 +08:00
Yichen Jiang 2cb1a323b7 Merge remote-tracking branch 'origin/master' into worktree/fix-question-drafts-session-switch 2026-08-26 13:44:45 +08:00
Yichen Jiang 94e3bfd5d1 test(web): gate composer gestures on the editable attribute
A running turn disables the composer by flipping contenteditable to
false on the same element. fill() throws there immediately — a disabled
textarea used to hold it back through actionability — and isEnabled()
reports true for a div regardless, so the permission-policy scenario's
post-settle wait never waited and its next gesture raced the re-enable
render. The window is a few frames wide; #3083's Remote-routed subagent
control stretches settle enough to hit it on CI.

writeComposerDraft now waits for contenteditable="true" before acting,
and the permission-policy scenario drives all four sends through it with
the settle wait pinned to the attribute.
2026-08-26 13:44:32 +08:00
Yichen Jiang cd3401a39a Merge remote-tracking branch 'origin/master' into worktree/wizardly-maxwell-194a2a
# Conflicts:
#	packages/client/ui-agent-preset/src/client/seat-store.ts
2026-08-26 13:37:53 +08:00