Commit graph

373 commits

Author SHA1 Message Date
94fb5f6daf refactor(admin): use session fetch in media components 2025-10-07 05:54:18 -07:00
376df12c20 refactor(admin): remove legacy client auth helper 2025-10-07 05:53:55 -07:00
878c0ae248 refactor(admin): drive media page from server data 2025-10-07 05:31:02 -07:00
3a588fdf89 refactor(admin): load posts list on server 2025-10-07 05:30:50 -07:00
dbcd7a9e1b refactor(admin): load projects list on server 2025-10-07 05:30:34 -07:00
22e53a7d30 feat(admin): add authenticated fetch helper 2025-10-07 05:25:44 -07:00
4d7ddf81ee feat(admin): add session-backed auth flow 2025-10-07 05:22:39 -07:00
f3c8315c59 fix: resolve scss global import path 2025-10-07 04:55:30 -07:00
006e1db96e Add modernization plan 2025-10-07 04:49:11 -07:00
ed906b6c75
Merge pull request #15 from jedmund/jedmund/autosave
complete autosave implementation
2025-10-07 03:25:12 -07:00
c96def2789 feat: add minimal not-found error page 2025-10-07 03:18:17 -07:00
6b21c4f7b3 test: cover autosave controller and lifecycle helper 2025-10-07 03:18:10 -07:00
7b5af20dee docs: capture autosave roll-out plan 2025-10-07 03:18:02 -07:00
c63608938a
Merge pull request #14 from jedmund/jedmund/autosave
Add autosave to admin interface
2025-10-02 19:27:39 -07:00
280bdfc06d feat(drafts): add local draft backup with restore prompt to EssayForm, SimplePostForm, and PhotoPostForm 2025-08-31 11:03:27 -07:00
c98ba3dcf0 feat(admin): integrate autosave and local draft prompt into ProjectForm and Post Edit; add Cmd/Ctrl+S and beforeNavigate flush 2025-08-31 11:03:27 -07:00
1a5ecf9ecf feat(autosave): add autosave controller and status component 2025-08-31 11:03:27 -07:00
9bc942211a refactor(admin): use shared api client across projects list, posts list, new post, project edit load, and media modal 2025-08-31 11:03:27 -07:00
f5a440a2ca feat(api/server): add posts PATCH and optimistic concurrency (updatedAt) for posts and projects 2025-08-31 11:03:27 -07:00
3aec443534 feat(api): add admin API client with auth, error handling, FormData, and abortable requests 2025-08-31 11:03:27 -07:00
c89b2b0db5
Merge pull request #13 from jedmund/feature/video-upload-support
Add video upload support
2025-08-23 00:19:48 -07:00
82581f9496 fix: update chevron icon to use Svelte 5 snippet syntax
- Replace slot="icon" with snippet syntax for dropdown chevron button
- Fixes missing chevron icon in Media tab actions dropdown

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-23 03:18:53 -04:00
aa3622d606 feat: add video playback UI and thumbnail display
- Add video player with controls in MediaDetailsModal
- Display video metadata (duration, codecs, bitrate) in metadata panel
- Show video thumbnails with play icon overlay in MediaGrid
- Support video preview in upload components
- Replace emoji icons with SVG play icon
- Maintain natural video aspect ratio in all views
- Add proper styling for video thumbnails and placeholders

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-23 03:14:06 -04:00
4f46b0e666 feat: add video upload support with ffmpeg processing
- Add video MIME types support (WebM, MP4, OGG, MOV, AVI)
- Increase upload size limit to 100MB for videos
- Add ffmpeg integration for local video processing
- Generate video thumbnails at 50% duration
- Extract video metadata (duration, codecs, bitrate)
- Add database fields for video metadata
- Support video uploads in both local and Cloudinary storage
- Maintain aspect ratio for video thumbnails (1920px max width)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-23 03:13:36 -04:00
bc2d1b4092
Merge pull request #12 from jedmund/hotfix/universe-actions
Fix universe actions
2025-08-22 22:10:15 -07:00
0c269389de fix: update post editor actions based on draft/published status
When editing a draft post, the primary action is now "Save draft" with "Publish" in the dropdown menu. When editing a published post, the primary action is "Save post" with "Save as Draft" in the dropdown.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-08-23 01:02:33 -04:00
f159d93b4b Add meta theme color 2025-08-07 03:12:25 -07:00
7acd366751 feat: add YouTube and media embed support to RSS feed
- Support video nodes with YouTube URL detection
- Support urlEmbed nodes for rich media previews
- Convert YouTube URLs to embedded iframes in RSS
- Add Twitter/X embed preview support
- Support generic iframe embeds
- Provide fallback links for better RSS reader compatibility

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-24 04:13:17 -07:00
be1da5aec7 refactor: remove EditorJS support from RSS feed
Clean up RSS content parsing to only support TipTap/Edra format
since that's what the application uses. Removed unnecessary
EditorJS format handling.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-24 04:04:54 -07:00
89360aa1ff feat: improve RSS feed with full content and best practices
- Include full HTML content in RSS posts using content:encoded
- Support both TipTap and EditorJS content formats
- Use date as title for posts without titles
- Add featured images as enclosures for posts
- Implement RSS best practices:
  - Add CORS headers for wider compatibility
  - Support conditional requests (ETag/Last-Modified)
  - Set appropriate cache headers (5 min client, 10 min CDN)
  - Improve content parsing for various editor formats

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-24 04:00:14 -07:00
1ed0afb5b2 fix: temporarily disable albums in RSS feed
Remove album queries from RSS feed to fix production error.
Albums will be re-enabled once database schema is updated.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-24 03:50:14 -07:00
1b0269e81e Tentative fix for mobile zoom 2025-07-24 03:45:00 -07:00
2dd3d60485 fix: update RSS feed to work with new media architecture
- Update album queries to use media relation instead of direct photos relation
- Filter photography albums by checking media.isPhotography instead of album.isPhotography
- Remove reference to non-existent post.excerpt field
- Fix cover photo access and counts to use album.media
- Fix URL concatenation for Cloudinary images to handle absolute URLs

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-24 03:16:23 -07:00
f24b79da2f fix: improve album page functionality and design
- Fix renderEdraContent to accept albumSlug option parameter
- Fix album listing links from /photos/{slug} to /albums/{slug}
- Remove album header section for cleaner photo story presentation
- Remove broken photo page conditional that was preventing render
- Pass album slug to content renderer for proper photo linking

