github wizarrrr/wizarr 2025.5b
2025.5

latest releases: 2025.9.0, 2025.9.0rc, 2025.8.5rc...
3 months ago

Changelog

** ⚠️ THIS RELEASE CONTAINS BREAKING CHANGES **
You will need to re-connect your Plex Server, however your old database will be backed up and saved, and important date (users, invitation history...) will be Migrated. You will need to recreate your admin account and connect your server though!

All notable changes to Wizarr are documented in this file.

[2025.5] – 2025-05-22

🚀 Major Rewrite & New Architecture

  • Full rewrite using Flask blueprints, SQLAlchemy, Flask-Migrate & Alembic
  • Switched from Peewee to SQLAlchemy for ORM consistency
  • Adopted WTForms + Flask-WTF for all forms (setup, settings, invites, notifications)
  • Reorganized templates into modular templates/<blueprint>/… directories
  • Introduced HTMX for seamless partial updates (settings tabs, library scans, invites, user cards)
  • Rebuilt UI with Tailwind CSS utility classes; removed bulky custom CSS

🔧 Server Settings & Notifications

  • Split Settings page into two cards:
    • Server Settings (URL, API key, libraries, overseerr/ombi, custom HTML)
    • Notification Agents (Discord webhooks, ntfy endpoints)
  • HTMX-powered tab switching and form submissions
  • “Setup mode” flag on settings to drive onboarding → full-page HTMX redirect on completion

🧙‍♂️ Onboarding Wizard

  • New “wizard” flow at /wizard that auto-detects Plex vs Jellyfin
  • Progressive steps rendered from Markdown files; end‐user editable steps via .md in /wizard/steps
  • HTMX “Next”/“Previous” with proper fade-in animations and header/footer controls
  • Multi-language support via Flask-Babel in wizard templates

📦 Plex & Jellyfin Integration

  • Refactored Plex & Jellyfin client code under app.services.servers
  • Unified scan_libraries endpoint for UI library checkboxes
  • Fully‐typed policy update logic for Jellyfin users
  • Simplified invite‐to‐server workflows with a single /invite HTMX form

🔔 Notifications & Ombi

  • Central notifications.py service supporting Discord & ntfy agents
  • CRUD UI under /settings/notifications with HTMX-modals
  • Ombi integration for scheduled user imports and deletions

🔄 Legacy Data Import

  • legacy_bootstrap.py script to auto-detect v4.2.0 SQLite DB
  • Copies old settings, invitations and users (excluding admin credentials) into the new schema
  • Renames original DB to .old, migrates via Alembic, then runs import step

📅 Background Tasks

  • Moved from Flask-APScheduler into Gunicorn’s preloader-safe setup
  • Single scheduler instance (no duplicate jobs per worker) via “when = ‘before_first_request’” init
  • check_expiring job every 15 min removes expired invites/users

🏗️ CI / CD & Docker

  • New GitHub Actions workflow (.github/workflows/ci.yml):
    • Tailwind build & minification on push
    • i18n extract/update/compile via pybabel + PR automation
    • Dev Docker image build & push to GitHub Container Registry (:dev tag)
  • Dockerfile & entrypoint modernized:
    • Runs Alembic migrations at container start
    • Runs legacy import if marker file detected
    • Launches Gunicorn with proper preload_app=True

✨ Smaller Improvements

  • HVX / HTMX header-based full-page redirect on setup completion
  • Forms auto-fill existing values on “edit” modals (expiry only for user cards)
  • Consistent dark-mode support & iconography across UI
  • Internationalization support under app/translations

Thank you for upgrading to 2025.5!
We’ve overhauled Wizarr from the ground up—please report any issues on GitHub.
Enjoy the smoother UI, robust CI/CD pipeline, and extensible architecture!

Don't miss a new wizarr release

NewReleases is sending notifications on new releases.