This website requires JavaScript.
fb32a8cabc
Merge PR #164
Ralksta
2026-05-06 11:59:48 +02:00
3a4c65276d
Merge PR #165
Ralksta
2026-05-06 11:59:45 +02:00
08207e2f16
Merge PR #163
Ralksta
2026-05-06 11:59:42 +02:00
59321d88ca
⚡ Bolt: [performance improvement] Optimize map bucketing memory and deduplicate getMapData promises
google-labs-jules[bot]
2026-05-05 10:44:12 +00:00
8ab1a3d5ea
Fix scrypt hash generation in plaintext fallback
google-labs-jules[bot]
2026-05-05 10:34:52 +00:00
ebf60b12c3
Improve PhotoGrid screen reader accessibility
google-labs-jules[bot]
2026-05-05 10:24:39 +00:00
71381342d6
🛡️ Sentinel: [security improvement]\n\nAdded rate limiting to the /api/health endpoint using the shared checkRateLimit utility. This prevents potential DoS attacks by restricting the number of requests per IP, utilizing the configured rateLimitRpm.
google-labs-jules[bot]
2026-05-03 10:20:32 +00:00
8c573314d6
fix(about): resolve TOCTOU vulnerability by migrating to async file I/O
google-labs-jules[bot]
2026-04-28 11:16:18 +00:00
a344228fb9
chore(deps-dev): bump prettier from 3.8.2 to 3.8.3
dependabot[bot]
2026-04-27 07:48:48 +00:00
64eff62db4
chore(deps): bump the nextjs group with 2 updates
dependabot[bot]
2026-04-27 07:48:20 +00:00
56f0305763
perf(map): chunk album fetching to prevent OOM errors (#138 )
Ralksta
2026-04-24 22:12:45 +02:00
f18d9ae3d9
🛡️ Sentinel: [CRITICAL] Fix rate limit DoS vulnerability (#136 )
Ralksta
2026-04-24 22:12:42 +02:00
93ac1c20e8
Add [role="button"]:focus-visible to app/tokens.css for proper keyboard focus indication on custom button elements. (#130 )
Ralksta
2026-04-21 22:52:08 +02:00
a61c577a94
chore(deps-dev): bump @types/node from 20.19.37 to 20.19.39 (#84 )
dependabot[bot]
2026-04-21 22:51:55 +02:00
431e7c0553
🛡️ Sentinel: [improvement] Add Content Security Policy Report-Only header (#86 )
Ralksta
2026-04-21 22:51:50 +02:00
006ba539ab
fix(rate-limit): mitigate cache flooding vulnerability (#94 )
Ralksta
2026-04-21 22:51:46 +02:00
bb7c1aa1bd
Improve rate-limit headers in auth API (#102 )
Ralksta
2026-04-21 22:51:42 +02:00
3bbec5a4ac
🛡️ Sentinel: [CRITICAL/HIGH] Upgrade token encryption to AES-GCM (#117 )
Ralksta
2026-04-21 22:51:39 +02:00
13fcfe8436
Fix IP spoofing vulnerability in rate limiter by prioritizing request.ip (#132 )
Ralksta
2026-04-21 22:51:35 +02:00
16e1c7647b
🎨 Palette: [UX improvement] Auto-focus Close button in Lightbox (#104 )
Ralksta
2026-04-21 22:51:31 +02:00
b803daf8f9
chore(deps): bump the react group with 2 updates (#107 )
dependabot[bot]
2026-04-21 22:51:29 +02:00
e8709b9ae9
feat(a11y): consolidate ARIA announcements on interactive cards (#133 )
Ralksta
2026-04-21 22:51:26 +02:00
fef4c73e86
⚡ Bolt: Cache parsed YAML to prevent repetitive synchronous file I/O (#91 )
Ralksta
2026-04-21 22:51:22 +02:00
264e48b3cc
perf: return Buffer directly instead of wrapping in Uint8Array (#131 )
Ralksta
2026-04-21 22:51:19 +02:00
972ace5833
chore(deps-dev): bump prettier from 3.8.1 to 3.8.2 (#108 )
dependabot[bot]
2026-04-21 22:51:17 +02:00
bb751c32ef
perf: add promise deduplication for getAssetInfo (#134 )
Ralksta
2026-04-21 22:51:15 +02:00
17398dea39
feat: implement album-level password protection
ralksta
2026-04-07 23:04:03 +02:00
e739fdb518
🎨 Palette: [UX improvement] Add aria-hidden to decorative SVGs (#70 )
Ralksta
2026-04-01 12:46:20 +02:00
dbc525e8d8
feat(performance): Add promise deduplication for ImmichClient.getAlbum (#69 )
Ralksta
2026-04-01 12:46:12 +02:00
258c36899c
fix(auth): secure plaintext password comparison against timing attacks (#68 )
Ralksta
2026-04-01 12:46:04 +02:00
b8833b4e60
🛡️ Fix global DoS vulnerability in rate limiter (FIFO eviction)
Ralksta
2026-04-01 12:45:46 +02:00
bf72a88d6c
perf: implement proper LRU Cache and ETag optimizations
ralksta
2026-03-27 11:11:23 +01:00
af7e2e9206
feat: add aria-label to BackLink component (#10 )
Ralksta
2026-03-27 10:52:39 +01:00
59153c9f48
chore(deps): bump the nextjs group with 2 updates (#43 )
dependabot[bot]
2026-03-27 10:51:26 +01:00
741dba3576
chore(deps): bump actions/checkout from 4 to 6 (#13 )
dependabot[bot]
2026-03-27 10:51:23 +01:00
1704cd87fc
⚡ Bolt: [Deduplicate concurrent album fetches] (#50 )
Ralksta
2026-03-27 10:50:00 +01:00
f4778d09f6
chore(deps-dev): bump @types/node from 20.19.33 to 20.19.37 (#17 )
dependabot[bot]
2026-03-27 10:37:56 +01:00
88dc8dcbeb
chore(deps): bump actions/checkout from 4 to 6 (#13 )
dependabot[bot]
2026-03-27 10:37:13 +01:00
457d92e657
chore(deps): bump the react group with 2 updates (#15 )
dependabot[bot]
2026-03-27 10:36:28 +01:00
43d5b4d15d
🛡️ Sentinel: Add rate limiting to /api/og endpoint (#47 )
Ralksta
2026-03-27 10:36:25 +01:00
c8f75e4615
feat(a11y): enhance accessibility of password gate form (#46 )
Ralksta
2026-03-27 10:36:22 +01:00
5ebc900851
feat(ux): Add proper ARIA attributes to Lightbox modal and EXIF toggle (#45 )
Ralksta
2026-03-27 10:36:19 +01:00
228771decc
Merge PR 36 and resolve ci.yml conflict
ralksta
2026-03-22 10:03:02 +01:00
6a45dc3657
Add aria-label to input fields for better accessibility (#39 )
Ralksta
2026-03-22 09:57:29 +01:00
e3e5972b32
⚡ Bolt: Optimize base64 decoding for ThumbHash (#40 )
Ralksta
2026-03-22 09:51:25 +01:00
db19504c91
chore(deps-dev): bump eslint from 9.39.2 to 9.39.4 (#16 )
dependabot[bot]
2026-03-22 09:51:19 +01:00
1f83bad3a7
chore(deps): bump actions/setup-node from 4 to 6 (#14 )
dependabot[bot]
2026-03-22 09:51:11 +01:00
8cd96d4dac
Fix CI failures due to AUTH_SECRET and missing Playwright types
google-labs-jules[bot]
2026-03-20 11:38:33 +00:00
cdc26c00ac
🛡️ Sentinel: [HIGH] Cache health check endpoint to prevent upstream DoS
google-labs-jules[bot]
2026-03-20 11:33:38 +00:00
e9154cedb8
fix(security): resolve rate-limiting IP spoofing and eviction bypass
ralksta
2026-03-15 07:41:49 +01:00
922302ce5c
chore: implement audit action items and translate hardcoded German text
ralksta
2026-03-15 07:32:42 +01:00
3fa47f7031
chore: add GitHub community files and CI pipeline
ralksta
2026-03-13 13:00:19 +01:00
a97b261c14
fix: raise map rate limit 30→120/min, allow 5min private browser cache
ralksta
2026-03-13 12:55:07 +01:00
6c20218369
security: fix XSS in map popups, refactor HeroTextContent, add evict test
ralksta
2026-03-13 12:52:09 +01:00
c610ad2a7d
fix(map): show HTTP status code in error message for easier debugging
ralksta
2026-03-13 12:31:21 +01:00
60b86b540f
fix: move DevToolbar dynamic import to Client Component
ralksta
2026-03-13 12:28:59 +01:00
33fd31e926
refactor: deslop — remove dead botanica preset, extract shared helpers
ralksta
2026-03-13 11:56:40 +01:00
d64a7239d1
refactor: audit improvements - rate limit ceiling, map route protection, lazy DevToolbar, lang=de
ralksta
2026-03-13 11:41:56 +01:00
3b657b625c
fix(hero): fix mosaic layout full-width + update screenshots
ralksta
2026-03-13 11:34:16 +01:00
5f8693e19e
docs: replace studio screenshots and heroes with correct versions from generator
ralksta
2026-03-13 11:16:39 +01:00
43c59f4bc9
chore: clean up repo root and improve .gitignore
ralksta
2026-03-13 10:33:07 +01:00
f9315ad7d6
Merge pull request #9 from ralksta/fix/exif-rate-limit-3163002533333096016
Ralksta
2026-03-13 10:10:11 +01:00
63e6a2f784
🛡️ Sentinel: [HIGH] Fix missing rate limiting on /api/exif/[id]
google-labs-jules[bot]
2026-03-12 11:30:45 +00:00
a0364ac9f0
fix: remove request.ip which was removed in Next.js 15+
ralksta
2026-03-11 23:36:40 +01:00
8926fc27b7
perf: add bounded in-memory LRU cache for thumbhash decoding
ralksta
2026-03-11 23:34:04 +01:00
c0740f0db5
a11y: remove ScrollToTop from tab order and hide from screen readers when not visible
ralksta
2026-03-11 23:33:51 +01:00
c845df4afb
feat(lightbox): add keyboard shortcut 'i' for EXIF toggle and title tooltips on navigation buttons [#3 ]
Ralksta
2026-03-11 23:33:00 +01:00
f3890fc6bc
perf: memoize PhotoGrid assets map to prevent re-renders during lightbox navigation [#5 ]
Ralksta
2026-03-11 23:32:40 +01:00
a94b55704e
security: prioritize request.ip over x-forwarded-for to prevent IP spoofing [#4 ]
Ralksta
2026-03-11 23:32:32 +01:00
96fe4db099
security: validate auth input types and limit length to prevent DoS [#1 ]
Ralksta
2026-03-11 23:32:22 +01:00
134eae94e4
feat(subpages): add optional sections with typographic TOC
ralksta
2026-03-08 23:52:23 +01:00
0eaadeda55
docs: clarify that album grid thumbnails adhere strictly to the cover selection performed in Immich UI
ralksta
2026-03-08 23:21:25 +01:00
25b9a92e12
feat: propagate subpage subtitle into deep AlbumDetailView headers
ralksta
2026-03-08 23:16:01 +01:00
7663bcbcd0
refactor: extract individual layout themes from globals.css into modular app/themes/*.css architecture
ralksta
2026-03-08 22:57:38 +01:00
5667ba01b8
style: align subpage header to correctly adopt layout rules from selected themes
ralksta
2026-03-08 22:54:23 +01:00
a0777e40e2
style: let theme alignment dictate subpage headers by removing hardcoded text centering
ralksta
2026-03-08 22:52:44 +01:00
3953db0ff8
style: add global typographic classes for the subpage header block
ralksta
2026-03-08 22:50:36 +01:00
425e61312d
chore: update .gitignore with server.log and .agent directory
ralksta
2026-03-08 22:49:14 +01:00
6371a60d0a
chore: add workflow rule for updating documentation whenever user-facing settings change
ralksta
2026-03-08 22:48:06 +01:00
a99406c382
docs: add title and subtitle documentation for subpages to gallery config
ralksta
2026-03-08 22:47:38 +01:00
32bb6cb2ca
feat: allow subpages to override title and add subtitle in gallery.yaml
ralksta
2026-03-08 22:46:27 +01:00
88f03fe2ce
fix: make impressum page dynamic so it reads volume settings at runtime instead of statically compiling to 404
ralksta
2026-03-08 21:53:20 +01:00
65a661ce84
chore: make .env.local optional in docker-compose
ralksta
2026-03-08 21:45:10 +01:00
05de957b66
feat: add .env instruction to setup screen
ralksta
2026-03-08 21:43:26 +01:00
b9993bd29e
fix: gracefully handle Next.js static component fetch rendering when setup configs are completely empty
ralksta
2026-03-08 21:38:44 +01:00
89bb7c0038
chore: add build network context to docker-compose
ralksta
2026-03-08 21:31:07 +01:00
59394f5ba2
fix: remove invalid npm flag 'dns-result-order'
ralksta
2026-03-08 21:28:56 +01:00
801dc14de1
chore: force IPv4 DNS resolution for npm ci in Dockerfile to fix timeout lags
ralksta
2026-03-08 21:28:10 +01:00
4e4a623181
chore: enable verbose npm ci logging for debug in builder
ralksta
2026-03-08 21:25:08 +01:00
39feeb58f9
chore: add npm network timeouts to fix docker build stall on servers
ralksta
2026-03-08 21:22:46 +01:00
7a1dfdc519
chore: remove unused 3P dependencies (zod, gray-matter, bcryptjs) and switch to native implementations
ralksta
2026-03-08 21:12:52 +01:00
25aefa5b70
feat: implement graceful setup fallback screen when yaml files are missing
ralksta
2026-03-08 21:04:41 +01:00
9c1333920f
chore: remove settings.yaml and gallery.yaml from repo
ralksta
2026-03-08 20:56:26 +01:00
a8b18232a0
chore: add content/about.md to .gitignore
ralksta
2026-03-08 20:54:22 +01:00
29da3368a2
chore: rename about.md to about.md.example
ralksta
2026-03-08 20:54:03 +01:00
593113e88a
fix: make about.md optional and copy content folder in Dockerfile
ralksta
2026-03-08 20:53:45 +01:00
170fa6e132
chore: add default AUTH_SECRET to Dockerfile
ralksta
2026-03-08 20:49:59 +01:00
2a4b9091da
chore: re-add settings and about without history
ralksta
2026-03-08 20:47:08 +01:00
23d8bf0425
refactor: apply Clean Architecture principles
ralksta
2026-03-08 18:55:45 +01:00
89dfef6144
docs: consolidate feature ideas into single backlog
ralksta
2026-03-08 18:40:37 +01:00