Skip to content

Releases

v1.3.0

Choose a tag to compare

@CH2008445 CH2008445 released this 05 Oct 08:27

Changed

The price table now leads the tooltip, ahead of the balance and the cost. The rates are what the cost below them is derived from, so they are read first. The order is asserted by offset in the release checks.

Fixed

Price formatting no longer drops trailing zeros or leaks floating-point noise. 0.30 printed as 0.3, 4 as 4, and an accumulated value such as 2.0000000000000004 printed in full.

Rates below one now keep four decimals and rates at or above one keep two, so distinct sub-cent rates such as 0.02 and 0.0028 cannot collapse onto the same string.

Tooltip order

Prices, per 1M tokens   ·   now: off-peak
  deepseek-flash
    off-peak: ¥0.0200 / ¥1.00 / ¥4.00
    peak:     ¥0.0400 / ¥2.00 / ¥8.00
  deepseek-v4-pro
    off-peak: ¥0.1500 / ¥4.50 / ¥13.50
    peak:     ¥0.3000 / ¥9.00 / ¥27.00
  (cache hit / cache miss / output)

Balance ¥1.21  (¥0.00 + ¥1.21)
This run: ¥0.29 over 12 call(s)
Tokens in 857,402 (cached 816,388), out 3,012

Security

Unchanged: no subprocess, no shell, no sandbox bypass, official endpoint only, and the API key never reaches the browser or a log. scripts/verify.mjs asserts 25 properties.

v1.2.0

Choose a tag to compare

@CH2008445 CH2008445 released this 05 Oct 08:14

Added

Price table in the tooltip. Every model now shows its rate per 1M tokens for both the off-peak and the peak tier, in the order cache hit / cache miss / output, with the tier in force right now marked. The table travels with the balance payload, so it needs no second request and reflects any configured price override.

Model Tier Cache hit Cache miss Output
deepseek-flash off-peak 0.02 1 4
deepseek-flash peak 0.04 2 8
deepseek-v4-pro off-peak 0.15 4.5 13.5
deepseek-v4-pro peak 0.30 9.0 27.0

Amounts are CNY per 1M tokens. Peak is Beijing time, Monday to Friday 09:00-12:00 and 14:00-18:00; everything else, weekends included, costs half.

Russian and German copy, alongside English and Chinese. The active language follows the document lang attribute, which the GUI locale service keeps in sync, and the row re-renders on a language switch without a reload. A browser language outside the four falls back to English. All four dictionaries are verified to define the same key set, so a missing translation cannot ship.

Full README.ru.md and README.de.md translations are included.

Security

Unchanged: no subprocess, no shell, no sandbox bypass, official endpoint only, and the API key never reaches the browser or a log. scripts/verify.mjs now asserts 25 properties, including the price table, the four locales, and dictionary key parity.

v1.1.1

Choose a tag to compare

@CH2008445 CH2008445 released this 01 Oct 06:07

Fixed

Activation aborted when @deepseek-ai/schemastery could not be resolved. A stand-in schema was exported as Config, and Cordis validates a present Config through the Standard Schema interface (Config["~standard"].validate) before calling apply. The stand-in threw, so the plugin loaded and rendered its sidebar row while contributing no host route: every request answered 404 and nothing reached any log.

Config is now exported only when the real schema resolves and its product implements Standard Schema. Otherwise it is omitted, Cordis passes the raw config, and the handler keeps its own defaults. This is a regression introduced in 1.1.0.

Added

  • The row shows both figures, each labelled: Balance ¥6.39 · Cost ¥0.12. An unknown value keeps its placeholder instead of disappearing, so the row does not shift once the first call is billed.
  • Activation log under the per-user temporary directory, because a plugin whose apply never runs is otherwise invisible. It records service names, resolution outcomes, and status codes only — never the key.

Documentation

  • Install steps now include the link step required when pnpm reports "Already up to date" without materializing the package.
  • Added a troubleshooting section with an activation-log reference table and the Config export rule that caused the 404.

v1.1.0

Choose a tag to compare

@CH2008445 CH2008445 released this 01 Oct 04:59

Added

  • Per-run usage cost, billed from the harness usage chunk for every model call, so the figure reflects the requests actually made including retries.
  • Official CNY price table with peak and off-peak tiers for deepseek-flash and deepseek-v4-pro.
  • Peak-hour classification in Beijing time: Monday to Friday 09:00-12:00 and 14:00-18:00; weekends and configured holidays are off-peak.
  • holidays config field for the Chinese public holiday calendar, plus prices to override the table and persistUsage for the ledger.
  • Sidebar footer now shows balance and run cost on one line, with a tooltip breaking the cost into calls and token buckets.

Changed

  • Retired model names bill as the model serving them: deepseek-v4-flash bills at deepseek-flash rates.
  • Cache writes bill at the cache-hit rate, matching official historical pricing.
  • Unknown model ids cost zero rather than guessing a price.
  • Usage accompanies a failed balance read, because run cost needs no network.

Fixed

  • The usage ledger now persists its session set, which was lost on reload.

Security

Unchanged: no subprocess, no shell, no sandbox bypass, official endpoint only. scripts/verify.mjs asserts these invariants plus the new billing arithmetic.

v1.0.0

Choose a tag to compare

@CH2008445 CH2008445 released this 01 Oct 04:42

Features

  • Sidebar footer balance row in the DSH web GUI, with click-to-refresh and a five-minute automatic refresh.
  • Host half resolves DEEPSEEK_API_KEY through the DSH credential store and queries the official balance endpoint with the in-process etch.
  • Official-host allowlist: the key is never sent when the configured �aseURL is not �pi.deepseek.com.
  • Route protection requiring the x-dsh-balance header plus a loopback Origin.
  • Successful readings cached 60 s; failures never cached.

Security

No subprocess, no shell, no sandbox bypass. The key never appears in a response body, a log line, or an error message. scripts/verify.mjs asserts these invariants.

Install

sh dsh plugin --profile desktop add /path/to/dsh-api-balance