From b16bbe82a646c540a3d82adaabe9987049f42daf Mon Sep 17 00:00:00 2001 From: Eric Wagoner Date: Tue, 25 Aug 2026 14:34:06 -0400 Subject: [PATCH] The masthead wears its deploy stamp MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit A small yyyy.mm.dd.hh.mm mark beside the edition line, baked in at build time — and the deploy builds moments before it ships, so the stamp reads as deploy time. Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_015RCWSTnb1KYTPyL4GmhGnF --- packages/web/src/App.svelte | 7 +++++++ packages/web/src/vite-env.d.ts | 5 +++++ packages/web/vite.config.ts | 14 ++++++++++++++ 3 files changed, 26 insertions(+) create mode 100644 packages/web/src/vite-env.d.ts diff --git a/packages/web/src/App.svelte b/packages/web/src/App.svelte index 75b78a7..22ab213 100644 --- a/packages/web/src/App.svelte +++ b/packages/web/src/App.svelte @@ -1252,6 +1252,7 @@
Wiz-War sixth edition + {__BUILD_STAMP__} {#if local.active} hotseat @@ -2448,6 +2449,12 @@ text-transform: uppercase; color: #8d8672; } + .mast-version { + font-family: "Courier Prime", monospace; + font-size: 0.65rem; + letter-spacing: 0.06em; + color: #6b6454; + } .mast-room { margin-left: auto; font-size: 0.85rem; color: #a49c86; } .mast-room b { color: #e9e1cb; letter-spacing: 0.12em; } .mast-audience { font-size: 0.85rem; color: #a49c86; white-space: nowrap; } diff --git a/packages/web/src/vite-env.d.ts b/packages/web/src/vite-env.d.ts new file mode 100644 index 0000000..a737a71 --- /dev/null +++ b/packages/web/src/vite-env.d.ts @@ -0,0 +1,5 @@ +/// +/// + +/** Build moment, yyyy.mm.dd.hh.mm — injected by vite.config.ts. */ +declare const __BUILD_STAMP__: string; diff --git a/packages/web/vite.config.ts b/packages/web/vite.config.ts index 8a6f4b5..40c6bde 100644 --- a/packages/web/vite.config.ts +++ b/packages/web/vite.config.ts @@ -1,6 +1,20 @@ import { defineConfig } from "vite"; import { svelte } from "@sveltejs/vite-plugin-svelte"; +// Deploys build locally moments before rsync, so build time IS deploy time. +const now = new Date(); +const pad = (n: number) => String(n).padStart(2, "0"); +const stamp = [ + now.getFullYear(), + pad(now.getMonth() + 1), + pad(now.getDate()), + pad(now.getHours()), + pad(now.getMinutes()), +].join("."); + export default defineConfig({ plugins: [svelte()], + define: { + __BUILD_STAMP__: JSON.stringify(stamp), + }, });