Commit Graph

263 Commits

Author SHA1 Message Date
ralksta
8472e79a35 docs: merge security & infrastructure into one collapsed section 2026-03-08 18:32:52 +01:00
ralksta
4f1b8cfe8a chore: ignore docs/dev/ in git, remove from tracking 2026-03-08 18:30:59 +01:00
ralksta
f53d01ba6d chore: consolidate dev-docs and plans into docs/ 2026-03-08 18:30:06 +01:00
ralksta
695609cd96 docs: collapse security and advanced docker sections in README 2026-03-08 18:27:01 +01:00
ralksta
297e63fb49 docs: refactor and declutter documentation (one-minute hero) 2026-03-08 18:25:10 +01:00
ralksta
0b1d2ae1db feat: improve lightbox ux and accessibility 2026-03-08 18:05:34 +01:00
ralksta
8e3f984f96 chore: remove botanica theme completely 2026-03-08 17:53:47 +01:00
ralksta
a3d8917c29 docs: update license section in README to MIT 2026-03-08 17:48:38 +01:00
ralksta
74b5f45369 chore: make project open source under MIT license 2026-03-08 17:45:32 +01:00
ralksta
d83f2e4954 docs: add grid layout screenshots to theming guide 2026-03-08 16:59:18 +01:00
ralksta
c7103c984f docs: add screenshots for all themes and hero styles 2026-03-08 16:42:32 +01:00
ralksta
81f0b38e57 docs: add production readiness info to README 2026-03-08 16:27:21 +01:00
ralksta
ea72d720df chore: production-readiness audit fixes and linting cleanup 2026-03-08 16:26:05 +01:00
ralksta
270768d330 feat: add SEO fields to settings configuration 2026-03-08 16:19:41 +01:00
ralksta
01da5e1baa feat: improve lightbox rendering, hero styles, and config loading 2026-03-08 16:16:15 +01:00
ralksta
09f358559e fix: resolve hydration mismatch (error #418), CSP map blockages, and lightbox visibility 2026-03-07 10:18:20 +01:00
ralksta
4370603a6e fix: resolve lightbox photo loading issue and fix lint error in vitest.setup.ts 2026-03-07 10:09:26 +01:00
ralksta
c8116242f0 fix: resolve React hydration error #418 and improve lightbox robustness by using string attributes and visible-by-default images 2026-03-07 09:50:05 +01:00
ralksta
21f9fda53a fix: improve image proxy compatibility with CORS headers and Content-Type fallbacks to resolve broken lightbox images 2026-03-07 09:46:09 +01:00
ralksta
faab17f9cd fix: increase rate limit and add detailed logging to diagnose broken thumbnails 2026-03-07 09:42:33 +01:00
ralksta
68e442fff5 fix: revert experimental ImmichClient refactoring and restore absolute baseline for image loading 2026-03-07 09:37:48 +01:00
ralksta
277aab54e1 fix: remove minimum length requirement for AUTH_SECRET for maximum compatibility 2026-03-07 09:35:40 +01:00
ralksta
f790aa3268 fix: restore AUTH_SECRET fallback and fix asset caching to resolve fullscreen loading issues 2026-03-07 09:32:20 +01:00
ralksta
280c5430ca chore: full implementation of code review recommendations (security, quality, tests) 2026-03-07 09:27:47 +01:00
ralksta
6f4b441bd6 style: remove redundant FadeIn from Impressum for consistent global page transitions 2026-03-07 09:16:05 +01:00
ralksta
fd965c5a75 style: restore CSS-only transitions and update config examples 2026-03-07 09:13:36 +01:00
ralksta
59ffe37cce docs: remove transitions from settings yaml example and lib/config 2026-03-07 09:12:24 +01:00
ralksta
a529614c19 refactor: completely remove framer-motion and page transitions 2026-03-07 09:11:40 +01:00
ralksta
59ff506b72 style: change header to fixed positioning to prevent wiggling 2026-03-07 09:07:28 +01:00
ralksta
b3f575fe6b style: refine page transitions and remove redundant fade-ins 2026-03-07 09:06:12 +01:00
ralksta
cf5860563e fix: resolve edge runtime and server component style build errors 2026-03-07 09:03:32 +01:00
ralksta
0fed8e6c78 feat: separate settings and gallery config, add impressum page 2026-03-07 08:34:05 +01:00
ralksta
1e079760d8 feat: add configurable page transitions with framer-motion 2026-03-07 08:30:12 +01:00
ralksta
e0bf02b31d security: respect global exifOnHover config in API 2026-03-07 08:19:20 +01:00
ralksta
e394fe84a0 security: implement AUTH_SECRET and secure map/exif API routes 2026-03-07 08:18:23 +01:00
ralksta
2a16a9386f feat: simplify gallery.yaml and add support for album name overrides 2026-03-05 16:52:01 +01:00
ralksta
9179a74f50 fix: prevent portrait image from being cut off on mobile 2026-02-17 16:59:12 +01:00
ralksta
76889093bf fix: prevent Leaflet tile rendering on hidden container
Keep map container always visible (no display:none), overlay
loading text on top, and call invalidateSize() after init.
2026-02-15 23:14:08 +01:00
ralksta
960bab8783 fix: broaden CSP for CartoDB tile subdomains and Leaflet marker icons 2026-02-15 23:11:44 +01:00
ralksta
62a7b178d6 feat: add smart map view with location-level clustering
- /map page with Leaflet (CartoDB dark tiles)
- Photos clustered by city/country (not per-photo)
- /api/map endpoint with encrypted cover asset IDs
- Configurable via gallery.yaml (map: true/false)
- Conditional nav link in header
- CSP updated for Leaflet CDN and tile servers
- Theme-aware popups with cover thumbnails and album links
2026-02-15 23:07:04 +01:00
ralksta
424f7558c6 feat: add docker-compose.dev.yml for dev mode with hot reload
Run with: docker compose -f docker-compose.dev.yml up
Mounts source code, runs npm run dev, shows DevToolbar.
2026-02-15 22:32:21 +01:00
ralksta
23f8eadf1c feat: add dev-only visual theme builder toolbar
Floating palette button (bottom-left) opens a panel to live-preview:
- Theme presets (switches data-preset + fonts + accent)
- Dark/light mode
- Photo frame style
- Film grain toggle
- Grid columns/gap sliders

Hero styles and grid layouts copy YAML to clipboard (need server re-render).
Only renders when NODE_ENV=development. Toggle: click or Cmd+Shift+T.
2026-02-15 22:27:10 +01:00
ralksta
f0d2d2e5ed fix: make about page dynamic to prevent build-time token key mismatch
The about page was statically pre-rendered at build time using the
Dockerfile's dummy IMMICH_API_KEY. The portrait image token was
encrypted with sha256('build-placeholder') but decrypted at runtime
with sha256(real-key) → 400 Bad Request.
2026-02-15 22:23:16 +01:00
ralksta
ec9ad45475 fix: allow inline scripts in CSP for Next.js hydration
script-src 'self' was blocking all Next.js inline hydration scripts,
preventing client-side JS from running. This caused fade-in items to
stay at opacity:0 (empty grid). Added 'unsafe-inline' until Next.js
App Router supports nonce-based CSP.
2026-02-15 22:19:07 +01:00
ralksta
d2f15401c9 docs: update README and gallery-config for 7 presets, new hero styles, and gallery layouts 2026-02-15 22:04:50 +01:00
ralksta
faaad4cbc7 fix: add dummy build-time env vars to Dockerfile for Next.js page data collection 2026-02-15 21:59:53 +01:00
ralksta
4b80af1c29 feat: add noir, monograph, botanica presets + stacked/typographic/mosaic hero styles + showcase/filmstrip/editorial-flow gallery layouts
- 3 new theme presets: noir (darkroom analog), monograph (typographic book), botanica (organic nature)
- 3 new hero styles: stacked (fullbleed + thumbnail strip), typographic (text-only), mosaic (multi-image grid)
- 3 new gallery layouts: showcase (featured + grid), filmstrip (horizontal scroll), editorial-flow (alternating pairs)
- Extended config types, validation, and CSS tokens for all new options
- Updated theming docs with new presets table, descriptions, and example configs
2026-02-15 21:58:31 +01:00
ralksta
4e040c28f3 fix: track screenshots in git for GitHub README rendering 2026-02-15 17:19:14 +01:00
ralksta
570cabc972 feat: restyle themes to be visually distinct
- Minimal: Swiss Brutalist — fullbleed hero, true B&W, zero-gap grid, Geist font
- Editorial: Cinematic Magazine — warm charcoal, Bodoni Moda serif, slow transitions
- Classic: Gilded Gallery — gold accents, Cinzel headings, passepartout, ornamental dividers

Updated config presets, per-theme color palettes, ~550 lines of scoped CSS overrides,
data-preset attribute on html element, responsive breakpoints, screenshots, and docs.
2026-02-15 17:17:25 +01:00
ralksta
a9737ad8e7 feat: theming system, documentation, and photo grid regression tests
- Add configurable theme system with 4 presets (studio, minimal, editorial, classic)
- Theme controls fonts, colors, accent, photo frames, grain, and header dot
- Resolve themes from gallery.yaml: string shorthand or full object override
- Inject theme as CSS custom properties on <html> element
- Dynamic Google Fonts loading based on theme config
- OG image route reads accent/background from theme
- Refactor Studio overrides into conditional CSS via data-attributes

Documentation:
- Add docs/gallery-config.md with comprehensive configuration reference
- Add docs/theming.md with preset reference and custom theme guide
- Slim README to link to detailed docs

Fix CSS regression:
- Fix passepartout frame overflow:visible breaking next/image fill rendering
- Remove duplicate .photo-grid__item block that stripped overflow:hidden

Testing:
- Add e2e/photo-grid.spec.ts with 3 regression tests:
  - Grid items render with real dimensions
  - overflow:hidden CSS guard (catches the exact bug fixed)
  - Images load with real pixel data (not blurhash)

Tooling:
- Add scripts/screenshots.ts for automated theme screenshot generation
- Handles dev server lifecycle, theme cycling, FadeIn + lazy image handling
2026-02-15 12:21:02 +01:00