Commit Graph
33 Commits
Author SHA1 Message Date
john-okeefe 94a4facc6c chore(deps): promote golang.org/x/net to direct dependency
Release / build-and-push (push) Successful in 3m2s
Pulled in as a direct requirement by templ v0.3.1020 code generation; it was previously only an indirect dependency.
2026-08-05 15:31:48 -04:00
john-okeefe d42d09b8db chore: upgrade templ v0.3.1001 → v0.3.1020, pin in Dockerfile
Newer templ generates ResolveAttributeValue calls that don't exist in
v0.3.1001 runtime, causing Docker build failures ("undefined:
templ.ResolveAttributeValue"). Pin templ CLI version in Dockerfile to
match go.mod instead of using @latest.

Also updated local templ CLI to v0.3.1020 to match.
2026-05-10 16:13:36 -04:00
john-okeefe 4e326dfc86 chore: bump Go dependencies
- github.com/andybalholm/brotli 1.2.0 -> 1.2.1
- github.com/go-playground/validator/v10 10.30.1 -> 10.30.2
- github.com/jackc/pgx/v5 5.9.1 -> 5.9.2
- github.com/labstack/echo/v5 5.0.4 -> 5.1.0
- github.com/yuin/goldmark 1.7.17 -> 1.8.2
- golang.org/x/crypto 0.49.0 -> 0.50.0
- golang.org/x/text 0.35.0 -> 0.36.0
- golang.org/x/image 0.37.0 -> 0.39.0
- golang.org/x/net 0.52.0 -> 0.53.0
- golang.org/x/sys 0.42.0 -> 0.43.0
- Various indirect dependency updates
2026-04-20 20:42:52 -04:00
john-okeefe 45df899889 chore: bump Go toolchain from 1.25.0 to 1.26.0
Update go.mod directive to target Go 1.26.0.
2026-04-20 08:57:27 -04:00
john-okeefe ea718b663d Reader progress display fix and dependency updates
- Add readerReady event listener to progress-indicator.ts to ensure
  progress displays correctly when reader finishes loading
- Update bruno environment variable values for testing
- Move bluemonday from indirect to direct dependency in go.mod
- Clean up unused indirect dependencies in go.sum
2026-04-04 22:49:16 -04:00
john-okeefe e1723d60bd deps: add bluemonday HTML sanitizer
Add github.com/microcosm-cc/bluemonday for safe HTML sanitization.
This library is industry-standard, actively maintained, and has zero
telemetry/network calls.

License: BSD-3-Clause (compatible with project's GPL-3 license)
Used for sanitizing book description HTML before rendering.
2026-03-28 23:54:30 -04:00
john-okeefe b43e47139b chore: update Go module dependencies
Update dependencies to latest versions:

Major updates:
- github.com/jackc/pgx/v5: v5.8.0 -> v5.9.1
  * PostgreSQL driver for database connectivity

- github.com/klauspost/compress: v1.18.4 -> v1.18.5
  * Compression library for various formats

- github.com/pierrec/lz4/v4: v4.1.25 -> v4.1.26
  * LZ4 compression algorithm

- github.com/yuin/goldmark: v1.7.16 -> v1.7.17
  * Markdown parser for book descriptions

- golang.org/x/crypto: v0.48.0 -> v0.49.0
  * Cryptography primitives

- golang.org/x/text: v0.34.0 -> v0.35.0
  * Text processing utilities

Transitive dependency updates:
- golang.org/x/image, golang.org/x/net, golang.org/x/sync
- golang.org/x/sys, golang.org/x/time
- github.com/mattn/go-runewidth

All updates are backward compatible minor/patch versions.
2026-03-22 20:35:15 -04:00
john-okeefe 687815ce2e build: upgrade Echo framework from v4 to v5
- Update github.com/labstack/echo from v4 to v5
- Update github.com/labstack/echo-jwt to v5
- Update all Echo-related dependencies in go.sum

This upgrade provides:
- Better type safety with pointer-based context
- Improved WebSocket support with rwUnwrapper interface
- Updated middleware APIs (Logger → RequestLogger)
- Better HTTP server lifecycle management
2026-03-06 13:59:53 -05:00
john-okeefe ff68c1aa49 chore: update Go dependencies
- Update github.com/a-h/templ from v0.3.977 to v0.3.1001
- Update github.com/pdfcpu/pdfcpu from v0.9.1 to v0.11.1
- Update indirect dependencies including:
  - golang.org/x/image from v0.21.0 to v0.36.0
  - golang.org/x/net from v0.50.0 to v0.51.0
  - github.com/mattn/go-runewidth from v0.0.16 to v0.0.20
  - Add github.com/clipperhouse/uax29/v2 v2.7.0
  - Add github.com/hhrutter/pkcs7 v0.2.0
  - Update github.com/hhrutter/tiff from v1.0.1 to v1.0.2
  - Remove github.com/rivo/uniseg (no longer needed)
2026-03-06 01:52:26 -05:00
john-okeefe 570048c96c Add pdfcpu dependency for PDF metadata and cover extraction
- Add github.com/pdfcpu/pdfcpu v0.9..mod
1 to go- Run go mod tidy to fetch sub-packages (pdfcpu/pkg/api)
2026-02-25 20:53:02 -05:00
john-okeefe a8920a8f6c Add dashboard redesign, custom section builder, and enhanced search functionality
Features:
- Complete dashboard redesign with improved UI components and layout
- Implement custom section builder for personalized book organization
- Add new events tracking system for user interactions
- Enhance search functionality with better static search.js
- Update TypeScript type definitions for API responses

Backend:
- Update Go dependencies in go.mod
- Add new frontend routes in router

Templates:
- Update admin and dashboard templates with new components

Frontend:
- Refactor analytics, collections, conflicts, and queue modules
- Add new documentation features in docs.ts
- Implement linking between books and collections
- Add toast notifications for user feedback
- Include placeholder book SVG asset

This commit consolidates multiple feature additions and improvements
across the entire stack including backend, templates, and frontend.
2026-02-25 16:56:10 -05:00
john-okeefe 82efb0d635 chore: remove go4.org dependency and associated telemetry packages
Removed go4.org and its transitive dependencies from go.mod and go.sum:
- go4.org (unused dependency)
- google.golang.org/api/* packages
- google.golang.org/genproto/* packages
- cloud.google.com/go/* packages
- gocloud.dev/* packages

Total reduction: ~4.9 MB of unnecessary telemetry dependencies.
All functionality preserved through vendored sevenzip package.
2026-02-22 16:29:25 -05:00
john-okeefe 87e28d18ff chore(deps): upgrade indirect dependencies
Upgrades indirect dependencies:
- davecgh/go-spew: v1.1.1 → v1.1.2
- kr/pretty: v0.3.0 → v0.3.1
- pmezard/go-difflib: v1.0.0 → v1.0.1
- stretchr/objx: v0.5.2 → v0.5.3
- xyproto/randomstring: v1.0.5 → v1.2.0

Also upgrades related cloud, opentelemetry, and grpc
dependencies to their latest compatible versions.

Build and all tests passing.
2026-02-22 13:13:43 -05:00
john-okeefe 9e420b63ad chore(deps): upgrade core dependencies
- pgx/v5: v5.4.3 → v5.8.0
- golang-jwt/jwt/v5: v5.3.0 → v5.3.1
- echo/v4: v4.13.4 → v4.15.1
- google/uuid: v1.4.0 → v1.6.0
- golang.org/x/crypto: v0.46.0 → v0.48.0
- golang.org/x/text: v0.33.0 → v0.34.0

Also updates indirect dependencies including puddle/v2, brotli,
regexp2, and other transitive deps.

Build and tests passing with pgx v5.8.0 (internal/anynil package
removed but not used by our code).
2026-02-22 13:11:06 -05:00
john-okeefe 587f6c32ad feat: add golang.org/x/text dependency for titlecasing
Add direct dependency on golang.org/x/text to support proper
titlecasing with punctuation preservation (hyphens, apostrophes).

Required for enhanced tag and contributor normalization.
2026-02-08 11:03:26 -05:00
john-okeefe cedea0f0eb feat(deps): add golang.org/x/text dependency
Added golang.org/x/text v0.33.0 for proper titlecasing support in tag
normalization. Required for dual-field normalization to display tags in
title case (e.g., "Science Fiction", "Non-Fiction") while maintaining
search fields in lowercase without punctuation.
2026-02-08 00:43:12 -05:00
john-okeefe c5fe25fd9d feat(scanner): add multi-format comic/manga metadata extraction
Phase 3 of scanner enhancement plan

Supported archive formats:
- .cbz (ZIP archives)
- .cbr (RAR archives)
- .cb7 (7-Zip archives)
- .cbt (TAR archives)
- .tar.gz, .tar.bz2 (Compressed TAR)

Features:
- Extract ComicInfo.xml metadata from all supported formats
- Extract cover images from archives
- Fall back to filename-based metadata if ComicInfo.xml not found
- Integrate into scanner workflow for automatic metadata extraction

Dependencies added:
- github.com/nwaples/rardecode v1.1.3 (MIT license, pure Go RAR)
- github.com/bodgit/sevenzip v1.6.1 (MIT license, pure Go 7-Zip)

Uses pure Go libraries only - no CGO required, ensuring maximum
compatibility and cross-platform builds.

All formats use a unified archiveFile interface for clean,
maintainable code.
2026-02-07 17:07:41 -05:00
john-okeefe e58849397c promote goldmark dependencies to direct 2026-02-01 21:20:48 -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 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 aa362a8c7c Mark gorilla/websocket as direct dependency
Promote gorilla/websocket from indirect to direct dependency as it's used for WebSocket sync functionality
2026-01-31 11:46:00 -05:00
john-okeefe 9bfe14bb38 feat: add WebSocket connection manager infrastructure
Add ConnectionManager for real-time WebSocket communication:
- Message types for progress updates, annotations, conflicts
- Broadcast message structure with source device tracking
- Device connection tracking with user and device metadata
- Automatic broadcast loop with concurrent message delivery
- Connection management (add, remove, get by ID/user)
- Stale connection cleanup (2-minute timeout)
- Connection statistics by device type
- Background cleanup task runs every minute

This implements the core WebSocket infrastructure needed for
Week 9 of the Universal Sync Implementation Guide.
2026-01-30 21:46:53 -05:00
john-okeefe 23ad70158c Phase 2 Week 5: Device Registration & Management
Implement device registration and management system for universal sync.

Database Changes:
- Add device queries to queries.sql (CRUD operations, registration, auth)
- Add sync queue management queries
- Add conflict resolution queries
- Regenerate sqlc models with new device-related types

Device Handler (devices.go):
- InitiateRegistration: Start device registration with auth URL and QR code
- CheckRegistrationStatus: Poll for registration approval
- ListDevices: Get all devices for current user
- GetDevice: Get specific device details
- UpdateDevice: Update device settings (name, sync settings, frequency)
- DeleteDevice: Remove device from account
- ApproveDevice: User approves device registration via web
- RejectDevice: Reject pending device registration
- ListPendingRegistrations: Show all pending registrations
- generateDeviceToken: Generate secure Bearer token for devices

Device Authentication Middleware (device_auth.go):
- Authenticate: Validate device Bearer tokens
- RequirePermission: Check device permissions by type
- hasPermission: Define permissions per device type
- UpdateLastSeen: Auto-update device last_seen timestamp

Configuration:
- Add BaseURL field to Config for device setup URLs

API Endpoints:
POST /api/devices/register - Initiate device registration
POST /api/devices/register/status - Check registration status
GET /api/devices/approve/:id - Approve device (web UI)
POST /api/devices/reject/:id - Reject device
GET /api/devices - List user's devices
GET /api/devices/:id - Get device details
PUT /api/devices/:id - Update device settings
DELETE /api/devices/:id - Delete device
GET /api/devices/pending - List pending registrations

Bruno API Collection:
- Initiate Device Registration
- Check Registration Status
- List Devices
- Get Device
- Update Device
- Delete Device

Dependencies:
- github.com/skip2/go-qrcode for QR code generation

Device Types Supported:
- koreader: Calibre-compatible sync
- kobo: Kobo sync protocol
- web: Web interface
- mobile: Mobile apps

Device Permissions:
- sync:progress
- sync:annotations
- sync:metadata
- device:manage (web only)
2026-01-30 16:45:10 -05:00
john-okeefe 9d59986bde deps: update Go modules for new functionality
- Add testify/assert and testify/require for testing
- Update module dependencies after adding annotation features
- Ensure proper pgx v5 compatibility with new database operations
2026-01-28 15:44:15 -05:00
john-okeefe 3f7fae383c --no-verify 2026-01-28 12:23:10 -05:00
john-okeefe 8a951fb242 Update dependencies and fix main.go issues 2026-01-23 21:27:18 -05:00
john-okeefe adaa425136 Update dependencies and admin template 2026-01-23 17:43:04 -05:00
john-okeefe 5f5870b95d Migrate to templ: Convert all HTML templates to type-safe templ components
- Add templ dependency for type-safe HTML rendering
- Convert index.html, login.html, register.html, dashboard.html, admin.html, admin_profile.html, admin_library.html to .templ files
- Generate Go code with templ generate for compile-time safety
- Update server routes to use templ components with proper rendering
- Refactor JavaScript in dashboard to avoid backtick parsing conflicts
- Delete old HTML template files
- Clean up project by removing unnecessary files and binaries
2026-01-23 16:33:08 -05:00
john-okeefe c3769fe7f1 refactor: rename project back from shelf to bookmann
- Change Go module name back from 'shelf' to 'bookmann'
- Update all import paths back to 'bookmann' module
- Update README.md project name back to 'Bookmann'
- Update docker-compose.yml container names back to 'bookmann' and 'bookmann_db'
- Regenerate database code with restored module imports
2026-01-23 09:08:59 -05:00
john-okeefe 4318f8624b refactor: restructure project from bookmann to shelf
- Rename project from 'bookmann' to 'shelf'
- Move all backend/ contents to root level (flatten structure)
- Update Go module name from 'bookmann' to 'shelf'
- Update all import paths to use new 'shelf' module
- Update Dockerfile to work without backend/ subdirectory
- Update docker-compose.yml to use new structure and rename containers
- Update .gitignore for new file paths
- Update README.md with new project name and structure
- Regenerate database code with new module imports
2026-01-23 09:08:04 -05:00
john-okeefe d98a0675e1 Complete project cleanup: remove unneeded files, organize static assets, update .gitignore 2026-01-22 14:08:57 -05:00
john-okeefe 55c42f1f99 feat: Add comprehensive backend validation, toast notifications, and Tokyo Night theme
- Backend: Add server-side validation with go-playground/validator/v10
- Frontend: Add toast notifications for API errors with @zerodevx/svelte-toast
- UI: Complete Tokyo Night theme redesign with modern animations
- Docs: Update COMPLETE_DOCUMENTATION.md and README.md with all enhancements
- Validation: Email format, password strength, and input sanitization
- UX: Real-time error feedback, loading states, and responsive design
2026-01-21 20:01:18 -05:00
john-okeefe 7448dfff30 added echo framework and created a hello world 2026-01-14 20:00:07 -05:00