Commit graph

191 commits

Author SHA1 Message Date
2bbc306762 refactor: restructure routing - albums at /albums/[slug], photos at /photos/[id]
- Move album routes from /photos/[slug] to /albums/[slug]
- Simplify photo permalinks from /photos/p/[id] to /photos/[id]
- Remove album-scoped photo route /photos/[albumSlug]/[photoId]
- Update all component references to use new routes
- Simplify content.ts to always use direct photo permalinks
- Update PhotoItem, MasonryPhotoGrid, ThreeColumnPhotoGrid components
- Update UniverseAlbumCard and admin AlbumForm view links
- Remove album context from photo navigation

Breaking change: URLs have changed
- Albums: /photos/[slug] → /albums/[slug]
- Photos: /photos/p/[id] → /photos/[id]

🤖 Generated with Claude Code

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-24 10:35:21 +01:00
3654a18cbe refactor: update album page layout to match project case study design
- Wrap album and photo content in Page component
- Use consistent white rounded rectangle container
- Update styles to work with Page component structure
- Improve visual hierarchy and spacing
- Match the design pattern used in project pages

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-24 02:05:36 +01:00
a9cbdbf280 fix: remove invalid isPhotography check for albums
- Remove check for non-existent isPhotography field on Album model
- Albums now display correctly when published
- Fixes "Content not found" error for published albums

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-24 02:01:28 +01:00
7a3cde0575 fix: resolve CSS global selector placement errors
- Fix :global() selector placement in nested SCSS
- Move nested selectors out to comply with Svelte CSS rules
- :global() can only be at start or end of selector, not middle

Fixes compilation error when viewing albums on public site

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-24 01:59:05 +01:00
1a155e5657 feat: implement toast notification system
- Create toast store wrapping svelte-sonner
- Add Toaster component to root layout
- Configure admin-aware positioning
- Style toasts to match design system
- Add helper functions for common toast types

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-24 01:47:35 +01:00
274f1447a2 refactor(server): improve utilities and admin endpoints
- Enhance Apple Music client error handling
- Improve Cloudinary audit functionality
- Update Cloudinary utilities for better performance
- Enhance logger with better formatting
- Add media statistics endpoint
- Improve thumbnail regeneration process
- Update Last.fm stream with better error handling
- Add better TypeScript types throughout

Improves server-side reliability and performance.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-24 01:14:57 +01:00
b8d965370b feat(admin): update admin pages with new editor and workflows
- Update media management page with album associations
- Enhance media audit page with better reporting
- Improve regenerate thumbnails page
- Update post pages to use EnhancedComposer
- Update universe compose page with new editor
- Update ProjectForm to use EnhancedComposer
- Add better error handling and loading states
- Improve form validation across admin pages

Modernizes admin workflows with unified components.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-24 01:14:41 +01:00
78663151a8 feat(api): improve photo and media APIs with album support
- Update photo APIs to handle album associations via MediaAlbum
- Add support for album-based photo URLs
- Improve media metadata endpoint with better error handling
- Update universe API to include album relations
- Add filtering and pagination to media endpoints
- Support bulk operations for media-album associations
- Improve query performance with better includes

Enhances API flexibility for the new album system.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-24 01:13:49 +01:00
02e41ed3d6 feat(photos): enhance photo viewing with improved grids and metadata
- Add PhotoGrid component as base for photo grid layouts
- Update PhotoItem with color placeholder loading states
- Enhance PhotoMetadata display with better formatting
- Improve PhotoViewEnhanced with smoother transitions
- Update single and two-column grid layouts
- Fix photo routing for album-based photo URLs
- Add support for direct photo ID routes
- Improve photo page performance and loading states

Creates a more polished photo viewing experience.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-24 01:13:31 +01:00
cfde42c336 feat(colors): improve color analysis with better algorithms and scripts
- Add comprehensive color analysis scripts for batch processing
- Improve color extraction algorithms in color-utils.ts
- Add endpoints for reanalyzing colors on existing photos
- Add cloudinary color extraction endpoint
- Create detailed README for color analysis scripts
- Support both single and batch color reanalysis
- Improve color palette generation accuracy

