Skip to content

Catalogerr Changelog

v1.2.0 (2025-10-26 - live_build)

  • Added: Drives now get assigned UUIDv4 IDs instead of auto-increment integers (guarantees global uniqueness across installs).
  • Added: Poster re-cache now also processes connector_media entries, caching posters locally from their stored URLs.
  • Added: Detailed terminal logging for poster caching (metadata + connector_media paths clearly shown).
  • Changed: run_poster_cache upgraded with DB-first logic — pulls poster/backdrop directly from DB if present before attempting external lookups.
  • Changed: Drive insert logic now explicitly inserts (id, path) using UUIDs — no more NULL IDs in drives table.
  • Fixed: Connector poster caching now respects fallback posters and won’t leave broken URLs in DB.
  • Fixed: Metadata re-cache ensures both poster_url and backdrop_url always resolve to cached or fallback files (never left NULL).
  • Known: Connector poster caching still depends on external APIs if DB URLs are invalid — retry logic planned for v1.2.1.

v1.1.3 (2025-10-25 - live_build)

  • Added: install.sh installer script (auto-download release, setup directories, generate configs, and register systemd service).
  • Added: Automatic .env + config.yaml generation with secure defaults and interactive admin password prompt.
  • Added: Installer dynamically creates catalogerr-api.service with correct user/group, working directory, and gunicorn binary path.
  • Added: Admin registration script (admin.py) ensures admin user + API key seeded directly into the database.
  • Added: Poster re-cache flow now includes IMDb Guess Fallback — if TMDB + Sonarr/Radarr fail, system attempts to guess via IMDb search before fallback.
  • Changed: Poster caching order now standardized (TMDB → IMDb → Sonarr/Radarr → borrow connector_media → IMDb guess → fallback).
  • Changed: Poster caching task now includes detailed terminal logging (branch taken per media, source used, final cached path).
  • Changed: Installer now ensures backups/, db/, and static/posters directories are created with proper permissions for runtime user.
  • Changed: install.sh detects current sudo user (not always "docker") and applies correct ownership across files and DB.
  • Improved: DB schema initialization inside admin.py — guarantees users and api_keys tables exist.
  • Fixed: Permission errors when restoring backups — installer explicitly sets /etc/Catalogerr_live/backups writable by service user.
  • Fixed: Systemd WorkingDirectory mismatches by creating the unit dynamically instead of shipping a static file.
  • Known: install.sh still considered experimental — further testing required across different distros (Ubuntu/Debian/Alpine).

v1.1.2 (2025-10-24 - live_build)

  • Added: Archive detail page now displays enriched metadata (overview, genres, rating, TMDB link).
  • Added: Archive detail now shows related Seasons, Episodes, and Files tables with sizes.
  • Added: Redundancy stats now calculate Archive-only, Active-only, and Both (protected) media coverage.
  • Changed: Drive total_size values in DB (e.g. 2 TB, 1 TB) are now correctly parsed into bytes for capacity/utilization stats.
  • Changed: Utilization per-drive now computes percentage using parsed capacity (supports TB/GB text values in DB).
  • Changed: Stats page: redundancy coverage now shows clear percentages based on archive vs active cross-matching.
  • Fixed: API keys are now correctly reused from DB instead of regenerating on each login (prevents mismatched session keys).
  • Fixed: API key clearing on logout now properly closes all SSE streams and wipes localStorage.
  • Improved: api.js updated to always nuke stale keys before saving new ones and block reconnect loops.
  • Improved: Frontend SSE handling – streams are skipped until a fresh key is confirmed after login.
  • Changed: Login page redesigned: centered form fields, improved spacing, added logo + subtitle for better UX.
  • Changed: Redirect flow: invalid/missing API key forces user to /invalid_api with clear error messaging.
  • Changed: UI: Improved layout for archive details — posters, backdrops, and metadata are better aligned with Servarr-style UX.

v1.1.1 (2025-10-15 - live_build)

  • Changed: Frontend: All templates now consistently import /static/js/api.js for API helpers.
  • Fixed: Duplicate apiKey / apiFetch declarations that caused redirect loops.
  • Fixed: toggleSection not defined in settings.html due to missing script scope.
  • Refactored: Dashboard, Tasks, Settings, and Stats pages updated to use a single API key flow (X-Api-Key).
  • Reorganized project structure for easier development:
  • services/ → core logic (auth, tasks, jobs, settings, stats, utils)
  • routes/ → all Flask blueprints (tasks.py, catalog.py, system.py, etc.)
  • modules/ → connector + poster handling logic
  • static/js/api.js → shared API helpers (fetch, SSE, key handling)
  • templates/ → cleaned up, removed inline duplicate API code
  • 🐛 Fixed: SSE endpoints now accept ?api_key= consistently (no more 401 spam).
  • 🔧 Changed: Version bump: internal cleanup release before adding new Phase 2 features.

v0.1.0 (2025-10-04 - dev_build)

  • Added: Apps page (/connector) to manage external connectors (Sonarr/Radarr)
  • Added: Sonarr/Radarr connector UI (add/edit/test) with Sonarr-style cards, masked keys, and modal form
  • Added: Connector config persisted to connector.yaml via modules.connector
  • Added: Connector APIs:
  • GET /api/v3/connectors – list connectors
  • POST /api/v3/connectors – add/update connector
  • GET /api/v3/connectors/test/<app_type> – handshake / test connection
  • Added: Background task connector_stats (every 5m) to ping Sonarr/Radarr (/system/status, /queue, /diskspace) and store snapshots
  • Added: Background task connector_media_sync to import full libraries from Sonarr (/series) and Radarr (/movie)
  • Added: Background task media_poster_backfill to enrich posters via TMDB (fallback-safe)
  • Added: Active Catalog page (/active-catalog) powered by /api/v3/catalog/active
  • Added: Active Media Detail (/api/v3/catalog/active/<id>) with deep links back to native apps
  • Added: UNIQUE constraint on (connector_id, external_id) in connector_media + duplicate cleanup
  • Added: Sidebar buttons for Apps (🔌) and Active Catalog (📺)
  • Added: Logo integration in sidebar with clickable link back to home
  • Added: Favicon/logo support for browser tabs
  • Added: Static Changelog page to track changes and fixes
  • Added: API endpoint /api/v3/enrich to re-enrich metadata posters
  • Added: Poster caching with SHA1-hashed filenames in /static/poster
  • Added: Automatic fallback strategy for posters (TMDB → title search → default)
  • Changed: Frontend sends stored apiKey as X-Api-Key; backend auth check tightened
  • Changed: Environment editor widgets are now collapsible and persist state with localStorage
  • Fixed: Scheduler task registration (stable IDs, correct kwargs)
  • Fixed: 404 issues for missing posters by forcing re-cache and DB update
  • Fixed: Sidebar logo sizing and alignment to left

v0.0.9 (2025-09-28)

  • Added: Basic Flask API endpoints (/api/v3 mimic)
  • Added: SSE stream for scan status
  • Fixed: Missing static file path in Docker
  • Known: Env editor page missing collapsible widgets