Commit Graph
8 Commits
Author SHA1 Message Date
bowenliang123 ed63b7f0d8 feat(ui): themed hover tooltip on the composition bar segments
The Current composition stacked bar (and the request-detail mini bar)
now shows a theme-native tooltip on hover per segment — category, token
count, and share of the total — positioned at the pointer and clamped
inside the bar. Replaces the native title attribute; the wrapper keeps
the tooltip outside the rounded/clipped stack.
2026-08-14 19:25:06 +08:00
bowenliang123 f8ac2f45cb feat(ui): hover a history bar to preview its breakdown below
Hovering a trend bar links the detail panel to that request immediately
(hover wins over the pinned selection, which takes over again when the
pointer leaves; both fall back to the newest request). The hovered bar
gets a dashed outline, and the chart clears the preview on mouse leave.
2026-08-14 19:24:28 +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 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 446c220505 scripts: fix empty-array expansion under bash 3.2 set -u 2026-08-14 17:18:19 +08:00
bowenliang123 975d1f2179 scripts: support NPM_OTP for 2FA accounts in publish 2026-08-14 17:14:42 +08:00
bowenliang123 efb2fff4c2 scripts: keep npm cache in-repo for sandboxed environments 2026-08-14 17:12:51 +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