Commit Graph
30 Commits
Author SHA1 Message Date
tevans 47cb9c3b3f feat: dice-tray rule-pack selector + per-pack param inputs 2026-07-20 16:33:40 +01:00
tevans 01a279798b feat: Dee Sanction challenge/verdict rule-pack 2026-07-20 16:28:37 +01:00
tevans d64fbc02bf feat: Panic & Glory rule-pack 2026-07-20 16:25:52 +01:00
tevans 95833bd2c1 feat: VANITY d6-pool rule-pack 2026-07-20 16:22:13 +01:00
tevans 605b107c77 feat: CoC 7e d100 rule-pack 2026-07-20 16:18:27 +01:00
tevans 4ebf8d3994 feat: rule-pack contract v2 (params + summary) and registry listing 2026-07-20 16:15:02 +01:00
tevans 21d261cc2d feat: wire NPC + art trays and prop viewer into the shell 2026-07-20 15:51:58 +01:00
tevans e648c17e79 refactor: dedupe art-tray thumbnail template; test real escaping path 2026-07-20 15:47:06 +01:00
tevans 13c71c5aae feat: <art-tray> pencil-art library search UI with HTML escaping 2026-07-20 15:38:47 +01:00
tevans 5bdeef654e refactor: shared escapeHtml util; escape prop-viewer src/alt 2026-07-20 15:35:57 +01:00
tevansandClaude Opus 4.8 9a5e4c4ce4 feat: <prop-viewer> fullscreen prop overlay
Implements fullscreen image overlay component for displaying art to players.
Methods: show(src, label), dismiss(), isOpen(). Starts hidden. Clicking
overlay dismisses. Strict TDD: 3 tests passing.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-20 15:30:56 +01:00
tevans e58d833ba2 feat: seed pencil-art manifest + validator 2026-07-20 15:27:59 +01:00
tevans 6b88e0fa76 feat: pure tag-ranked art library search 2026-07-20 15:24:34 +01:00
tevans f61eb48038 fix: HTML-escape seed + NPC fields in <npc-tray> to prevent markup breakage 2026-07-20 15:21:59 +01:00
tevans cb86a780b9 feat: <npc-tray> seed-to-character generator UI 2026-07-20 15:17:30 +01:00
tevans 2819305b56 feat: pure NPC generator over genre tables 2026-07-20 15:13:57 +01:00
tevansandClaude Opus 4.8 03ce5e1606 feat: NPC noir genre table pack + genre registry
Implements Slice 2 Task 1: Noir/Blade Runner genre pack with curated
string tables (names, looks, manners, wants, secrets, voices) and a
registry mapping id->pack for use by offline NPC generator.

Tests: 2/2 pass (noir structure + registry resolution).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-20 15:10:35 +01:00
tevans d0c9378c40 fix: precache only stable shell paths so SW install survives a production build 2026-07-20 14:31:26 +01:00
tevans 539798f8d0 feat: installable offline PWA (manifest + service worker) 2026-07-20 14:21:56 +01:00
tevans 1348048d50 feat: <gm-shell> wiring, styles, and AFTERIMAGE boot
Adds the gm-shell root element that owns store/clock/stamps/scenario,
mounts director-rail and dice-tray, handles reached (stamp + persist)
and open-tool (toggle dice tray), and boots the AFTERIMAGE scenario in
main.js. Also adds tests/setup.js + a vite.config.js setupFiles entry:
Node's newer built-in global `localStorage` shadows jsdom's per-window
implementation in vitest's jsdom environment, leaving localStorage
undefined in tests until replaced with a real jsdom-backed instance.
2026-07-20 14:15:50 +01:00
tevansandClaude Opus 4.8 549cb190d2 feat: <dice-tray> roller wired to rule-packs
Implement Task 10: dice-tray Web Component with:
- Polyhedral die picker (d4-d20, d100)
- Deterministic roll() using injected RNG
- Rule-pack interpretation for successes/ones/verdict
- Event emission on roll completion
- Reactive rendering on die type/count change

TDD: 3 passing tests (picker render, roll+interpret+verdict, die-type switching)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-20 14:05:52 +01:00
tevans 579dea996d feat: <director-rail> pacing component 2026-07-20 14:01:51 +01:00
tevans 80c8ecb5c8 feat: elapsed + drift formatting helpers 2026-07-20 13:58:49 +01:00
tevans c01917d38a feat: scenario validator + AFTERIMAGE pilot data 2026-07-20 13:55:33 +01:00
tevans e9fa9366fa feat: Year-Zero rule-pack + rule-pack registry 2026-07-20 13:52:41 +01:00
tevans cf028e9a08 feat: seedable dice core with pools 2026-07-20 13:49:54 +01:00
tevans 1861f4512f feat: timeline drift + next-hard-trigger analysis 2026-07-20 13:46:36 +01:00
tevans 40ac770304 feat: pure session clock with pause/resume 2026-07-20 13:43:02 +01:00
tevans bf2dacefc1 feat: namespaced localStorage store with export/import 2026-07-20 13:40:01 +01:00
tevans e4aafe5147 chore: scaffold Vite + Vitest PWA project 2026-07-20 13:36:38 +01:00