Claude
b2626918d3
Fix issue #30 : Critical bugs in Reference (external folder) mode
...
This commit fixes the core bugs that prevented Reference mode from functioning:
1. Missing external_relpath Error (CRITICAL FIX)
- Root cause: photoResolver prioritized event.source_mode over photo.source_origin
- Problem: Events in "reference" mode with uploaded photos would fail
because uploaded photos have source_origin='managed' but were being
treated as external photos (requiring external_relpath)
- Fix: Prioritize photo.source_origin over event.source_mode
- Result: Events can now have MIXED sources - imported external photos
AND newly uploaded managed photos coexisting correctly
- File: backend/src/services/photoResolver.js:19
2. Category Assignment Failure (CRITICAL FIX)
- Root cause: Update endpoints modified category_id column but display
used photo.type field ('individual' or 'collage')
- Problem: Category changes appeared to succeed but had no visible effect
- Fix: When category_id is 'individual' or 'collage', update the type
field instead of category_id
- Result: Category assignments now work correctly for all photos
- Files: backend/src/routes/adminPhotos.js:489-497, 605-607
3. Scroll Button Non-Functional (UX FIX)
- Root cause: Scroll indicator was purely visual (no click handler)
- Problem: Users expected to click the animated chevron to scroll
- Fix: Convert div to button with smooth scroll to grid section
- Result: Scroll button now functions as expected with proper a11y
- File: frontend/src/components/gallery/layouts/HeroGalleryLayout.tsx:165-184
Technical Details:
Mixed Source Support:
The photoResolver now correctly handles events that mix:
- External photos: source_origin='external' + external_relpath set
- Uploaded photos: source_origin='managed' + path in storage/events/active
This allows users to start with external media import and later upload
additional photos without errors.
Category/Type Distinction:
The system uses photo.type ('individual'|'collage') for display but also
has a legacy category_id column. The update logic now handles both:
- String values 'individual'/'collage' → update type field
- Numeric values → update legacy category_id field (backward compat)
Notes on Remaining Issues:
Issue #30 also mentioned:
4. Image display (cropped square) - This is by design. Thumbnails use
fit='cover' by default for consistent grid layouts. Can be changed
via app_settings.thumbnail_fit if needed.
5. Theme application - The "Apply Theme" button updates the form state
correctly. Users need to click "Save Changes" to persist to database.
This is standard form behavior, not a bug.
Testing:
- Create event in reference mode with external media
- Upload new photos to the same event → verify no external_relpath error
- Change categories on both external and uploaded photos → verify changes apply
- Use Hero gallery layout → verify scroll button works
Fixes #30
2025-11-04 20:05:44 +00:00
Claude
41628b0578
Remove documentation file
2025-11-04 19:56:08 +00:00
Claude
8826fb7a12
Fix issue #22 : Gallery filter counts disappearing and upload errors
...
This commit comprehensively addresses the persistent issues reported in #22 :
1. Gallery Filter Bug - Counts Disappearing
- Root cause: Frontend fetched filtered photos from backend, then
calculated counts from already-filtered data
- Fix: Always fetch ALL photos, apply filtering client-side only
- Benefits: Counts always accurate, filters work correctly in combo
- Changed: frontend/src/components/gallery/GalleryView.tsx:76
2. Upload ENOENT Errors
- Root cause: /tmp/uploads/ directory assumed to exist
- Fix: Verify and create temp directory before multer initialization
- Changed: backend/src/routes/gallery.js:814-825
3. Upload "Not Iterable" Errors
- Root cause: normalizeFiles() didn't handle null/edge cases
- Fix: Enhanced error handling with try-catch and graceful degradation
- Changed: backend/src/services/photoProcessor.js:10-52
4. Enhanced Upload Debugging
- Added file existence verification before copy operations
- Improved temp file cleanup (properly handle ENOENT)
- Comprehensive error logging with full context
- Changed: backend/src/services/photoProcessor.js:108-233
Technical Details:
- Gallery filtering now entirely client-side (simpler architecture)
- Upload error messages now include full diagnostic context
- Temp file cleanup handles ENOENT gracefully (expected scenario)
- All fixes preserve backward compatibility
Testing:
- Gallery filters: Verify counts stay visible when filtering
- Uploads: Test single/batch uploads, check temp cleanup
- Logs: Verify detailed error context on failures
See ISSUE_22_FIX_SUMMARY.md for complete analysis and testing guide.
Fixes #22
2025-11-04 19:52:11 +00:00
paul
81416737e8
chore: remove sensitive files for GitHub mirror
2025-10-29 11:29:50 +00:00
paul
d2e97567a9
Merge pull request 'Fix mobile overlay and deps per #43 ' ( #3 ) from fix/gallery-mobile into main
...
Test and Lint / backend-test (push) Successful in 1m24s
continuous-integration/drone/push Build is passing
Test and Lint / frontend-test (push) Successful in 2m4s
Reviewed-on: #3
2025-10-29 12:25:38 +01:00
paul
69538b86ea
Fix mobile overlay and deps per #43
Test and Lint / backend-test (pull_request) Successful in 1m24s
Test and Lint / frontend-test (pull_request) Successful in 1m59s
continuous-integration/drone/pr Build is passing
2025-10-29 12:19:43 +01:00
Gitea Actions Bot
b76e45cb54
chore: bump version to 1.1.14 (backend + frontend)
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
v1.1.14
2025-10-20 12:41:34 +00:00
Paul Nothaft
5b5e431b08
Implement per-IP gallery lockouts and UI controls ( #42 )
Test and Lint / backend-test (push) Successful in 1m54s
continuous-integration/drone/push Build is passing
Test and Lint / frontend-test (push) Successful in 1m50s
2025-10-20 14:35:23 +02:00
Gitea Actions Bot
07759a0e40
chore: bump version to 1.1.13 (backend + frontend)
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
v1.1.13
2025-10-15 05:29:19 +00:00
Paul Nothaft
31fd64c83c
Add short gallery URL toggle and token support ( #38 )
Test and Lint / backend-test (push) Successful in 1m55s
Test and Lint / frontend-test (push) Successful in 1m54s
continuous-integration/drone/push Build is passing
2025-10-15 07:21:09 +02:00
Paul Nothaft
775c5159ea
Add customer contact fields and admin API docs (refs #41 )
2025-10-14 18:29:21 +02:00
Paul Nothaft
8f297e25c4
Make photo upload limit configurable via admin settings ( #40 )
2025-10-14 16:27:44 +02:00
Paul Nothaft
ccb65b892b
Rename setup script and bump installer version ( #39 )
2025-10-14 15:48:55 +02:00
Paul Nothaft
52f8f1f738
Upgrade nodemailer to 7.0.7 (GHSA-mm7p-fcc7-pg87)
Test and Lint / backend-test (push) Successful in 1m23s
Test and Lint / frontend-test (push) Successful in 1m53s
2025-10-13 21:11:38 +02:00
Paul Nothaft
e731e7b47c
Address tar-fs CVE-2025-59343
Test and Lint / backend-test (push) Successful in 1m21s
Test and Lint / frontend-test (push) Has been cancelled
2025-10-13 21:09:52 +02:00
Paul Nothaft
2bccb1a439
Handle pre-existing docker app dir ( #32 )
Test and Lint / backend-test (push) Successful in 1m27s
Test and Lint / frontend-test (push) Successful in 1m53s
2025-10-13 20:59:50 +02:00
Paul Nothaft
df10fc677e
Send gallery image requests with bearer token fallback ( #31 )
Test and Lint / backend-test (push) Successful in 1m26s
Test and Lint / frontend-test (push) Successful in 1m53s
2025-10-13 20:29:07 +02:00
Gitea Actions Bot
8c690155bf
chore: bump frontend version to 1.1.12
v1.1.12
2025-10-13 18:19:57 +00:00
Paul Nothaft
1b1e4f715d
Rename event owner fields to customer ( #37 )
Test and Lint / backend-test (push) Successful in 1m28s
Test and Lint / frontend-test (push) Successful in 1m55s
2025-10-13 20:09:28 +02:00
Paul Nothaft
68eb9ba552
Clarify event owner labeling in UI ( #37 )
Test and Lint / backend-test (push) Successful in 1m26s
Test and Lint / frontend-test (push) Successful in 1m52s
2025-10-13 20:02:52 +02:00
Paul Nothaft
7040865154
Fix admin password reset guidance in setup.sh ( #34 )
Test and Lint / backend-test (push) Successful in 1m27s
Test and Lint / frontend-test (push) Successful in 1m56s
2025-10-13 19:58:07 +02:00
Paul Nothaft
013be18d98
fix: clear notifications via API ( #35 )
Test and Lint / backend-test (push) Successful in 1m37s
Test and Lint / frontend-test (push) Successful in 1m55s
2025-10-13 17:41:06 +02:00
Paul Nothaft
3c2a79a31a
feat: allow admin email updates in UI ( #36 )
2025-10-13 17:21:03 +02:00
Gitea Actions Bot
f20472ca26
chore: bump version to 1.1.11 (backend + frontend)
v1.1.11
2025-10-12 19:23:19 +00:00
Gitea Actions Bot
87f4526220
chore: bump version to 1.1.10 (backend + frontend)
v1.1.10
2025-10-12 19:18:37 +00:00
Gitea Actions Bot
d42a11680f
chore: bump version to 1.1.9 (backend + frontend)
v1.1.9
2025-10-06 13:18:43 +00:00
Gitea Actions Bot
38dd74b893
chore: bump version to 1.1.8 (backend + frontend)
v1.1.8
2025-10-03 05:19:52 +00:00
paul
fc1bf53412
fix: harden gallery downloads and per-gallery auth
Test and Lint / backend-test (push) Successful in 1m57s
Test and Lint / frontend-test (push) Successful in 1m57s
2025-10-01 16:00:37 +02:00
paul
5d6c061f1c
feat: support per-gallery password toggle
2025-10-01 16:00:37 +02:00
Gitea Actions Bot
45e835a51a
chore: bump frontend version to 1.1.7
v1.1.7
2025-09-27 06:14:25 +00:00
Gitea Actions Bot
afc00090cf
chore: bump frontend version to 1.1.6
v1.1.6
2025-09-27 06:11:45 +00:00
paul
59750dea15
Enforce mandatory gallery passwords in UI
Test and Lint / backend-test (push) Successful in 1m23s
Test and Lint / frontend-test (push) Successful in 1m51s
2025-09-27 08:05:59 +02:00
Gitea Actions Bot
2fe32e9a69
chore: bump backend version to 1.1.5
v1.1.5
2025-09-27 05:59:32 +00:00
paul
5f8c8c5508
Fix branding asset storage path
Test and Lint / backend-test (push) Successful in 1m47s
Test and Lint / frontend-test (push) Successful in 1m56s
2025-09-26 17:26:39 +02:00
Gitea Actions Bot
fb739f221d
chore: bump version to 1.1.4 (backend + frontend)
v1.1.4
2025-09-24 15:39:34 +00:00
paul
b5399aaa9b
Add installer flag to regenerate admin credentials
Test and Lint / backend-test (push) Successful in 1m42s
Test and Lint / frontend-test (push) Successful in 1m54s
2025-09-24 17:33:54 +02:00
Gitea Actions Bot
a4595e2ab2
chore: bump backend version to 1.1.3
v1.1.3
2025-09-22 20:50:54 +00:00
paul
0911711a37
Deduplicate external media imports by filename
Test and Lint / backend-test (push) Successful in 1m43s
Test and Lint / frontend-test (push) Successful in 2m5s
2025-09-22 22:44:52 +02:00
paul
f2c7594b23
Refetch gallery data after lightbox feedback ( #29 )
Test and Lint / backend-test (push) Successful in 1m43s
Test and Lint / frontend-test (push) Successful in 2m31s
2025-09-22 22:32:56 +02:00
paul
32355fabad
Revert "Ignore local Playwright tests directories"
...
Test and Lint / backend-test (push) Successful in 1m33s
Test and Lint / frontend-test (push) Successful in 2m9s
This reverts commit c127fd829d .
2025-09-22 21:31:28 +02:00
paul
c127fd829d
Ignore local Playwright tests directories
Test and Lint / backend-test (push) Successful in 1m43s
Test and Lint / frontend-test (push) Successful in 2m8s
2025-09-22 21:30:41 +02:00
Gitea Actions Bot
cab5b0d795
chore: bump backend version to 1.1.2
v1.1.2
2025-09-22 17:08:29 +00:00
paul
ba95aad3c6
Switch backend image to Node 20 to address cross-spawn CVE
Test and Lint / backend-test (push) Successful in 1m34s
Test and Lint / frontend-test (push) Successful in 2m6s
2025-09-22 19:03:33 +02:00
paul
c1be7d6785
Harden photo resolver path handling
Test and Lint / backend-test (push) Successful in 1m37s
Test and Lint / frontend-test (push) Has been cancelled
2025-09-22 18:59:49 +02:00
paul
0024686dc2
Align simple setup storage paths ( #27 )
Test and Lint / backend-test (push) Successful in 1m46s
Test and Lint / frontend-test (push) Successful in 2m12s
2025-09-22 18:54:13 +02:00
paul
96b8b77792
Fix release workflow when tag already exists
Test and Lint / backend-test (push) Successful in 1m35s
Test and Lint / frontend-test (push) Successful in 2m10s
2025-09-22 14:46:45 +02:00
Gitea Actions Bot
9d2726b3d3
chore: bump frontend version to 1.1.1
2025-09-22 12:41:16 +00:00
paul
8d6ddd257d
Fix gallery login persistence and favorites ( #29 )
Test and Lint / backend-test (push) Successful in 2m6s
Test and Lint / frontend-test (push) Successful in 2m16s
2025-09-22 14:33:11 +02:00
Gitea Actions Bot
e0865b81b6
chore: bump backend version to 1.1.1
v1.1.1
2025-09-21 20:47:47 +00:00
paul
d4404e39bd
fix: prefer admin token on admin routes ( #23 #28 )
Test and Lint / backend-test (push) Successful in 2m9s
Test and Lint / frontend-test (push) Successful in 2m31s
2025-09-21 22:37:30 +02:00