Commit Graph
22 Commits
Author SHA1 Message Date
bowenliang123 57ff90dfc3 chore: unify the repo on TypeScript — tests, vitest config, and the social-preview generator move from .mjs to .ts
vitest (esbuild) and Node 24 type stripping run the .ts files directly;
helper imports go extensionless like src. Typecheck stays scoped to src/
as before.
2026-08-23 05:11:27 +08:00
bowenliang123 61d3e16477 docs: update context-browser-images.png 2026-08-22 19:57:21 +08:00
bowenliang123 7df335114a docs(research): dsh monorepo and plugin practices investigation 2026-08-22 02:09:21 +08:00
bowenliang123 af14769c0f feat(client): card-style message detail with image attachment rendering
Adapt to DeepSeek Harness 0.1.1's multimodal pipeline (and the vision
capability of DeepSeek-V4-Flash-Vision-Exp): a user message carrying
durable image refs expands into a card layout — prose in the text card,
image attachments as thumbnail cards (name, normalized + original
dimensions, stored size), and unrecognized blocks as raw JSON. Image
blocks in assistant messages and tool results (e.g. read_image output)
now render too, instead of being dropped or dumped as JSON.

Thumbnails load through the harness conversation service's resolveImage
(the same session-authorized loader the chat history uses); when the
service is absent the cards degrade to metadata only. The text card
uses an un-padded RichCard variant so all cards align at one indent.
2026-08-22 01:43:37 +08:00
bowenliang123 dab80c6232 build: switch to tsup and declare harness runtime deps as peers
Replace the hand-rolled esbuild script (scripts/build.mjs) with a single
tsup config that already existed but never ran: tsup re-bundles the config
into a temp .mjs, so import.meta.url pointed at the temp dir and the
package.json read failed, silently leaving no entries. Read the manifest
from process.cwd() instead. The host half now keeps @deepseek-ai/dsh-session
external (resolving to the harness's single runtime instance) instead of
inlining it; the client half keeps the __ModuleLoader__.load wrap.

Align deps with the official dsh convention: runtime harness packages
(cordis, dsh-session, client-ui-primitives, react) move to peerDependencies
with dev mirrors (client-only ones optional); zod stays a dependency;
exact rc pins become caret ranges (^0.1.0-rc.8) so rc9/0.2 releases don't
break installs. Drop the esbuild devDependency (tsup brings its own) and
add tsup itself.
2026-08-20 16:09:16 +08:00
Bowen Liang b6668cdf5b docs: add the /context entry screenshot and refresh the command image 2026-08-20 04:59:25 +08:00
bowenliang123 15a822d237 doc: refresh social preview with updated context-overview screenshot
Add docs/social-preview/ template + Node.js generator (playwright-core,
2x render + high-quality downsample) and register npm run social-preview.
2026-08-19 17:37:29 +08:00
bowenliang123 686151c74c doc: update context-overview screenshot for context browser 2026-08-19 17:03:32 +08:00
Bowen Liang 46195d58bd docs: illustrate the Context browser with a screenshot and its new capabilities
Add docs/context-browser.png to the browser section, plus the two
behaviors that shipped with it: trend-chart hover linkage and honest
coverage (archive reconstruction notes, auto-loading older history,
always-listed live injections). The History section mentions the hover
linkage too.
2026-08-18 04:25:51 +08:00
bowenliang123 ada2a4f1ef docs: update screenshots and github social preview image 2026-08-17 16:47:57 +08:00
bowenliang123 8a509ee32f docs: slim the social preview to 16:9 and cap the README hero width
The 2:1 banner spanned the whole (wider) npm readme column. The card is
now rendered at 16:9 and the README pins it to a centered 840px image.
2026-08-17 00:14:17 +08:00
bowenliang123 8aec77db98 docs: refresh social preview copy and layout
- Tagline now leads with the two surfaces ("Context Tab and /context
  command.") and keeps the made-of / evolves framing.
- Title all white; six-category legend fits one line; wider left column;
  right app shot enlarged in place; dropped the 中文/EN chip.
2026-08-16 23:33:43 +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 475c63667d docs: show the step-granularity hover tooltip in the README 2026-08-15 03:40:07 +08:00
bowenliang123 2e9ced209a docs: add social preview image and show it atop the README 2026-08-15 03:07:05 +08:00
bowenliang123 82176d4f95 docs: user-focused README with badges and fresh feature screenshots 2026-08-15 02:48:33 +08:00
bowenliang123 44b0d3b998 remove img.png 2026-08-15 01:14:42 +08:00
bowenliang123 895ebbee1a feat(ui): granularity switches re-anchor the history at the newest bars
Returning from turn to step mode kept the stale left edge (the narrow
turn chart had clamped the scroll position), so the newest bars were off
screen. The layout effect now detects a granularity change and re-runs the
first-mount anchor — both directions land on the right edge. Plain
re-renders (polls) still respect a scrolled-away position.
2026-08-14 23:49:19 +08:00
bowenliang123 7eaec6d70b update screenshot.png 2026-08-14 23:48:31 +08:00
bowenliang123 868cb4478a init version 2026-08-14 16:08:55 +08:00