Changes
🚀 Base Path Support & Structured Logging Enhancements
Overview
Added comprehensive reverse proxy subfolder support with dynamic base path configuration, alongside standardized structured logging across all services for improved observability and debugging.
Key Updates
Base Path Support
- Reverse proxy integration: New
basePath
environment variable enables running Pulsarr under any subfolder path - Full application coverage: Client routing, API endpoints, static assets, and Swagger documentation all respect configured base path
- Runtime injection: Server dynamically injects base path configuration into client bundle
- Seamless operation: Automatic path handling for all client-server communication
- Zero configuration default: Works out-of-box at root path, optional for subfolder deployments
Structured Logging Improvements
- Consistent error format: Standardized error logging patterns across all services
- Enhanced searchability: Added descriptive messages to all structured log calls
- Better context: Improved debug logging with proper context objects and meaningful field names
- Pino best practices: Aligned with Pino v9 structured logging patterns for optimal parsing
- Service-wide coverage: Updated 36 files including plex-label-sync, watchlist workflow, database methods, and integrations
Technical Changes
Base Path Architecture
- URL normalization: New utility function for consistent base path handling
- Client API wrapper: Added helper function to automatically prepend base path to all API calls
- Router configuration: Enhanced React Router with dynamic basename support
- Asset resolution: Updated Vite configuration for runtime base path asset handling
Logging Refactor
- Major service updates: Comprehensive logging improvements in plex-label-sync (1,553 lines), watchlist services, and database methods
- Pattern consistency: All error logging follows structured format with context objects and descriptive messages
- Debug enhancements: Added missing log messages and improved context throughout codebase
- PostgreSQL integration: Enhanced configuration logging with structured format
Migration & Compatibility
No database migrations required - All changes are configuration and code improvements. Base path support is entirely optional via environment variable, defaulting to root path for existing deployments.
Full Changelog: v0.5.17...v0.5.18
Docker Image: lakker/pulsarr:latest
Upgrade Path: Standard Docker image update
- Feat: Base Path Support & Structured Logging Enhancements (#617) @jamcalli
- refactor(logging): standardize error logging format across services (#616) @jamcalli
- Feat/base path support (#613) @jamcalli
- chore: pin node (#610) @jamcalli
🔄 Dependencies
- chore(deps): update react (#615) @renovate[bot]
- chore(deps): update docker/login-action digest to 5e57cd1 (#614) @renovate[bot]
- chore(deps): lock file maintenance (#612) @renovate[bot]
- chore(deps): update dependency @vitejs/plugin-react to v5.0.4 (#611) @renovate[bot]
- chore(deps): pin node.js to 22.20.0 (#609) @renovate[bot]
- chore(config): migrate renovate config (#608) @renovate[bot]
Docker
docker pull lakker/pulsarr:0.5.18
Contributors
@actions-user, @jamcalli, @renovate[bot] and renovate[bot]