Web: redesign, logo, PWA, QR codes, Spotify guidance
- Album-art-tinted cards that crossfade on song change, equalizer bars, live avatar rings, drifting ambient colour, Space Grotesk display font, brand purple-to-blue gradient from the logo - Feed cards rise in and glide to new positions (motion); respects reduced-motion - New logo as nav mark, favicon and Apple touch icon - Installable PWA: manifest, maskable icons, small service worker (cached build assets + offline page), security headers - Show-QR-code on your own profile; centred profile header with stats - Settings explains connecting Spotify via Last.fm or ListenBrainz Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01MzFywujuH9TiuXbr9vjoX8
This commit is contained in:
@@ -7,6 +7,27 @@ const config: NextConfig = {
|
||||
output: 'standalone',
|
||||
// Monorepo: trace files from the repo root so the shared package is included.
|
||||
outputFileTracingRoot: fileURLToPath(new URL('../..', import.meta.url)),
|
||||
async headers() {
|
||||
return [
|
||||
{
|
||||
source: '/(.*)',
|
||||
headers: [
|
||||
{ key: 'X-Content-Type-Options', value: 'nosniff' },
|
||||
{ key: 'X-Frame-Options', value: 'DENY' },
|
||||
{ key: 'Referrer-Policy', value: 'strict-origin-when-cross-origin' },
|
||||
],
|
||||
},
|
||||
{
|
||||
// The service worker must never be cached, or updates would never reach users.
|
||||
source: '/sw.js',
|
||||
headers: [
|
||||
{ key: 'Content-Type', value: 'application/javascript; charset=utf-8' },
|
||||
{ key: 'Cache-Control', value: 'no-cache, no-store, must-revalidate' },
|
||||
{ key: 'Content-Security-Policy', value: "default-src 'self'; script-src 'self'" },
|
||||
],
|
||||
},
|
||||
];
|
||||
},
|
||||
};
|
||||
|
||||
export default config;
|
||||
|
||||
Reference in New Issue
Block a user