# Changelog — @dsh-sparkles/dsh-sparkles

All notable changes to the `@dsh-sparkles/dsh-sparkles` npm package. Versions
follow Semantic Versioning. The exact tier, plugin inventory, maturity, and
content hashes remain authoritative in each tarball's `dsh-lock.json` and
`release-lock.json`.

## 0.1.17 - 2026-10-27

- Carry the shared event decoder that treats a present nil image list as empty,
  so a host prompt without attachments does not fail list decoding.
- Carry the shared `company_profile` shell. `equibles` is an explicit US
  screener and ownership-summary source, selected with `provider: "equibles"`
  and read at call time from `EQUIBLES_API_KEY`. It does not confirm the caller
  MIC, does not cover CN or HK, and does not fall back to Twelve Data. The
  default provider remains `twelve_data`. Each request is one attempt.
- Select DSH 0.1.17 from its own published 0.1.16 baseline. The companion Pi
  release is 0.1.15. The DSH host pin remains 0.2.1-rc.2.

## 0.1.16 - 2026-10-18

- Size the floating chart stack to 1.5 times its measured status-bar width,
  updating with status changes and fitting within the available screen.

- Keep the inline chart when the current server has no floating projection or
  the exact call is outside its retained history. Announce panel availability
  only after confirming that call is present in the session projection.

- Move browser charts above the floating finance status bar. Dragging the bar
  moves the whole vertical stack; hiding a middle chart closes its gap above
  the same floor. Each chart has Hide and an individual show/hide checkbox.
- Project settled native and PTC chart metadata from the session log, so
  collapsing tool output cannot hide a chart. Keep the latest 12 in the panel,
  retain exact output in the transcript, and isolate visibility by session.
- Complete local DSH visual review and the native review role gate for T6.

- Add a DSH-native durable watchlist review runner using the shared Gleam laws,
  session-owned DSH storage and an exclusive writer lease. Expose opt-in, exact
  snapshot saves, bounded one-off/recurring reviews, history and cancellation.
- Preserve pinned picks, complete source receipts and crash checkpoints. Reuse
  completed acquisition, mark interrupted calls unknown, skip missed intervals
  and retain DSH source-tool policies. CN uses the existing Eastmoney path;
  HK/US remain track_partial. No model or external notification is scheduled.
- Project review state into the current-session badge and verify the role with
  installed DSH services, real storage reopen and a SIGKILL during acquisition.

- Require DSH `0.2.1-rc.2` for the host and tested service peers, add the
  working-directory peer, and match the host's Node engine range.
- Write new custom entries and status through DSH's ignorable plugin-record
  API. Preserve old required-event reads and the explicit v0 migration path.
- Read invocation cwd from the session working-directory service, including
  after a directory change and resume.
- Await scoped initialization, reject restore failures, and propagate agent
  creation cancellation to lifecycle hooks.
- Verify installed peers, new/legacy records, directory isolation and resume,
  and retain both-host package/load coverage. Select DSH 0.1.16 from its own
  published 0.1.15 baseline; Pi remains at 0.1.13.

## 0.1.15 - 2026-10-01

- Require installed DSH 0.2.0-rc.2 explicitly for the host and all tested
  service peers. Published 0.1.14 stays on DSH 0.1.7-rc.2. There is no stable
  DSH 0.2.0 pin, and this candidate is not published by the compatibility fix.
- Keep the 0.1.14 session, catalog, projection, and overlay behavior. DSH
  0.2.0-rc.2 still announces agents on serial `agent/created` with `source`,
  still uses session format v4, still cannot stamp `ignorable` from
  `Session.append()`, and still serves the finance-track overlay through
  `retainedBy.mainView` and `projectionsBySession`.

## 0.1.14 - 2026-09-29

- Require DSH 0.1.7-rc.2 explicitly for the host and all tested service peers.
  DSH 0.1.5-rc.1 is unsupported.
- Restore Pi session_start hooks from serial `agent/created`, which now
  carries `source` (`startup` | `resume` | `clear` | `compact`). Pass that
  source through as the Pi session_start reason. DSH 0.1.7 removed the
  separate `agent/session-start` emit.
- Keep contributing `pi-sparkles/custom` and `pi-sparkles/status` to the live
  session-event catalog. DSH 0.1.7 session format v4 still treats unknown
  events as required unless they are `ignorable`, and `Session.append()` still
  cannot stamp that marker.
- Verify resume by entering an agent and announcing the real `source` rather
  than `register()`, which always announces `startup`.
- Resolve the live session-event catalog from the installed DSH CLI when
  vanilla Node loads the package. DSH 0.1.7 no longer materializes
  `.dsh-module-fallback` copies under `$DSH_HOME/profiles/node_modules`.
