Commit Graph
8095 Commits
Author SHA1 Message Date
imccyu eb1713f856 fix(session-projection): keep released units in checkpoints (#7754)
* fix(session-projection): keep released units in checkpoints

Since the Cordis rc.11 teardown order unloads the Web layer before the
base layer, Session Controller and harness-dev-context release their
projection units before their live Sessions detach. The projection
cache is still alive at that point and wrote a checkpoint holding only
the units that were still registered, replacing the complete record.
A blank Session then lost sessionListMetadata and listed as an untitled
conversation after every graceful restart.

A released unit now stays in the registry as a predecessor: it leaves
event drives, snapshots, restores, and change notifications, while
checkpoint() keeps each Session's last cell of it without advancing it.
Registering the same key again replaces the predecessor and refolds
the log. The projection cache keeps replacing whole records.

* test(session-projection): assert frozen released units across unload tests

Update the remaining unload tests that still expected a released unit
to vanish from checkpoint(): user-approval, agent-loop inbox and scope
lifecycle, time-context, and the agent registry now assert that the
same Session keeps its pre-unload row, that a later event does not
advance it, and that a Session created after the unload has no row.
The token-meter and goal unload tests also append an event after the
unload.

Document that a retained handle read still advances a released cell
that checkpoint() serves, and that restore() folds only live units, so
its refreshed rows omit released units.

* docs(session-projection): sync the ProjectionHandle type-equiv block

* docs(session-projection): record frozen released units and their upgrade

Add the upgrade guide for checkpoint() keeping a released unit's last
row, update the registration-handles Agent Note with the frozen-cell
decision and the retained predecessor, list both consequences under the
registry README's known limitations, note in the projection cache README
that a stored row can be frozen at its unit's release, and say that
restoreFloor() ignores released predecessors.

Update the agent-loop resource-lifecycle unload test, which read
checkpoints through an alias, to the frozen-row semantics.

* docs(upgrade-guide): mark the released-checkpoint snippet ignore-check

* docs(session-projection): state the retained-handle path and narrow a rejected alternative

* docs(upgrade-guide): re-record the released-checkpoint guide pairing
2026-11-03 11:07:09 +08:00
Yichen Jiangandimccyu d721353f86 feat(forge): unify plugin entry for reviews and worktrees (#7721)
* feat(forge): unify the worktree plugin entry and add user previews

* docs(forge): show session-linked GitHub pull requests in preview

* refactor(forge): keep plugin unification out of profile loading

* docs(forge): document manual upgrade to the unified plugin entry

* fix(forge): localize preview descriptions and address review feedback

* test(web): refresh creation recommendation catalog for the forge description

---------

Co-authored-by: imccyu <[email protected]>
2026-11-02 22:34:01 +08:00
imccyu d3f7b8abe7 Merge pull request #7701 from deepseek-harness/fix/empty-session-sidebar-0.2.2
[0.2.2] fix(session-projection): compute exactly the requested projections for hot session summaries
2026-11-02 17:05:09 +08:00
Shigma ce18012a52 Merge pull request #6220 from deepseek-harness/chore/cordis-loader-rc11
chore(cordis): complete Loader rc.8 and share upstream Include patches
2026-11-02 16:50:28 +08:00
Magolor d9ed1e4e28 feat(schedule): unify task creation and editing (#7567)
* feat(schedule): unify task creation and editing

* refactor(schedule): remove obsolete editor helper exports

* fix(schedule): address unified editor review

* fix(schedule): avoid a conflict notice during save refresh

* test(schedule): use unified editor in zoom picker checks

* fix(schedule): preserve drafts through conflict recovery

* docs(schedule): match the linked-session control labels

* fix(schedule): restore the latest linked session after conflicts

* docs(schedule): clarify unsaved draft lifetime

* fix(schedule): align conflict feedback with the detail layout

* fix(schedule): fit editors to pane width and guide empty fields

* fix(schedule): preserve task list and complete field examples

* fix(schedule): keep required-field feedback in the editor

* fix(schedule): align editor content and action gutters

* fix(schedule): wrap localized actions in narrow editors
2026-10-30 20:19:47 +08:00
Magolor 516ca64acb feat(settings): 支持插件自定义设置页面导航图标 (#7624)
* feat(settings): allow custom section navigation icons

* fix(settings): render section icons inline
2026-10-30 18:23:03 +08:00
CreatixChu 490c6fdd92 Merge pull request #7557 from deepseek-harness/feat/cua-permission-guide
feat(cua): 补齐 macOS 系统权限申请与应用拖入引导
2026-10-30 15:48:02 +08:00
Jiawei Song 847c738e1f Merge pull request #7559 from deepseek-harness/feat/apply-patch-default-on
feat(fs): ship apply_patch on and the observation policy off
2026-10-30 14:40:35 +08:00
Kexin Liu 4a0a1452a2 Merge pull request #7528 from deepseek-harness/perf/client-static-production-mode
fix(client): 静态库默认使用生产构建模式
2026-10-30 14:35:13 +08:00
creatixchu edb3d5a87d docs(cua): regenerate macOS provider configuration reference 2026-10-30 14:14:14 +08:00
imccyu 945006c984 perf(session): send one projection frame per committed event (#7587)
* perf(session): send one projection frame per committed event

* fix(session): deliver keys changed before a drive failure; address review

* perf(session): carry projection frame changes as key and val entries
2026-10-30 14:14:03 +08:00
creatixchu 44fc4192e0 refactor(cua): keep native permission guidance in macOS provider 2026-10-30 14:11:06 +08:00
imccyu 5c2826eae5 Revert "feat(client): expose stable composer prefill API" 2026-10-30 13:59:08 +08:00
CreatixChu f77e9a2757 Merge pull request #7606 from deepseek-harness/turtle/session-stuck-400-2f5a21aa0140
fix(llm-pi-ai): offload old images when a request exceeds the image-count bound
2026-10-30 13:58:34 +08:00
liukx0205 c0b48f8961 fix(ci): bound CLI help children inside aggregate gates 2026-10-30 13:47:01 +08:00
Kexin Liu 41a37d87a3 Merge pull request #7423 from deepseek-harness/feat/composer-prefill-api
feat(client): expose stable composer prefill API
2026-10-30 13:44:41 +08:00
Turtle b46adf9f64 fix(llm-pi-ai): offload count overflow in steps and document the default
Add imageOffloadCountQuantum (default 10) so a saturated route rewrites its
request prefix once per ten new images, cite the Azure OpenAI 50-image limit
for the default, report the overflow without naming both bounds, split the
adapter count test, and add an upgrade guide.

Refs #7605
2026-10-30 12:53:58 +08:00
Turtle 1abd104891 fix(llm-pi-ai): offload old images when a request exceeds the image-count bound
Add a per-route maxRequestImages bound (default 50) to the pi-ai request-image
budget. A history with more retained images now fails with
IMAGE_OFFLOAD_REQUIRED so dsh-compaction-image-offload offloads the oldest
images, instead of the provider rejecting every later request.

Refs #7605
2026-10-30 12:36:49 +08:00
creatixchu cbbf9d86a1 fix(cua): preserve settings recovery and validate current application metadata 2026-10-30 12:26:20 +08:00
creatixchu a3d098d310 refactor(cua): refresh page permissions on user activity instead of polling 2026-10-30 10:50:41 +08:00
liukx0205 4505415896 docs(client): record the composer prefill API break 2026-10-29 23:45:36 +08:00
sjw1231 cc2718bede fix(fs): address review of the shipped mutation defaults
A new Agent Note owns the shipped defaults and the original apply_patch note
keeps its opt-in decision with a supersession link; the policy README, the
tool-catalog note, the filesystem page, and the fs group README state the
current defaults without evaluation figures. The PTC overlay sets
`applyPatch: false` so the SDK and Desktop PTC tool sets match without a
parity exception; the fixed-budget compaction scenarios pin the tool set in
their live patches too; the apply-patch composition drops its no-op override.
The upgrade guide scopes the change to base-backed profiles, the README
refusal example is one every composition can produce, the integration suite
names its deployments by guard, and the keyless SDK smoke edits a file the
model never read through the shipped profile.
2026-10-29 21:19:14 +08:00
Yichen Jiang babf1f6612 Merge master into worktree/sync-dsh-0.2.1-rc.5-to-master 2026-10-29 21:14:24 +08:00
creatixchu 0588356f62 feat(cua): present a native permission guide beside System Settings 2026-10-29 20:48:53 +08:00
sjw1231 c9970438d3 Merge branch 'feat/apply-patch' into feat/apply-patch-default-on
Takes master's re-recorded plan-review, creation-recommendations, and
plugin-recommendations scenarios from the base and refreshes their headers
and schema sidecar for the enabled apply_patch tool.
2026-10-29 18:57:53 +08:00
Shigma f45c48dce4 fix(cordis): transfer cross-tree moves and contain Include refresh rejections 2026-10-29 18:54:29 +08:00
sjw1231 5e1f146eba Merge branch 'master' into feat/apply-patch
Regenerates the client slot, Cordis API, tool, and config catalogs on the
merged tree and re-records the tool-catalog pairing.
2026-10-29 18:49:24 +08:00
sjw1231 14d3e53c19 feat(fs): ship apply_patch on and the observation policy off
Evaluation on the shipped compositions decided the defaults: the `dsh-base`
`tool-fs` row and the Web `standard` preset enable apply_patch, keeping the
SDK and Desktop `standard` tool sets equal (the SDK PTC overlay keeps the
base row while the Desktop PTC preset lists its own, which the parity
exceptions record); the `fs-observation-policy` row ships `disabled: true`,
so write, edit, and apply_patch mutate unconditionally in every profile, and
the package is classified as an optional product package.

The write and edit guidance stops citing the policy as the default and the
apply_patch guidance asks for enough hunk context instead of a prior read.
The two recordings that capture a policy refusal re-enable the row through a
per-scenario runtime.cordis.yml; the fixed-budget compaction scenarios pin
`applyPatch: false` so their recorded thresholds hold; every other sidecar
and recorded header follows. An upgrade guide records the default change.
2026-10-29 18:36:52 +08:00
sjw1231 ea4837abb1 feat(fs): keep apply_patch opt-in and the observation policy mounted
This pull request lands the tool; switching the shipped defaults is a
separate pull request stacked on it. Every shipped `tool-fs` row states
`applyPatch: false`, the `fs-observation-policy` row stays mounted, the
write, edit, and apply_patch guidance names the policy, and every recorded
expectation outside the apply-patch scenarios returns to the master
baseline. The upgrade guide, the parity exception, and the optional
classification of the policy package move to the stacked change.
2026-10-29 18:36:31 +08:00
creatixchu a027dcaeb2 fix(cua): wire application drag types and refresh generated references 2026-10-29 18:22:08 +08:00
ZiyaandMagolor 341ea6eea4 feat(schedule): integrate standalone tasks with the existing WebUI (#6189)
* feat(schedule): manage Host tasks with typed timing and delivery targets

* fix(schedule): align task creation button halves

* refactor(schedule): remove obsolete Session reminder runtime

* refactor(schedule): simplify task UI and preserve keyboard navigation

* fix(schedule): address task delivery and interface review findings

* test(schedule): normalize bundle module paths on Windows

* fix(schedule): cover reserved targets and trim unrelated changes

* refactor(schedule): minimize task management changes after rebase

* test(schedule): align rebased fixtures and documentation records

* test(schedule): refresh SDK scenarios added on master

---------

Co-authored-by: Magolor <[email protected]>
2026-10-29 18:11:48 +08:00
sjw1231 d8243a3f52 feat(base): enable apply_patch on the dsh-base tool-fs row
The SDK/Desktop parity check requires the `standard` tool sets to match, so
the base row enables apply_patch like the Web standard preset; the SDK PTC
overlay keeps that row while the Desktop PTC preset lists its own, which the
parity exceptions now record. fs-observation-policy, no longer mounted by
default, is classified as an optional product package.

Every headless, SDK, and ACP recording follows: sidecars and recorded headers
gain the apply_patch schema, the fixed-budget compaction scenarios pin
`applyPatch: false` so their recorded thresholds hold (model-switch-notice and
session-resume own their schema sidecars again), the parent presets that
borrow the default pin mirror the base row, and the pwsh and Python PTC pins
carry the schema and guidance.
2026-10-29 17:34:25 +08:00
sjw1231 e6f54cecbb Merge branch 'master' into feat/apply-patch
Keeps the apply_patch toolview registration with master's file-menu inject,
takes master's shortened slot JSDoc, re-adds the seven filesystem type-equiv
manifest entries, regenerates the event matrix and client catalogs, moves the
fs-observation-policy upgrade guide under v0.2.2-alpha.2 with the matching
fs-patch version, and refreshes the two SDK scenarios master added for the
write and edit guidance change.
2026-10-29 17:00:06 +08:00
sjw1231 fe5450b152 feat(fs): ship without the observation policy and enable apply_patch in the Web standard preset
Evaluation on the shipped Web composition decided the defaults: the
`fs-observation-policy` row in dsh-base ships `disabled: true`, so write,
edit, and apply_patch mutate unconditionally in every profile; the Web
`standard` preset lists apply_patch; and the tool-fs `applyPatchGuard` switch
is gone, apply_patch always consulting the fs/* intent waterfalls like the
other mutating tools.

The write and edit guidance stops citing the policy as the default, and the
apply_patch guidance asks for enough hunk context instead of a prior read.
The two recordings that capture a policy refusal (fs-policy-reject and
apply-patch-rejected) re-enable the row through a per-scenario
runtime.cordis.yml; every other sidecar follows the prompt change, and the
Web standard-preset recordings gain the apply_patch schema. An upgrade guide
records the default change.
2026-10-29 16:38:42 +08:00
Yichen Jiang 548fa6b843 Merge pull request #7531 from deepseek-harness/worktree/hfai-session-request-header
feat(llm): allow plugins to prepare pi-ai request headers
2026-10-29 16:03:19 +08:00
Yichen Jiang d54475a681 fix(llm): preserve header overrides and safe failure diagnostics 2026-10-29 15:52:41 +08:00
Kexin Liu 9e52bf1009 Merge pull request #7518 from deepseek-harness/perf/client-modules-entry-name-index
perf(client-modules): index Loader entries once per flush
2026-10-29 15:49:22 +08:00
liukx0205 8b1e5e7d88 fix(client-modules): contain flush enumeration failures 2026-10-29 15:37:23 +08:00
yudshj 13e8ca59a4 fix(sidebar): 仅在标签已显示时闪烁并减弱光晕 2026-10-29 15:32:17 +08:00
yudshj 4b11531c86 fix(sidebar): 修正柔光反馈、停靠展开和铺满焦点交接并精简树接口
连续揭示同一分栏时保留新一次柔光;精简文件树接口、测试与文档。
2026-10-29 15:32:17 +08:00
yudshj a7d2b5c214 feat(sidebar): 文件菜单支持在侧栏或浮窗中打开并移动已有标签
openResource、openResourceIn 与 tab.actions.openResource 新增可选
destination: 'sidebar' | 'float',以单条布局历史揭示目标宿主中的副本、
把另一宿主中的副本连同 tab id 与 occurrence 移过去,或在该宿主新开。
未传 destination 时落位规则不变。open-in-app 的文件菜单改为传
destination 而非来源 paneId,修复浮窗内文件菜单因浮动 paneId 抛出
openTab requires a docked pane 的问题。
2026-10-29 15:32:17 +08:00
yudshj 2e6370fe1d feat(sidebar): 按分栏保留文件树并由挂载插件处理打开 2026-10-29 15:32:16 +08:00
Yichen Jiang a05a0d02fa feat(llm): allow plugins to prepare pi-ai request headers 2026-10-29 14:42:09 +08:00
Yichen Jiang 534dac8c81 fix(web): customize thinking block rendering (#7484) 2026-10-29 14:21:30 +08:00
LogosVeritas 09eac50a14 Merge master into feat/python-sdk-slash-commands 2026-10-29 12:59:36 +08:00
LogosVeritas 74ff76d1ff refactor(sdk): simplify slash command input APIs 2026-10-29 12:33:11 +08:00
Yichen Jiang dc169c71e7 Merge pull request #7482 from deepseek-harness/worktree/forge-review-navigation-checks
fix(forge): deduplicate checks and improve review navigation
2026-10-29 11:47:17 +08:00
Yichen Jiang c1d7dad796 Merge pull request #7487 from deepseek-harness/worktree/forge-git-session-permissions
fix(forge): honor session permissions for Git inspection
2026-10-29 11:46:35 +08:00
_Kerman 6a994ee917 Merge pull request #7463 from deepseek-harness/fix/plugin-install-failure-diagnostics
fix(plugin-manager): 安装失败时补齐诊断输出与完整日志入口
2026-10-29 11:42:57 +08:00
Yichen Jiang 4f40200ed8 fix(forge): clarify filter failures and query guarantees 2026-10-29 11:16:34 +08:00