Commit Graph
7144 Commits
Author SHA1 Message Date
imccyu 06bf7ce024 Revert "fix(settings): show saved API keys and preserve environment detection…"
This reverts commit 9bb49604b63bb5d50e879bcf63c9f5cb2afbd737.
2026-11-03 12:33:44 +08:00
imccyu ef5f28d0fb Merge master into worktree-sync-dsh-0.2.2-to-master 2026-11-03 11:47:40 +08:00
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
imccyu 6e77ea0131 feat(web): boot past failed optional client plugins (#7733)
* feat(web): boot past failed optional client plugins

The Web client boot audit now follows Host startup strictness. An
inactive entry on the global required list (module system, Session
transport, renderer, application frame, Session view, and sidebar)
still rejects startup and the report marks the required entries.
Other inactive entries produce one console warning and the
application mounts without them. The boot page no longer draws a
failed entry before the audit decides.

* fix(web): audit boot entries whose creation rejects and name activation errors

ClientEntries.start() now logs a row whose Loader creation rejects, such
as a module that exports no plugin, and leaves it inactive for the boot
audit, as the Host Loader group does. The audit awaits only failed
fibers to report their recorded activation error. Notes, READMEs, and
the Web client subsystem page describe the browser boot audit; tests
cover invalid exports, carrier presentation of optional failures, and
required names absent from the boot graph.

* test(web): fail test carriers and e2e on inactive client entries

The product boot only warns about inactive entries outside its required
list, but tests must still surface every plugin that fails. TestClient
and createClientTest now require every roster entry to activate unless
a case passes allowInactiveEntries. The watchConsole tripwire, the
real-host smoke, and the assembled jsdom boot treat a web boot warning
as a failure with no opt-out.

Docs: the Web README names Session control, notes that an entry without
a fiber is reported as an import failure like the Host audit's "failed
to import", and the startup strictness note lists the browser tests.
2026-11-02 16:20:50 +00: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
63026c7a5c feat(client): 左侧栏纵向空间优化,工作区滚动吸顶优化 (#7337)
* feat(client): share sidebar scrolling and dock workspace header

* fix(client): keep shared sidebar scrolling vertical

* fix(client): match sticky workspace header to sidebar fill

* fix(client): stabilize transparent sticky sidebar and compact row layout

* refactor(ui-primitives): keep sticky section observer internal

* fix(ui-primitives): limit row animations to visible scrollports

* feat(ui-workspace): drive sticky clipping with scroll timelines

* refactor(ui-primitives): bound row animations by the window

* feat(client): hand off sidebar wheel scrolling to the workspace list

The workspace list scrolls inside its own one-viewport section below the toolbar instead of sliding under a clipped sticky toolbar. The sidebar viewport scrolls the navigation away first; ui-sidebar's scroll hand-off splits each wheel event between the viewport and the section scroller, which the occupant binds through the slot-level useSectionScroller hook supplied by hookContext.

* test(client): cover the sidebar scroll hand-off and align the list scrollbar

Test-owned sidebar roles declare the slot-level scroller inject and pass its hookContext. Unit tests cover the hand-off split, wheel filtering, and listener rebinding; the e2e scenario checks one wheel event crossing from the navigation into the list and back. The list area reaches 2px from the sidebar edge for its scrollbar while rows keep the 8px inset. The unused clip module, its tests, and the sticky clearance variable are removed; READMEs and the slot catalog describe the nested scrolling.

* refactor(ui-primitives): restore MenuGroup sticky observation

The section observer was extracted for a sticky workspace toolbar that nested scrolling no longer has, so MenuGroup is its only consumer again. MenuGroup and its tests return to the master implementation.

* fix(client): keep native sidebar scrolling away from the hand-off boundary

The hand-off splits a wheel gesture in JavaScript only when its first event must move the sidebar viewport or starts outside the section scroller, and then keeps that gesture, including momentum, until wheel events pause for 100ms. Gestures the section scroller can take alone stay native, an uncancelable native gesture that reaches the section top passes the rest to the viewport, and events another listener canceled are left alone. The section is at most one viewport tall, and exactly that tall while search is expanded, so a short list leaves the navigation in place. Stale absence assertions and unused viewport declarations are removed; the READMEs document portals and the data-sidebar markers.

---------

Co-authored-by: Yif <[email protected]>
Co-authored-by: imccyu <[email protected]>
2026-11-02 22:27:26 +08:00
Xu Hanxiang 4658cba7e0 Merge pull request #7564 from deepseek-harness/fix/http-proxy-http1
fix(liveshare): 客户端优化
2026-11-02 12:59:03 +00:00
Magolor 86e2cc8277 feat(schedule): prefill task creation on release 0.2.2 (#7702)
* feat(schedule): prefill task creation on release 0.2.2

* fix(schedule): remove blank line from creation prompt

* docs(schedule): clarify creation flow and review checks

* fix(schedule): append task creation prompt to drafts
2026-11-02 17:59:03 +08:00
creatixchu c87fd429e0 test(web): align optional tools for recording and replay 2026-11-02 16:38:56 +08:00
creatixchu 3def5c9e24 test(fs): pin recorded patch tool and cover configurable defaults 2026-11-02 16:38:56 +08:00
Dudu-0223 36a0cab333 Merge pull request #7533 from deepseek-harness/fix/subagent-model-selection-guidance
fix(subagent): 推理强度要求完整路由,显式选路使用模型默认强度
2026-11-02 16:30:49 +08:00
CreatixChu 4eb2118dba Merge pull request #7515 from deepseek-harness/feat/cua-optional-bundle
feat(cua): 随 DSH 分发 Computer Use,并在实验性插件列表中显示
2026-11-02 16:21:57 +08:00
CreatixChu d203f5c418 Merge pull request #7516 from deepseek-harness/feat/cua-desktop-helper
fix(desktop): 随附并独立启动 macOS Computer Use helper
2026-11-02 16:19:16 +08:00
Turtle 58a3febaf2 Merge pull request #7663 from deepseek-harness/agent/stale-auth-cookie-431-6faa8d4c5eb6
fix(desktop): stop accumulating Host auth cookies across launches
2026-11-02 16:15:56 +08:00
Dudu-0223 65a87a5860 fix(subagent): clarify selection guidance and stabilize Web smoke capture 2026-11-02 15:52:24 +08:00
Magolor 8d0c3b4633 fix(settings): show saved API keys and preserve environment detection (#7695)
* fix(settings): show saved API keys in provider editors

* test(settings): retain DeepSeek environment detection states

* fix(settings): classify saved-key reads and align browser expectations

* test(settings): cover saved keys under derived references

* test(settings): verify saved endpoints and keys on provider requests

* fix(settings): preserve credential drafts without changing authentication
2026-11-02 15:00:19 +08:00
creatixchu 7d9bc01a50 Merge updated master and helper identity into bundled Computer Use 2026-11-02 14:58:31 +08:00
creatixchu 4ac71ed747 Merge master with separate development helper identity 2026-11-02 14:55:17 +08:00
Turtle 0039a8879a fix(client): scope math copy to one Markdown document
Refs #7690
2026-11-01 22:00:57 +08:00
Turtle 898b2875b3 fix(client): copy selected KaTeX math as TeX source
Refs #7690
2026-11-01 21:47:19 +08:00
Dudu-0223andimccyu 0487699ae4 feat(subagent): share ID-based identity and collaboration guidance (#7519)
* feat(subagent): share identity and collaboration guidance

* fix(subagent): complete shared guidance snapshot expectations

* fix(subagent): match task descriptions to the user language

* refactor(subagent): retain shared guidance with Session ids

* test(subagent): recognize parent ids in shared identity

* Checkpoint ID collaboration guidance generated expectations

* Preserve historical Web schema sidecars

* fix(test-support): preserve job references during snapshot refresh

* test(subagent): refresh ID-only collaboration guidance outputs

* fix(subagent): rely on list_agents tool description

* fix(subagent): keep collaboration guidance consistent with live identity

* test(team): parse parent identity from shared guidance

* test(subagent): address parent from shared identity context

* test(subagent): refresh compiled Web guidance snapshots

* test(subagent): refresh browser collaboration context fixtures

* docs(subagent): attribute required identity to standard controls

* fix(subagent): clarify collaboration identity prompts

* test(subagent): remove duplicate PowerShell collaboration context

* refactor(subagent): match unavailable-root errors by name and code

---------

Co-authored-by: imccyu <[email protected]>
2026-10-31 22:38:07 +08:00
Turtleandlsdsjy 8394c706fc test(desktop): cover legacy Host cookie cleanup failure
Co-authored-by: lsdsjy <[email protected]>
2026-10-31 20:22:50 +08:00
Turtleandlsdsjy 93bef27ec7 fix(desktop): remove legacy Host auth cookies from the default session
Earlier releases left one dsh-auth-* cookie per launch in the default
Electron session. Each Host start now removes them so other requests to
127.0.0.1 stop carrying them.

Co-authored-by: lsdsjy <[email protected]>
2026-10-31 19:55:51 +08:00
Turtleandlsdsjy 5868dbc357 fix(desktop): stop storing Host auth cookies in the Electron session
Each Desktop launch picks a random Host port and the native welcome client
authenticated through net.fetch with credentials: 'include', so the default
Electron session kept one port-named 30-day dsh-auth cookie per launch.
Cookies ignore ports, so every request carried all of them; after about 70
launches the Cookie header exceeded Node's 16 KiB limit, the Host answered 431,
and startup failed with 'Web authentication failed'.

The welcome RPC client and the account WebSocket now send the Cookie header
returned by authenticateWebHost explicitly and use no cookie jar.

Co-authored-by: lsdsjy <[email protected]>
2026-10-31 19:46:38 +08:00
Yifffan a1c3458e12 Merge pull request #7504 from deepseek-harness/feat-agent-teamwork-ui-polish
feat(web): improve agent collaboration panels and tool receipts
2026-10-31 11:10:03 +08:00
Dudu-0223 56e79b50ea Merge branch 'codex/stack-review-6288' into codex/stack-review-7504 2026-10-31 10:41:09 +08:00
Dudu-0223 82095d7f04 Merge branch 'codex/stack-review-6285' into codex/stack-review-6288 2026-10-31 10:40:47 +08:00
Dudu-0223 fe9cd80b28 revert: remove follow-up CI repairs 2026-10-31 10:40:31 +08:00
Dudu-0223 908005191d Merge branch 'codex/stack-review-6288' into codex/stack-review-7504 2026-10-31 00:15:31 +08:00
Dudu-0223 8e5fa7bd24 Merge branch 'codex/stack-review-6285' into codex/stack-review-6288 2026-10-31 00:14:38 +08:00
Dudu-0223 b6a75e1f54 fix(ci): stabilize Goal clocks and dependency restoration 2026-10-31 00:09:40 +08:00
Dudu-0223 127923cfec fix(client): expose complete subagent labels and total counts 2026-10-30 23:46:02 +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
Yudong Han 02578b3cce Merge pull request #7629 from deepseek-harness/fix/revert-4484-display-dollar
revert(ui-primitives): 撤回 #4484 的多行美元公式解析
2026-10-30 17:43:58 +08:00
Magolor 3d8c0d4941 test(web): isolate plugin configuration from local credentials (#7614)
* test(web): isolate plugin config from local credentials

* test(web): preserve provider defaults in config fixtures
2026-10-30 17:24:55 +08:00
Dudu-0223 9bc99d7e02 test(web): make subagent ID clipping fixture deterministic 2026-10-30 17:04:21 +08:00
creatixchu 68a9a068cd Merge type-safe notarization assertions 2026-10-30 17:02:21 +08:00
creatixchu 1a294f7f79 test(desktop): keep notarization assertions type-safe 2026-10-30 17:01:29 +08:00
Dudu-0223 d37b3d98f5 test(web): align collaboration fixtures with panel presentation 2026-10-30 16:57:28 +08:00
creatixchu b5799c7444 Merge CUA notarization diagnostics 2026-10-30 16:52:24 +08:00
creatixchu d9e89b3b37 fix(cua): retain redacted notarization failure diagnostics 2026-10-30 16:47:49 +08:00
Dudu-0223 61e219d546 Merge branch 'refactor/restack-id-ui' into refactor/restack-id-polish 2026-10-30 16:38:14 +08:00
Dudu-0223 b71bb26890 test(web): scope sidebar fold actions to the child row 2026-10-30 16:37:29 +08:00
Dudu-0223 9656ecb162 Merge commit '0f434d505aba1220d92015d61cc64e39442f6304' into refactor/restack-id-polish 2026-10-30 16:04:30 +08:00
creatixchu 5744837ef5 Merge master updates into bundled Computer Use 2026-10-30 15:58:02 +08:00
Dudu-0223 59689da92d test(team): assert ID-only headless collaboration records 2026-10-30 15:57:35 +08:00
creatixchu b177a08e53 Merge master into desktop helper packaging 2026-10-30 15:56:24 +08:00
imccyu ea9912523d Merge pull request #7619 from deepseek-harness/worktree/forge-local-changes-independent
fix(web): keep local changes visible alongside pull requests
2026-10-30 15:49:46 +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
Dudu-0223 454374be98 Merge current master through ID-only Team UI into polish 2026-10-30 15:16:28 +08:00