Commit Graph
12393 Commits
Author SHA1 Message Date
pku-xht 77211b1c26 fix(subagent): expose startup cleanup failure facts 2026-08-18 03:06:34 +08:00
pku-xht a3a9f86d89 refactor(subagent): derive Claude exit projections 2026-08-18 02:54:20 +08:00
pku-xht 605b399a8f refactor(subagent): simplify Claude failure fact ownership 2026-08-18 02:45:42 +08:00
pku-xht cd4f8b7f46 fix(subagent): preserve Claude Code failure facts 2026-08-18 01:46:30 +08:00
pku-xht 1c405d41a5 docs(subagent): clarify Codex unattended runtime contracts 2026-08-17 18:02:18 +08:00
pku-xht 2e125dc0c6 Merge Claude permission modes into Codex permission modes 2026-08-17 17:08:37 +08:00
pku-xht 000cb1a0db docs(subagent): clarify unattended review contracts 2026-08-17 17:05:18 +08:00
pku-xht f479d01faf Merge Claude permission modes into Codex permission modes 2026-08-17 16:25:14 +08:00
pku-xht 1d181b869f Merge origin/master into Claude permission modes 2026-08-17 16:14:18 +08:00
Tianyi Cui e0bb7cafc0 Merge pull request #2308 from deepseek-harness/feat/web-collapsible-question-composer
feat(web): make the ask-user question card collapsible
2026-08-17 13:54:50 +08:00
Tianyi Cui fec00fcb2c Merge pull request #2504 from deepseek-harness/fix/safari-textarea-reflow
fix(web): repair Safari textarea soft-wrap shrink
2026-08-17 13:54:31 +08:00
Yichen Jiang 8f998186a9 Merge pull request #2404 from deepseek-harness/feat/plugin-owned-settings-surface
feat(settings): serve every registered namespace and key plugin cards on it
2026-08-17 13:51:31 +08:00
Yichen Jiang 84257ea5de Merge pull request #2596 from deepseek-harness/worktree/deepseek-maxtoken-consistency-3a7c15
fix(llm): align replay state with assembled content and degrade unusable state
2026-08-17 13:47:08 +08:00
Tianyi Cui ed5a10b6e1 Merge pull request #2494 from deepseek-harness/ci/raise-windows-timeout
ci: raise Windows native CI timeout to 120 minutes
2026-08-17 12:10:55 +08:00
Chinesezjc fc497af8f7 Merge pull request #2417 from deepseek-harness/fix/pwsh-terminal-overlay-dup
fix(web): resolve the pwsh-terminal overlay duplicate-loader entry
2026-08-17 12:10:31 +08:00
Tianyi Cui cb8756b838 Merge pull request #1371 from deepseek-harness/codex/fix-large-history-pagination
fix(web): avoid history pagination stack overflow
2026-08-17 12:07:32 +08:00
Tianyi Cui b3eaafe3ae Merge pull request #2535 from deepseek-harness/test/cordis-turn-end-diagnostic
test(web): assert the whole turn/end reason in the Cordis lifecycle
2026-08-17 12:03:39 +08:00
Tianyi Cui 7841e0a93e Merge pull request #2586 from deepseek-harness/worktree/minimal-mode-bash-issues-0c3ac2
fix(pty): keep the controlled prompt so persistent bash settles fast
2026-08-17 11:34:34 +08:00
Tianyi Cui c5759d3506 Merge pull request #2553 from deepseek-harness/docs/web-ui-guide-polish
docs(i18n): polish the Web UI guide
2026-08-17 11:08:14 +08:00
j-xiang ca8b8a86e7 Merge branch 'master' into docs/web-ui-guide-polish 2026-08-17 10:11:59 +08:00
fz 66cd593bf3 Merge pull request #2559 from deepseek-harness/feat/rename-code-preset-english-to-ptc-mode
fix(ui-agent-preset): rename English code preset to PTC mode
2026-08-17 10:05:31 +08:00
GeeeekExplorer db959a0879 test(web): cover collapsing and expanding the question card
Two new QuestionComposer cases: the collapse toggle hides the option list
and leaves the header strip, and collapsing between answering preserves
both the picked draft and the current question position through a full
submit; re-expanding does not steal focus back into the textarea. Refresh
the question-composer and steering web e2e goldens for the new header
button.
2026-08-17 01:18:44 +08:00
GeeeekExplorer 4b25b0e76d feat(web): make the ask-user question card collapsible
The ask-user takeover rendered the pending question set as a bottom card
capped at min(60vh, 520px) with no way to reduce it, which buried the
conversation above while the user decided. Add a minimize toggle next to
the dismiss action: collapsed, the card becomes a header strip (title plus
the two icon buttons) and the option body and footer unmount; expanding
restores the full card. Drafts and the current question index live in
QuestionFlow local state, so collapse/expand never loses them. The
free-form textarea autofocuses only on first presentation, so re-expanding
does not steal focus from the toggle.

