8171 Commits

Author SHA1 Message Date
ZiyaZhang
bf9eb7b538 docs: repair merged translation records 2026-08-12 06:37:56 -07: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
07akioni
ae3f89e772 Merge remote-tracking branch 'origin/master' into fix/stats 2026-08-12 21:29:00 +08:00
Tianyi Cui
b3e2de873d Merge master into worktree/fix-1463-rich-content-bridge
# Conflicts:
#	.agents/notes/implemented/feature/2026-07-20-code-mode-typed-tool-returns.i18n.yaml
#	.agents/notes/implemented/feature/2026-07-20-code-mode-typed-tool-returns.zh.md
#	.agents/notes/implemented/feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.i18n.yaml
#	.agents/notes/implemented/feature/2026-07-22-web-multimodal-image-input-and-durable-attachments.zh.md
#	.agents/notes/implemented/feature/2026-08-10-telemetry-default-off.i18n.yaml
#	.agents/notes/implemented/feature/2026-08-10-telemetry-default-off.md
#	.agents/notes/implemented/feature/2026-08-10-telemetry-default-off.zh.md
#	.agents/notes/implemented/simplification/2026-07-23-acp-automation-only-protocol.i18n.yaml
#	.agents/notes/implemented/simplification/2026-07-23-acp-automation-only-protocol.zh.md
#	apps/web/tests/scaffold.ts
2026-08-12 21:25:26 +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
Ziya
85c9aac5e9 Merge branch 'master' into feat/web-plugin-settings-tabs 2026-08-12 21:24:52 +08:00
07akioni
efb1857853 Merge remote-tracking branch 'origin/master' into fix/stats 2026-08-12 21:22:05 +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
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
Turtle
988f4ad117 update architeture.md 2026-08-12 21:01:11 +08:00
xjt
23e09ec08e Merge master into docs/post-v3-release-proofreading 2026-08-12 20:48:08 +08:00
07akioni
dabe6207f5 fix: 分页问题 2026-08-12 20:26:47 +08:00
Ziya
f418d534a2 Merge branch 'master' into feat/web-plugin-settings-tabs 2026-08-12 20:23:43 +08:00
NI0317
648dc66e50 Merge remote-tracking branch 'origin/master' into rewrite/session-export-on-master 2026-08-12 20:18:04 +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
Tianyi Cui
d322206246 fix(ci): stabilize latest-master acceptance gates 2026-08-12 19:41:06 +08:00
ZiyaZhang
be693f3bc7 test(plugin-inventory): avoid assuming loader sibling order 2026-08-12 04:23:03 -07:00
ZiyaZhang
5ed98d2da9 fix(docs): restore static gate consistency 2026-08-12 03:54:02 -07:00
NI0317
785f41daed fix(session-export): preserve streamed browser downloads 2026-08-12 18:44:04 +08:00
Ziya
8019949fc7 Merge branch 'master' into feat/web-plugin-settings-tabs 2026-08-12 18:40:38 +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
Tianyi Cui
238e7f456a fix(docs): repair latest-master pairing drift 2026-08-12 17:48:17 +08:00
Tianyi Cui
6e64f77030 test(plugin-inventory): avoid randomized id order 2026-08-12 17:48:17 +08:00
Tianyi Cui
de17206051 fix(attachment): type failure codes 2026-08-12 17:48:17 +08:00
Tianyi Cui
adf4878b4a fix(acp): isolate prompt admission from agent work 2026-08-12 17:48:17 +08:00
Tianyi Cui
57fc6bc539 fix(attachment): distinguish admission from storage failures 2026-08-12 17:48:17 +08:00
Tianyi Cui
4f87c1fe6d feat(acp): bridge durable image prompts and replies 2026-08-12 17:48:17 +08:00
Tianyi Cui
49426cae02 fix(mcp): project image results through durable attachments 2026-08-12 17:48:17 +08:00
Tianyi Cui
e00146be73 fix(tools): forward nested image results in code mode 2026-08-12 17:48:17 +08:00
Tianyi Cui
219d2a1fb9 feat(attachment): add ordered image batch admission 2026-08-12 17:48:17 +08:00
NI0317
8940282aee feat(session-export): add command and Header action 2026-08-12 17:41:36 +08:00
ZiyaZhang
de0d16d3d1 fix(web): complete plugin tab accessibility 2026-08-12 02:41:29 -07:00
pku-xht
caf7d48f88 fix(subagent): preserve startup cleanup failures 2026-08-12 17:38:06 +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
ZiyaZhang
14e70b1bf4 test(web): cover plugin settings tab states 2026-08-12 02:18:11 -07: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
pku-xht
28fcda2751 feat(agent-presets): enable background Codex and Claude Code subagent tasks 2026-08-12 17:07:34 +08:00
Ziya
7f058284fa Merge branch 'master' into feat/web-plugin-settings-tabs 2026-08-12 16:54:18 +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
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
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
Yichen Jiang
94289d057e fix(llm-pi-ai): let a model declare the request modalities it accepts
A model the installed pi-ai catalog does not describe was reported as
text-only with no way to say otherwise, so a vision model added through
the custom-provider form was refused at every image admission point.
The justification in the source described the DeepSeek chat-completions
serializer, which does reject image blocks; the pi-ai request converter
and every wire protocol it speaks carry images.

Modalities now resolve entry `input` -> installed catalog entry -> route
`defaultInput`, the chain the two capacity fallbacks already use, so the
route value is a fallback and never narrows a catalog model. Its default
stays `[text]`: nothing can interrogate a gateway for its modalities, and
over-claiming admits an image the provider rejects mid-turn, after prompt
admission has already committed the message.
2026-08-12 16:18:52 +08:00
creatixchu
7c8ec67102 Merge remote-tracking branch 'origin/master' into worktree/attachment-alignment-2 2026-08-12 16:14:56 +08:00