Commit Graph
154 Commits
Author SHA1 Message Date
Bowen Liang addfca6c65 chore: release v0.50.0 2026-09-12 08:58:04 +08:00
Bowen Liang 4c276c87da chore(deps): update oxlint to 1.82.0
oxlint-tsgolint stays an explicit exact devDependency: oxlint declares
it only as an optional peer dependency, so no package manager installs
it for us and type-aware linting fails loudly without it.
2026-09-12 01:50:11 +08:00
Bowen Liang befa7a986c chore(deps): update tsdown to 0.23.0
No config changes needed: the config only uses deps.neverBundle /
deps.alwaysBundle and dts, all carried over. The rolldown-plugin-dts
0.28.5 bump emits direct export declarations instead of declare +
re-export in lib/index.d.ts; the exported surface is unchanged and the
built JS is byte-identical.
2026-09-12 01:45:29 +08:00
bowenliang123 97ae8ff2ee feat(client): preview File Activity files in the right Sidebar
Clicking a file name in the File Activity card now opens the file's preview
tab in the right Sidebar — the shipped document-preview viewer, reached the
same way the built-in Files sidebar reaches it — on harnesses that serve that
column (dsh 0.1.5-rc.1+). The address is built with the harness's own
browser-safe `fileAddressFor`, inlined by the client bundle exactly as the
Sidebar's file types inline it, so a path under the workspace collapses to the
session-relative spelling and every route to one file settles on one tab.

The capability is OPTIONAL by contract, like the tab registration itself: the
opener reads `ctx.sidebarRight.openResource` through the runtime boundary and
re-proves it per call, and reports whether the column took the address. An
absent column, a face that refuses the address, or an unencodable log path
falls through to the pre-existing system-open behavior, so an older line is
fully functional and nothing becomes an inert click. Pattern rows and
directory targets are never previewable.

Adds the `@deepseek-ai/dsh-util-workspace-path` dev dependency (itself
browser-safe), allows it in the client bundle purity gate, pins the
resource-navigation seam in the compat matrix, and covers the address builder,
the card's preview-then-fallback click, and the optional opener per baseline.
2026-09-11 18:45:28 +08:00
bowenliang123 fffc511949 chore: release v0.49.4 2026-09-11 16:20:38 +08:00
bowenliang123 2d13585f6f chore: release v0.49.3 2026-09-11 14:09:39 +08:00
bowenliang123 49d44ff94b chore: release v0.49.2 2026-09-11 11:26:48 +08:00
bowenliang123 bd4047518e chore: remove packageManager entry from package.json 2026-09-11 11:09:34 +08:00
bowenliang123 3743fdd190 chore: release v0.49.1 2026-09-10 18:00:20 +08:00
bowenliang123 40bb97c563 chore: release v0.49.0 2026-09-10 15:38:12 +08:00
bowenliang123 86fb240ce3 compat: move the V3 baseline to dsh 0.1.5-rc.1
The supported V3 line follows the newest release: the baseline becomes
v0.1.5-rc.1 (tag, vendored session package) and the declared release map
names 0.1.5-rc.1. The release workflow fetches the new tag, and the
disposable-profile install/uninstall was verified for real against the
published 0.1.5-rc.1 CLI (install OK -> 1 composed row -> uninstall OK ->
0 rows).

At 0.1.5-rc.1 `SidebarRightGuideEntry` regained its optional `description`
line, so the guideEntry probe pins order/title/description/icon and the
now-pointless "absent" assertion plumbing is dropped.

Every support/capability label states the 0.1.5-rc.1+ floor;
`0.1.5-alpha.x+` remains only as the V3 LOG-generation label (the format
first appeared at 0.1.5-alpha.1). The docs record the verified matrix and
the seam movement across alpha.1/alpha.2/rc.1.
2026-09-10 11:37:04 +08:00
Bowen Liang 8357bcf731 chore: release v0.48.0 2026-09-10 02:26:17 +08:00
Bowen Liang a4bd0d40f9 compat: move the V3 baseline to dsh 0.1.5-alpha.2
The supported V3 line follows the newest release: the baseline becomes
v0.1.5-alpha.2 (tag, vendored session package) and the declared release
map names 0.1.5-alpha.2. The release workflow fetches the new tag.