Agent Note: .agents/notes/implemented/feature/2026-08-11-collapsible-ask-user-question-card.{md,zh.md,i18n.yaml}
2026-08-17 01:18:44 +08:00
pku-xht 0ff3c236ec refactor(subagent): simplify Codex diagnostic handoff 2026-08-15 20:09:04 +08:00
pku-xht 6ed3cab9b5 fix(subagent): preserve Codex diagnostic ordering 2026-08-15 19:58:08 +08:00
pku-xht d1e9dcae7a refactor(subagent): redesign Codex stderr diagnostics 2026-08-15 19:33:03 +08:00
pku-xht cfcecbf0c7 fix(subagent): stabilize Codex permission diagnostics 2026-08-15 19:11:24 +08:00
pku-xht 34db64d90d refactor(subagent): simplify Codex permission runtime 2026-08-15 19:02:04 +08:00
pku-xht a016e17393 test(subagent): cover Codex permission branches 2026-08-15 18:39:30 +08:00
pku-xht a49c0d26f9 merge: propagate Claude permission fixes 2026-08-15 18:30:00 +08:00
pku-xht a3deb9aa5e fix(subagent): keep Claude plan mode non-executing 2026-08-15 18:15:53 +08:00
pku-xht 7eb203069c feat(subagent): add Codex non-interactive permission modes 2026-08-15 18:07:08 +08:00
pku-xht 62da706b64 fix(subagent): address Claude permission review findings 2026-08-15 17:46:13 +08:00
pku-xht 4d03472cd0 feat(subagent): add Claude Code non-interactive permission modes 2026-08-15 16:37:19 +08:00
Yichen Jiang 7e95a00c8a fix(llm): align replay state with assembled content and degrade unusable state
A max-tokens response that included a tool call persisted assembler-transformed
content next to replay metadata projected from the untransformed native message,
so the next request died in history reconstruction with INVALID_REPLAY_STATE and
the session stayed permanently stuck.

Write side: the finish chunk's replayState becomes a typed ReplayEnvelope —
opaque response-level metadata plus optional per-block entries aligned with the
emitted block sequence. BlockAssembler computes one keep/drop decision for
blocks and entries together, so stored metadata always describes stored content
and retained blocks keep their signatures. pi-ai splits its state into a
version-2 response half and per-block signature entries.

Read side: durable content is authoritative. toPiAssistant degrades any
unusable state — foreign kind, other versions (including the flat v1 form
already on disk), malformed metadata, or content/block mismatches — to the
existing provider-neutral conversion with an onReplayDegrade diagnostic instead
of failing the request, which un-bricks sessions poisoned before this change.

Covered by assembler and replay unit tests, an agent-loop continuation
regression, keyless real-composition continuation tests (native pruned-envelope
replay and legacy flat-state degrade), and the authored keyless snapshot
scenario max-tokens-continue through the assembled ACP app.
2026-08-15 16:07:30 +08:00
j-xiang 3b3abccba4 Merge branch 'master' into docs/web-ui-guide-polish 2026-08-15 13:49:53 +08:00
Yichen Jiang a8dc6f9776 fix(pty): keep the controlled prompt so persistent bash settles fast
tool-bash-persistent overwrote the backend's PS1, so terminal-bash prompt
readiness never matched and every send degraded to the 3.5s silence tier
(idleSilenceMs + handoffGraceMs) under production defaults.

The controlled PROMPT_COMMAND now re-asserts PS1 before every prompt, so an
in-shell override never survives to the next prompt. The tool initializes
with stty -echo alone and detects the no-end-marker fallback through the
seam's stdin_read wait reason instead of matching its own prompt text.

Tool calls drop from 7180/3560/3566 ms to 355/88/91 ms (spawn+init+echo,
echo, pwd; darwin, production defaults). The loader composition suite now
pins the fast path by pushing idleSilenceMs beyond the send bound, and a
real-PTY case proves PS1 self-healing.

