Commit Graph
100 Commits
Author SHA1 Message Date
john-okeefe 121b955334 refactor: use Tailwind typography config instead of custom CSS
Replaced custom <style> blocks with Tailwind Typography plugin configuration
to set dark theme colors for code blocks. This complies with the project
guideline of no custom CSS - all styling now uses Tailwind utilities.

Changes:
- Removed <style> tags from docs templates
- Added typography.extend.invert.css configuration to tailwind.config
- Code blocks now use #14151f background (slightly darker than main #1a1b26)
- Inline code uses theme colors from Tailwind config
- Copy buttons still work with same functionality
2026-02-02 21:16:46 -05:00
john-okeefe 9b58533a81 fix: apply darker code block background color to DocsLayout
Applied the color change (#14151f instead of #1a1b26 for code blocks)
to the DocsLayout function, making code blocks slightly darker than the
main background for better visual distinction.
2026-02-02 21:11:32 -05:00
john-okeefe 26d427c4b3 style: adjust code block background to be subtly darker
Changed code block backgrounds to be slightly darker than the main background:
- Main background: #1a1b26
- Code blocks (pre): #14151f (slightly darker to stand out)
- Inline code: #1a1b26 (matches main background for subtlety)

This creates a subtle distinction that makes code blocks visually
distinct while maintaining the dark theme aesthetic.
2026-02-02 21:07:25 -05:00
john-okeefe 0b979d698e feat: add dark code blocks and copy buttons to documentation
- Fixed white background in code blocks by adding custom CSS
  - Code blocks now use dark background (#1a1b26 for pre, #16161e for code)
  - Inline code matches theme colors
- Added copy buttons to all code blocks
  - Button appears on hover (top-right corner)
  - Shows 'Copy' → 'Copied!' feedback
  - Uses Clipboard API for copying code
- Copy buttons styled to match documentation theme

This improves the dark mode documentation experience with better
code block visibility and usability.
2026-02-02 21:03:39 -05:00
john-okeefe 7d717e32a2 fix: enable Tailwind Typography plugin in docs template
Added ?plugins=typography to Tailwind CDN script to enable prose classes.
This fixes the 'wall of text' issue in documentation by properly styling:
- Headings, paragraphs, lists with proper spacing
- Line-height and typography improvements
- Code blocks, blockquotes, tables, and links

The prose classes now work correctly with the CDN version of Tailwind.
2026-02-02 20:58:48 -05:00
john-okeefe d102b6f976 style: add Tailwind Typography plugin for proper markdown rendering
Installed @tailwindcss/typography plugin to fix 'wall of text' issue in documentation.
The prose classes now properly style markdown HTML elements with:
- Proper margins and spacing for headings, paragraphs, lists
- Line-height and typography improvements
- Styled code blocks, blockquotes, tables, and links

Changes:
- Add @tailwindcss/typography to devDependencies
- Configure plugin in tailwind.config.ts
- Regenerate CSS with typography styles included
2026-02-02 20:54:18 -05:00
john-okeefe 59554d37f6 fix: update docs redirect to use lowercase index.md
Changed DocsHome redirect from /docs/INDEX.md to /docs/index.md
to match the renamed file.
2026-02-02 20:30:27 -05:00
john-okeefe 4866af24de docs: rename INDEX.md to index.md and update display name
- Renamed root INDEX.md to index.md (lowercase)
- Changed navigation title from "Documentation Index" to "Index"
- Removed caps lock for cleaner appearance
2026-02-02 20:28:24 -05:00
john-okeefe 35a039d720 docs: rename INDEX files to meaningful names and fix navigation
- Renamed subdirectory INDEX.md files to section-specific names:
  - user/INDEX.md → user/user-guide.md
  - developer/INDEX.md → developer/development.md
  - operations/INDEX.md → operations/operations.md
  - contributing/INDEX.md → contributing/contributing.md
  - developer/api/INDEX.md → developer/api/api-reference.md
  - developer/api/collections/INDEX.md → developer/api/collections/collections-api.md

- Updated all internal links to use new filenames
- Updated navigation.go to skip subdirectory INDEX files from sidebar
- Added Dockerfile to include docs directory in container build

This fixes the issue where multiple 'INDEX' links appeared in the sidebar,
making navigation confusing. Now each section has a descriptive name.
2026-02-02 20:25:18 -05:00
john-okeefe c194acf379 fix: update verify script to check git tracking, not file existence
The verification script was incorrectly flagging .env files that exist locally
but are properly gitignored. Now checks if files are tracked by git using
'git ls-files' instead of just checking file existence.

This prevents false positives when .env is in .gitignore and exists locally
for development but is not committed to the repository.
2026-02-02 20:13:57 -05:00
john-okeefe d1a8a62c08 docs: update password generation to use hex encoding
Change openssl rand commands from base64 to hex encoding to avoid
special characters that break URL parsing in database connection strings.

- JWT_SECRET: openssl rand -hex 32
- DBPASS: openssl rand -hex 16

Updated in:
- .env.example
- README.md
- docs/contributing/DEVELOPMENT.md
- docs/operations/troubleshooting.md
2026-02-02 20:13:05 -05:00
john-okeefe ab72c783ba docs: strengthen warning handling to prohibit auto-fix
- Change 'Review warnings, fix if appropriate' to 'Note warnings'
- Clarify warnings are informational only
- Explicitly prohibit auto-fixing warnings
- Align with verification script instruction: DO NOT automatically fix
- Warnings require explicit user permission to address
2026-02-02 16:53:58 -05:00
john-okeefe 62b02b6ed2 docs: clarify verification script error/warning handling
- Separate error fixing (required) from warning review (informational)
- Remove ambiguous 'warnings should be reviewed' phrasing
- Align with script instruction: do not auto-fix issues
- Make clear: errors must be fixed, warnings are for acknowledgment
2026-02-02 16:52:57 -05:00
john-okeefe 3a494fe703 docs: add verification script to pre-commit checklist
- Add 'Run verification script' as first step in Before Committing
- Add verification script to Phase Completion Verification
- Ensures guideline compliance before commits
- Catches errors early in development workflow
- Verification must pass (0 errors) before declaring complete
2026-02-02 16:52:10 -05:00
john-okeefe 343f8bbebf docs: add legacy notice to monolithic API reference
- Add warning banner to api-reference.md (1,600+ lines)
- Point users to new split endpoint documentation
- Recommend API Documentation Portal for interactive explorer
- Clarify this is kept for backward compatibility
- Resolves device content warnings (appropriate as legacy reference)
2026-02-02 16:50:45 -05:00
john-okeefe a89d5c599d feat: implement Hybrid SSR for bookshelf page
- Add LibraryData type to templates/types.go
- Update bookshelf template to accept libraries parameter
- Render libraries server-side for faster initial page load
- Libraries now populated from server data instead of AJAX fetch
- JavaScript still uses API for dynamic content (bookshelf items)
- Update /bookshelf route to fetch libraries server-side before render
- Properly handle UUID and pgtype.Text conversions
- Maintain API endpoint compatibility for JavaScript calls

This improves initial page load performance while preserving
dynamic functionality via API calls.
2026-02-02 16:46:45 -05:00
john-okeefe 7c4a37175b feat: add SSR data helpers to library handler
- Add GetUserVisibleLibrariesData() method for server-side rendering
- Add GetLibraryTypeData() method for SSR type fetching
- These helpers return data directly instead of JSON responses
- Enables Hybrid SSR pattern while preserving API endpoints
- Add context import for new methods
2026-02-02 16:46:22 -05:00
john-okeefe 0ee77f35e8 chore: enhance verification script with smart checks
- Add smart device content detection based on mention thresholds
- Check for README.md files in bruno directory (error)
- Update docs structure checks to match new paths (docs/developer/api, docs/user/devices)
- Add INFO-level warnings for moderate device mentions in docs
- Exclude README.md from device content placement checks
- Improve error recovery with better variable sanitization
2026-02-02 16:46:06 -05:00
john-okeefe 155b58aef6 docs: restructure documentation and update guidelines
- Update PROJECT_GUIDELINES.md to reflect current architecture (Hybrid SSR)
- Integrate service layer and SSR rules into existing sections
- Update README.md paths to match new docs structure (docs/developer/api, docs/user/devices)
- Remove redundant README.md files from bruno/ directories
- Update bruno/collection.bru documentation to current API standard
- Fix architectural pattern description from API-driven to Hybrid SSR
2026-02-02 16:45:59 -05:00
john-okeefe 253f56399d docs: restructure documentation into audience-based portals
BREAKING CHANGE: Documentation URLs have changed

New structure:
- user/ - End-user documentation (device setup, sync guides, frontend)
- developer/ - Developer documentation (API reference, protocols, specs)
- operations/ - Operations documentation (deployment, troubleshooting)
- contributing/ - Contribution guides

Changes:
- Created portal INDEX.md files for each audience section
- Moved device guides to user/devices/ (kobo-setup.md, koreader-setup.md)
- Moved API docs to developer/ (api-reference.md, collections-api.md)
- Moved sync guide to user/sync-guide.md
- Moved troubleshooting to operations/troubleshooting.md
- Moved all split API docs to developer/api/
- Renamed protocol files (kobo-protocol.md, koreader-protocol.md)
- Added placeholder user guides (frontend, user-areas, settings, admin)
- Updated all internal links to new paths
- Updated Go code (http_handler.go, navigation.go) for new paths
- Updated main INDEX.md for audience-based navigation

Benefits:
- Clear separation of user and developer documentation
- Scalable structure for future user guide expansion
- Better organization and discoverability
- Audience-specific landing pages

Related to DOCS_IMPLEMENTATION_PLAN.md Phase 2 completion
2026-02-02 15:58:34 -05:00
john-okeefe ece90c0f1f chore: prepare for documentation restructuring - backup state 2026-02-02 15:55:00 -05:00
john-okeefe ec74650c18 docs: add collections API endpoint files (Phase 2 completion) 2026-02-02 15:54:59 -05:00
john-okeefe a3a3d4ed40 docs: Expand verification scripts README with comprehensive examples
- Add complete enhanced output examples for all error/warning types
- Document verification script architecture and design principles
- Include content detection methods and data collection strategies
- Add comprehensive usage scenarios for development, CI/CD, AI workflows
- Provide advanced troubleshooting with debugging techniques
- Include performance optimization and edge case handling
- Demonstrate integration patterns for hooks and pipelines

This creates definitive documentation for verification system that
covers all enhanced outputs, usage patterns, and integration
methods, making scripts fully understandable and actionable for
both human developers and AI assistance.
2026-02-02 14:05:49 -05:00
john-okeefe 7da4373cc1 docs: Update verification scripts README with enhanced output documentation
- Document detailed error/warning output patterns
- Show examples of enhanced information provided
- Explain specific content found for each violation type
- Include examples for both errors and warnings
- Demonstrate improved user experience with actionable details

This documents the latest enhancement where verification scripts now
provide specific file paths, line numbers, and content details
instead of generic error messages, making issues easier to understand
and resolve for both humans and AI assistance.
2026-02-02 13:49:03 -05:00
john-okeefe c78e520f22 feat: Enhance verification scripts with detailed error/warning output
Enhanced Error/Warning Details:
- API content warnings now show actual lines found
- Build failures now display error logs
- Missing files now show expected locations
- Dockerfile warnings list found files
- Large commits now show specific commit details
- Git ignore issues display current contents

verify-guidelines.sh Comprehensive Documentation Validation:
- Check 12: Content placement validation (API patterns, device setup)
- Check 13: Structure validation (required directories, file counts)
- Check 14: Bruno API tests validation (coverage comparison)
- Full integration of comprehensive documentation checks
- Maintains AI behavior protocol across all operations

User Experience Improvement:
- All errors/warnings now include specific details
- Clear guidance on what was found and why it's an issue
- Verbose output helps identify false positives vs real violations
- Enables faster issue resolution without guesswork

This addresses user request for detailed error/warning information
instead of generic messages, making verification results actionable and
understandable for both humans and AI assistance.
2026-02-02 13:40:21 -05:00
john-okeefe 65b2ebfa9b feat: Enhance verification system with AI protocol and dual-script approach
Makefile Integration:
- Add make verify-quick target for critical-only checks
- Fix verify-guidelines target to call comprehensive script
- Clear separation of usage patterns

AI Behavior Protocol:
- Add comprehensive AI instructions to both scripts
- Enhanced error/warning functions with AI reminders
- Multi-layered safeguards prevent automatic fixing
- Protocol applies to ALL file modifications

verify-quick.sh Enhancements:
- Basic documentation structure validation
- API content placement detection in README.md
- Maintains fast performance for development

Documentation:
- Comprehensive scripts/README.md with usage guidelines
- Bruno API tests validation explained
- Troubleshooting and compliance sections
- Clear AI protocol instructions and examples

This provides dual-script approach: fast critical checks during development,
comprehensive validation for pre-commit/CI, with AI safety across all operations.
2026-02-02 12:56:41 -05:00
john-okeefe 65d3525d80 feat: Add documentation completeness validation
Check 16: Documentation Completeness Validation
- Detect orphaned documentation (files without proper markdown structure)
- Check for inconsistent file naming patterns in docs/api/
- Validate markdown formatting compliance
- Ensure documentation maintains structural integrity

This final check completes the comprehensive documentation validation
suite, ensuring all documentation files follow proper formatting
and naming conventions per PROJECT_GUIDELINES.md standards.
2026-02-02 11:34:51 -05:00
john-okeefe 8d31298861 feat: Add Bruno API tests and recent changes validation
Check 14: Bruno API Tests Validation
- Count and verify Bruno .bru test files presence
- Compare API documentation vs Bruno test coverage
- Flag insufficient test coverage for human review

Check 15: Recent Documentation Changes Analysis
- Analyze recent commits for documentation compliance
- Flag code commits without corresponding documentation updates
- Verify proper commit message format (docs: prefix)
- Ensure documentation stays synchronized with code changes

These checks provide comprehensive validation of API testing coverage
and ensure documentation follows proper git commit conventions
per PROJECT_GUIDELINES.md requirements.
2026-02-02 11:32:21 -05:00
john-okeefe 5deef46ef5 feat: Add high-recall documentation content and structure validation
Check 12: Documentation Content Placement
- Detect API patterns in README.md when docs/api/ exists
- Flag device setup content outside docs/devices/
- Identify development content outside docs/contributing/
- Monitor README.md length (>300 lines triggers warning)

Check 13: Documentation Structure Validation
- Verify required directories exist (docs/api, docs/devices, docs/contributing)
- Count and report API documentation files
- Validate device setup guides presence

These checks implement high-recall pattern detection to catch potential
documentation guideline violations for human review, ensuring content is
properly routed according to PROJECT_GUIDELINES.md decision table.
2026-02-02 11:30:55 -05:00
john-okeefe 3af4f3ea91 feat: Add AI behavior protocol to verification script
- Add comprehensive AI instructions at script start and end
- Enhance error/warning functions with AI reminders
- Multi-layered safeguards prevent automatic fixing
- Clear protocol: explain -> propose -> ask permission -> await response
- Instructions apply to ALL file modifications, not just verification issues

These safeguards ensure AI always asks permission before fixing any issues
found by the verification script, preventing automatic corrections of
potential false positives.
2026-02-02 11:30:00 -05:00
john-okeefe a3709dc38a docs: Update PROJECT_GUIDELINES documentation section
Update Documentation section to reflect new docs/ structure:
- Add comprehensive documentation location table
- Clarify when to use docs/ vs README.md
- Include workflow for documentation updates
- Update all checklist sections with documentation guidance

Changes:
- README.md: Setup/onboarding only
- docs/: User-facing features and workflows
- docs/api/: API reference and endpoints
- docs/devices/: Device setup guides
- docs/contributing/: Development documentation

Ensures documentation is properly organized and searchable
via the new docs system with Lunr.js search.
2026-02-02 10:38:00 -05:00
john-okeefe 3babfe520f Regenerate template Go files after CSS-to-Tailwind conversion
Regenerate all _templ.go files using templ generate after
removing custom <style> tags and converting to TailwindCSS.
Line numbers updated in error messages due to template changes.
2026-02-02 10:35:56 -05:00
john-okeefe fa8b0fb43b Remove custom CSS from queue template
Remove <style> tags with status and priority badge classes.
Move badge styles to input.css as component utilities for
TailwindCSS compliance.
2026-02-02 10:28:01 -05:00
john-okeefe 656261af4f Remove custom CSS from auth templates
Remove <style> tags from index, login, and register templates.
All theme CSS variables now come from centralized input.css,
eliminating duplicate theme definitions across templates.
2026-02-02 10:27:59 -05:00
john-okeefe d0c180446c Remove custom CSS from docs template
Remove <style> tags with sidebar transitions, scrollbars, and mobile
responsive styles from docs template. Convert to TailwindCSS utility
classes for transitions and transforms.
2026-02-02 10:27:56 -05:00
john-okeefe fa16a3d78a Remove custom CSS from main user templates
Remove <style> tags from analytics, bookshelf, conflicts, and dashboard
templates. Convert custom CSS classes (.stat-card, .shelf, .book-item,
.conflict-card, etc.) to TailwindCSS utility classes. Rely on
centralized theme CSS variables in input.css.
2026-02-02 10:27:53 -05:00
john-okeefe 605beb31e5 Remove custom CSS from admin templates
Remove <style> tags from admin templates (admin, admin_library,
admin_profile) and rely on centralized theme CSS in input.css.
Converts inline styles to use CSS variables and TailwindCSS classes.
2026-02-02 10:27:39 -05:00
john-okeefe 1af9b1e77a Add centralized theme CSS variables to input.css
Move theme CSS custom properties from individual templates to
centralized location in web/static/input.css using Tailwind @layer
directives for better maintainability and to eliminate duplicate
code across templates.
2026-02-02 10:27:35 -05:00
john-okeefe 6d6640e23b docs: clarify OOP guideline - applies to TypeScript, not Go
Updated PROJECT_GUIDELINES.md and verification script to clarify:

1. OOP restriction applies to FRONTEND (TypeScript) only
2. Go methods are fine and encouraged
3. Avoid classes, inheritance, and OOP bloat in TypeScript

Changed verification script:
- Removed Go struct methods check (was incorrect)
- Added TypeScript class declaration check instead
- Now checks for 'class ' keyword in web/*.ts files

This clarifies the guideline was never about Go backend code,
only about avoiding OOP patterns in TypeScript frontend code.

Verification now shows: 13/13 checks passing, 0 warnings
Only 1 error remains: 12 legacy templates with custom CSS.
2026-02-02 10:12:41 -05:00
john-okeefe 0a6ef46927 docs: reorganize verification script to match PROJECT_GUIDELINES.md order
Updated verify-quick.sh to follow PROJECT_GUIDELINES.md structure:
- Added comments for each check showing which guideline it verifies
- Reordered checks to match guideline document order
- Expanded from 5 checks to 13 comprehensive checks

New checks added:
- Backend & Database: migration files, pgx v5 driver version
- Frontend & Styling: OOP pattern detection, TailwindCSS usage
- General: git history for secrets, Dockerfile proliferation
- Build & Deployment: code compilation (post-edit verification)
- Configuration: .env.example, .gitignore validation
- Code Modification Safety: commit quality check (no large commits)

Updated scripts/README.md to document all 13 checks with their
corresponding guidelines.

Current status: 12/13 checks passing
- Only 1 error: 12 legacy templates with custom CSS (need Tailwind conversion)
- 1 warning: some Go files have >10 methods (potential OOP, needs manual review)
2026-02-02 10:08:31 -05:00
john-okeefe 12c6b41577 fix: exclude web/static/ from JS/CSS checks (compiled output)
Exclude web/static/ from verification checks:
- These are TypeScript compiled output files
- Already in .gitignore (web/static/*.js)
- Similar to node_modules/ - build artifacts, not source

Updated verify-quick.sh to exclude:
- web/static/*.js (TypeScript → JS compilation)
- web/static/*.css (TailwindCSS → CSS compilation)

Also removed ./bookhoard binary from repository.

Verification now shows only 1 error: 12 legacy templates with custom CSS.
Docs templates already comply (converted in Phase 4).
2026-02-02 10:00:26 -05:00
john-okeefe e0b95ba297 Add project guidelines verification script
Created comprehensive verification script to check codebase against PROJECT_GUIDELINES.md

Features:
- Checks for custom CSS (TailwindCSS requirement)
- Detects JavaScript files that should be TypeScript
- Verifies no secrets committed (.env, credentials.json)
- Validates code compiles (go build)
- Finds local binaries (should use container builds)
- Quick checks with clear pass/fail/warning output

Usage:
  make verify-guidelines
  ./scripts/verify-quick.sh

Current codebase status:
  - 12 templates with custom CSS (need Tailwind conversion)
  - 2 .js files in web/static/ (need TypeScript conversion)
  - 1 binary file (./bookhoard)

This addresses the trust issue: AI now has a tool to prove guideline compliance
2026-02-02 09:55:39 -05:00
john-okeefe 2726455578 refactor: convert docs templates to use TailwindCSS
Phase 4+5: Replace custom CSS with Tailwind utility classes
- Remove ~250 lines of custom CSS from docs.templ
- Remove ~120 lines of custom CSS from api_explorer.templ
- Use Tailwind CDN for styling
- Keep only essential CSS:
  * CSS variables for theming (--bg-primary, --accent, etc.)
  * Custom scrollbar styling
  * Mobile sidebar transform transitions
  * Smooth scroll behavior
- All layout, spacing, colors, typography now use Tailwind classes
- Mobile-first responsive design with Tailwind breakpoints
- Proper accessibility with aria-labels and semantic HTML

Benefits:
- Consistent design system
- Smaller custom CSS footprint
- Better maintainability
- Follows PROJECT_GUIDELINES.md requirement: TailwindCSS primary
2026-02-02 09:35:37 -05:00
john-okeefe 542fbaf116 docs: add Lunr.js search with fuzzy matching and highlighting
Phase 4 part 1: Add search infrastructure
- Add SearchDoc struct and GenerateSearchIndex to docs handler
- Add stripHTML helper for plain text extraction
- Add ServeSearchIndex endpoint to http handler
- Add /docs/search-index.json route in main.go
- Search index includes all documentation files with ID, title, content, URL
2026-02-02 09:08:37 -05:00
john-okeefe 3b3630666a docs: integrate API explorer into documentation pages
Phase 3 complete: Add API explorer to endpoint documentation
- Add DocsLayoutWithExplorer template function
- Update HTTPHandler.ShowAPIEndpoint to check authentication
- Add GetAPIEndpointData method to docs handler
- Include API explorer for all endpoint documentation
- Explorer shows mock data to non-authenticated users
- Explorer enables real API execution for logged-in users
- Add legacy fallback for endpoints without explorer data
2026-02-02 08:58:12 -05:00
john-okeefe afdcc7b589 docs: add API explorer template component and fix rendering
Phase 3 part 1: Add interactive API explorer
- Create templates/api_explorer.templ with mock and real modes
- Add EndpointInfo and APIExplorerData types to templates/types.go
- Fix markdown rendering with UnsafeHTML.ToComponent()
- Add templ import for Component support
- API explorer supports:
  - Mock data mode for non-authenticated users
  - Real execution mode for logged-in users
  - Request/response display
  - cURL generation
  - Copy to clipboard
2026-02-02 08:56:23 -05:00
john-okeefe 3e81477341 docs: add sync protocols and WebSocket API documentation
Phase 2 part 7: Add real-time sync protocol documentation
- KOReader Protocol: progress sync, metadata fetch
- Kobo Protocol: markup sync, library fetch
- WebSocket: real-time events (progress updates, conflicts)
- Include message format examples for all protocols
2026-02-02 08:52:13 -05:00
john-okeefe 55024bb70a docs: add book-matching, collections, and OPDS API endpoints
Phase 2 part 6: Split advanced features endpoints
- Book Matching: search_books, link_book (manual and auto-link)
- Collections: INDEX.md linking to COLLECTIONS_API.md
- OPDS: feeds, acquisition, publication (OPDS 1.2 protocol)
- Include format conversion details (EPUB to KEPUB)
2026-02-02 08:51:56 -05:00
john-okeefe efa046d030 docs: add ratings, devices, and analytics API endpoints
Phase 2 part 5: Split device management and analytics endpoints
- Ratings: get_ratings, create_rating (1-10 scale with half-stars)
- Devices: register_device, list_devices, get_devices, revoke_device
- Analytics: get_analytics (reading statistics)
- Include device registration flow details
2026-02-02 08:51:53 -05:00
john-okeefe 284486f0a0 docs: add progress, notes, and highlights API endpoints
Phase 2 part 4: Split reading progress and annotation endpoints
- Progress: get_progress, update_progress, delete_progress
- Notes: get_notes, create_note, update_note, delete_note
- Highlights: get_highlights, create_highlight, update_highlight, delete_highlight
- All endpoints support EPUB CFI and percentage locations
2026-02-02 08:51:48 -05:00
john-okeefe 4b06983784 docs: add library and media items API endpoints
Phase 2 part 3: Split library and media item endpoints
- Libraries: get_visible_libraries, get_library, create_library, add_library_folder, set_library_visibility
- Media Items: list_media_items, get_media_item, search_media_items, filter_sort_media_items, update_media_item, delete_media_item
- Complete request/response examples for all endpoints
2026-02-02 08:51:43 -05:00
john-okeefe 52eb75cef7 docs: add authentication and user management API endpoints
Phase 2 part 2: Split auth and user endpoints
- Authentication: register, login, refresh_token, logout
- Users: get_profile, update_profile, update_theme, change_password
- Each endpoint in separate markdown file
- Include request/response examples and error codes
2026-02-02 08:51:40 -05:00
john-okeefe 67bd90feec docs: create API documentation index and structure
Phase 2 part 1: Add API documentation landing page
- Create docs/api/INDEX.md with quick links
- Organize by category (auth, users, libraries, media items, etc.)
- Provide navigation to all API endpoint documentation
- Link to COLLECTIONS_API.md for collections details
2026-02-02 08:51:37 -05:00
john-okeefe 254085cad9 docs: fix markdown rendering with @rawHTML directive
Phase 1 complete: Fix rawHTML function in template
- Change { doc.Content } to @rawHTML(doc.Content)
- Ensures markdown converts to HTML properly
- Fixes headings, lists, code blocks formatting
2026-02-02 08:51:33 -05:00
john-okeefe f5b61d2aea Remove book files from uploads directory
- Remove all EPUB, PDF, and cover image files
- Keep metadata.opf files for reference
- Clean up uploads directory to reduce repository size
2026-02-02 08:14:01 -05:00
john-okeefe e58849397c promote goldmark dependencies to direct 2026-02-01 21:20:48 -05:00
john-okeefe a8e904a7fb regenerate templ files with updated file paths 2026-02-01 21:18:05 -05:00
john-okeefe 711bab142c update .gitignore for build artifacts 2026-02-01 21:18:04 -05:00
john-okeefe 1e8cfa1008 Phase 1: Fix markdown rendering
- Add rawHTML helper function using template.HTML()
- Update docs template to use { template.HTML(doc.Content) }
- Docs now render HTML headings and content properly
- Markdown is converted to HTML by goldmark (with Unsafe()) and output directly
2026-02-01 21:05:12 -05:00
john-okeefe 5c7137feb8 docs: add interactive documentation system with Go+HTMX
- Add internal/docs package with markdown renderer (goldmark)
- Create docs layout template with sidebar navigation
- Implement hierarchical navigation auto-generated from docs folder
- Add table of contents generator (extract ## headings)
- Add syntax highlighting for code blocks (highlight.js)
- Add mobile responsive design
- Add /docs routes to main.go

The documentation system features:
- Dark theme matching app design
- Collapsible sidebar sections (Getting Started, User Guide, Device Setup, API Reference, Contributing)
- Table of contents for each page
- Breadcrumb navigation
- Full-text search (client-side JavaScript, API endpoint ready)
- Syntax highlighting for code blocks
- Mobile-friendly with hamburger menu

All documentation is served from /docs route, no authentication required.
Markdown files are rendered using goldmark with GFM extensions and syntax highlighting.
2026-02-01 18:33:55 -05:00
john-okeefe 555bd0df15 docs: update references for new configuration structure
- Update README.md with simplified documentation links
- Update docs/API_REFERENCE.md formatting and structure
- Update docs/SYNC_USER_GUIDE.md with minor improvements

These updates reflect the reorganized documentation structure
and new configuration approach with defaults in docker-compose.yml.
2026-02-01 17:34:21 -05:00
john-okeefe 7d1fc546a8 config: move operational defaults to docker-compose.yml
- Add conversion service configuration with sensible defaults
  - BOOKHOARD_CONVERSION_CACHE_DIR: /app/cache/kepub
  - BOOKHOARD_CONVERSION_TOOL: /usr/bin/kepubify
  - BOOKHOARD_CONVERSION_CACHE_TTL: 24h
  - Add named volume for conversion cache
- Add rate limiting configuration with defaults
  - TEST_MODE: false
  - RATE_LIMIT_ENABLED: true
  - REQUESTS_PER_MINUTE: 10
- Simplify .env.example to only required secrets (JWT_SECRET, DBPASS)
- Add section comments to docker-compose.yml for better organization
- Document optional overrides in .env.example comments

This change separates secrets (in .env) from operational configuration
(in docker-compose.yml), following security best practices while
maintaining flexibility for custom deployments.
2026-02-01 17:34:00 -05:00
john-okeefe 7135571de8 docs: reorganize documentation structure for users and self-hosters
- Remove internal development docs (phase tracking, implementation plans, security audits)
- Move DEVELOPMENT.md to docs/contributing/ for contributor guidance
- Move TROUBLESHOOTING.md from root to docs/ folder
- Add docs/INDEX.md as navigation hub for all documentation
- Clean up docs to focus on user/self-hoster facing content

This reorganization separates user-facing documentation from
internal contributor documentation, making the project more
approachable for self-hosters.
2026-02-01 17:33:40 -05:00
john-okeefe 6592db2c65 Update Go struct field names: BookmannUuid → BookhoardUuid
Complete the rename by updating:
- DeviceCatalogs struct field: BookmannUuid → BookhoardUuid (models.go)
- Generated queries: Update all references (queries.sql.go)
- Local variables: bookmannUUID → bookhoardUUID (kobo.go)
- Struct field access: catalog.BookmannUuid → catalog.BookhoardUuid

All "bookmann" and "BOOKMANN" references are now eliminated from the codebase.

Part of project rename to Bookhoard.
2026-02-01 16:26:59 -05:00
john-okeefe 5b9f21a592 Final cleanup: Update remaining comments and variable names
Changes:
- Update comments: "Bookmann UUID" → "Bookhoard UUID"
- Rename sidecar struct field: Bookmann → Bookhoard
- Update type names: SidecarBookmannConfig → SidecarBookhoardConfig
- Fix test database name in queue_test.go
- Fix uppercase env var examples in KOBO_SETUP.md

Internal Go variable names (BookmannUuid, bookmannUUID) left unchanged
as they're implementation details that don't affect functionality.

Part of project rename to Bookhoard.
2026-02-01 16:24:58 -05:00
john-okeefe 6d9b36be82 Regenerate templates after import path updates
Template changes:
- Regenerate all .templ files after bookmann → bookhoard import path changes
- Reformat queue.templ with consistent formatting
- Update generated .go template files

Part of project rename to Bookhoard.
2026-02-01 16:21:27 -05:00
john-okeefe 655ed9225f Update code references and tests: Bookmann → Bookhoard
Code changes:
- main.go: Update cache directory path
- sidecar.go: Update file extension (.bookmann.json → .bookhoard.json)
- security.go: Update CORS example URLs
- queue_test.go: Update test database name
- feed_test.go: Update test assertions
- phase1_integration_test.go: Update test email addresses
- TEST_COVERAGE.md: Update project references

Part of project rename to Bookhoard.
2026-02-01 16:21:10 -05:00
john-okeefe 153b330dd1 Update database schema and queries: Bookmann → Bookhoard
Database changes:
- schema.sql: Update column name bookmann_uuid → bookhoard_uuid
- schema.sql: Update index names and example URLs
- queries.sql: Update all SQL queries to use bookhoard_uuid
- Update example configuration values

Part of project rename to Bookhoard.
2026-02-01 16:21:03 -05:00
john-okeefe ff96ffa92d Update documentation and API tests: Bookmann → Bookhoard
Documentation updates:
- All docs/ files: Update project references
- Bruno API collection: Update collection name and tests
- Device setup guides: Update all examples
- Implementation plan: Update database schema examples
- README files: Update project references

Part of project rename to Bookhoard.
2026-02-01 16:20:56 -05:00
john-okeefe 547bc6f8f8 Update legal files and build configuration: Bookmann → Bookhoard
Root level changes:
- LICENSE: Update copyright notice to Bookhoard
- .gitignore: Update build artifact patterns
- package.json: Update package name to bookhoard
- TROUBLESHOOTING.md: Update all references and examples
- README.md: Update database connection examples

Part of project rename to Bookhoard.
2026-02-01 16:20:49 -05:00
john-okeefe 4e1feca124 Rename test file references: Bookmann → Bookhoard
Test file updates:
- Update import paths in test files: bookmann/internal → bookhoard/internal
- Update test helper functions and references
- Update test comments and documentation

This is part 6 of the project rename to Bookhoard.
2026-02-01 16:12:18 -05:00
john-okeefe 67629b0c14 Rename project documentation: Bookmann → Bookhoard
Documentation updates:
- Update README.md title and all references
- Update PROJECT_GUIDELINES.md title and guidelines
- Update all documentation files in docs/ directory
- Update device setup guides (Kobo, KOReader)
- Update API and architecture documentation
- Update completion summaries and progress reports

This is part 5 of the project rename to Bookhoard.
2026-02-01 16:12:12 -05:00
john-okeefe 96825e3bc2 Rename API test collection references: Bookmann → Bookhoard
Bruno API test updates:
- Update test assertions: X-Bookmann-* → X-Bookhoard-*
- Update variable names and references in test scripts
- Update documentation and comments in API tests

This is part 4 of the project rename to Bookhoard.
2026-02-01 16:12:05 -05:00
john-okeefe bb713f6300 Rename frontend template references: Bookmann → Bookhoard
Template changes:
- Update page titles: "Bookmann" → "Bookhoard"
- Update header branding and navigation text
- Regenerate compiled .go templates from .templ sources
- Update all UI references in HTML templates

This is part 3 of the project rename to Bookhoard.
2026-02-01 16:11:59 -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 d43e0105eb Rename project module and database references: Bookmann → Bookhoard
Core infrastructure changes:
- Update Go module name: bookmann → bookhoard
- Rename database schema references and comments
- Update database column names: bookmann_uuid → bookhoard_uuid
- Rename SQL query functions: GetDeviceCatalogByBookmannUUID → GetDeviceCatalogByBookhoardUUID
- Update configuration defaults

This is part 1 of the project rename to Bookhoard.
2026-02-01 16:11:47 -05:00
john-okeefe 033271d267 Update project configuration for Bookhoard organization rename
Phase 1 of Gitea repository migration:
- Rename docker containers: bookmann_db → bookhoard_db, bookmann → bookhoard
- Update database name: bookmann → bookhoard
- Rename environment variables: BOOKMANN_* → BOOKHOARD_*
- Update documentation references to new project name

This prepares the codebase for migration to Bookhoard organization.
2026-02-01 16:10:29 -05:00
john-okeefe d0d86f19d6 refactor: remove all backward compatibility database views
Removed all 5 backward compatibility views from database schema:

1. ebooks view (lines 122-128)
   - Old API: /api/ebooks
   - Replaced by: media_items table with library_type filter

2. ebook_reading_progress view (lines 160-168)
   - Old API: mapped ebook_id alias
   - All progress routes now use reading_progress table directly

3. ebook_ratings view (lines 323-331)
   - Old API: /api/ebooks/:id/rating
   - Replaced by: media_ratings table

4. ebook_notes view (lines 333-341)
   - Old API: /api/ebooks/:id/notes
   - Replaced by: media_notes table

5. ebook_highlights view (lines 343-351)
   - Old API: /api/ebooks/:id/highlights
   - Replaced by: media_highlights table

Verification:
- No code queries these views directly (all queries use base tables)
- No handlers reference these views
- Bruno API tests use /api/media-items endpoints
- Application compiles successfully

This completes Phase 4 of legacy code cleanup.
All backward compatibility layers removed, codebase uses base tables directly.
2026-02-01 15:18:09 -05:00
john-okeefe 8d7a7a8045 docs: add code modification safety protocols to guidelines
Added 110 lines of safety guidelines to prevent future bugs:

New CRITICAL PROHIBITIONS:
- NEVER delete code without reading full context (20 lines before/after)
- NEVER make cascading fix-up edits without git diff review
- NEVER skip post-edit verification

New MANDATORY REQUIREMENTS:
- Post-Edit Verification (mandatory for all file modifications)
- Backup Before Large Changes
- Large Deletion Safety Pattern

New ERROR RECOVERY PROTOCOL:
- Immediate actions when mistakes occur
- Recovery examples with git commands
- Prevention learning points

New WORKFLOW CHECKLISTS:
- Error Recovery Protocol
- Phase Completion Verification

These guidelines address the critical bug where auth functions were
accidentally deleted during cleanup, preventing recurrence.
2026-02-01 14:11:32 -05:00
john-okeefe d79dedf54d docs: add legacy cleanup completion summary
Added comprehensive documentation of Phases 1-3:
- Phase 1: Documentation cleanup details
- Phase 2: Dead code removal summary
- Phase 3: Test suite cleanup details
- Complete statistics and verification results

This document serves as a record of the legacy code cleanup
work completed in this session.
2026-02-01 14:11:29 -05:00
john-okeefe dacbea6f85 test: add comprehensive media-item ISBN validation tests
New test file with 5 test suites:
- TestMediaItemISBNNormalization (8 test cases)
- TestMediaItemISBNEdgeCases (3 test cases)
- TestMediaItemsPagination (5 test cases)
- TestMediaItemLibraryRequirement (2 test cases)
- TestUpdateMediaItemISBN (1 test case)

Features:
- Tests use /api/media-items endpoint (not deprecated /api/ebooks)
- Real API calls (not mock handlers)
- Comprehensive ISBN-10/ISBN-13 normalization coverage
- Pagination validation with limit/offset edge cases
- Library requirement validation

This replaces the functionality lost from isbn_and_library_test.go
with modern, working tests using current API endpoints.

Phase 3: Test Suite Cleanup - Replacement Tests
2026-02-01 14:11:24 -05:00
john-okeefe 01321d1720 test: remove outdated ISBN normalization tests
- Deleted isbn_and_library_test.go (507 lines)
- All tests used deprecated /api/ebooks endpoint
- Tests were mock-based, not real API calls
- Functionality will be replaced with modern tests

This is part of legacy code cleanup Phase 3.
Phase 3: Test Suite Cleanup
2026-02-01 14:11:18 -05:00
john-okeefe 72db266e23 test: remove outdated ebook pagination tests
- Removed TestPaginationAndFiltering function
- Deleted 4 test cases using deprecated /api/ebooks endpoint
- Tests for pagination already exist in library_test.go using /api/media-items

This is part of legacy code cleanup Phase 3.
Phase 3: Test Suite Cleanup
2026-02-01 14:11:17 -05:00
john-okeefe 6bdf4bfcd4 refactor: remove deprecated ebook folder handlers and restore auth functions
Phase 2: Dead Code Removal

Removed:
- AddEbookFolder handler (deprecated)
- GetEbookFolders handler (deprecated)
- DeleteEbookFolder handler (deprecated)
- AddEbookFolderRequest struct
- DeleteEbookFolderRequest struct
- EbookFolderResponse struct

Fixed:
- Restored Register function (user registration)
- Restored Login function (user authentication)
- Restored GetProfile function
- Restored UpdateProfile function
- Restored UserProfile struct
- Restored UpdateProfileRequest struct

Note: Critical auth functions were accidentally deleted during cleanup
and have been restored to maintain application functionality.
2026-02-01 14:10:57 -05:00
john-okeefe a67fa0f142 docs: remove backward compatibility comments from ebook handler
- Removed comment about 'Ebook notes handlers (backward compatibility using views)'
- Removed comment references to non-existent GetEbookNotes and GetEbookHighlights
- Cleaned up misleading legacy documentation

This is part of legacy code cleanup Phase 1.
Phase 1: Documentation Cleanup
2026-02-01 14:09:34 -05:00
john-okeefe 19d12c3a6b docs: remove migration comments from database schema
- Removed comment about user_ebook_folders table replacement
- Removed comment about library system transition
- Historical migration documentation removed

This is part of legacy code cleanup Phase 1.
Phase 1: Documentation Cleanup
2026-02-01 14:09:33 -05:00
john-okeefe 93aa130adc docs: remove backward compatibility documentation sections
- Removed 'Ebook Compatibility (Backward Compatible)' section
- Removed 'Backward Compatibility Views' from database docs
- Removed backward compatibility bullet point from Database Schema section
- Cleaned up legacy API references from README

This is part of legacy code cleanup Phase 1.
Phase 1: Documentation Cleanup
2026-02-01 14:09:13 -05:00
john-okeefe a2b26e68c5 chore: remove obsolete implementation plan documents 2026-02-01 13:21:39 -05:00
john-okeefe d906ef3e4d docs: add testing guide and progress routes analysis documentation 2026-02-01 13:21:37 -05:00
john-okeefe e28776c7a6 test(api): add Bruno API tests for devices, media items, and progress 2026-02-01 13:21:35 -05:00
john-okeefe 351c68b0b8 test: add comprehensive test coverage for API endpoints and services 2026-02-01 13:21:34 -05:00
john-okeefe 9b1282cd08 test: remove hardcoded refresh token test from main_test.go 2026-02-01 13:21:32 -05:00
john-okeefe 3159e28b36 docs(api): add comprehensive API documentation for new features
- Analytics API endpoints (reading stats, device usage, popular books)
- Bulk operations for conflicts, books, and collections
- Book matching and auto-linking endpoints
- Unlinked book management
- OPDS on-the-fly conversion
- Request/response examples for all endpoints
- Authentication requirements and error handling
2026-02-01 12:16:25 -05:00
john-okeefe 85df19c242 docs: add phase summaries and conversion service documentation
- Phase 6: WebSocket verification and bulk operations summary
- Phase 1: Device management completion summary
- Phase 2: Quick completion summary and detailed notes
- Conversion service: Architecture and implementation details
- Document caching strategy, TTL configuration, and performance considerations
2026-02-01 12:16:22 -05:00
john-okeefe 2521a8c966 test(api): add Bruno tests for sync-kobo and OPDS features
Sync-Kobo:
- Auto link books endpoint tests
- Bulk link books endpoint tests
- Get unlinked book suggestions endpoint tests

OPDS:
- Download book with on-the-fly KEPUB conversion tests

All tests cover no user, user, and admin contexts
2026-02-01 12:16:19 -05:00
john-okeefe 2df5ca3325 test(api): add Bruno tests for analytics, books, and bulk operations
Analytics:
- Reading stats endpoint tests
- Device usage tests
- Popular books tests

Books:
- Bulk delete tests
- Bulk update tests

Collections:
- Bulk add books to collections tests

Conflicts:
- Bulk resolve conflicts tests
- Bulk dismiss conflicts tests
- Bulk resolve highest progress tests

All tests cover no user, user, and admin contexts
2026-02-01 12:16:07 -05:00
john-okeefe ef8f39bd5a feat(templates): add unlinked books management UI
- Display paginated list of unresolved unlinked books
- Show match suggestions with confidence scores
- Bulk linking interface
- Auto-link with configurable threshold
- Device and file metadata display
2026-02-01 12:16:02 -05:00
john-okeefe 9d5ee483b5 fix(templates): update conflict, progress, and queue templates
- Add bulk resolve/dismiss UI for conflicts
- Add high-progress bulk resolve shortcut
- Update progress display for new analytics data
- Update queue UI for better sync visibility
2026-02-01 12:15:57 -05:00
john-okeefe 2207bb5b9f fix(templates): update admin templates for new features
- Add collection bulk operations UI
- Add book bulk actions
- Update navigation for analytics page
2026-02-01 12:15:54 -05:00
john-okeefe c5f327b991 refactor(routes): add new bulk and analytics endpoints, clean up SSR
New endpoints:
- Analytics: /analytics, /analytics/reading-stats, /analytics/device-usage, /analytics/popular-books
- Sync bulk: /sync/bulk-link-books, /sync/auto-link-books, /sync/unlinked-books/:id/suggestions
- Collections bulk: /collections/bulk-add-books
- Books bulk: /books/bulk-delete, /books/bulk-update
- Conflicts bulk: /conflicts/bulk-resolve, /conflicts/bulk-dismiss
- OPDS: /opds/devices/:deviceId/* (catalog, search, nav, download, cover, formats)

Removed:
- Redundant SSR template routes (consolidated into handler methods)
- Manual JWT parsing in routes (use middleware)
- Legacy dashboard and bookshelf routes

Created conversion service instance for OPDS integration
2026-02-01 12:15:52 -05:00