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