- Add MineralHud component (js/ui/MineralHud.js) showing "MINERALS n / N"
plus a fill bar in the upper-right corner, replacing the old tether
stack. One tween drives both the counting number and the bar so they
never drift; a cyan flash ripples on landings; amber at capacity.
- Wire Mining to emit an onOre(gained, hold) seam per extraction tick and
per fragment landing so the HUD fills live as the rock shrinks, not
only at the batch 'absorbed' event.
- Remove refreshTetherHud / fmtRange from GameScene; instantiate MineralHud
in create(), feed it via refreshMineralHud() from ore seams and mining
events, destroy on shutdown.
- Add data/mineralhud.json config (corner pad, bar geometry, count-up and
flash tuning) and register it in the manifest.
- Tests: new dev/mineral-hud.test.mjs covering layout, count-up/bar sync,
superseded-tween guard, capacity/clamping, teardown; extend
dev/mining.test.mjs to assert onOre ticks; drop tether-HUD checks from
dev/system-hud.test.mjs; add setOrigin/setScrollFactor no-ops to the
Phaser stub.