Commit Graph

21 Commits

Author SHA1 Message Date
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
ea72d720df chore: production-readiness audit fixes and linting cleanup 2026-03-08 16:26:05 +01:00
ralksta
01da5e1baa feat: improve lightbox rendering, hero styles, and config loading 2026-03-08 16:16:15 +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
a529614c19 refactor: completely remove framer-motion and page transitions 2026-03-07 09:11:40 +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
e394fe84a0 security: implement AUTH_SECRET and secure map/exif API routes 2026-03-07 08:18:23 +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
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
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
a0ee0ff433 chore: production readiness audit
- Move plans/ to dev-docs/, delete unused scaffold SVGs
- Create .dockerignore, rename container to immich-folio
- Extract BackLink component and toPhotoItems() helper in page.tsx
- Add keyboard accessibility (role=button, tabIndex, onKeyDown) to PhotoGrid
- Add aria-label to Lightbox EXIF toggle
- Fix React lint: replace setState-in-effect with useState initializer
- Add rate limiting to /api/auth (brute-force protection, 10 RPM)
- Add HSTS and X-DNS-Prefetch-Control security headers
- Add Secure flag to auth cookie in production
- New unit tests: rate-limit.test.ts (5), auth.test.ts (12)
- All 47 tests pass, 0 lint errors, build clean
2026-02-15 11:23:51 +01:00
ralksta
90afe205f5 feat: promote studio theme to default, add favicon, deep-linkable lightbox
- Studio aesthetic now the default dark/light theme
- Removed MonochromToggle and 3-way theme cycle
- Light mode uses warm Studio-toned palette
- Added favicon (icon.png, apple-touch-icon, PWA icons)
- Lightbox URL sync: #photo-N hash for shareable photo links
- Browser back closes lightbox, shared links open directly
2026-02-14 12:14:56 +01:00
ralksta
52fa16c1c8 feat: visual polish & UX — fade-in, theme toggle, scroll-to-top, footer, cursor, badge
- Add FadeIn component (IntersectionObserver scroll-reveal + load animation)
- Add dark/light theme toggle (useSyncExternalStore + localStorage)
- Add scroll-to-top button (appears after 300px scroll)
- Add configurable footer with social links (gallery.yaml)
- Add crosshair cursor on photo grid items
- Add 'X photos' count badge on subpage cover images
- Add light theme color palette in tokens.css
2026-02-14 11:47:26 +01:00
ralksta
b7217c4a76 feat: photography features & image optimizations
- Hero carousel: gallery.yaml hero accepts single UUID or array, crossfade component
- Full-bleed single albums: subpages with 1 album skip grid, render photos directly
- EXIF on hover: camera/lens/focal length overlay on grid items (toggle via exifOnHover)
- Customizable grid: columns/gap/aspectRatio/layout (masonry|uniform) via gallery.yaml
- Per-subpage grid overrides: each subpage can override global grid config
- True masonry: per-image aspect ratios from EXIF dimensions
- next/image migration: homepage hero, album covers, grid thumbnails, about portrait
- ThumbHash blur placeholders and dominant color backgrounds
- Custom next/image loader via image proxy with width/quality params
- Lightbox fade-in transition with dominant color background
- Password-protected subpages, health check, rate limiting, OG images
2026-02-14 10:30:27 +01:00
ralksta
415aef98f2 feat: portfolio with subpages, hero homepage, and obfuscated asset URLs 2026-02-14 00:59:57 +01:00