Repository navigation
Releases
v0.4.2 — both packages are on npm
Both packages are on npm:
cd ~/.dsh/profiles/desktop
pnpm add dsh-plugin-builder-hudThat brings the skin in as its own dependency, and the bundle's cordis.patch.yml
already carries the row that loads it.
dsh-plugin-builder-hud— the bundle: the card the Plugins page listsdsh-plugin-souls-hud— the skin: the host half, the settings form, and the renderer
What changed
Nothing in the plugin. The skin and the bundle are otherwise identical to v0.4.1 —
git diff v0.4.1 v0.4.2 is two version fields, the issue form's placeholder, and the
documentation. This release exists because publishing to npm needs a version number and
the install instructions had to stop saying "from a checkout".
Installing from npm
Add the bundle's name to the profile's bundle list too:
{ "dsh": { "profile": { "bundles": ["…", "dsh-plugin-builder-hud"] } } }Two packages rather than one, on purpose: the card's name comes from the bundle and the
row's name and browser half come from the skin.
The Souls Style README
sets the whole thing out.
If you install 0.4.1 instead of 0.4.2
Both work and they are the same code. 0.4.1 reached the registry a few minutes after
the CLI had already given up on it — see below.
Two things about publishing, recorded for the next time
Both cost real time and neither is obvious.
- A brand-new package cannot be staged. npm refuses to stage a package that does
not exist yet, and the error that says so only appears after a stage-only token has
already failed, so the two look like one problem. The first publish of a name needs a
token with Read and write (publish and stage). - The registry is slow, and its errors mislead.
npm publishprints
+ name@versionand returns while the version is still being processed. A second
attempt during that window fails with409 Cannot publish over previously staged version, which reads exactly like a burnt version number. It is not one: waiting a
few minutes and re-querying showed0.4.1live for both packages. That is why this
release is0.4.2— the bump was made on the 409.
Both packages also carry a permanent 0.0.0-stage version, npm's own artifact for
staged publishing, which cannot be removed: deleting a package is an account-governance
action, and granular tokens that bypass 2FA have been barred from those since August
2026.
Verifying
node plugins/souls-hud/test/harness.mjs # offline: fakes the Cordis context + services
node plugins/souls-hud/test/form.mjs # renders the settings page in Node
node plugins/souls-hud/test/upload.mjs # the upload path and the fracture light, in headless Chrome
node plugins/souls-hud/test/preview.mjs # rebuilds preview/preview.html
node plugins/builder-hud/test/icon.mjs --check # the card artwork matches the renderer
node test/repo.mjs # the .github files, and every link in the docsFull changelog: v0.4.1...v0.4.2
v0.4.1 — the light in the fractures, and a shot that shows it
A fix release for the light in the fractures. Nothing about the plugin's behaviour
changes — same settings, same readings, same tariff rule — only what a lit fracture
looks like.
The light now comes in from the rim
A fracture lit from behind is brightest where it opens onto the rim: the gap is widest
there, and the metal is what the light has to travel through afterwards. Each pass is
now drawn in the same three runs the taper already produced, at falling opacity — the
run at the rim carries the arc's own strength rather than a fraction of it, and the
tip nearest the centre is the dimmest part of the crack. Drawn at one brightness end to
end it read as a neon tube, which is what "the light does not look like light" turned
out to mean.
And the metal scatters it
A wide stroke with a hard edge is a fatter tube, not a haze. There are now two blurred
passes outside the band, and the wide one strokes the travelling gradient — the light
the ring's own flow pass is made of. That is deliberate: it makes the haze the light
colour rather than the tariff colour, and at peak the plate is already orange, so the
tariff colour alone has almost nothing left to separate from. The haze also breathes on
its own, at the ring's period.
Also
#burn-detail, a new scene on the preview page: the peak frame at 3x. The existing
#zoomscene magnifies the medal with nothing burning in it, so it could only ever
show the resting dark red.heat-peak.pngregenerated. Worth recording, because the old recipe was quietly
wrong: under headless Chrome's virtual clock a CSS transition never advances, so a
capture taken with the stylesheet as shipped catches every fracture at the opacity it
had before the poll lit it — lit in the markup, invisible in the pixels.
Verifying
node plugins/souls-hud/test/harness.mjs # offline: fakes the Cordis context + services
node plugins/souls-hud/test/form.mjs # renders the settings page in Node
node plugins/souls-hud/test/upload.mjs # the upload path and the fracture light, in headless Chrome
node plugins/souls-hud/test/preview.mjs # rebuilds preview/preview.html
node plugins/builder-hud/test/icon.mjs --check # the card artwork matches the renderer
node test/repo.mjs # the .github files, and every link in the docstest/upload.mjs grew nine assertions for this, each proved by breaking the thing it
watches: that the mouth of a lit fracture is at full strength, that every run behind it
is dimmer, that the mouth is at least as bright as the arc that lit it, that both
scatter passes are blurred and the wider one softer, that the haze strokes the same
gradient the arc travels on, and that it drifts.
Full changelog: v0.4.0...v0.4.1
v0.4.0 — Souls Style: the medallion, and a ring that burns
First release. Souls Style — a vitals-cluster skin for the DSH sidebar: three
Dark Souls style bars beside an engraved covenant medallion whose edge doubles as
a live token-burn gauge.
| Bar | Meaning | Colour |
|---|---|---|
| HP | API balance — the account's recharge wallet | crimson |
| FP | gift/bonus wallet balance, on the same ¥ scale | deep blue |
| Stamina | the context window still available to the session on screen | yellow-green |
Highlights
- The medallion is built at runtime, from settings. Shape (round or octagon),
device (whale, sword, sun, moon, wolf, hammer — or an SVG you upload), metal
(bronze, iron, silver, gold), and a light or dark cut. Every device is cast from
the same metal as the rim. - The ring is a live token-burn gauge, coloured by whether the current hour is
inside DeepSeek's off-peak window — including Chinese public holidays and 调休
make-up workdays. Its lit arc glows and breathes. - Fractures are lit by that arc. In the peak state a heat overlay washes the
plate; the six fractures struck into it stay dark red until the burn arc sweeps
over them, and only the covered ones light. Covered fractures take the ring's own
colour — blue off-peak — and carry a Tyndall-style light whose brightness drifts. - Floating mode paints no surface. Detached from the card, the cluster simply
hangs in the air: the mark, the bars, the badge and the text carry their own
shadows instead of sitting on a panel. - The settings form renders the real thing, including a theme × tariff preview
board, so a change is visible before it is saved.
Install
From a checkout, point one row at the skin's host entry in your profile's
cordis.patch.yml:
- insert:
- id: souls-hud
name: "/absolute/path/to/plugins/souls-hud/lib/host.js"
config:
hpTargetCny: 100
fpTargetCny: 50
shape: round
device: whale
material: bronzeThe repository ships two packages on purpose: plugins/builder-hud is the bundle
(the card the Plugins page lists, and the patch layer that puts a row on it) and
plugins/souls-hud is the skin. Full instructions, every setting, the artwork, the
tariff rule and the holiday calendar are in
the Souls Style README.
Verifying
node plugins/souls-hud/test/harness.mjs # offline: fakes the Cordis context + services
node plugins/souls-hud/test/form.mjs # renders the settings page in Node
node plugins/souls-hud/test/upload.mjs # the upload path, in headless Chrome
node plugins/souls-hud/test/preview.mjs # rebuilds preview/preview.html
node plugins/builder-hud/test/icon.mjs --check # the card artwork matches the renderer
node test/repo.mjs # the .github files, and every link in the docsNo dependencies — plain Node, and a local Chrome for the browser-side tests.
Notes
The plugin is free: no paid edition, no licence key, nothing to unlock. If it earns
its place in your sidebar, the tip jar is in the app on BuilderHUD's card page. It
buys nothing; the licence is MIT either way.
This is an independent, third-party plugin. It is not affiliated with, endorsed
by, or supported by DeepSeek, and it ships none of their artwork — the medallion,
its devices and the whale are this project's own drawings. "Dark Souls" is a
trademark of FromSoftware, Inc. and Bandai Namco Entertainment Inc.; it is used here
descriptively, to say what the drawing looks like. This project is not affiliated
with, endorsed by, or supported by FromSoftware or Bandai Namco, ships none of their
artwork or data, and is not a product of theirs. The covenant-medal style is homage,
not a claim.

