diff --git a/web/src/lib/branding.test.ts b/web/src/lib/branding.test.ts index f923db51..4b830fda 100644 --- a/web/src/lib/branding.test.ts +++ b/web/src/lib/branding.test.ts @@ -1,7 +1,7 @@ import { describe, it, expect, beforeEach, afterEach } from 'vitest'; -import { appName, description, pageTitle } from './branding'; +import { appName, pageTitle } from './branding'; -const setGlobal = (g: { appName: string; description: string } | undefined) => { +const setGlobal = (g: { appName: string } | undefined) => { if (g === undefined) { delete (window as { __MINSTREL__?: unknown }).__MINSTREL__; } else { @@ -14,7 +14,7 @@ describe('branding helpers', () => { afterEach(() => setGlobal(undefined)); it('appName returns the global value when set', () => { - setGlobal({ appName: 'Family Jukebox', description: 'home' }); + setGlobal({ appName: 'Family Jukebox' }); expect(appName()).toBe('Family Jukebox'); }); @@ -23,31 +23,22 @@ describe('branding helpers', () => { }); it('appName falls back to "Minstrel" when value contains an unrendered Go token', () => { - setGlobal({ appName: '{{ .AppName }}', description: 'x' }); + setGlobal({ appName: '{{ .AppName }}' }); expect(appName()).toBe('Minstrel'); }); - it('description returns the global value when set', () => { - setGlobal({ appName: 'Minstrel', description: 'Our home library.' }); - expect(description()).toBe('Our home library.'); - }); - - it('description falls back to a default tagline when unset', () => { - expect(description()).toContain('Self-hosted music server'); - }); - it('pageTitle with section returns "{appName} · {section}"', () => { - setGlobal({ appName: 'Minstrel', description: 'x' }); + setGlobal({ appName: 'Minstrel' }); expect(pageTitle('Search')).toBe('Minstrel · Search'); }); it('pageTitle without section returns just the appName', () => { - setGlobal({ appName: 'Minstrel', description: 'x' }); + setGlobal({ appName: 'Minstrel' }); expect(pageTitle()).toBe('Minstrel'); }); it('pageTitle composes nested sections via the · separator', () => { - setGlobal({ appName: 'Minstrel', description: 'x' }); + setGlobal({ appName: 'Minstrel' }); expect(pageTitle('Library · Artists')).toBe('Minstrel · Library · Artists'); }); }); diff --git a/web/src/lib/branding.ts b/web/src/lib/branding.ts index 8857b12f..e229661c 100644 --- a/web/src/lib/branding.ts +++ b/web/src/lib/branding.ts @@ -1,12 +1,10 @@ declare global { interface Window { - __MINSTREL__?: { appName: string; description: string }; + __MINSTREL__?: { appName: string }; } } const DEFAULT_APP_NAME = 'Minstrel'; -const DEFAULT_DESCRIPTION = - 'Self-hosted music server with Subsonic compatibility, smart shuffle, and Lidarr integration.'; const isRenderedToken = (v: string | undefined): v is string => typeof v === 'string' && v.length > 0 && !v.includes('{{'); @@ -18,13 +16,6 @@ export const appName = (): string => { : DEFAULT_APP_NAME; }; -export const description = (): string => { - if (typeof window === 'undefined') return DEFAULT_DESCRIPTION; - return isRenderedToken(window.__MINSTREL__?.description) - ? window.__MINSTREL__!.description - : DEFAULT_DESCRIPTION; -}; - export const pageTitle = (section?: string): string => section ? `${appName()} · ${section}` : appName(); diff --git a/web/src/lib/theme/applyMetaThemeColor.svelte.ts b/web/src/lib/theme/applyMetaThemeColor.svelte.ts index 7643a371..acc66895 100644 --- a/web/src/lib/theme/applyMetaThemeColor.svelte.ts +++ b/web/src/lib/theme/applyMetaThemeColor.svelte.ts @@ -1,5 +1,8 @@ import { resolvedTheme } from '$lib/stores/theme.svelte'; +// TODO(#375): keep these hex values in sync with tokens.json +// colors.dark.obsidian / colors.light.obsidian. The duplication is a known +// drift hazard from #363; consume from the generated CSS layer instead. const DARK = '#14171A'; const LIGHT = '#F8F5EE'; diff --git a/web/src/routes/playlists/[id]/+page.svelte b/web/src/routes/playlists/[id]/+page.svelte index 9fe1a8f8..b169d1a8 100644 --- a/web/src/routes/playlists/[id]/+page.svelte +++ b/web/src/routes/playlists/[id]/+page.svelte @@ -138,7 +138,7 @@ - {pageTitle(playlistQuery?.data?.name ? `Playlists · ${playlistQuery.data.name}` : 'Playlists')} + {pageTitle(playlistQuery?.data?.name ? `Playlist · ${playlistQuery.data.name}` : 'Playlist')}
diff --git a/web/vite.config.ts b/web/vite.config.ts index e80dadf0..e589e3f2 100644 --- a/web/vite.config.ts +++ b/web/vite.config.ts @@ -29,9 +29,10 @@ const injectGoTokensPlugin = { + - `; + `; // Fail loudly if either anchor drifts. A silent .replace() no-op // would ship a build with un-substituted Go template tokens missing,