siftlode/frontend/src
npeter83 a07fd82ad6 perf(landing): WebP welcome screenshots + long-cache static assets
The 3 landing screenshots were 2.3 MB of PNG (feed.png alone 1.6 MB, decoded
at 2400x1350 for a ~400px slot) — the biggest LCP/transfer cost on the public
page. Re-encoded to WebP capped at 1600px (~284 KB total, feed 91% smaller).
Also set Cache-Control: content-hashed /assets/* are immutable for a year,
other SPA-root static files (welcome images, favicon, robots) get a 7-day TTL;
index.html stays no-cache. Register image/webp+avif mimetypes so FileResponse
serves the right Content-Type. Lighthouse (dev): Perf 80->93, LCP 1.8s->1.2s.
2026-07-04 18:17:11 +02:00
..
components perf(landing): WebP welcome screenshots + long-cache static assets 2026-07-04 18:17:11 +02:00
i18n feat(downloads): edit + remove actions on shared-with-me items (no re-share) 2026-07-04 05:21:50 +02:00
lib chore(release): v0.22.1 — iOS/Safari-compatible downloads 2026-07-04 17:30:02 +02:00
App.tsx feat(ui): favicon, dynamic tab title, clickable logo, styled module headers 2026-07-04 06:17:40 +02:00
index.css feat(player): keyboard + scroll-wheel controls in the video modal 2026-06-29 23:37:18 +02:00
main.tsx feat(downloads): share UI — user picker + public watch links + watch page 2026-07-04 04:32:31 +02:00
vite-env.d.ts feat(i18n): foundation — react-i18next, language switcher, server-persisted choice 2026-06-15 00:30:34 +02:00