Warracker
Open-source warranty tracker to monitor expirations and store receipts
Alternative to: sortly
0.10.1.9
2025-08-24📦 Release 0.10.1.9 – Fixed Apprise Notifications, Scheduler Stability, and Email Config
This release delivers critical fixes to the Apprise notification system, ensures scheduler reliability across all Gunicorn modes, and adds better email configuration flexibility. Notifications are now stable, duplicate-free, and production-ready.
🔔 Fixed Apprise Notification System
✅ Critical Failures Resolved
- Added configuration reload to ensure scheduled jobs use latest DB settings.
- Removed faulty email-only filter that excluded Apprise users.
- Refactored dispatch logic with dedicated helpers for email and Apprise.
- Fixed handler scoping by retrieving Apprise handler from Flask app context.
- Wrapped scheduler jobs in Flask app context to prevent context errors.
✅ Result: Apprise notifications now send reliably for both “Apprise only” and “Both” channels. System follows Flask best practices and passes verification tests.
📧 Improved Email Configuration
✅ Custom Sender Address Support
- Added support for
SMTP_FROM_ADDRESSenvironment variable to customize the email From address independently of the SMTP username. - Contributed by @clmcavaney in #115.
✅ Result: Greater flexibility when using email services with different auth vs. sender addresses.
🛡️ Fixed Duplicate Notifications
✅ Only One Scheduler Runs
- Strengthened
should_run_scheduler()logic. - Worker detection now ensures only worker-0 runs the scheduler in multi-worker setups.
- Removed unsafe fallbacks that previously caused multiple schedulers.
✅ Result: Exactly one notification is sent per event—no more duplicates across optimized or performance modes.
🗄️ Fixed Database Connection Handling
✅ Fresh Connections per Job
- Refactored scheduler to acquire a fresh DB connection each run.
- Connections now released safely with try/finally.
✅ Result: No more “server closed the connection unexpectedly” errors. Notifications run reliably long-term.
⚙️ Definitive Scheduler Fix Across All Modes
✅ Works in Single and Multi-Worker Environments
- Single-worker (ultra-light) now runs scheduler correctly when
GUNICORN_WORKER_IDis unset. - Multi-worker (optimized/performance) ensures only worker-0 runs scheduler.
✅ Result: Scheduler works consistently in every Docker mode—ultra-light, optimized, and performance.
Modified Files:
backend/notifications.pybackend/__init__.pybackend/app.py
This update brings full notification reliability across all environments and configurations. Both Apprise and Email notifications are stable, efficient, and production-ready. 🚀