Creates more immersive experience where content speaks for itself.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-11 20:12:43 -07:00
df3a68885d feat: restrict debug panel to /about page only
- Add route check to only show debug panel on /about page
- Keeps debug features accessible but hidden from main experience
- Debug panel remains available in development mode on /about

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-11 20:12:23 -07:00
4fd35ec1f0 feat: link albums to Apple Music when available
- Add URL field to Apple Music data type
- Include Apple Music URL in album transformation
- Prioritize Apple Music links over Last.fm in Album component
- Falls back to Last.fm URL when Apple Music data unavailable

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-11 20:12:13 -07:00
a74e9d8c4d Fix hover effect in two column grid 2025-07-11 20:11:18 -07:00
c90c2a9bdd
Merge pull request #11 from jedmund/jedmund/music-refactor
Refactor a bunch of music code to make it more reliable
2025-07-10 21:43:52 -07:00
fd56b1492f chore: add server.log to .gitignore
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-10 21:34:50 -07:00
a8997382b7 feat: add centralized cache management system
- Create CacheManager class to unify all Redis cache operations
- Define cache types with prefixes and default TTLs
- Provide type-safe cache operations
- Add bulk clear operations for related caches
- Include cache statistics and monitoring capabilities

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-10 21:33:25 -07:00
f17934dcb8 feat: add SVG icons for debug panel
- Add check, x, trash, settings, clock, and loader icons
- Replace emoji with proper SVG icons in DebugPanel
- Improve visual consistency and cross-platform compatibility

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-10 21:33:12 -07:00
f1d0453b63 feat: add comprehensive debug panel for development
- Create DebugPanel component with Now Playing, Albums, and Cache tabs
- Show real-time connection status and update intervals
- Display detailed Apple Music data for each album
- Add inline cache clearing for individual albums
- Implement Apple Music search modal for testing queries
- Add admin endpoints for cache management and API testing
- Only visible in development mode

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-10 21:32:59 -07:00
cb6ee326c8 fix: improve Apple Music search for singles and Japanese content
- Add fallback to search for songs when album search fails
- Handle artist name variations (with/without spaces in Japanese names)
- Create synthetic album entries for singles not found as albums
- Add search metadata to track failed searches and debug info
- Fix Hachikō preview detection by normalizing artist names

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-10 21:32:43 -07:00
b84a2637c0 feat: implement smart polling intervals based on track duration
- Adjust update frequency based on remaining track time
- Poll every 5s when <20s remaining, 10s for 20-60s, 15s for >60s
- Add heartbeat timestamps to track update timing
- Implement time-based fallback for tracks without Apple Music data
- Assume tracks scrobbled within 5 minutes are still playing

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-10 21:32:29 -07:00
3d7eb6e985 refactor: consolidate now playing detection into single music stream store
- Merge albumStream and nowPlayingStream into unified musicStream store
- Simplify confidence scoring to binary detection (playing/not playing)
- Create single source of truth for music state across components
- Fix synchronization issues between header and album indicators
- Make Album spring animation more subtle (stiffness: 150, damping: 25)

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-10 21:32:14 -07:00
4d24be2457 Fix some bad photos changes 2025-07-10 09:33:43 -07:00
27075088ee Fix the mobile nav dropdown 2025-07-10 09:14:21 -07:00
5e4b0949c2 Fix styling of embeds 2025-07-10 02:53:38 -07:00
41fccde9be
Merge pull request #10 from jedmund/universe/cleanup
Clean up code
2025-07-10 02:43:55 -07:00
103c69664b fix: improve now playing detection reliability
- Always fetch fresh data from Last.fm for now playing detection
- Add confidence-based detection with progress tracking
- Implement dynamic polling intervals (10s when playing, 30s idle)
- Add marquee animation for now playing text in header
- Fix release date formatting to show only year
- Add gradient fade effects to marquee edges
- Enhanced logging for debugging detection issues

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-10 01:25:31 -07:00