Skip to content

Release v1.0.0

Choose a tag to compare

@github-actions github-actions released this 05 Dec 13:05

Added

Core Application

  • Complete rewrite from Python to Go for improved performance and deployment
  • Multi-architecture Docker support (amd64, arm64)
  • Database support for both SQLite and PostgreSQL
  • Graceful shutdown handling with context cancellation
  • Version information embedded at build time

CLI Commands

  • generate - Generate themed playlists for Tunarr channels
    • Single theme or all themes generation
    • Dry-run mode for preview without applying
    • Result reporting with statistics
  • sync - Synchronize media catalog from Radarr/Sonarr
    • Selective sync (movies only, series only, or all)
    • Cleanup option for removed media
  • scan - Display media library statistics
    • Detailed information mode
    • Source-specific scanning
  • serve - HTTP server mode with RESTful API and scheduler
    • Configurable HTTP port
    • Optional cron scheduler for automated generation
    • Prometheus metrics endpoint
    • Health and readiness checks
  • trakt - Trakt.tv media exploration commands
    • Trending movies and shows
    • Popular content discovery
    • Search functionality
  • version - Display version and build information

Structured Logging

  • Comprehensive structured logging using stdlib log/slog
  • Dual output formats: human-readable text and JSON
  • Debug mode with source file and line information
  • Custom time formatting for readability
  • Global context (version, app name) in all logs
  • Following Prometheus/Alertmanager patterns
  • Proper log levels: DEBUG, INFO, WARN, ERROR

Configuration

  • YAML-based configuration with environment variable overrides
  • Viper for flexible configuration management
  • Validation for all required settings
  • Support for multiple themes with detailed criteria
  • Cooldown configuration per media type
  • Server configuration for HTTP mode

Services

  • Playlist Generator: Orchestrates theme-based playlist generation
  • Similarity Scorer: Ranks media by genre, keywords, and ratings
  • Cooldown Manager: Prevents media replay too soon
  • Media Sync: Fetches and caches metadata from Radarr/Sonarr

API Clients

  • Radarr Client: Movie library integration
  • Sonarr Client: TV/anime library integration
  • Tunarr Client: Channel programming management
  • Trakt Client: Media metadata and trending content integration
    • Full API v2 support
    • Trending and popular content
    • Search functionality
    • Movie and show details
  • Ollama Client: LLM integration for intelligent selection

HTTP API Server

  • RESTful API endpoints for all operations
  • Health and readiness checks
  • Prometheus metrics export
  • Media listing and synchronization endpoints
  • Theme management and generation endpoints
  • Play history and cooldown tracking endpoints
  • Webhook support for automation
  • Graceful shutdown with timeout
  • JSON response format
  • Configurable timeouts and ports

Scheduler

  • Cron-based automated playlist generation
  • Configurable schedule per theme
  • Panic recovery and logging
  • Manual trigger support
  • Status reporting (next run, job count)
  • Integration with serve command
  • Default schedule: daily at 2 AM

Database

  • Abstract database interface supporting multiple drivers
  • SQLite implementation for single-instance deployments
  • PostgreSQL implementation for production deployments
  • Automatic schema migrations
  • Repository pattern for data access
  • Connection pooling and context support

Testing

  • Unit tests for configuration validation
  • Unit tests for model structures
  • Test coverage reporting via Codecov
  • Table-driven test patterns

Kubernetes & Deployment

  • Comprehensive Helm chart for Kubernetes deployment
    • Full manifest templates (Deployment, Service, ConfigMap, Secret, etc.)
    • PersistentVolumeClaim for SQLite data
    • Ingress with TLS support
    • ServiceMonitor for Prometheus Operator
    • HorizontalPodAutoscaler support
    • Security contexts (non-root, read-only filesystem)
    • Resource requests and limits
    • Health probes configuration
  • ArgoCD ApplicationSet for GitOps deployment
    • Multi-environment support (production, staging)
    • Automatic sync and self-healing
    • Retry logic with exponential backoff
    • Notification support
  • Environment-specific values files
    • Production configuration with HA
    • Staging configuration for testing
  • Complete Helm chart documentation

CI/CD

  • GitHub Actions workflow for automated builds
  • Multi-platform Docker image builds (amd64, arm64)
  • Automated testing with race detection and coverage
  • golangci-lint for comprehensive linting (20+ linters)
  • gosec for security scanning with SARIF upload
  • Docker image publishing to GHCR
  • Release workflow triggered by semver tags
  • Automatic release note generation from CHANGELOG
  • SBOM generation and upload

Changed

  • Breaking: Migrated from Python to Go - incompatible with previous Python version
  • Breaking: New configuration format (YAML-based)
  • Breaking: Database schema redesigned for Go implementation
  • Improved performance and memory efficiency
  • Better error handling with wrapped errors
  • Enhanced observability with structured logging

Removed

  • Python implementation and dependencies
  • Legacy Python-specific features
  • Old configuration format

Fixed

  • Configuration loading now properly handles defaults
  • Database connection properly closes on shutdown
  • Graceful signal handling for clean shutdowns

Security

  • Non-root Docker user (UID 1000)
  • API key validation at startup
  • Secure database connection string handling
  • No secrets in logs

Full Changelog: https://github.com/geekxflood/program-director/commits/v1.0.0