dsh-signal
v0.7.13
Published
Tidal DSH branding, verified multi-provider resources, filterable local analytics, and local provider identity overrides.
Maintainers
Readme
DSH Signal
DSH Signal extends the existing DeepSeek Harness surfaces with a pointer-responsive brand field, transparent Provider marks, one verified resource pill, and a local Token-usage view in Settings. It does not replace the DSH shell or model selector.
What it shows
- The active billing route is read from DSH's
modelDirectoriesservice. The collapsed rail leads with verified brand/product identity (for exampleOpenCode · Go); the selected model remains secondary in the detail popover. - DeepSeek routes can show the official account balance from
https://api.deepseek.com/user/balance; wallet balances never receive a percentage track. - OpenCode Go routes can show rolling 5-hour, weekly, and monthly quota from
https://opencode.ai/zen/go/v1/usage. The rail chooses the first verified window in that order, so an unavailable hourly window falls back to weekly before monthly. Each available reset shows a minute-updating countdown first and its exact time second. Quota tracks and written percentages both use remaining capacity; the details retain the used value in the accessible label. - Codex routes read the independently installed Codex Connect status endpoint. The selected model's 5-hour window is preferred when present; a normal Codex plan that exposes only a weekly window shows that weekly value instead. Optional server-returned Credits are displayed only when present and are never described as money.
- OpenRouter reads the authenticated key's official usage and optional limit fields from
https://openrouter.ai/api/v1/key. When the provider returnslimit_remaining, the rail shows上限剩余; otherwise it honestly says余额未提供and keeps detailed usage as usage rather than relabelling it as a balance. It remains amount-only and never draws a percentage track. - Kimi/Moonshot international and China routes read their respective official
/v1/users/me/balanceendpoints. SiliconFlow reads the strictly allowlisted official/v1/user/infoendpoint. All three remain amount-only wallet routes. - Providers whose organization resource APIs require a separate Admin/Management key, or expose billing only in a console, show a provider-specific explanation and fall back to exact local Token activity. The plugin never sends a normal inference key to an admin endpoint or invents a percentage, reset time, subscription, or balance.
- Settings →
Signal 用量aggregates exactassistant/message.usagerecords from DSH's local session query service. Statistics can be recomputed for 7, 30, 90, or 365 days and filtered by Provider or model, while the daily calendar keeps a complete 365-day grid and dims dates outside the selected range instead of deleting cells. Daily cells expose exact Token, request, model, and input/output/cache splits on hover/focus; clicking pins that detail. Days before the first available usage record are labelled未记录, rather than presented as zero; one-month cumulative data is labelled as a starting point instead of implying a trend. - Settings →
Signal 外观preserves local brand, subscription-label and Logo overrides. Authentication and model settings belong to an independently installed Codex Connect plugin. - The conversation header's utility row contributes a compact top-right
模型工作说明action beside the native Session log utility. Its right-aligned panel translates the current session snapshot into four plain-language steps (understand, plan, act, check), stays open while focus moves around the conversation, and closes with its toggle, close button, or Escape. The panel has its own right-edge scroll track for the richer explanations. - The Settings view writes data freshness, last successful read, last scan attempt, missing credentials, and failure-with-cached-data explicitly. Resource and analytics failures retain the last successful values without pretending they are current.
- Unknown or custom Provider IDs can be given a local brand name, subscription name, and transparent icon from the bundled mark library. These mappings stay in browser-local storage and never create a quota source.
- Closing Settings returns focus to the Settings entry, and the activity tabs support arrow/Home/End navigation. The plugin does not inspect or move the desktop pet.
- The rail uses a white surface with a soft shadow in the light theme and the inherited dark surface in the dark theme. A one-pixel blue gradient highlight flows continuously around the capsule in both themes and becomes static under
prefers-reduced-motion. - Analytics reads only Token counts, an anonymous per-scan session ordinal, route identifiers, and event times. It does not inspect message bodies, estimate cost, or send analytics over the network.
DeepSeek, OpenCode, OpenRouter, Kimi/Moonshot, and SiliconFlow credentials are resolved only on the Host through the DSH credential service, provider settings references, environment variables, or the OpenCode login file. Every credential is sent only to a fixed or strictly allowlisted official HTTPS host. The independent Codex Connect plugin owns its OAuth file and official endpoints; retired Grok source and credentials are not loaded by Signal.
Motion
The 14.8px point field occupies up to 950 × 440 CSS pixels, drifts up to roughly six pixels with pointer inertia, and carries a phase-continuous water ripple around the pointer before returning gently. Dots move in shallow depth-separated currents instead of one rigid sheet. Across the official whale and complete slogan, the pointer lens locally replaces the glyphs themselves with solid DSH Signal Blue before blue refraction, caustic crests, a narrow specular meniscus, and an elliptical velocity wake distort that color. Black or white base glyphs remain visible only outside the active lens. Fast movement is immediately interruptible; stationary hover keeps both a clearly visible water-surface breath and a locally pulsing blue response. The semantic title and geometry remain fixed. The canvas pauses when hidden or offscreen; touch input and prefers-reduced-motion use a static field with no wordmark refraction.
The field follows live theme changes: light mode uses a visible cool light-gray dot palette, while dark mode derives its neutral dots from the current DSH label color.
DSH integration
conversation.hero.brand.mark— shadows the official mark occupant while reusing the officialFishLogocomponent.conversation.input.dock— adds the fixed-height resource rail.settings.section— adds theSignal 用量settings view.settings.section— addsSignal 外观for local display overrides.conversation.session.header.utilities— adds the compact模型工作说明panel shown beside the native Session log utility, with a sidebar-safe right alignment.signalResource— Host-only balance/quota service exposed through the Typert gateway.sessionQuery— read-only local source for aggregate Token usage; corrupt sessions are isolated and reported as skipped.
No compiled DSH class names are referenced.
Verification
& 'C:\Users\1\.local\tools\node\npm.cmd' run build:client
& 'C:\Users\1\.local\tools\node\npm.cmd' run check
& 'C:\Users\1\.local\tools\node\npm.cmd' pack --dry-run
# DSH Desktop must be running on 3080 for the browser smoke pass.
& 'C:\Users\1\.local\tools\node\npm.cmd' run qa:browserThe source package is [email protected]. It declares dsh >=0.1.5-rc.1 <0.2.0. The floor moved here on purpose: the whole DSH client package set in the active profile is materialised at 0.1.5-rc.2, so claiming 0.1.1 compatibility would be a promise the surrounding install no longer honours. @deepseek-ai/dsh-credentials and @deepseek-ai/dsh-typert-protocol are pinned to 0.1.5-rc.2 to match the host, so a credential reference is never exchanged across two different copies of that module. Signal no longer bundles or registers login providers, account settings, or a Fast Mode control. Independent Codex Connect owns those features; Signal reads its redacted status endpoint for quotas. AGY and Grok remain retired. Old source snapshots are retained outside the published package for rollback. The maintenance helper only promotes Signal and preserves independently installed plugins. Validate the independent Codex Connect installation before deploying this split to a profile that still relies on embedded login.
Local rollback
Close DSH Desktop first. The repository includes a host-specific reversible maintenance helper. It always writes a fresh backup before changing the active profile.
$env:ELECTRON_RUN_AS_NODE = '1'
& 'C:\Users\1\AppData\Local\Programs\DeepSeek Harness Desktop\DeepSeek Harness Desktop.exe' `
'C:\Users\1\Documents\ChatGPT\DSH 桌面端\tools\reconcile-desktop.mjs' --rollbackRollback removes DSH Signal and restores [email protected] through the same candidate gate. Restart DSH Desktop after the transaction completes.
Resource freshness and card motion (0.7.2)
Resource refresh is foreground polling rather than a server push stream. The visible selected source is refreshed after the previous request settles; opening details, returning to the page, changing models, and finishing a turn request an additional refresh. Requests are coalesced and automatic failures back off. Provider-side caches may still delay the official quota. Verified values stay visible while refreshing.
Card surfaces stay opaque. Pointer-local edge light and a narrow travelling blue border accompany interaction; background pages and reduced-motion mode pause nonessential effects. Brand acquisition keeps the slogan visible from its first frame. Reference directions and attribution are recorded in output/visual-motion-references.md.
