Commit Graph
5 Commits
Author SHA1 Message Date
john-okeefe 2a64ca423f Refactor: Eliminate duplicate types - Use handler types directly
- Deleted templates.CollectionDetailData - using templates.CollectionData everywhere
- Deleted templates.BookData - using handlers.BookInfo everywhere
- Deleted templates.DeviceData - using handlers.DeviceInfo everywhere
- Deleted templates.ProgressItemData - using handlers.ProgressWithMedia everywhere
- Deleted templates.convertDevices() helper - Use handlers types directly in templates
- Enhanced handlers.ProgressWithMedia with device metadata fields
- Added handlers.getDeviceIcon() helper
- Updated all templates to import handlers package
- Cleaned up unused imports

This aligns codebase with templ's design philosophy (use Go types directly, no parallel type system)
2026-02-12 19:48:07 -05:00
john-okeefe 00a083b60b Rename backend code references: Bookmann → Bookhoard
Backend changes:
- Update import paths: bookmann/internal → bookhoard/internal
- Rename struct fields: BookmannUUID → BookhoardUUID
- Update handler function names: mapContentIdToBookmannUUID → mapContentIdToBookhoardUUID
- Update HTTP response headers: X-Bookmann-* → X-Bookhoard-*
- Update service and middleware references
- Update main.go imports and references

This is part 2 of the project rename to Bookhoard.
2026-02-01 16:11:54 -05:00
john-okeefe 7828371c9c feat(progress): implement progress visualization page with sync source tracking (Phase 9-3)
Add progress list page showing reading progress across all devices:
- GetAllProgress API endpoint: Returns all user progress with media details
- GetAllProgressData helper: Fetches progress data for SSR rendering
- ProgressWithMedia struct: Combines progress with book metadata
- Progress page template: Displays progress bars, device icons, sync sources

Features:
- Visual progress bars with percentage
- Device-specific icons (Kobo, KOReader, Web, Mobile)
- Last sync timestamp and device attribution
- EPUB CFI location display
- Cover image support with fallback
- Responsive grid layout

This gives users a unified view of their reading progress across all synced devices.
2026-02-01 00:25:15 -05:00
john-okeefe 4681fb474e feat: integrate ConnectionManager into Handler struct
Add WebSocket ConnectionManager to Handler:
- Add connManager field to Handler struct
- Update NewHandler to accept ConnectionManager parameter
- Update SetupRoutes to pass ConnectionManager through
- Import sync package with alias to avoid conflicts

This enables progress handlers to broadcast updates via WebSocket.
2026-01-30 21:47:56 -05:00
john-okeefe 6ddc551d64 Phase 1 Week 3: Core Progress APIs
- Create internal/handlers/progress.go with universal progress endpoints
- GET /api/progress/:id - Get progress with all location references
- POST /api/progress/:id - Update progress with automatic conversion
- GET /api/progress/:id/history - Get reading session history
- Progress response includes:
  - format_group (reflowable, fixed_layout, comic_archive)
  - percentage (0.0-1.0)
  - location_references (page, epubcfi, chapter, character)
  - device_sync information
- UpdateUniversalProgress accepts multiple input formats:
  - percentage directly
  - page/total_pages (auto-converts to percentage)
  - epubcfi for EPUBs
  - chapter/chapter_progress
- Uses sync package for format conversion
- Backward compatible with existing progress endpoints
- Add routes to SetupRoutes in ebook.go
- Fixes pgtype wrapper type access (.Float64, .Int32, .Int64)
2026-01-30 16:11:11 -05:00