The alpha.2 client seams are pinned in the matrix: the conversation
surface moved under the keyed `main` panel (`main.conversation`) while
the plugin's `conversation.view` seat keeps its name, and
`SidebarRightGuideEntry` dropped its description line. tests/baselines.ts
therefore gains a guideEntry probe (the fields present plus the dropped
copy field asserted absent).

Every support/capability label states the 0.1.5-alpha.2+ floor;
`0.1.5-alpha.x+` remains only as the V3 LOG-generation label. The docs
record the verified matrix, the two moved seams, and the install row
that still waits on the CLI's npm publication (the `alpha` dist-tag
lags the release).
2026-09-09 23:03:10 +08:00
Bowen Liang 30892c8dd4 chore: release v0.47.0 2026-09-09 02:50:53 +08:00
Bowen Liang b93b0e24f9 feat(client): add the Context tab to the right Sidebar 2026-09-09 02:43:04 +08:00
Bowen Liang 952f985e69 docs: declare the 0.1.3-alpha.2 and 0.1.5-alpha.1 releases as compatible
Record the three session-log generations the plugin folds, how the seam matrix and the statistics differential verify them, and the one caveat of keeping the projection stateVersion stable (a session folded by an older build keeps its cached figures until its log moves; delete its cache row to force a refold).
2026-09-09 02:10:00 +08:00
Bowen Liang 006a7cf70a chore: release v0.46.1 2026-09-09 01:24:18 +08:00
Bowen Liang 466d96e3a2 chore: release v0.46.0 2026-09-08 00:25:53 +08:00
bowenliang123 2454ebb582 chore: release v0.45.0 2026-09-07 15:45:42 +08:00
Bowen Liang e7e19dbff5 chore: release v0.44.0 2026-09-07 00:37:17 +08:00
Bowen Liang 65de63600d feat: add the pnpm web command to restart the dsh web server 2026-09-07 00:16:05 +08:00
Bowen Liang 7ffb13af91 chore: align @types/react-dom to 18.x matching the dsh web baseline 2026-09-06 21:10:45 +08:00
Bowen Liang 1d5a68e6aa chore: replace native pre-commit hook with husky running pnpm test 2026-09-06 21:10:45 +08:00
Bowen Liang dda9e7a43c release: v0.43.0 2026-09-05 21:06:43 +08:00
Bowen Liang c7604d0fad release: v0.42.0
Bump the version for release.
2026-09-05 02:27:27 +08:00
bowenliang123 33068ee1c9 compat: narrow the support matrix to dsh 0.1.2-rc.1+
The install/runtime compatibility floor moves from 0.1.1-rc2+ and
0.1.2-alpha2+ to 0.1.2-rc.1+. The 0.1.1 line and the 0.1.2-alpha previews
leave the support matrix, so every pre-0.1.2 fallback they existed for is
removed outright:

- client history: drop the legacy `connection.api.sessions.history` face,
  the `result`-nested envelope, and the `events` rows field — the gateway
  `remote.session.page` face and its ClientResult envelope are the only
  served shapes.
- client image loader: drop the pre-0.1.2 `conversation.resolveImage` face;
  `uiConversation.imageUrl` only.
- client node join: drop the pre-0.1.2 `useSession.nodes` seat;
  `useChat`'s ChatSnapshot `legacy.nodes` only (UseSessionLike removed).
- tests/baselines.ts: single baseline `v0.1.2-rc.1`; HostSeam dropped (the
  registry generation hard-codes header-passing init and seq-0 eager
  seeding, now mirrored with the exact `init(header, inheritedEventCount)`
  arity); ClientSeam slimmed to the consumed probes.
- deps: devDeps re-pinned to the 0.1.2-rc.1 generation (types compile
  against the real rc.1 surfaces); cordis ^4.0.2 and schemastery ^3.18.2
  per the rc.1 peer requirements; dsh-scope/dsh-invariants declared as dev
  deps; peer floors >=0.1.2-rc.1; dshReleases table trimmed.
- release workflow fetches only the dsh-v0.1.2-rc.1 tag; docs updated
  (AGENTS.md, README, docs/compatibility.md).
