Commit Graph
22587 Commits
Author SHA1 Message Date
Turtle ae0dfd1003 fix(fs-local): expand a leading ~ to the home directory
Refs #6548
2026-10-19 15:35:14 +08:00
LogosVeritas 7d656c0511 Merge pull request #6369 from deepseek-harness/fix/sdk-minimal-checkpoints
为 sdk-minimal 默认启用已有的 session-checkpoint-policy,在模型请求、顶层工具执行和 step 前等待会话记录持久化,并在刷盘失败时阻止后续操作,将首次日志写入与原生写锁初始化提前到首个模型请求之前,降低短会话关闭时历史无法恢复的风险。同步补齐依赖、配置断言、回归测试及双语升级指南,并依据启用 checkpoint 后的 4 轮、20 个 CI 样本,将 profile-continuation 预算从 4,250 ms 重新校准为 7,000 ms,保留工作负载、完成数量及超预算检查。Fixes #6512。
2026-10-19 15:17:07 +08:00
luogesi 13db84e624 test(bench): calibrate sdk-minimal checkpoint budget 2026-10-19 14:57:09 +08:00
imccyu d5b432ac2c Merge pull request #6519 from deepseek-harness/worktree-thinkfold
fix(chat): close a reader-opened process group from its height cap
2026-10-19 14:31:28 +08:00
Turtle f10ece9ada Merge pull request #6460 from deepseek-harness/turtle/update-teardown-fail-6d82d9119134
fix(desktop-host): exit after acknowledged teardown so updates install
2026-10-19 14:17:35 +08:00
Turtleand07akioni 4449a2dc67 Credit review by @07akioni
Co-authored-by: 07akioni <[email protected]>
2026-10-19 14:06:22 +08:00
Shigma 23356d9c9c Merge pull request #6193 from deepseek-harness/chore/cordis-timer-1.1.4
chore(cordis): sync Timer 1.1.4 and reuse it in Client
2026-10-19 13:51:40 +08:00
Turtle 5a1ab4590b Merge pull request #6525 from deepseek-harness/docs/ai-usage-review-fixes
docs(skills): tighten AI Usage template checks
2026-10-19 13:36:36 +08:00
turtle1999 f24ef669af docs(skills): address AI Usage review comments
Extract the specification version from the skill in the template test,
check the exact placeholder badge URL, and drop duplicate marker and
old-format assertions.

Clarify the highest-level rule and table-header language, remove the
duplicate n/a rule, make the placeholder badge symmetric, and document
how to migrate an old Human and Agent Roles section.
2026-10-19 13:30:25 +08:00
imccyu 473b3d360c Merge pull request #6524 from deepseek-harness/docs/ai-usage-pr-section
docs(skills): present AI usage as a badged stage table
2026-10-19 13:27:40 +08:00
Shigma 675e5de5f8 refactor(cordis): remove obsolete ClientTimerService export 2026-10-19 13:14:59 +08:00
turtle1999 31d8674d5e docs(skills): present AI usage as a badged stage table
Rename the PR description section to AI Usage and replace the level
legend and underlined stage lines with the AI-DECLARATION badge and a
stage table. Define AI involvement as the AI's participation in a
stage, not code volume or time.

