Commit Graph

12088 Commits

Author SHA1 Message Date
Yichen Jiang
fdb1c47896 docs(settings): scope the ordering claim and record the deferred wire gaps
Card registration order is stable only for cards one package installs
together: apply order between packages is unconstrained, so several
external cards can still reorder between boots. The note and README said
otherwise. Recorded alongside it: the redactor returns a secret reachable
only through a union, intersection, or transform verbatim, and serving
every registered namespace widens that gap to third-party schemas; and
the headline capability still lacks an assembled-composition test.

publish() now keeps its snapshot reference when neither the loaded flag
nor the dispatched namespaces moved, so an unrelated settings commit no
longer re-renders the card list.
2026-08-12 21:41:23 +08:00
Yichen Jiang
07d608a392 Merge remote-tracking branch 'origin/master' into feat/plugin-owned-settings-surface 2026-08-12 21:38:20 +08:00
Turtle
a0c60fc7b9 Merge pull request #2405 from deepseek-harness/codex/recommend-agent-architecture-docs
docs: recommend agent-assisted architecture exploration
2026-08-12 21:35:56 +08:00
Yichen Jiang
5d9f026e55 fix(settings): correct the exposure analysis and satisfy the coverage and lint gates
The Agent Note claimed the plugin inventory page already exposed every
mounted plugin's effective configuration to the same browser, so the
removed allowlist blocked nothing a caller could not already read. That
is false: PluginInventoryEntry carries entryId, moduleName, enabled, and
fiberPhase, and the page's configuration row renders an enabled tag, not
a stored value. The allowlist did keep an unlisted namespace's resolved,
base, and user values off the wire; the note now says so and rests the
decision on the loopback pin, secret redaction, the user's own document,
and the fact that permission and agent-presets were already served.

The post-await disposal check reads through an opaque method, mirroring
the settings seam's isStopped(): control flow narrowed the field to false
across the await, so the lint gate saw the guard as dead.
2026-08-12 21:35:21 +08:00
Yichen Jiang
d8035680b9 test(settings): cover the section directory's disposal, stale-read, and invalidation paths
The per-file coverage gate flagged four uncovered locations the new
section directory introduced: refresh() after disposal, a read superseded
by a newer one, and the two invalidation handlers that make the served
namespaces re-read (settings/document-updated and connection/reset).
2026-08-12 21:24:53 +08:00
Turtle
ca5e67490e docs: recommend agent-assisted architecture exploration 2026-08-12 21:23:06 +08:00
Yichen Jiang
9fecbd86d7 Merge remote-tracking branch 'origin/master' into feat/plugin-owned-settings-surface
# Conflicts:
#	docs/architecture.i18n.yaml
#	docs/architecture.md
#	docs/architecture.zh.md
2026-08-12 21:14:54 +08:00
Turtle
66c6059ca8 Merge pull request #2376 from deepseek-harness/human-doc
docs: rework the architecture map and sync its Chinese pair
2026-08-12 21:13:47 +08:00
Yichen Jiang
4cf285c26e Merge remote-tracking branch 'origin/master' into feat/plugin-owned-settings-surface
# Conflicts:
#	packages/host/apiproxy/README.i18n.yaml
#	packages/host/apiproxy/README.zh.md
2026-08-12 21:13:02 +08:00
Yichen Jiang
4366528a38 feat(settings): serve every registered namespace and key plugin cards on it
A plugin that registered a settings namespace could not reach the browser
configuration page: the api-proxy filtered every read and gated every
write through two hardcoded namespace lists, and the plugin configuration
section rendered an unordered list of cards carrying an opaque id rather
than the namespace they edit. Both gates lived in this repository, so a
user-authored plugin was configurable only by hand-editing settings.yaml.

The proxy now serves whatever ctx.settings.describe() returns and adds no
boundary of its own; a name no registration answers folds into the seam's
own settings-rejected, and the settings-not-exposed code retires. The
settings seam is untouched: which client may read a namespace, and which
page renders it, are facts about consumers.

