Shadows Hud

Release Notes v0.2.0

Released: 2026-08-30
Foundry VTT: v14
Author: shadows_plays

Changelog & Notes

🚀 Added & Enhanced Features

  • SR5e Edge System Pipeline Integration:
  • Integrated native Edge spending pipeline (actor.system.edge, EdgeTestFlow).
  • Added direct click handling for the HUD Edge counter pill (⚡ X+1d6), automatically deducting Edge points and adding Edge dice to rolls.
  • Skill Base & Specialization Row Buttons:
  • Added direct Base Rating [4] and Specialization [+2] action buttons on skill drawer rows (.shadows-drawer-row).
  • Swapped button layout order ([+2] Specialization first, [4] Base Rating second).
  • Clicking [+2] triggers a skill roll with +2 specialization dice bonus; clicking [4] rolls base skill rating.
  • Pin & Favorite Action Syncing:
  • Added blitz symbol (⚡ / +) pin toggle button on drawer rows to toggle action bar pinning (ActionService.addPinnedActionUuid / removePinnedActionUuid) without triggering skill rolls.
  • Resolved TypeError: ActionService.unpinActionUuid is not a function by exposing static aliases pinActionUuid and unpinActionUuid.
  • Integrated bi-directional sync with SR5-FoundryVTT native actor favorites array (actor.system.favorites & actor.favorites()).
  • Scoped pinned action UUIDs directly onto individual actor documents (actor.getFlag("shadows-hud", "pinnedActionUuids")), preventing cross-character favorite leakage when switching active canvas tokens.
  • Strict Magic, Resonance & Matrix Action Filtering: Automatically filters out spellcasting/drain for non-magical characters, Fade/complex forms/sprites for non-Technomancers (resonance <= 0), and Matrix actions for characters without a commlink or cyberdeck.
  • Action Bar Restructuring & Quick Search:
  • Clustered action bar into 3 unified tabs: Favoriten (SR5 actor favorites + pinned items), Handlungen (all actions, active skills, weapons, spells, matrix actions, complex forms, adept powers, programs), and Makros (Foundry hotbar macros).
  • Added real-time quick search input field beside navigation tabs matching both localized names (e.g. Menschenkenntnis) and raw system keys (judge_intentions).
  • Fixed HUD panel height (min-height: 6.5em; height: 6.5em; max-height: 6.5em;) to maintain constant flat dimensions across all tabs with smooth vertical red scrollbar navigation.
  • In standalone macro mode (when no character token is selected), aligned ⚙ Makros tab button and control icons (🔒/🔓, 📁, 🗑) on a single horizontal row, suppressing the redundant drag handle header.
  • Design Token Abstraction & Light/Dark Theme System:
  • Expanded variables.css with semantic color design tokens (--sh-bg-input, --sh-bg-input-focus, --sh-bg-overlay, --sh-bg-badge, --sh-border-input, --sh-scrollbar-thumb, --sh-scrollbar-track, --sh-text-contrast, --sh-text-placeholder, --sh-shadow-box) matching sr5-marketplace architecture.
  • Full Light Theme (body.theme-light, body[data-theme="light"], .theme-light #shadows-hud-root) and Dark Theme (body.theme-dark, :root) variable token support.
  • Refactored all component stylesheets (portrait.css, dialog.css, config.css, hud.css) to exclusively derive colors from CSS variables.
  • Audited and converted all hardcoded px declarations across dialog.css, config.css, variables.css, and hud.css to relative em/rem units (1em = 16px) for 100% fluid responsive scaling.
  • Multi-Tier Runtime System Localization:
  • Implemented ActionService.getLocalizedLabel(item) replicating SR5-FoundryVTT's native PackItemFlow.localizePackAction and Helpers.localizeName algorithms.
  • Cascades through SR5.Content.Actions.*, SR5.Skill.*, SR5.Rolls.*, and SR5.ActionType.*, automatically translating English compendium actions ("Judge Intentions", "Composure") to German ("Menschenkenntnis", "Selbstbeherrschung").
  • Preserved custom weapon and item names (e.g. "Cavalier Falchion Player") without generic type replacement.
  • Localized rich tooltip detail labels (Schaden, DK, Munition, Reichweite, Handlung, Stufe, Limit) and action type values (Komplexe, Einfache, Freie).
  • Removed all .toUpperCase() text transforms across frontend elements for natural title-cased UI text.
  • Runtime Stability & Token Selection Fixes:
  • Fixed TypeError: Cannot set property locked of #<Hotbar> which has only a getter when toggling hotbar lock by safely mutating internal state ui.hotbar._locked and calling _toggleLock().
  • Added missing get actor() getter to ShadowsHudState so app.actor correctly resolves the bound actor document of the active canvas token.
  • Fixed currentTabActions resolution in ShadowsHudDataLoader to correctly render per-actor clustered actions and favorites (app._actions.actions & app._actions.favorites).