- errorDialog + hints now use createStore (drop their bespoke listener arrays). - theme/sidebarLayout/notifications/App filters/Playlists plSort use readMerged/ readJSON/writeJSON instead of inline try/JSON.parse/catch. - Stats, SettingsPanel and App's channel filter/view tabs use usePersistedState (the 3 sites that reinvented usePersistedTab inline). - Every siftlode.* key now sourced from the LS registry (no scattered literals).
10 lines
567 B
TypeScript
10 lines
567 B
TypeScript
// Build info baked into the SPA at build time (Vite inlines VITE_*-prefixed env).
|
|
// Injected via Docker build-args (see Dockerfile); falls back to "dev" for un-stamped builds.
|
|
import { LS } from "./storage";
|
|
|
|
export const FRONTEND_VERSION = import.meta.env.VITE_APP_VERSION || "dev";
|
|
export const FRONTEND_SHA = import.meta.env.VITE_GIT_SHA || "unknown";
|
|
export const FRONTEND_BUILD_DATE = import.meta.env.VITE_BUILD_DATE || "";
|
|
|
|
// Key for the "last version the user has seen release notes for" (drives the banner).
|
|
export const SEEN_VERSION_KEY = LS.seenVersion;
|