Enhances photo color analysis for better visual presentation.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-24 01:13:12 +01:00
e488107544 feat(admin): update album management UI for content support
- Update AlbumForm to use EnhancedComposer for content editing
- Add AlbumSelector component for album selection workflows
- Update AlbumListItem with improved styling and metadata display
- Enhance album edit/create pages with new content capabilities
- Add support for geolocation data in album forms
- Improve form validation and error handling

Modernizes the album management interface with rich content editing.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-24 01:12:54 +01:00
003e08836e feat(api): add album content support and media management endpoints
- Update album CRUD endpoints to handle content field
- Add /api/albums/[id]/media endpoint for managing album media
- Add /api/media/[id]/albums endpoint for media-album associations
- Create album routes for public album viewing
- Update album queries to use new MediaAlbum join table
- Support filtering and sorting in album listings

Enables rich content albums with flexible media associations.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-24 01:11:30 +01:00
bb434d40dc Change default view 2025-06-19 11:27:21 +01:00
27dbdd43c0 fix: improve Cloudinary URL handling and admin navigation
- Fix extractPublicId to handle encoded URLs correctly
- Update admin media page to use goto for client-side navigation
- Add color display to media details modal
- Include color data in media API responses
- Clean up unused imports in audit page

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-19 02:00:00 +01:00
90b450324b feat: add admin tools for color management
- Add regenerate page for batch thumbnail and color processing
- Add API endpoint to extract colors from Cloudinary for existing media
- Add endpoints to reanalyze colors for individual or all media
- Add media statistics endpoint
- Add thumbnail regeneration endpoint for batch processing

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-19 01:59:08 +01:00
dab7fdf3ac feat: add color extraction and analysis for media
- Add dominantColor, colors, and aspectRatio fields to Media model
- Integrate Cloudinary color extraction during upload
- Add smart color selection algorithm to pick aesthetically pleasing dominant colors
- Extract and store color palette information
- Include color data in photo API responses

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-19 01:58:52 +01:00
b0ecd54243 Enhance photos page with multiple view modes
- Add support for masonry, single, two-column, and horizontal view modes
- Implement wide width mode (1100px) for more columns
- Add padding adjustments for horizontal scroll mode
- Load all photos automatically in horizontal mode
- Preserve scroll position on navigation

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-19 01:55:32 +01:00
b2488bd301 Add ViewModeSelector component with width controls
- Create ViewModeSelector component with masonry view mode button
- Add width toggle controls (normal 700px / wide 900px)
- Create width-normal and width-wide SVG icons
- Integrate component into photos route with smooth transitions
- Use SCSS variables throughout for consistent styling

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-18 10:26:14 +01:00
a69f1098de Revert masonry thumbnail change 2025-06-18 04:36:47 +01:00
d73619aa24 Serve thumbnails in grid instead of full images 2025-06-17 12:49:05 +01:00
1867187635 Fix broken reference deletion 2025-06-17 08:45:09 +01:00
090e29f9d9 Fix Cloudinary max selection and row selection 2025-06-17 08:25:49 +01:00
5da6f4c736 Fix Cloudinary media audit 2025-06-17 08:13:43 +01:00
fdf1ce5e21 Update README and add titles to admin routes 2025-06-17 07:41:29 +01:00
ac0ecf2a92 Add broken reference cleanup functionality to Cloudinary audit
- Add cleanupBrokenReferences function to remove missing Cloudinary URLs from database
- Add PATCH endpoint to API for cleaning broken references
- Add UI section to show broken references with cleanup button
- Add confirmation modal for cleanup action
- Add console logging to debug delete button issue

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 18:57:57 +01:00
4aaf33f19e Ran linter 2025-06-16 17:05:43 +01:00
723f7acbc1 feat: enhance Media Library filtering and sorting
- Add sort functionality (newest, oldest, name A-Z/Z-A, size)
- Update media type filters: Images (JPG/PNG), Videos (MP4/MOV/GIF), Audio, Vectors (SVG)
- Replace photography filter with 'Published in' filter (Photos/Universe/Unpublished)
- Fix API to properly handle JSON array queries with array_contains
- Add comprehensive WHERE clause building for multiple filters

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 17:05:02 +01:00
c6fd8cf292 refactor: convert Media Library actions to dropdown menu
- Replace individual buttons with dropdown menu for secondary actions
- Add 'Audit Storage' and 'Select Files' options to dropdown
- Keep Upload as primary action button
- Add chevron-down icon with proper stroke styling
- Implement click-outside handler for dropdown

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 17:04:32 +01:00
655a8a05a5 feat: add Cloudinary audit admin UI
- Create audit page at /admin/media/audit with 2x2 summary grid
- Add interactive table with file selection and batch operations
- Implement delete functionality with confirmation modal
- Add chevron-left icon for navigation
- Style with consistent admin UI patterns
- Include loading states and error handling

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 16:56:39 +01:00
1f04a96dad feat: add Cloudinary audit functionality
- Add comprehensive audit system to identify orphaned Cloudinary files
- Create audit script with dry-run and execute modes
- Add formatBytes utility for human-readable file sizes
- Implement comparison logic between Cloudinary and database references
- Add API endpoint for programmatic access to audit functionality
- Include documentation for Cloudinary management

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-16 16:56:05 +01:00
f540aed895 Add new layout to album pages and remove tests and PhotoGrid 2025-06-16 10:10:59 +01:00
6132c17a9b Add better masonry and infinite scrolling 2025-06-16 09:58:07 +01:00
47e9e300db Update Universe character count and Photos og:desc 2025-06-16 01:38:15 +01:00
4ffcb25a67 Updates for now playing 2025-06-14 18:52:13 -04:00
090b2b95bd Stream new albums over SSE 2025-06-14 14:42:08 -04:00
4a99aca101 Use new Avatar component 2025-06-14 14:09:08 -04:00
dd8f97979c Now playing refinements 2025-06-14 10:42:26 -04:00
f41df1d5e8 Avatar now playing reactivity 2025-06-14 00:45:03 -04:00
6a0f1d7d3f Realtime now playing 2025-06-13 22:18:05 -04:00
199abb294f Now playing 2025-06-13 21:50:13 -04:00
cc6eba7df1 Linter 2025-06-13 21:22:49 -04:00
b3979008ae Apple Music API 2025-06-13 21:22:39 -04:00
fe30f9e9b2 Youtube embeds too 2025-06-13 18:13:43 -04:00
b1ddedd586 Embed URL cards 2025-06-13 17:29:29 -04:00
57ec5ca9aa Fix unused CSS selector warnings 2025-06-13 15:05:18 -04:00
81af86ae7f Add sorts in admin interface 2025-06-13 14:50:22 -04:00
f753d5fb8b Unify fullscreen editors 2025-06-13 14:17:26 -04:00
3096c0ff51 Updates to MediaUploadModal 2025-06-13 12:43:56 -04:00
824e44a1ef Track while scrolling 2025-06-13 07:53:22 -04:00
fcf5f87177 Buttons stay under your mouse on navigation 2025-06-13 07:42:30 -04:00
d1c7a777ed Phot next/prev buttons follow you 2025-06-13 07:39:24 -04:00
00fc9b90cc Finish fixing photos architecture 2025-06-13 07:13:06 -04:00
6b44c1b7d0 Simplify photos architecture 2025-06-13 06:55:21 -04:00
1c1b930e34 Better photos interface 2025-06-13 05:03:37 -04:00
09e83618c9 Different filmstrip, zooming images 2025-06-13 04:34:34 -04:00
610a421207 Better single photo view 2025-06-13 03:47:52 -04:00
c50b8e2e53 Add view on site button 2025-06-12 03:28:34 -07:00
d63574a09f Fix markdown link saving 2025-06-12 02:07:12 -07:00
46d655e8f0 Better OpenGraph and HTML metadata 2025-06-11 23:58:11 -07:00
d44bcbb80e Fix some console errors 2025-06-11 22:19:07 -07:00
a8bee8d9da Fix footer positioning 2025-06-11 02:03:26 -07:00
3ba7f6b762 We ran the linter 2025-06-11 00:54:05 -07:00
c6ce13a530 Simplify posts
We had a lot of unnecessary complexity here due to post types that never ended up getting used.

