Tianyi Cui
b5f1539733
fix(session): validate surface replacement endpoints
2026-09-03 15:26:35 +08:00
Tianyi Cui
618a7a46e8
fix(session): accept released migration data
2026-09-03 13:07:26 +08:00
Tianyi Cui
731f1268d1
docs(snapshot): correct child replay ordering
2026-09-03 02:00:11 +08:00
Tianyi Cui
f044d3fad2
fix(session): address v0 migration review
2026-09-03 01:52:25 +08:00
Tianyi Cui
99567996bd
test(session): cover body-free listing races
2026-09-02 22:16:06 +08:00
Tianyi Cui
fe06dccea4
Merge remote-tracking branch 'origin/master' into worktree/session-format-03-v0-v1-migration
...
# Conflicts:
# docs/config-catalog.i18n.yaml
# docs/config-catalog.md
# docs/config-catalog.zh.md
# docs/persistence-catalog.i18n.yaml
# docs/persistence-catalog.md
# packages/api/session-controller/README.i18n.yaml
# packages/api/session-controller/README.md
# packages/api/session-controller/README.zh.md
2026-09-02 21:40:29 +08:00
Tianyi Cui
17f49f6191
fix(session): keep cold listing body-free
2026-09-02 21:29:43 +08:00
Tianyi Cui
9d3bbd46ee
Merge pull request #3459 from deepseek-harness/revert-3452-feat/session-message-edit
...
Revert "feat(session, agent, web): support same-session message editing"
2026-09-02 21:21:14 +08:00
Tianyi Cui
e974a655a0
Revert "feat(session, agent, web): support same-session message editing"
2026-09-02 21:20:07 +08:00
Tianyi Cui
5a9353adda
Merge remote-tracking branch 'origin/master' into worktree/session-format-03-v0-v1-migration
...
# Conflicts:
# docs/persistence-catalog.i18n.yaml
# docs/persistence-catalog.md
2026-09-02 20:48:26 +08:00
lsdsjy
f98bfbda85
Merge pull request #3452 from deepseek-harness/feat/session-message-edit
...
feat(session, agent, web): support same-session message editing
2026-09-02 20:41:36 +08:00
Tianyi Cui
086b52f986
test(session): cover generation scan failures
2026-09-02 20:07:48 +08:00
Tianyi Cui
17f784c936
test(subagent): scope SIGKILL grace proof to POSIX
2026-09-02 19:34:52 +08:00
Tianyi Cui
aa97372fe4
fix(test): repair alpha fixture and Windows gates
2026-09-02 19:17:32 +08:00
Tianyi Cui
0850261706
fix(test): align current session fixture headers
2026-09-02 19:01:41 +08:00
Tianyi Cui
e0604df362
chore(release): align session format packages with alpha.5
2026-09-02 18:47:59 +08:00
Tianyi Cui
2ca559dee3
Merge master into session format migration
2026-09-02 18:46:49 +08:00
lsdsjy
ef88756f13
feat(session, agent, web): support same-session message editing
2026-09-02 18:26:55 +08:00
Tianyi Cui
c024c53d34
Merge pull request #3458 from deepseek-harness/xtr/record-browser-gif-gh-attach
...
docs(record-browser-gif): publish PR GIFs with gh --attach
2026-09-02 18:24:51 +08:00
Tianyi Cui
2f091ee8e6
docs(record-browser-gif): publish PR GIFs with gh --attach
...
Prefer gh v2.99.0's repeatable --attach flag for publishing demonstration
GIFs: it uploads the artifact and rewrites the body's local-path
reference in place, keeping media out of git history without an orphan
assets branch. The assets-branch workflow remains the fallback when the
GIF exceeds 10 MB, gh is older than v2.99.0, or the repository is not on
github.com.
2026-09-02 17:58:36 +08:00
imccyu
49a606bc5b
Merge pull request #3456 from deepseek-harness/release/dsh-0.1.2-alpha.5-version-to-master
...
sync: merge 0.1.2-alpha.5 to master
2026-09-02 17:47:12 +08:00
Tianyi Cui
3bdc1b37e5
Merge master into session format migration
2026-09-02 17:43:06 +08:00
Tianyi Cui
cf9948b147
Merge master into session format migration
...
# Conflicts:
# packages/session/session-projection-cache/tests/cache.spec.ts
2026-09-02 17:41:58 +08:00
Dudu-0223
f7cee2c888
Merge pull request #3333 from deepseek-harness/feat/3330-team-send-message-steer
...
feat(agent-team): unify messages on steer
2026-09-02 17:27:55 +08:00
imccyu
cf126d8699
Merge remote-tracking branch 'origin/merge/projcache-v6-compat-into-master' into release/dsh-0.1.2-alpha.5-version-to-master
2026-09-02 17:25:23 +08:00
imccyu
0a1efddd40
Merge pull request #3455 from deepseek-harness/merge/projcache-v6-compat-into-master
...
sync: merge projection cache fix from 0.1.2-alpha.5 to master
2026-09-02 17:18:44 +08:00
Dudu-0223
eeddd457cd
fix(agent-team): preserve mailbox order on cold resume
2026-09-02 17:14:44 +08:00
Dudu-0223
1180707084
Merge remote-tracking branch 'origin/master' into feat/3330-team-send-message-steer
...
# Conflicts:
# packages/experimental/agent-team/tests/team.spec.ts
2026-09-02 16:58:09 +08:00
imccyu
c917fe6d46
Merge remote-tracking branch 'origin/master' into merge/projcache-v6-compat-into-master
...
# Conflicts:
# packages/session/session-projection-cache/src/spec.ts
# packages/storage/storage-json/src/per-record-unit.ts
# packages/storage/storage-json/tests/json-backend.spec.ts
2026-09-02 16:55:00 +08:00
imccyu
5a69ba1cdd
Merge pull request #3445 from deepseek-harness/release/dsh-0.1.2-alpha.5
...
release: dsh@0.1.2-alpha.5
2026-09-02 15:57:43 +08:00
imccyu
db6bdc3576
release(dsh): 0.1.2-alpha.5
dsh-v0.1.2-alpha.5
2026-09-02 15:48:33 +08:00
imccyu
1915665e1e
Merge pull request #3438 from deepseek-harness/fix/projcache-cross-version-read-compat
...
fix(session-projection-cache): survive upgrades across projcache domain versions
2026-09-02 15:47:14 +08:00
imccyu
db2dd2f840
docs(session-projection-cache): land the read-compat note as implemented and state fixture provenance in place
...
Review follow-ups: the Agent Note triplet moves to implemented/ rewritten as
shipped state (Decision/Consequences/Testing, present tense), cross-linked
both ways with the 2026-07-28 storage recovery proposal whose projcache
reset/destroy path it supersedes (that proposal stays live for authoritative
and whole-medium damage). The fixtures spec header and the note state the
fixture provenance as recorded facts of the released builds instead of
citing local tooling, and the spec JSDoc points at the note's final home.
2026-09-02 15:25:07 +08:00
imccyu
bef26396e5
docs(session-projection-cache): cross-version read-compat note and schema-change fixture rule
...
The proposed Agent Note records the three shipped on-disk generations of
session_projcache, the read-compat and backup-and-skip decisions, the
upgrade matrix, and the rejected alternatives. The package README documents
the upgrade guarantees and requires every future schema or domain-version
change to land with archived fixtures and tests proving its upgrade story.
The storage subsystem page and the generated cordis catalog pick up the new
DomainSpec fields.
2026-09-02 15:25:07 +08:00
imccyu
49df707c86
fix(session-projection-cache): keep upgraded caches readable and boots safe across domain versions
...
The session_projcache domain declares compatibleVersions: [3, 4] and
invalidRecords: 'backup-and-skip'. The two lineage identity fields become
optional — records admitted from older versions predate them, and the single
reader (identityMatches) interprets absence as the unseeded lineage: exact
for unseeded sessions, while a seeded caller fails the match and refolds
cold, so the lineage binding keeps its protection. Upgraded homes therefore
boot and serve their cached listing titles immediately, including homes
whose new tree already holds current-stamped documents without lineage
fields, and a record failing validation anyway is backed up and skipped
instead of refusing the plugin tree.
tests/fixtures/ archives the real on-disk media of every shipped generation
(v3 whole-unit file, v4 and v5 per-record documents, and the lineage-less
current-stamped shape); fixtures.spec.ts proves each recovers through the
real storage stack, rewrites to the current format on the next live write,
and that a hopeless record is salvaged without costing the boot.
2026-09-02 15:25:07 +08:00
imccyu
fcd109d29a
feat(storage): version read compatibility and backup-and-skip salvage for per-record units
...
A DomainSpec may declare compatibleVersions: older domain versions whose
stored records the current record schemas still accept. The json backend's
per-record reads admit documents stamped with a declared version (writes
always stamp the current one), and the legacy whole-unit bootstrap migrates
only a file whose stored version is in the accepted set — previously it
migrated any version and stamped the records current, turning a discardable
stale cache into invalid-record failures that refused the whole domain at
open and permanently poisoned the new tree on first boot.
A DomainSpec may also declare invalidRecords: 'backup-and-skip' for domains
whose records are disposable derived data: a stored record failing its zod
schema is moved aside through the new optional KvUnit.backupRecord
(<key>.json.bak.<YYYYMMDDHHmm> under the json backend), logged with its
cause, and skipped, instead of rejecting the open. The default stays
fail-loud, and so do backends without backupRecord.
2026-09-02 15:25:07 +08:00
Turtle
66ca93c3dc
Merge pull request #3441 from deepseek-harness/turtle/fix-project-date-fields
...
fix(issue-management): restore Project date fields
2026-09-02 15:20:46 +08:00
Turtle
070b46e1ef
fix(issue-management): restore Project date fields
2026-09-02 15:06:25 +08:00
Tianyi Cui
2b529bc2aa
test(session-persistence-jsonl): keep migration assertions typed
2026-09-02 13:50:00 +08:00
Tianyi Cui
91e5f8838e
Merge master into session format migration
2026-09-02 13:42:50 +08:00
Turtle
be70505f9e
Merge pull request #3417 from deepseek-harness/turtle/fix-issue-field-start-date
...
fix(issue-management): write Start date through Issue fields
2026-09-02 13:41:29 +08:00
Tianyi Cui
723980ac78
Merge master into session format migration
...
# Conflicts:
# packages/experimental/webworker-runtime/tests/vfs-example-fixture.ts
2026-09-02 13:41:24 +08:00
Yichen Jiang
bbae7318f0
Merge pull request #3424 from deepseek-harness/worktree/github-issue-725-verification-7e80bd
...
fix(llm): keep streamed tool-call identity across empty deltas
2026-09-02 13:35:55 +08:00
Tianyi Cui
7145acfe07
Merge master into session format migration
...
# Conflicts:
# .agents/notes/archived/architecture/2026-06-18-shared-persistence-write-coordinator.i18n.yaml
# .agents/notes/implemented/architecture/2026-06-14-session-persistence.i18n.yaml
# .agents/notes/implemented/architecture/2026-06-14-session-persistence.md
# .agents/notes/implemented/architecture/2026-06-14-session-persistence.zh.md
# .agents/notes/implemented/architecture/2026-07-24-project-session-directories.i18n.yaml
# .agents/notes/implemented/architecture/2026-07-24-project-session-directories.md
# .agents/notes/implemented/architecture/2026-07-24-project-session-directories.zh.md
# .agents/notes/implemented/architecture/2026-08-05-session-preparation.i18n.yaml
# .agents/notes/implemented/architecture/2026-08-05-session-preparation.md
# .agents/notes/implemented/architecture/2026-08-05-session-preparation.zh.md
# .agents/notes/implemented/architecture/2026-08-10-message-feedback-sidecar.i18n.yaml
# .agents/notes/implemented/architecture/2026-08-10-message-feedback-sidecar.md
# .agents/notes/implemented/architecture/2026-08-10-message-feedback-sidecar.zh.md
# .agents/notes/implemented/architecture/2026-08-27-handle-based-session-persistence.i18n.yaml
# .agents/notes/implemented/bug-fix/2026-07-28-load-pre-identity-session-messages.md
# .agents/notes/implemented/bug-fix/2026-07-28-load-pre-identity-session-messages.zh.md
# .agents/notes/implemented/bug-fix/2026-08-04-load-pre-react-loop-sessions.md
# .agents/notes/implemented/bug-fix/2026-08-04-load-pre-react-loop-sessions.zh.md
# .agents/notes/implemented/bug-fix/2026-09-01-host-goal-pause-aborts-turn.i18n.yaml
# .agents/notes/implemented/feature/2026-08-10-web-session-log-export.i18n.yaml
# .agents/notes/implemented/feature/2026-08-10-web-session-log-export.md
# .agents/notes/implemented/feature/2026-08-10-web-session-log-export.zh.md
# apps/cli/tests/profiles/headless/tests/session-format-guard.expected.e2e.ts
# apps/web/tests/cold-blank-session.e2e.ts
# apps/web/tests/message-actions.e2e.ts
# apps/web/tests/scaffold.ts
# apps/web/tests/workspace-management.e2e.ts
# docs/config-catalog.i18n.yaml
# docs/config-catalog.md
# docs/config-catalog.zh.md
# docs/event-producer-consumer.i18n.yaml
# docs/event-producer-consumer.md
# docs/event-producer-consumer.zh.md
# docs/persistence-catalog.i18n.yaml
# docs/persistence-catalog.md
# docs/subsystems/feedback.i18n.yaml
# docs/subsystems/feedback.md
# docs/subsystems/feedback.zh.md
# docs/subsystems/persistence.i18n.yaml
# docs/subsystems/persistence.md
# docs/subsystems/persistence.zh.md
# packages/acp/acp/src/index.ts
# packages/acp/acp/tests/bridge.spec.ts
# packages/api/session-controller/src/list.ts
# packages/api/session-controller/tests/agent.host.spec.ts
# packages/api/session-controller/tests/session-cold.host.spec.ts
# packages/api/session-controller/tests/session-projections.host.spec.ts
# packages/api/session-controller/tests/session-search.host.spec.ts
# packages/api/session-controller/tests/test-remote.ts
# packages/api/session-controller/tests/transport.host.spec.ts
# packages/core/agent-loop/src/index.ts
# packages/core/agent-loop/tests/config-session-id.spec.ts
# packages/core/agent-loop/tests/resume.spec.ts
# packages/extensions/tool-cordis/src/api-catalog.ts
# packages/feedback/message-feedback/src/index.ts
# packages/feedback/message-feedback/tests/helpers.ts
# packages/feedback/message-feedback/tests/message-feedback.spec.ts
# packages/session-query/session-log-export/src/archive.ts
# packages/session-query/session-log-export/tests/archive.host.spec.ts
# packages/session-query/session-log-export/tests/route.host.spec.ts
# packages/session-query/session-query-sqlite/README.i18n.yaml
# packages/session-query/session-query-sqlite/README.md
# packages/session-query/session-query-sqlite/README.zh.md
# packages/session-query/session-query-sqlite/src/index.ts
# packages/session-query/session-query-sqlite/tests/sqlite.spec.ts
# packages/session-query/session-query/README.i18n.yaml
# packages/session-query/session-query/README.md
# packages/session-query/session-query/README.zh.md
# packages/session-query/session-query/src/corpus.ts
# packages/session-query/session-query/tests/observation.spec.ts
# packages/session-query/session-query/tests/session-query.spec.ts
# packages/session-query/session-query/tests/tracing.spec.ts
# packages/session/session-checkpoint-policy/tests/session-checkpoint-policy.spec.ts
# packages/session/session-persistence-jsonl/README.i18n.yaml
# packages/session/session-persistence-jsonl/README.md
# packages/session/session-persistence-jsonl/README.zh.md
# packages/session/session-persistence-jsonl/src/index.ts
# packages/session/session-persistence-jsonl/tests/jsonl.spec.ts
# packages/session/session-persistence-jsonl/tests/zstd.spec.ts
# packages/session/session-persistence/README.i18n.yaml
# packages/session/session-persistence/README.md
# packages/session/session-persistence/README.zh.md
# packages/session/session-persistence/src/coordinator.ts
# packages/session/session-persistence/src/index.ts
# packages/session/session-persistence/tests/contract.ts
# packages/session/session-persistence/tests/coordinator-contract.ts
# packages/session/session-persistence/tests/persistence.spec.ts
# packages/session/session-telemetry/package.json
# packages/shell/tool-bash/tests/tools.spec.ts
# packages/subagent/subagent/src/continuation.ts
# packages/subagent/subagent/tests/list-children.spec.ts
# packages/workspace/workspace/src/index.ts
# packages/workspace/workspace/tests/workspace.spec.ts
# scripts/gen-cordis-catalog.ts
2026-09-02 13:34:40 +08:00
Chinesezjc
a631115597
Merge pull request #2828 from deepseek-harness/feat/toolcard-image-result
...
feat(ui-tool): render read_image results as the image
2026-09-02 12:45:39 +08:00
Magolor
d921d4b357
fix(storage-json): reject cross-version legacy bootstrap ( #3431 )
...
* fix(storage-json): reject cross-version legacy bootstrap
* test(webworker): sync projection cache fixture version
* docs(storage): record legacy bootstrap version ownership
2026-09-02 04:37:15 +00:00
Chinesezjc
3648331b11
Merge remote-tracking branch 'origin/master' into feat/toolcard-image-result
...
# Conflicts:
# packages/client/ui-chat/src/client/chat/ChatNodeSeat.tsx
# packages/client/ui-chat/src/client/chat/ChatView.tsx
# packages/extensions/cordis-client-runner/src/client/slot-catalog.ts
2026-09-02 12:02:25 +08:00
Xu Hanxiang
d3ab4ce53d
Merge pull request #3401 from deepseek-harness/issue-1424-goal-pause-stop-turn
...
fix(goal): abort the live turn on host-initiated pause
2026-09-02 11:32:12 +08:00
Turtle
d76c974fbb
Merge branch 'master' into turtle/fix-issue-field-start-date
2026-09-02 11:13:10 +08:00
Yichen Jiang
b03261caad
fix(llm): narrow the fix to identity acceptance
...
Refusing a response whose tool call never receives an identity needed a new
failure code, a change to the default retryable set, and a `[DONE]` gate that
overrode the finish reason a provider had already sent — turning a safe
`max-tokens` truncation into up to five retries. The lenient wire it guarded
against is hypothetical: no report describes a stream that omits identity
entirely, and the pre-existing test for it is labelled as such.
Only `acceptIdentity` and the widened wire types remain. They close the
reported erasure and cannot reach a worse outcome than the previous
assignment, because the set of inputs that assign only narrows.
2026-09-02 10:34:09 +08:00