- Add drag handle functionality to editor blocks
- Improve dropdown menu component with better state management
- Enhance composer with AI-powered features
- Update form components to use toast notifications
- Add chevron-right and drag-handle SVG icons
- Various bug fixes and UI refinements
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Create reusable tooltip action using Tippy.js
- Add tooltips to link menu buttons (copy, edit, open, remove)
- Implement visual feedback with green flash animation on URL copy
- Configure bubble menu scale animation for smooth appearance
- Add scoped tooltip styles with dark theme
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Move embeds to display before text content in UniversePostCard
- Show full content for non-essay posts (no truncation)
- Increase essay truncation limit from 150 to 300 characters
- Add styles to hide duplicate embeds in rendered content
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- 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>
- 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>
- 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>
- 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>
- Update all admin forms to use toast messages
- Remove temporary "Saving..." button text changes
- Remove inline error/success message displays
- Keep buttons disabled during operations
- Show loading, success, and error toasts appropriately
Updated components:
- AlbumForm: Save operations with descriptive messages
- StatusDropdown: Remove loading text from buttons
- MediaDetailsModal: Save, delete, and copy operations
- ProjectForm: Create and update operations
- EssayForm: Publish and save draft operations
- SimplePostForm: Create and update posts
- PhotoPostForm: Publish photo posts
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- 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>
- Install svelte-sonner for toast notifications
- Add dependency to package.json
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add comprehensive PRD documenting album system redesign
- Update README with new features and setup instructions
- Update package dependencies for new functionality
- Add required packages for geolocation and enhanced editing
- Document new album content structure and API changes
- Include migration guide for existing data
Documents the major architectural changes in this release.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update NavDropdown with album navigation support
- Enhance UniverseAlbumCard with better styling
- Update album-stream store for new album structure
- Improve now-playing-stream with better error handling
- Add TypeScript improvements throughout
- Better component prop validation
Enhances UI components for the new album system.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- 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>
- Enhance GalleryExtended with better layout options
- Update GalleryPlaceholder with improved media selection
- Improve ImagePlaceholder with better preview handling
- Add support for multiple gallery layouts
- Improve component styling and interactions
- Better integration with UnifiedMediaModal
Enhances content editing with improved media components.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Add album and media icons for better navigation
- Update AdminNavBar with new routes and improved styling
- Enhance GalleryUploader with better drag-and-drop support
- Improve ImagePicker and ImageUploader components
- Remove unused ImageUploadPlaceholder component
- Update MediaDetailsModal with album association features
- Improve Modal component styling and animations
- Add PostDropdown for post management actions
Modernizes the admin interface with better usability.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- 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>
- 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>
- 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>
- 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>
- Add geolocation Tiptap extension for embedding maps
- Create GeolocationExtended component for rendering map embeds
- Create GeolocationPlaceholder for editor insertion
- Add GeoCard component for displaying location data
- Support latitude, longitude, zoom level, and optional labels
- Enable location-based content in albums and posts
Allows editors to embed interactive maps with specific locations.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Create UnifiedMediaModal to replace MediaLibraryModal and bulk album functionality
- Remove redundant MediaLibraryModal and MediaSelector components
- Add media-selection store for better state management
- Add AlbumSelectorModal for album selection workflows
- Add InlineComposerModal for inline content editing
- Improve modal reusability and reduce code duplication
Streamlines media selection with a single, flexible modal component.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Create EnhancedComposer as the single unified editor component
- Remove redundant editor components (Editor, EditorWithUpload, CaseStudyEditor, UniverseComposer)
- Add editor-extensions.ts for centralized extension configuration
- Enhance image placeholder with better UI and selection support
- Update editor commands and slash command groups
- Improve editor state management and content handling
Simplifies the codebase by having one powerful editor component instead
of multiple specialized ones.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- 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>
- Add album content field for rich text/structured content
- Add geolocation support for albums with position and zoom level
- Remove direct photo-album relationship in favor of MediaAlbum join table
- Support many-to-many relationships between media and albums
- Add Album relation to Universe model for better organization
This enables albums to have rich content beyond just photos and supports
geographic data for location-based albums.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- 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>
- analyze-image-colors.ts: Test color extraction on local images
- check-photo-colors.ts: Verify color data in database
- find-image-colors.ts: Extract colors from Cloudinary URLs
- reanalyze-colors.ts: Bulk reprocess colors for all media
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Use dominant color as placeholder background while images load
- Add aspect ratio support for proper image dimensions
- Improve loading state with smoother transitions
- Remove shimmer animation in favor of solid color placeholders
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- 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>
- 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>
- Add bash scripts for automated database backup and restore
- Support both full and data-only backups
- Add npm scripts for easy database management
- Add backups/ directory to .gitignore
- Include documentation for backup procedures
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- 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>
- Add two-column view mode option
- Import new view mode icons
- Hide selector on mobile devices
- Update ViewMode type to include all options
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- SingleColumnPhotoGrid: Displays photos in a single centered column
- TwoColumnPhotoGrid: Splits photos evenly between two columns
- HorizontalScrollPhotoGrid: Shows photos in a horizontal scrolling view
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- Update view-single icon with text representation
- Add view-horizontal icon with side scroll indicator
- Add view-two-column icon for two-column layout
- Simplify width-normal and width-wide icons
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
- 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>
- 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>
- 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>
- 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>