Commit Graph
33 Commits
Author SHA1 Message Date
bowenliang123 66edd1dee9 docs: update project description 2026-08-17 14:49:18 +08:00
bowenliang123 ec108bb7a7 chore: bump version to 0.10.3 2026-08-17 11:39:06 +08:00
bowenliang123 19733b9a4d chore: bump version to 0.10.2 2026-08-17 07:01:55 +08:00
bowenliang123 a4deb93e21 chore: bump version to 0.10.1 2026-08-17 00:14:18 +08:00
bowenliang123 1c6fe29021 chore: bump version to 0.10.0 2026-08-16 23:40:42 +08:00
bowenliang123 23a8cb40f3 doc: fix the social image on readme and the description for pacakge 2026-08-16 22:47:40 +08:00
bowenliang123 008018a66f docs: refresh README with the /context command and a new hero shot
- Hero image is now a real capture of the /context centered dialog
  (docs/context-command.png).
- Intro rewritten around the two surfaces: the Context tab and the
  client-owned /context command (no model traffic, no message history).
- New "Use it" section documenting the command's invocation, closing
  interactions, and the deferred composer-token consumption.
- package.json description updated to match.
2026-08-16 22:45:06 +08:00
bowenliang123 38dbd2ad92 refactor(ui): move the context tab onto the harness's React stack
All view components are now tsx JSX function components instead of
hand-rolled h() factories; the bundle externalizes the framework seed words
(react, @deepseek-ai/dsh-client-ui-primitives) so the loader module table
resolves the single shared framework instance at runtime.

Reuses shared ui-primitives where a clean fit exists (injection and
model-switch event glyphs -> IconPlusOutline16/IconBranchOutline16); the
bespoke data-viz chrome (charts, shared-hover tooltip) intentionally stays
custom but continues to draw the shared --dsw-alias-* tokens.