The template policy test now checks the heading, marker block, badge,
table header, row order, and old-term removal.
2026-10-19 13:09:09 +08:00
Turtle 87a5f3719e Merge pull request #6513 from deepseek-harness/turtle/plugin-market-skip-private
feat(plugin-market-generator): skip packages and versions marked private
2026-10-19 13:01:58 +08:00
imccyu 1260d96ef3 fix(chat): close a reader-opened process group from its height cap 2026-10-19 12:23:46 +08:00
luogesi 1ddba8b3b0 fix(sdk-minimal): align review fixtures and upgrade guide 2026-10-19 12:13:57 +08:00
luogesi 96f4db3f7d test(sdk): align built profile and snapshot dependencies 2026-10-19 12:13:57 +08:00
luogesi f62182e577 fix(sdk-minimal): checkpoint sessions before dispatch 2026-10-19 12:13:57 +08:00
Turtleandwinewill 3e84d5d38c Credit review by @winewill
Co-authored-by: winewill <[email protected]>
2026-10-19 12:11:21 +08:00
winewill 147fee4186 Merge pull request #6350 from deepseek-harness/perf/windows-packaging
perf(desktop): batch Windows workspace tarball packing
2026-10-19 11:33:39 +08:00
turtle1999 4292020410 feat(plugin-market-generator): skip packages and versions marked private
A manifest with "private": true keeps its version out of the index. A Git
package that is private on the default branch is not listed at all, and the
generator warns when every bundle package of a repository is private. The
cache version is bumped so cached private releases are rebuilt.
2026-10-19 11:27:56 +08:00
winewill c39ce9e5e8 Merge pull request #6340 from deepseek-harness/fix/windows-runner-windowless
fix(desktop): launch Windows runner without a console
2026-10-19 11:23:33 +08:00
CreatixChu 571ad5fda0 Merge pull request #6425 from deepseek-harness/feat/cua-click-hold
feat(cua): 支持可选的鼠标长按时长
2026-10-19 11:16:43 +08:00
imccyu d9ae93d0c4 Merge pull request #6485 from deepseek-harness/projection-summary
perf(session-projection): serve session-list rows from a summary key set
2026-10-19 11:10:40 +08:00
imccyu ab77d85f8e chore(docs): regenerate the persistence catalog 2026-10-19 10:53:13 +08:00
imccyu 76bc66b54c Merge pull request #6312 from deepseek-harness/worktree-keepreplies
fix(chat): keep every assistant reply visible when a turn folds
2026-10-19 10:50:20 +08:00
imccyu 99eacb881f fix(session-controller): drop a redundant projection cast and refresh doc graphs 2026-10-19 10:43:21 +08:00
creatixchu bf4d54aa67 test(cua): await cooperative helper shutdown before termination 2026-10-19 10:33:10 +08:00
creatixchu a44e171eeb test(cua): refresh configurable hold snapshots 2026-10-19 10:31:58 +08:00
creatixchu dc508374bd feat(cua): configure click hold limits and allow immediate release 2026-10-19 10:29:21 +08:00
creatixchu faa6e20705 Merge remote-tracking branch 'origin/master' into feat/cua-click-hold 2026-10-19 10:23:21 +08:00
imccyu 6292808bf9 fix(session-controller): keep the list summary contract honest 2026-10-19 10:20:10 +08:00
imccyu af2fa50f8a docs(session-projection): stop describing a removed interlock 2026-10-19 03:00:08 +08:00
imccyu 8ff30ebd96 docs(session-projection): state the shipped summary behavior 2026-10-19 02:57:09 +08:00
imccyu 76eba949bd chore(docs): regenerate the config catalog after the import shift
Adding the `ProjectionKeySelection` import to the projection cache moved its
`Config`/`inject` declaration down one line, so the config catalog's source
reference is regenerated. Only the source location changes.
2026-10-19 01:37:39 +08:00
imccyu a8f85009e5 test(web): skip blank bands between fully transparent fold rows
The fold blank matrix counted every band that no row box covered, including
a band whose rows on both sides had already faded to opacity 0. Such a band
shows the same background as those rows. Kept intermediate replies move with
the layout while closing groups stay in place, so that band could exceed the
transient limit in side/composer/steps without any visible difference.