We also made the post slug field reactive and bound to the title field.

We also fixed filters on the Universe admin page so we can filter by unpublished posts too (WIP)

We also fixed the hover state of BackButton
2025-06-11 00:53:54 -07:00
3d993d76ed Remove old post types to reduce confusion 2025-06-11 00:06:44 -07:00
451d5b0f9e Make back button consistent 2025-06-10 22:24:24 -07:00
c4eef0b1db Remove from Cloudinary on bulk delete 2025-06-10 21:53:33 -07:00
b3c9529e3f Fix image handling in forms 2025-06-10 20:48:02 -07:00
5edc7eb33b Fix filtering for projects 2025-06-10 19:47:14 -07:00
bbced97929 Button unification 2025-06-10 19:09:23 -07:00
90735d2c83 Spacing and mobile design fixes 2025-06-10 12:06:02 -07:00
510255f1bd Make font-scaling more consistent 2025-06-10 10:29:52 -07:00
205244584f Mobile layout adjustments 2025-06-10 10:22:08 -07:00
7869d05e1e Remove log 2025-06-10 09:44:27 -07:00
78ae1d0756 Update empty states 2025-06-10 09:15:09 -07:00
42a84f8ad7 Refactor project page a bit, consistent arrow icons 2025-06-10 01:46:04 -07:00
8d68219dde Use svelte motion for better spring 2025-06-10 01:00:49 -07:00
193649bc2d Add basic interactive headers 2025-06-10 00:53:51 -07:00
9ba787cd8b Add dropdown to change object publish state and fix z-index 2025-06-02 17:00:52 -07:00
69193db45a Better labs cards 2025-06-02 14:34:23 -07:00
5dba6af729 Page styling 2025-06-02 14:02:35 -07:00
c32e770396 Fix photo albums + spacing 2025-06-02 13:52:13 -07:00
f07438ce92 Fix and style permalinks for posts 2025-06-02 13:42:18 -07:00
4a82426dd5 Get rid of explicit excerpt on Post 2025-06-02 13:03:03 -07:00
0354b798d3 Fine-tuning slideshow 2025-06-02 10:23:35 -07:00
7894750d2b Fix attaching new photos in new album 2025-06-02 09:48:53 -07:00
78443e2bdd Prettier + build errors 2025-06-02 08:41:03 -07:00
2a6291a547 Clicking outside popover dismisses it 2025-06-02 08:37:01 -07:00
9a09dde557 Standardize metadata popovers 2025-06-02 08:32:36 -07:00
9f7b408bc7 Fix adding/removing to albums 2025-06-02 07:23:40 -07:00
b2ad9efd9c Fixes for UniverseComposer and delete modals.
Also standardizing Publish buttons and whatnot
2025-06-02 06:19:39 -07:00
e7a7e7cd1e Inline composer 2025-06-02 04:56:09 -07:00
4407a85dec Fix upload media button, new essay page 2025-06-02 04:48:49 -07:00
0d90981de0 Fix Edit Post and Album list 2025-06-02 04:32:32 -07:00
cc09c9cd3f Componentization and styling 2025-06-02 03:43:13 -07:00
5c32be88c5 Filter updates 2025-06-02 02:50:08 -07:00
5e066093d8 styles 2025-06-02 02:23:50 -07:00
2f504abb57 big update 2025-06-01 23:48:10 -07:00
b314be59f4 Library support in Edra 2025-05-31 13:17:38 -07:00
c7b4f57ab0 tbh i dont know whats going on anymore 2025-05-31 02:08:26 -07:00
baa030ac1c Frontend/Backend connection on projects 2025-05-29 21:47:26 -07:00