- Read the finance-track overlay from the main-view session and
  `projectionsBySession`. DSH 0.1.7 session list snapshots no longer expose
  `state.current`.

## 0.1.13 - 2026-09-10

- Require DSH 0.1.5-rc.1 explicitly for the host and all tested service peers.
  DSH 0.1.2-rc.1 is unsupported.
- Keep contributing `pi-sparkles/custom` and `pi-sparkles/status` to the live
  session-event catalog. DSH 0.1.5 session format v3 treats unknown events as
  required unless they are `ignorable`, but `Session.append()` still cannot
  stamp that marker, and v0 historical migration refuses unknown types even
  when ignorable.
- Verify against the installed 0.1.5 agent registry, which no longer exports
  the public `Inbox` class and requires `agent.id` to equal `session.id`.
- Add `bun run dsh:migrate:v0-sparkles` to rewrite DSH 0.1.2 v0 session logs
  whose `pi-sparkles/status` and `pi-sparkles/custom` events block 0.1.5
  historical migration. The rewrite is seq-preserving and leaves a backup.

## 0.1.12 - 2026-09-07

- Require DSH 0.1.2-rc.1 explicitly for the host and all tested service peers.
- Confirm the receipt fix after a real DSH restart: SMA (20/60/120), RSI,
  and ATR successfully consume a newly acquired receipt in the resumed session.
  Version 0.1.11 was the local manual-check candidate and was not published.
- Depend on the current `dsh-client-ui-session` browser package instead of
  the removed `dsh-client-runtime`, and verify every declared client dependency
  exists in the installed web boot graph.
- Read session receipts and leaf positions through `snapshotEvents()` so
  saved OHLCV handoffs remain visible to SMA, RSI, ATR, and charts. Reject
  incompatible session APIs explicitly instead of treating them as empty logs.
- Verify receipt consumption, agent isolation, and dispose/resume restoration
  against the installed DSH runtime and the locally installed release tarball.

## 0.1.10 - 2026-09-03

- Preserve Sina's unknown OHLCV adjustment semantics as an explicit
  `provider_defined` basis through SMA, RSI, ATR, and chart receipt consumers,
  instead of rejecting the valid explicit Sina series or relabeling it as raw.
- Cover the complete explicit `Eastmoney failure -> user-selected Sina history
  -> SMA -> chart` chain through the DSH session bridge and the sibling plain
  Pi binding lanes.
- Add the exact reviewed SSE STAR 50 history route to the explicitly selected
  Sina alternative while preserving the strict two-call contract: an
  Eastmoney failure only prompts, and only a later user-approved Sina call can
  change the source.
- Apply the shared process-local one-request-per-two-seconds provider quotas
  and one-attempt policy throughout the installed DSH inventory, and rebuild
  every bundled artifact so the runtime cannot retain stale Eastmoney retry
  behavior.
- Make the DSH agent guidance state the source-change prompt and the successful
  `eastmoney -> sina` transition explicitly.
- Consume the shared lazy PDF effect boundary so the DSH server entrypoint also
  registers without initializing PDF.js or native canvas state.
- Pin the exact Bun-compatible `@napi-rs/canvas@1.0.3` runtime used by the
  shared PDF path, and make package verification reject eager canvas globals
  or an entrypoint import that exceeds 15 seconds.
- Re-run the installed-profile DSH plugin composition and real-runtime loading
  checks for the complete 135-component bundle, including per-agent scoped
  shells and the browser client entrypoint.

## 0.1.9 - 2026-08-24

- Restore the finance-track `shell.overlay` indicator on DSH 0.1.1-rc.2 by
  adopting the session projection state/wire split, pinning the current host
  peers, and exercising the current command invocation contract in the real
  runtime smoke.
- Pin the exact `@deepseek-ai/dsh@0.1.1-rc.2` host and service peer graph, and
  pin the trusted-publishing workflow to that tested host.

## 0.1.8 - 2026-08-19

- Consume the shared credential-free SSE STAR 50 constituent/composition
  acquisition and explicit CN-supported/HK-US-`track_partial` applicability
  result without introducing a DSH-only finance implementation.
- Expose Tushare configuration only as an optional, user-accepted stock
  identity fallback in the per-agent runtime guidance; never select it first,
  use it for indices, or require it for ordinary market data.
- Project current installation-aware CN/HK/US readiness from each agent's real
  global/scoped tool union instead of retaining stale host-shell gaps.
- Preserve canonical OHLCV `seriesReceipt` entries in the exact invoking DSH
  session so indicators and the inline chart consume short, content-verified
  handoffs. Cross-agent reuse, gap-digest substitution, copied-row recovery,
  and scripted instruction hashes remain rejected.