- verified against the rc.1 sources: the tool-attribution map (names and
  packages, incl. the documented `subagent_fork` alias), MCP naming, the
  page/imageUrl/legacy.nodes faces, and the registry contract.
2026-09-04 17:23:08 +08:00
Bowen Liang dce08e0db3 release: v0.41.3
Bump the version for release.
2026-09-04 00:19:33 +08:00
Bowen Liang d6eba94ef6 release: v0.41.2
Declare the supported Node.js range (aligned with the harness engines)
so the manifest carries an explicit Node compatibility declaration next
to the per-release dshReleases block, and bump the version for release.
2026-09-03 23:12:28 +08:00
Bowen Liang 03ed31e63a chore(package): declare per-release dsh compatibility for the DSH STORE catalog
Record exact dshReleases entries under dsh.compatibility (0.1.1-rc.2,
0.1.2-alpha.2 through alpha.5, 0.1.2-rc.1) so the store's latest-three
compatibility window finds installable evidence and restores the listing.

ref AI-Scarlett/DSH-Store#439
2026-09-03 22:07:31 +08:00
bowenliang123 77c40f9d4f release: v0.41.1 2026-09-03 18:09:12 +08:00
bowenliang123 fcd2071786 fix(client): resolve remote.session through the declared inject (#42)
The target-content fetch read the 0.1.2+ gateway history face with
ctx.get('remote.session') and then dereferenced .page on the returned
value. A cordis traced-service proxy read off a fiber that never
declared the service throws on property access ("cannot get property
\"remote.session\" without inject") — the guard around ctx.get alone
cannot catch it, and the exception escapes the Context tab render and
takes the whole web client down.

The remote face is now resolved through the DECLARED inject instead:
apply() registers a ctx.inject(['remote', 'remote.session']) callback
(the dsh idiom — both names together, because the traced remote proxy
resolves .session through the context), binding the page verb into a
slot the fetchers prefer. Both names together stay absent on the
pre-0.1.2 line, where the callback never fires and the legacy
connection face carries the reads. Every service property chain is
additionally re-proven (readKeysOf: remote.session.page and
connection.api.sessions.history degrade at the first throwing getter
instead of ever throwing), matching the no-white-screen contract.

package.json now declares @deepseek-ai/dsh-api-remotes in
dsh.client.inject, so the graph composes the namespace-mounting bundle
before this plugin (skip-safe on 0.1.1, where the row does not exist).
2026-09-03 18:09:07 +08:00
bowenliang123 3179715f57 release: v0.41.0 2026-09-02 18:12:45 +08:00
Bowen Liang 552bb9077f release: v0.40.1 2026-09-01 23:48:19 +08:00
bowenliang123 40c5be96d2 release: v0.40.0 2026-09-01 17:29:57 +08:00
bowenliang123 7a9d8c7e6b release: v0.39.0 2026-09-01 14:12:34 +08:00
bowenliang123 a234d0caeb test: fold the bundle smoke and the compat matrix into one pnpm test
Drop the test:bundle / test:compat scripts. The bundle smoke moves into
the `compat` vitest project (tests/compat/bundle.spec.ts): the
__ModuleLoader__ handoff, the CSS channel, slot/trigger registrations,
and HMR safety over the BUILT lib/client.js — so `pnpm test` runs the
whole verification (host, client, built artifacts, real-code compat
matrix) in one pass with the per-file 100% coverage gate. The
built-artifact specs skip cleanly when lib/ is absent; the release
workflow builds before Test, so they always run there.

Also drop the standalone Bundle smoke step from the release workflow
and refresh the docs/comments that referenced the removed scripts.
2026-08-31 15:20:59 +08:00
bowenliang123 e87f139e91 build: track the newest published dsh surface (0.1.2-alpha.2)
Pin the dsh devDependency types to 0.1.2-alpha.2 and refresh
minimumReleaseAgeExclude to the baseline versions. Typecheck proves the
alpha.2 face with zero code changes, and the jsdom lane renders with the
real 0.1.2-alpha.2 primitives; the rc.2 face stays covered by the
mirrored compat layers and the real-code matrix.
2026-08-31 14:58:31 +08:00
bowenliang123 986d45a2bb test: add the cross-baseline compatibility matrix
tests/baselines.ts is the single source of truth for the supported dsh
baselines and their seam faces. Three layers verify them:

- always-on host registry-contract drivers over the REAL projection
  definitions (plain-JSON cache-write gate, wire delivery, checkpoint
  restore, init-header tolerance) — the recurring host incidents,
- always-on client-face matrix (nodes seat, image loader service,
  history face + envelope, markdown chrome, full tab render) — the
  recurring client incidents,
- the `compat` vitest project: stages the REAL harness sources at each
  baseline tag, boots the tag's registry on the cordis release that line
  vendors, applies the BUILT plugin, and probes slots/faces/vocabulary/
  platform table from the tag's sources. The release workflow fetches
  the baseline tags before `pnpm test` so the matrix always runs there.

Adding a future baseline = one tests/baselines.ts entry + one fetched
tag; a failing probe names the seam to re-fit.
2026-08-31 14:58:08 +08:00
bowenliang123 7d2a1e7e90 refactor(host): converge on the 0.1.1-rc2+ / 0.1.2-alpha2+ baselines
Drop the pre-0.1.1 session-projection adaptation: the units emit the
single supported contract (stateSchema + a REQUIRED wire block) instead
of the dual schema/view + stateSchema/wire shape, and the peer ranges
move from >=0.1.0-rc.7 to >=0.1.1-rc.2. The 0.1.2 init(header) widening
stays satisfied by the zero-argument init. Spec helpers and call sites
follow the V2-only shape.
2026-08-31 14:57:46 +08:00
Bowen Liang 115e183de0 release: v0.38.5 2026-08-31 01:18:43 +08:00
Bowen Liang 4bf1ffb6e4 release: v0.38.4 2026-08-31 00:27:57 +08:00
Bowen Liang 1c9802792d fix(host): carry zod as a real dependency, not an auto-installed peer
DSH profiles install out-of-tree plugins with `nodeLinker: hoisted` and
`autoInstallPeers: false` (packages/boot/app-boot/src/profile.ts), so a
peer-only zod was never materialized for the plugin: the host half's
`import { z } from "zod"` silently resolved to whichever zod the
profile's other packages happened to hoist. A profile whose hoisted zod
predates the Standard Schema `~standard` protocol (zod < 3.24) leaves
`Config["~standard"]` undefined and cordis's config validation throws a
bare TypeError, failing the whole plugin tree (#35).

Declare zod ^4.4.3 under dependencies so every install materializes a
standard-schema-capable copy (deduped with the host's own when
compatible), and under devDependencies so this workspace stops leaning
on a transitive devDep for it. The tsdown host build keeps every
production-section dependency external, so the bundle is unchanged.
2026-08-31 00:25:34 +08:00
bowenliang123 951f088f61 release: v0.38.3 2026-08-30 18:18:14 +08:00
bowenliang123 10acac3e4a release: v0.38.2 2026-08-29 22:41:25 +08:00
bowenliang123 5f2fc9a265 release: v0.38.1 2026-08-29 12:23:41 +08:00
bowenliang123 1c45bc2bab release: v0.38.0 2026-08-29 10:35:10 +08:00
bowenliang123 de4d6f327a build: kill previous watch instance when starting pnpm watch
Track the tsdown watcher pid in .tmp/watch.pid; a new watch kills the
previous instance first and the pid file is cleaned up on exit.
2026-08-29 00:46:32 +08:00
bowenliang123 6d17588a56 release: v0.37.0 2026-08-28 22:32:46 +08:00
bowenliang123 1dab8dcdbf build: track the 0.1.2 client module graph
Drop the deleted `@deepseek-ai/dsh-client-runtime` from dsh.client.inject
and remove the preloaded-client-externals channel that died with it; mirror
0.1.2's platform module table (+ dsh-client-store) in the client bundle's
purity gate; widen the dsh peer ranges to >=0.1.0-rc.7 so 0.1.2 prereleases
resolve; pin the devDependency types to the newest published surface
(0.1.1-rc.2); the bundle smoke's fake ctx now honors inject callbacks.
2026-08-28 22:32:31 +08:00
bowenliang123 06d1a5df7c release: v0.36.0 2026-08-28 10:17:15 +08:00