Fixes #2585
2026-08-15 11:06:57 +08:00
imccyu 5bb600f9fb Merge pull request #2577 from deepseek-harness/revert-2571-worktree-reducepkg
Revert "fix(client): declare browser-only externals as devDependencies"
2026-08-15 02:49:25 +08:00
imccyu f2830fec6d Revert "fix(client): declare browser-only externals as devDependencies" 2026-08-15 02:19:09 +08:00
imccyu 6c18b04a6b Merge pull request #2571 from deepseek-harness/worktree-reducepkg
fix(client): declare browser-only externals as devDependencies
2026-08-15 01:57:43 +08:00
imccyu ef249da2e9 perf(web): remove the module preload polyfill
The preload links stay; browsers that ignore them fetch vendor when index imports it.
2026-08-15 01:41:15 +08:00
imccyu b6d0195d5f fix(scripts): resolve workspace names to source in the notices dry run
The shell's Vite config aliases a few workspace packages to source; every other
workspace name resolved through node_modules to a lib/ entry the real build has
emitted but a clean checkout has not, so the generator only worked on a built
tree — and a static gate has to pass on a clean one. The dry run now supplies
source aliases for the names the shell leaves out.

Aliases rather than the recorder's resolveId hook, because Vite resolves a
stylesheet @import through aliases alone, and the theme package publishes its
stylesheets from lib/styles/. lib/ is compiled from src/, and the recorded set is
identical either way: 24 packages on a built tree and on a clean one.
2026-08-14 22:35:11 +08:00
imccyu 1fae5dc40e fix(scripts): disclose browser-bundled packages as shipped
Moving react, shiki, katex and the markdown pipeline to devDependencies took
them out of the notices runtime tier, which tiers by declaring section — yet
their code is inside lib/client.js and the shell dist. The generator now learns
what the browser artifacts carry from the real build configs: each client bundle
through its own tsdown config, the shell through apps/web's Vite config, with a
recorder that resolves each bare specifier, notes the package behind it, and
stops there. About three seconds, and only packages a resolved file backs, so a
bundler's virtual module is not mistaken for a shipped one.

Net effect on the file: the type-only packages @types/mdast and
micromark-util-types move to the development tier, because neither ships code.
2026-08-14 22:24:23 +08:00
imccyu 7d59006fd1 docs(notes): record how the notices tier learns what ships
A package a published browser artifact carries is a runtime disclosure whatever
section declares it, and the build answers which ones those are. Record that
clause, the dry run behind it, why a bundler's virtual module is not a shipped
package, why a types-only package is not either, and the generator run cost the
dry run adds.
2026-08-14 22:24:23 +08:00
imccyu 93a95e838d fix(client): declare browser-only externals as devDependencies
react, react-dom, shiki, katex, clsx, the micromark and mdast families and nine
more reach only browser artifacts, which resolve nothing on a user's machine.
Moving 79 declarations out of dependencies and non-optional peerDependencies
drops 103 tarballs and 6.05 MB from an install of the published CLI.
2026-08-14 20:18:39 +08:00
imccyu 6e77499326 feat(scripts): gate browser-only dependencies out of the install face
verify-client-runtime-deps walks each package's host and browser faces from the
entries its manifest publishes, over the bound host and client Programs, and
reports an external package no host-face reference reaches. Wired into hygiene.

A workspace name is out of scope: it also states which package supplies an
injected service or a mounted Remote contribution, and the app installs it
either way. A package whose published Node entry has no source counterpart is
skipped and named, because a generated artifact carries imports no source
states.
2026-08-14 20:18:35 +08:00
imccyu 48d14b4a7c docs(client): state where a browser-only dependency is declared
Browser artifacts resolve nothing on a user's machine: tsdown inlines every
non-platform specifier, the shell dist answers the rest from its frozen module
table, and Vite inlines the shell's own imports into the published dist. Record
the resulting declaration rule, and the Agent Note behind it.
2026-08-14 20:17:50 +08:00
lsdsjy 4edbdd443e fix(web): repair Safari textarea soft-wrap shrink 2026-08-14 17:52:09 +08:00
j-xiang e4d3f29621 Merge branch 'master' into docs/web-ui-guide-polish 2026-08-14 17:43:01 +08:00
imccyu 887c4977db Merge pull request #2546 from deepseek-harness/fix/publish-deporder
fix(release): order publication by installed dependencies and keep npm's output
2026-08-14 17:24:48 +08:00