## 0.1.7 - 2026-08-18

- Consume the shared provider-compatibility fixes, including exact Alpaca
  one-sided quote availability and the current HKEX, SEC, CAPCO, and Twelve
  Data response contracts, through the same compiled finance cores and Pi
  shells used by the DSH bridge.
- Pin and verify the complete DSH service peer graph against
  `@deepseek-ai/dsh@0.1.0-rc.7` while retaining per-agent state ownership,
  persisted-session restoration, browser slots, and the independent DSH
  ProductUseful gate.

## 0.1.6 - 2026-08-18

- Add the responsive keyed `chart_ohlcv` browser card: inline SVG
  candlesticks, volume, supplied indicators/trades/gaps, width-proportional
  layout, pan/zoom/reset controls, and exact text fallback. Each result opens
  at its full returned date range, and stale manual zoom cannot constrain the
  next result.
- Let receipt-driven chart calls omit empty trades, gaps, input omissions, and
  the text fallback row cap; these default to empty lists and 50 rows without
  constraining the requested 1-through-240 bar chart span.
- Apply market-native direction colors: red-up/green-down for Mainland China,
  green-up/red-down for Hong Kong and the United States, and neutral gray for
  flat candles, with a matching per-track legend.
- Complete installed-profile browser discovery, resize, interaction,
  persistence, and visual acceptance for the chart without using images,
  attachments, files, data URLs, or overlays for chart output.
- Reframe the package as Sparkles for DeepSeek Harness, move repository links
  to `github.com/kaiwu/sparkles`, and introduce the sibling
  `@pi-sparkles/pi-sparkles` terminal distribution.
- Keep the clean tarball smoke isolated from npm's automatic host-peer install;
  the real DSH profile supplies and verifies the exact tested `rc.6` peer graph.
- Restore the independent T6 DSH release gate to ProductUseful after completing
  the chart's installed-profile browser acceptance.

## 0.1.5 - 2026-08-17

- Promote the independently verified T6 DSH lane to ProductUseful after
  installed-profile operator acceptance; Pi maturity remains a separate,
  informational release record and does not gate DSH publication.

- Make the finance-track overlay draggable and keyboard-movable, with bounded
  placement and an explicit reset gesture.
- Register Sparkles' required custom/status event vocabulary before DSH cold
  session loading so rc.6 can resume persisted scoped state.
- Add DSH runtime-date and bounded-history guidance, and clarify the one-based
  stock-technicals projection and basis-field rules after auditing a real
  failed-call trajectory.
- Preserve Pi length, value, and item-count bounds as model-visible constraint
  annotations when translating through DSH's narrower tool-schema subset.
- Correct DSH tool rendering to return `ContentBlock[]`, forward real call IDs
  and cancellation, and normalize Pi inline images without forging DSH
  attachment references.
- Isolate concurrent invocations and bind queued messages, custom entries, cwd,
  and lifecycle to the exact DSH agent/session.
- Exclude the Pi-global `watchlist`, `swing_workbench`, and `portfolio` shells;
  mount fresh copies of their existing compiled Gleam cores in each DSH agent
  scope, and verify that state cannot cross agents.
- Restore `finance_track_status` as a per-agent shared-core counterpart,
  contribute its exported routing guidance through DSH `systemPrompt`, and map
  its status updates into a session projection.
- Ship a browser client entry that renders finance track status through DSH's
  `shell.overlay` slot; the installed DSH web server discovers and serves it.
- Cover all 135 T1–T6 ledger components in DSH (131 global-safe shells and four
  scoped counterparts), while retaining explicit global-shell exclusions.
- Add an independent DSH release gate, exact rc.6 service peers,
  stronger bundle/client locks and checksums, and real two-agent ToolRuntime,
  command, prompt, projection, and isolation verification.

- First DeepSeek Harness distribution of the pi-sparkles T1–T6 ledger: the
  read-only finance evidence tools (quotes, OHLCV, calendars, rules,
  fundamentals, SEC filings, portfolio, quant, macro, and tape review)
  registered as native Harness tools behind one Pi-API compatibility facade.
- Pi-specific surfaces are excluded via `dsh/bundle.json`; the TUI
  statusline/track-navigation plugin is the first exclusion, and the bundle
  ships the ledger minus exclusions plus any future DSH-dedicated plugins.
- Commands registered through `ctx.commands`; `sendUserMessage` output becomes
  the command result text.
- Pi JSON Schema translated to the dsh-tools raw JSON-Schema subset; the
  embedded Pi decoders still enforce the full argument contract at call time.
- `dsh.bundle.patch` manifest for `dsh plugin --profile <name> add`; the
  package is provider-free, credential-free, and order-mutation-free.