esbuild uses the classic JSX transform, so the emitted createElement trees
are isomorphic to the previous h() calls and the element-parsing tests, the
chart-render assertions, and the real-React repro all stay green unchanged.
Adds @deepseek-ai/dsh-client-ui-primitives as a type devDep and documents the
framework-reuse findings in docs/redesign.md §8.
2026-08-16 03:51:00 +08:00
bowenliang123 6bebd495e9 feat: route context timeline through the harness session-projection pipeline
Replace the custom /dsh-context RPC channel + 2s client polling with a native
contextTimeline session-projection unit: the host registers one pure
init/apply/view unit on ctx.sessionProjections (framework-driven, persisted by
the projection cache, streamed via session/projection push frames), and the
client reads the finished value through the framework standard
useProjection seat. Deletes the client stale-while-revalidate cache and the
local service type stubs; grows the modern shelf registration (locale) and
adds the published @deepseek-ai/* types as devDeps plus zod as the single
runtime dependency (wire schema, kept external in the host bundle).

Fixes tool-result node attribution to read the durable source.callId /
content toolCallId instead of the never-present block.callId (tool labels had
silently never rendered).

Retention is tightened to trim by whole turn-runs deterministically (bounded
state, no 1200<->1500 oscillation under incremental folding).

Tests now drive the projection unit directly (host) and feed the view through
a useProjection stub (client); all chart/render assertions preserved. Adds
docs/redesign.md (review + target architecture, phases 0-3 landed) and
docs/CLIENT_SURFACE.md (client-side audit).
2026-08-16 03:25:01 +08:00
bowenliang123 a50a8f1b19 chore: bump version to 0.8.0 2026-08-16 01:33:43 +08:00
bowenliang123 b96eacad49 chore: bump version to 0.7.3 2026-08-15 03:25:08 +08:00
bowenliang123 a162876329 chore: bump version to 0.7.2 2026-08-15 03:11:31 +08:00
bowenliang123 4171e214f7 chore: bump version to 0.7.1 2026-08-15 02:57:22 +08:00
bowenliang123 82176d4f95 docs: user-focused README with badges and fresh feature screenshots 2026-08-15 02:48:33 +08:00
bowenliang123 4f3675b51a chore: bump version to 0.7.0 2026-08-15 02:23:54 +08:00
bowenliang123 4ad06a1ccc chore: move tests to tests/, add repro script, document the new structure 2026-08-15 02:19:39 +08:00
bowenliang123 fa85b6f37b chore: bump version to 0.6.2 2026-08-15 01:17:50 +08:00
bowenliang123 86b189e6e0 chore: bump version to 0.6.1 2026-08-14 23:52:04 +08:00
bowenliang123 d09173ccd5 test: real-React + jsdom render smoke for the granularity toggle
Mounts the built client bundle with actual react/react-dom inside jsdom,
feeds a 460-request snapshot through the RPC, and toggles step -> turn ->
step — the flow reported to black-screen the tab. Renders cleanly, so the
black screen is not in the render path (layout-effect suspicion remains,
needs the real console error to pin down).
2026-08-14 23:44:49 +08:00
bowenliang123 947e2b2bb9 chore: bump version to 0.6.0 2026-08-14 23:28:56 +08:00
bowenliang123 a49a1c6fba chore: husky pre-commit hook runs tsc --noEmit
Every commit is now type-guarded: the hook runs `pnpm run typecheck`
(strict, noEmit), so type errors fail the commit. Husky auto-installs the
hooks on install via the prepare script.
2026-08-14 23:03:58 +08:00
bowenliang123 0d4ce1fbc3 chore: bump version to 0.5.0 2026-08-14 19:55:11 +08:00
bowenliang123 89436bf31d chore: switch the package manager from npm to pnpm
- pnpm-workspace.yaml declares the project as its own workspace root, so
  pnpm never walks up into a parent workspace (e.g. $HOME); esbuild's
  postinstall is explicitly allowed
- package.json gains the packageManager field (pnpm@11.9.0)
- package-lock.json replaced by pnpm-lock.yaml
- README development commands now use pnpm
2026-08-14 19:31:57 +08:00
bowenliang123 7b5e340112 chore: relicense the project under Apache-2.0 2026-08-14 19:25:29 +08:00
bowenliang123 0e81996a41 feat: port both halves to strict TypeScript; bump to 0.4.0
- src/host.ts: typed fold model (Snapshot/RequestRecord/SurfaceNode/
  ContextEventRecord), local drift-free service contracts for
  connection/sessions/sessionQuery via declare module augmentation
- src/client.cts: typed client bundle (React types via @types/react,
  locale/slots/connection contracts, typed component props); CJS-flavored
  so esbuild keeps require/module.exports despite type:module
- tsconfig.json: strict, noEmit, verbatimModuleSyntax (runtime-free of
  imports in the client bundle is enforced by the type system)
- scripts/build.mjs: esbuild transpile for both halves, loader wrap and
  smoke checks unchanged; npm run typecheck added to the test suite
- note: @deepseek-ai/* service type packages publish broken dependency
  chains on npm (dsh-paths 404), so local contracts replace them
2026-08-14 19:03:16 +08:00
bowenliang123 20779490ab docs: drop publishing instructions from README; bump to 0.3.1 2026-08-14 18:08:20 +08:00
bowenliang123 8085308997 feat(ui): fixed-width scrollable history chart with turn-range ticks
- bars use a fixed 14px column width, so sparse histories no longer
  stretch and dense histories scroll horizontally instead of compressing
- the chart sticks to the newest bars unless the user scrolls away
- a turn tick row under the bars groups consecutive requests of the same
  T into one labeled range (T1 spans its bars with a connector line)
- test-client now renders the view tree with a stateful fake React and
  asserts bar count, scroll container, and turn-range geometry
2026-08-14 18:02:29 +08:00
bowenliang123 6e4162f0b5 chore: add repository/homepage/bugs/author metadata; bump to 0.2.3 2026-08-14 17:48:47 +08:00
bowenliang123 b832e4f16f docs: quick install uses the shipped web profile (dsh web); bump to 0.2.2 2026-08-14 17:46:05 +08:00
bowenliang123 def83ec4b5 chore: bump version to 0.2.1 2026-08-14 17:41:19 +08:00
bowenliang123 c8269b1fbb docs: point README screenshot at GitHub raw URL; bump to 0.2.0 2026-08-14 17:27:54 +08:00
bowenliang123 8335ff369e fix: rename npm publish script to release (publish is a reserved lifecycle name) 2026-08-14 17:25:34 +08:00
bowenliang123 cd7282ad53 refactor: package dsh-context as an installable dsh bundle
- src/host.js: ESM Cordis plugin; serve snapshots over the generic
  Connection RPC channel /dsh-context (ctx.connection.rpc) instead of the
  dynamic-runner harness.handle seat; lazily resolve sessions/sessionQuery.
- src/client.js: browser half in web-boot bundle shape (require('react'),
  inject connection/slots/locale, plugin-owned style tag, setInterval poll).
- package.json: dsh.bundle (cordis.patch.yml layer) + dsh.client (web UI)
  manifests, ./client export.
- cordis.patch.yml: inserts the dsh-context loader row.
- scripts/build.mjs: zero-dependency build of lib/index.js + lib/client.js
  with smoke checks; scripts/test-host.mjs + scripts/test-client.mjs:
  functional tests for both halves.
- scripts/publish.sh: npm publish driven by NPM_TOKEN, auto version bump.
2026-08-14 17:11:56 +08:00