settings.plugin.item becomes a keyed slot whose key is the namespace a
card edits, following tool.call.toolview. The section reads describe once
and dispatches the intersection of the slot ledger and the served set, so
a namespace another surface owns renders nothing without declaring
anything, and a card for an uncomposed plugin is never dispatched.
2026-08-12 21:07:57 +08:00
Yichen Jiang
4bc526f40b test(web): realign the scaffold welcome-notice version mirror
The e2e scaffold pre-acknowledges the welcome notice by mirroring
WELCOME_NOTICE_VERSION from ui-settings-general. The client bumped it to
2026-08-11.1 while the mirror stayed at 2026-07-30.7, so the stale
acknowledgement stopped suppressing the notice and its overlay covered
the page: every settings-touching web e2e timed out clicking Settings.
2026-08-12 21:07:48 +08:00
Turtle
30b2a04b69 docs: correct the turn-flow event order and dispatch modes
turn/start precedes the first claim and pre-step, a rejected or empty first claim closes a zero-step turn, llm/stream and tools/* are their own domains, and agent/turn-stopping is serial. Regenerates the lifecycle diagram from the same facts and names --patch overlays exactly.
2026-08-12 21:03:15 +08:00
Turtle
a204970725 test: refresh the translation-prompt snapshot for the clone URL
The reviewed example pair embeds README.md verbatim, so the deepseek-ai clone URL moves the expected request.
2026-08-12 21:01:58 +08:00
Turtle
7af0b8f6df docs: fix grammar and sync Chinese counterparts
Correct the reworked English wording in the CLI profile section, architecture map, and llm-streaming cross-reference, then bring every edited pair's Chinese side along and re-record the pairing hashes.
2026-08-12 21:01:45 +08:00
Turtle
988f4ad117 update architeture.md 2026-08-12 21:01:11 +08:00
Turtle
09981bf948 human touch 2026-08-12 21:00:46 +08:00
Turtle
d8ef7785fd update readme 2026-08-12 21:00:46 +08:00
Turtle
e091593866 replace url 2026-08-12 21:00:46 +08:00
Turtle
737c433036 Merge pull request #2305 from deepseek-harness/docs/post-v3-release-proofreading
docs(i18n): apply release proofreading updates
2026-08-12 21:00:12 +08:00
xjt
23e09ec08e Merge master into docs/post-v3-release-proofreading 2026-08-12 20:48:08 +08:00
Terra
e7dbf6b9cf Merge pull request #1103 from deepseek-harness/feature/session-export-command
feat(session-export): add /export command and Web UI
2026-08-12 20:36:19 +08:00
NI0317
648dc66e50 Merge remote-tracking branch 'origin/master' into rewrite/session-export-on-master 2026-08-12 20:18:04 +08:00
NI0317
a3cea842d0 test(web): pin full telemetry in scaffold 2026-08-12 20:14:43 +08:00
CreatixChu
a995fc2706 Merge pull request #2346 from deepseek-harness/fix/web-max-tokens-turn-end-notice
fix(web): surface max-tokens turn ends as a localized truncation notice
2026-08-12 20:07:35 +08:00
NI0317
7110f0f52b test(web): acknowledge current welcome notice 2026-08-12 20:02:58 +08:00
NI0317
785f41daed fix(session-export): preserve streamed browser downloads 2026-08-12 18:44:04 +08:00
NI0317
8c7dab8755 fix(docs): repair current master gates 2026-08-12 18:19:25 +08:00
xjt
3c6b6837a5 Merge remote-tracking branch 'origin/master' into docs/post-v3-release-proofreading
# Conflicts:
#	.agents/notes/implemented/feature/2026-07-23-session-telemetry-otel-revival.i18n.yaml
#	.agents/notes/implemented/feature/2026-07-23-session-telemetry-otel-revival.zh.md
#	.agents/notes/implemented/feature/2026-07-31-web-telemetry-default-mount.i18n.yaml
#	.agents/notes/implemented/feature/2026-07-31-web-telemetry-default-mount.zh.md
#	README.i18n.yaml
#	README.zh.md
#	apps/cli/reference/README.i18n.yaml
#	apps/cli/reference/README.zh.md
#	scripts/snapshots/translation-prompt-v4/request-response.expected.json
2026-08-12 17:52:21 +08:00
NI0317
8940282aee feat(session-export): add command and Header action 2026-08-12 17:41:36 +08:00
Chinesezjc
185a1f7da3 Merge pull request #2381 from deepseek-harness/fix/translation-snapshot-telemetry-text
fix(snapshot): regenerate translation-prompt-v4 snapshot with updated telemetry text
2026-08-12 17:40:03 +08:00
Chinesezjc
0dded8e7e9 fix(snapshot): regenerate translation-prompt-v4 snapshot with updated telemetry text
The merge conflict resolution kept the master-side snapshot which had
the old DSH_TELEMETRY_DISABLED=1 text. Regenerated to match the current
README.md which uses DSH_TELEMETRY_MODE=FEEDBACK_ONLY/FULL.
2026-08-12 17:38:23 +08:00
Chinesezjc
0dfca0ba21 Merge pull request #2169 from deepseek-harness/codex/disable-telemetry-default
feat(telemetry): require explicit opt-in
2026-08-12 17:32:17 +08:00
xjt
bbc75b38b2 Merge remote-tracking branch 'origin/master' into docs/post-v3-release-proofreading
# Conflicts:
#	.agents/notes/implemented/architecture/2026-07-10-single-file-executable-sdk-runtime-distribution.i18n.yaml
#	.agents/notes/implemented/architecture/2026-07-10-single-file-executable-sdk-runtime-distribution.zh.md
2026-08-12 17:31:28 +08:00
Yichen Jiang
372b0a12ca Merge pull request #2370 from deepseek-harness/worktree/python-sdk-required-ci
fix(ci): require Python runtime release path
2026-08-12 17:28:04 +08:00
Chinesezjc
93b400a1de Merge branch 'codex/disable-telemetry-default' into master
Resolved conflicts:
- packages/client/ui-settings-general/README.md, README.zh.md: kept PR
  opt-in telemetry description (DSH_TELEMETRY_MODE)
- scripts/snapshots/translation-prompt-v4: kept master's newer README
  structure snapshot
- i18n.yaml pairing records: resolved per file state
- pnpm-lock.yaml: regenerated
- Modify/delete conflicts (scaffold/telemetry, sdk-follow-up-capabilities):
  kept master deletions
2026-08-12 17:27:37 +08:00
xjt
ef2b2f3178 test(i18n): refresh translation prompt snapshot 2026-08-12 17:23:06 +08:00
xjt
7325036d50 Merge remote-tracking branch 'origin/master' into docs/post-v3-release-proofreading
# Conflicts:
#	docs/subsystems/feedback.i18n.yaml
#	docs/subsystems/feedback.zh.md
2026-08-12 17:10:13 +08:00
Chinesezjc
797b4f096f Merge pull request #2262 from deepseek-harness/feat/web-message-feedback-ui
feat(feedback): add the Web surface for message feedback
2026-08-12 17:01:09 +08:00
Chinesezjc
d11df1825c Merge remote-tracking branch 'origin/master' into feat/web-message-feedback-ui 2026-08-12 16:48:46 +08:00
xjt
947798948e Merge remote-tracking branch 'origin/master' into docs/post-v3-release-proofreading
# Conflicts:
#	.agents/notes/implemented/architecture/2026-08-03-pi-ai-declared-provider-catalog.i18n.yaml
#	.agents/notes/implemented/architecture/2026-08-03-pi-ai-declared-provider-catalog.zh.md
#	packages/llm/llm-pi-ai/README.i18n.yaml
#	packages/llm/llm-pi-ai/README.zh.md
2026-08-12 16:48:14 +08:00
xjt
ce883ffea3 Merge remote-tracking branch 'origin/master' into docs/post-v3-release-proofreading
# Conflicts:
#	.agents/notes/implemented/architecture/2026-06-20-generic-long-running-tool-runtime.i18n.yaml
#	.agents/notes/implemented/architecture/2026-06-20-generic-long-running-tool-runtime.zh.md
#	README.i18n.yaml
#	README.zh.md
#	scripts/snapshots/translation-prompt-v4/request-response.expected.json
2026-08-12 16:45:48 +08:00
Yichen Jiang
aebd7b99e4 Merge pull request #2344 from deepseek-harness/worktree/custom-model-image-input-0185de
fix(llm-pi-ai): 让模型声明自己接受的请求模态
2026-08-12 16:44:24 +08:00
xjt
0a8c9fb1f9 docs(i18n): address final proofreading feedback 2026-08-12 16:43:38 +08:00
Chinesezjc
e0e43f40c2 Merge remote-tracking branch 'origin/master' into feat/web-message-feedback-ui 2026-08-12 16:39:15 +08:00
Chinesezjc
c55fca5eda Merge remote-tracking branch 'origin/master' into feat/web-message-feedback-ui
Keep both Remote contributions master and this branch add: the mount loop
now carries commandsRemote, goalsRemote, pluginInventoryRemote, and
messageFeedbackRemote, with both new tsconfig references retained.
2026-08-12 16:36:10 +08:00
Yichen Jiang
b77033d8b3 Merge master into worktree/custom-model-image-input-0185de 2026-08-12 16:32:49 +08:00
Yichen Jiang
08941c71e3 fix(ci): require Python runtime release path 2026-08-12 16:30:35 +08:00
CreatixChu
63a6c4c899 Merge pull request #2324 from deepseek-harness/worktree/attachment-alignment-2
feat(web): whole-page image drop, projected intake limits, and thumbnail tiling
2026-08-12 16:30:06 +08:00
Turtle
beb4502c27 Merge pull request #2335 from deepseek-harness/codex/comment-obvious-code
docs: discourage obvious code comments
2026-08-12 16:27:19 +08:00
Yichen Jiang
50edee2dab review: sync the note this supersedes, gate the schema paths, export the modality type
The declared-provider-catalog note still recorded modalities as closed
because "nothing reads them: context.ts keeps only text blocks" — the
same reasoning this change disproves. Rewrite that fact in place, keep
pricing closed for its own still-current reason, and cross-link both
directions.

The new resolver cases never crossed the config schema, so neither
acceptance path this change adds had an executable gate: config.spec.ts
now refuses an unknown modality at both levels, pins the empty route
list to the namespace validator the settings seam actually runs, and
pins the `[]` materialization the inheritance rule depends on. A
catalog.spec.ts case re-asserts every rung through a written settings
section and `ctx.llm`, which is what the note's Testing section claimed.

Also export PiAiModality from the package entry — it types two public
config fields and consumers could not name it — record the unverified
declaration as a Known Limitation, and stop sharing one fallback array
across a route's models.
2026-08-12 16:18:52 +08:00