A band now counts when a visible row borders it on either side, with the
viewport top and the composer treated as visible. A synthetic-DOM case keeps
a band beside a visible row failing the measurement.
2026-10-19 01:14:04 +08:00
imccyu f230fc2fc2 refactor(session-projection): review fixes for the summary key set
- Export `ProjectionKeySelection` (the read faces' key selection) and reuse it
  from the projection cache instead of restating the union twice. The Cordis
  catalog can now resolve the type its generated signatures reference.
- Make `wire.summary` a plain boolean: omitted means `true`, and a key whose
  map entry carries the summary mark declares `false` so the runtime key set
  and the client view type agree. The type no longer forbids a declaration.
- Describe the mark accurately: it has no runtime representation; `wire.view`
  and `viewSchema` are typed with `SessionProjectionViewValue`, which strips it,
  so the registration erase only widens the state type.
- Say plainly in the package README, the subsystem page, the client field
  comments, and the Agent Note that a list row carries the summary projection
  and never the full projection: a connected Session's store may hold more
  values, but those are outside the list contract.
- Document the summary vocabulary on the subsystem page with `ts type-equiv`
  blocks for the mark, its stripping, the excluded-key test, the summary value
  type, and the key selection; split the prose paragraph.
- Revert the behavior-neutral cache-double refactors in three specs, and record
  in the Agent Note why no upgrade guide accompanies the wire change and how a
  consumer migrates.
2026-10-19 01:13:24 +08:00
imccyu b5f0c91f3f docs(chat): describe reply visibility per Replies After Collapse choice
The group-tree JSDoc and the ui-chat README stated that every reply stays outside whole-Turn folding and named only the collapse-timing setting. They now distinguish All replies from Final answer only and link the new setting.
2026-10-18 23:18:59 +08:00
imccyu 31cca04e6c test(web): expect the 12px reply gap in seeded history
The seeded-history check measured the folded final answer 16px below the Turn control. Hidden process rows separate the two, so the answer now keeps the 12px reply gap.
2026-10-18 23:18:54 +08:00
imccyu 64a1d1e95f chore(docs): regenerate the event graph after the line shift
The producer/consumer matrix points at the declaring line of each event. Adding
the `imageLimits` JSDoc and map-entry wrap moved the `api-session/*` declarations
in `packages/api/session-controller/src/types.ts` down by four lines, so the
graph pair is regenerated. Only source locations change.
2026-10-18 23:12:27 +08:00
imccyu 8e2dd67de8 perf(session-controller): exclude the shared image limits from session summaries
`imageLimits` is a boot constant every Session shares: the unit stores no
per-Session state (`stateSchema: z.null()`, `apply: state => state`) and its
view returns `ctx.attachments.imageLimits`. A list row therefore repeated one
host-wide capability fact on every row. It now carries the summary mark like
the three log-derived units, so a summary read skips it while an opened Session
still receives it through `session/follow`, the control baseline, and
`session.projections`.

No other logic changes: the registration, its schema, its constant view, and
the host-side prompt validation keep reading `ctx.attachments` directly.
2026-10-18 23:04:29 +08:00
imccyu c458eab0a0 fix(chat): keep the reply gap on a folded final answer
A folded Turn gave its final answer the control's 16px clearance through
compactAnswer and data-turn-process-answer, because hidden process rows
keep the answer from matching the control's adjacent-row rule. With every
reply kept, the final answer no longer follows the control, so that 16px
only widened the gap above it. In both choices the margin also switched
from 12px to 16px when the closing rows became hidden at the end of a
next-message fold, moving the answer down about 4px.

A reply separated from the control by folded rows now keeps the 12px reply
gap in both choices; only a row directly following the control receives
16px, and no reply changes its spacing when a fold finishes.
2026-10-18 23:01:23 +08:00
imccyu 8598307c1e test(web): cover kept replies and the replies setting
Settings goldens gain the Replies After Collapse row; folded-Turn aria
goldens for plan review, goal turns, and turn-tail actions include their
intermediate replies. The folded layout checks measure the intermediate
reply that now follows the Turn control at the 12px reply gap.
2026-10-18 23:01:23 +08:00
imccyu 94ebbf124e fix(chat): keep every assistant reply visible when a turn folds
Whole-Turn folding chose the final answer by position, so a Turn that
continued after answering (a notice reply, record keeping, or a tool call)
hid the real answer with the process. A folded Turn now hides only its
process; every assistant-step reply row stays visible.

Settings -> General -> Replies After Collapse (ui-chat.foldedReplies,
default "all") switches back to the previous final-answer-only rule; the
choice applies immediately and is hidden in Verbose.
2026-10-18 23:01:23 +08:00
imccyu 4edfc1ad15 docs(chat): record keeping every assistant reply in folded turns 2026-10-18 23:01:22 +08:00
imccyu ef446fc85f docs(agent-notes): record the session-list summary projection decision
The note records why a Session-list row carries a summary key set instead of
every registered client view: the type-only exclusion mark with its
registration interlock, the derived stable key set reused through the existing
key-taking read faces, the nullable-wrapper rule for `todos`, and the estimated
payload effect of omitting `turnOutline`, `sessionStats`, and `todos`. It lists
the rejected alternatives (a summary-specific read face, a hardcoded key list,
post-hoc filtering, opt-in summaries, and lazy per-value reads) and the costs
the decision accepts.
2026-10-18 22:39:21 +08:00
imccyu 0e1ffcb3a6 chore(persistence): regenerate the event catalog after the line shift
The catalog pages embed the declaring source location of each documented type.
Adding the summary-exclusion import and map-entry JSDoc to
`packages/todo/tool-todo/src/types.ts` moved `TodoItem` and `todo/write` two
lines down, so both catalog languages and their pairing record are regenerated.
No type fingerprint changes: `verify-persistence-changes` still reports 65
roots matching 16 history records.

A second `gen-persistence-catalog` run is required after a schema change: the
page and the machine inventory are generated in one pass, and the page reads
the inventory as it was on disk.
2026-10-18 22:39:11 +08:00
imccyu 3a39d2b132 Merge pull request #6033 from deepseek-harness/docs/pr-declare-skill
docs(skills): add dsh-pr-description and slim the PR template
2026-10-18 22:24:11 +08:00
imccyu 0def172a02 chore(persistence): refresh source line references in the schema catalog
`docs/persistence-schema.json` records the declaring source location of every
persisted type. Adding the summary-exclusion import and map-entry JSDoc to
`packages/todo/tool-todo/src/types.ts` moved two declarations down by two
lines, so the generated catalog is regenerated. No persisted type, field, or
history record changes: `verify-persistence-changes` reports 65 roots matching
16 history records, and the release/format catalogs are unchanged.
2026-10-18 22:23:15 +08:00
imccyu 92f9e79fac perf(session-projection): serve session-list rows from a summary key set
A Session-list row no longer carries every registered client view: the three
units whose values a list row never renders (`turnOutline`, `sessionStats`,
and `todos`) are excluded, which removes the whole-log turn outline and the
figure and todo payloads from every row. An opened Session is unchanged —
`session/follow`, the `session/control` baseline, and `session.projections`
still serve every projected key.

The exclusion is one type-level mark plus one registration interlock:
`SessionProjectionSummaryExcluded<T>` marks a map entry, and
`ProjectionDefinition.wire` requires `summary: false` exactly on a marked key
and rejects it everywhere else, so the mark and the declaration cannot drift.
A nullable entry keeps `null` outside the wrapper, so `todos` stays
`TodoItem[] | null`. `summaryKeys()` returns the derived set, stable until a
registration or its disposal changes the key table, and the existing
key-taking read faces (`cachedSnapshot`, `viewCheckpoint`) accept that set
directly, so summaries need no separate read face and no per-read key copy.
`packages/api/session-controller/src/list.ts` passes the set to the live and
cold cached faces; `cachedPredecessorTitle` is untouched.

Client types only: `SessionSummary.projectionValues` narrows to
`SessionProjectionSummaryValues`, `SessionProjectionSnapshot.values` keeps
every view value with the mark stripped, and no wire field or client name
changed. The cache, subsystem page, and package README document the summary
rule and the two read faces.
2026-10-18 22:13:18 +08:00
imccyu c651566a49 docs(skills): calibrate dsh-pr-description levels and grading criteria
Set the autonomy ranges to hint 0-10, assist 15-25, pair 30-50, copilot
55-85, and auto 90-100 in the skill and the template level line, and
refill the example accordingly.

Sharpen the stage criteria where trial runs disagreed: grade design by
who supplied the adopted structure, count only the author in the first
four stages, ignore process and ordering instructions, define the main
change, keep review at n/a until a comment is handled, and separate
copilot from pair by whether every non-wording item got a human
response. Clarify the Changes categories, test evidence, disclosure
placement, language, and when to update the description.

Refs #6034
2026-10-18 22:02:42 +08:00