From e1aeeaabffa9c97c8889781186ada9b4f4446e8c Mon Sep 17 00:00:00 2001 From: Eric Wagoner Date: Tue, 18 Aug 2026 09:16:46 -0400 Subject: [PATCH] The Token Workshop: every token, twice, at /?tokens MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit All 45 tokens in both arts — the photographed physical set beside the hand-drawn contingency — grouped (wizards, treasures, monsters, terrain, objects & markers), each at board size and close-up. The drawn column renders through TokenArt, so it previews exactly as the board inlines it. Cross-linked with the flourish workshop. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_0138A8CjeQRpvzKxuMfz1Bqc --- packages/web/src/App.svelte | 6 +- packages/web/src/FxGallery.svelte | 2 + packages/web/src/TokenGallery.svelte | 117 +++++++++++++++++++++++++++ 3 files changed, 124 insertions(+), 1 deletion(-) create mode 100644 packages/web/src/TokenGallery.svelte diff --git a/packages/web/src/App.svelte b/packages/web/src/App.svelte index 5cb302f..47859f0 100644 --- a/packages/web/src/App.svelte +++ b/packages/web/src/App.svelte @@ -7,6 +7,7 @@ import Help from "./Help.svelte"; import Replay from "./Replay.svelte"; import FxGallery from "./FxGallery.svelte"; + import TokenGallery from "./TokenGallery.svelte"; import { scheduleFx, type BoardFx } from "./fx"; import { CREATURE_ART, objectArt, TERRAIN_ART, tokenArt } from "./art"; import { local } from "./local.svelte"; @@ -38,6 +39,7 @@ } /** Which pending attack the player has already acknowledged (modal dismissed). */ const fxWorkshop = new URLSearchParams(location.search).has("fx"); + const tokenWorkshop = new URLSearchParams(location.search).has("tokens"); let attackNoticeSeen = $state(null); /** The interruption fanfare, dismissed once per window. */ let momentSeen = $state(false); @@ -1082,7 +1084,9 @@ } -{#if fxWorkshop} +{#if tokenWorkshop} + +{:else if fxWorkshop} {:else}
diff --git a/packages/web/src/FxGallery.svelte b/packages/web/src/FxGallery.svelte index 8c75ec4..566939e 100644 --- a/packages/web/src/FxGallery.svelte +++ b/packages/web/src/FxGallery.svelte @@ -57,6 +57,7 @@

Every effect replays each beat. Edit a file in src/fx-sprites/ and it hot-reloads here. + → the token workshop

{#each SAMPLES as fx (fx.kind)} @@ -162,6 +163,7 @@ } .demo-wall { fill: #4d4438; } .sub code { color: #c9a72a; } + .sub .cross { color: #c9a72a; } .grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); diff --git a/packages/web/src/TokenGallery.svelte b/packages/web/src/TokenGallery.svelte new file mode 100644 index 0000000..c857fd5 --- /dev/null +++ b/packages/web/src/TokenGallery.svelte @@ -0,0 +1,117 @@ + + + + +