Files
Randify.pro/.sisyphus/notepads/dm-dashboard-redesign/decisions.md
T
emil 1c38df7e74 style(dm): redesign dashboard with purple-gold theme
Redesign DM Dashboard (/dm/, /ru/dm/) with purple-gold theme (#534AB7 + #c8a84b):

Design System:
- Update dm-theme.css with 49 purple-gold tokens (transitions, shadows, hover states)
- Create DmTabs.astro with ARIA, keyboard nav, URL hash sync, localStorage persistence
- Create DmSidebar.astro for desktop navigation
- Redesign DmHeader with gold accent
- Update DmButton, DmCard, DmInput primitives
- Expand i18n to 47 strings

Layout:
- Redesign DmLayout with 3-column dashboard grid (sidebar|main|context)
- Update /dm/index.astro and /ru/dm/index.astro with named slots

Feature Components:
- DiceRoller: empty state, ARIA live, color-coded history, storage key fallback
- InitiativeTracker: HP editing, active highlighting, storage key fallback
- Open5eReference: skeletons, debounce, error retry, gold tabs
- NotesPanel: cross-tab sync, copy-to-clipboard, auto-save
- AuthPanel: VK/Yandex brand colors, pill buttons

Tests:
- Add 50 Playwright E2E tests (smoke, dice, initiative, reference, notes, data-migration)

Fixes:
- Document Open5e client.ts URL bugfix
- Add backward-compatible storage key fallback for dice/initiative
- Preserve legacy sessionStorage data on load
2026-05-15 17:49:32 +03:00

1.9 KiB

DM Dashboard Redesign — Scope Fidelity Decisions

F4 (Scope Fidelity Check) — 2026-05-15

Decision: Do NOT fix issues

  • Task scope is "report only, do not modify files."
  • All findings documented in issues.md for downstream remediation.

Decision: T2 CSS hydration gap accepted as partial

  • The DmTabs component uses <a href="#tab"> for graceful degradation and server-renders aria-selected.
  • A true CSS :target approach for visual active state would require significant restructuring (e.g., sibling selectors or hidden radios).
  • Current implementation is functionally adequate; missing item logged for future polish.

Decision: T8 sidebar active state accepted as partial

  • DmSidebar is an optional enhancement per dependency matrix ("Blocks: None").
  • Active highlighting would require JS to read URL hash and toggle classes; sidebar is static Astro component.
  • Logged as gap, not blocker.

Decision: T14-T16 test gaps accepted as partial

  • Core user flows are covered. Missing edge-case tests (persistence, pagination, filters) do not block release.
  • Data migration spec.ts covers persistence scenario for T18, partially backfilling T14-T16 gaps.

Decision: T18 data migration flagged as high-priority fix

  • Dice history incompatibility causes uncaught JS exception → empty history for users with old data.
  • Initiative delete broken on old data → users cannot remove legacy combatants.
  • Recommended fix: add defensive checks in renderHistory() and deleteCombatant() before accessing rolls/id.
  • These are 2-line fixes; should be done before release.

Decision: src/lib/open5e/client.ts change is justified

  • Without the URL fix, API calls fail with double slashes.
  • Change is purely mechanical (path string normalization); no API contract changes.
  • Classified as minor contamination but functionally necessary.

Decision: debug-open5e.mjs flagged for cleanup

  • Unaccounted debug script should be removed before commit.