v14.0
Notifuse/notifusev14.0Oct 31, 2025by pierre-b
AI Summary
Notifuse v14.0 introduces a major overhaul with a new setup wizard, built-in task scheduler (replacing external cron jobs), and enhanced message history storing email delivery options like CC, BCC, and Reply-To. The release also modernizes Docker Compose configuration and includes bug fixes for SMTP anonymous connections, Docker image stability, and timezone normalization.
Key Highlights
- New Setup Wizard with streamlined configuration and optional environment variables
- Internal Task Scheduler running every 20 seconds (replaces external cron jobs)
- Enhanced Message History storing CC, BCC, From Name, and Reply-To options
- Modernized Docker Compose renamed to compose.yaml with updated syntax
- Bug fixes for SMTP anonymous connections, Docker stability, and timezone normalization
New Features
- Setup Wizard with newsletter subscription, advanced PASETO key settings, and privacy configuration
- Internal Task Scheduler with configurable interval and max concurrent tasks
- Message History now stores email delivery options (CC, BCC, From Name, Reply-To)
- Notification Center Preview mode for testing before going live
- Privacy Settings (telemetry and update check) with environment variable controls
- New environment variables: TELEMETRY, CHECK_FOR_UPDATES, TASK_SCHEDULER_ENABLED, TASK_SCHEDULER_INTERVAL, TASK_SCHEDULER_MAX_TASKS
- Docker Compose updated to compose.yaml format following current best practices
- Database schema update: Added channel_options JSONB column to message_history table
Full Release Notes
# Notifuse v14.0 Release Notes **Release Date:** October 31, 2025 ## 🎉 What's New ### New Setup Wizard <img width="452" height="807" alt="setup" src="https://github.com/user-attachments/assets/24ae6450-a665-483b-9b26-3b43bbc6d379" /> Get started faster with our improved setup wizard experience: - **Streamlined Configuration**: Many environment variables are now optional and can be configured through an intuitive setup wizard - **Newsletter Subscription**: Opt-in to stay updated with Notifuse news - **Advanced Settings**: PASETO keys configuration tucked away in a collapsible section for cleaner interface - **Privacy Settings**: Configure telemetry and update check preferences during initial setup - **Smart Restart Handling**: Setup completion screen displays immediately while the server restarts in the background - **Key Management**: Review your generated PASETO keys before proceeding to sign in Environment variables can still be used and will always take precedence over database settings. ### Internal Task Scheduler No more external cron jobs! Notifuse now includes a built-in task scheduler that runs automatically with your application. - **Zero Configuration**: Tasks execute automatically every 20 seconds - **Faster Processing**: 20-second intervals (vs 60-second minimum with external cron) - **Graceful Lifecycle**: Starts with the app, stops cleanly on shutdown - **Configurable**: Control behavior via environment variables: - `TASK_SCHEDULER_ENABLED` - Enable/disable the scheduler - `TASK_SCHEDULER_INTERVAL` - Adjust execution interval - `TASK_SCHEDULER_MAX_TASKS` - Limit concurrent tasks > **Note:** The `/api/cron` HTTP endpoint is now deprecated but remains functional for backward compatibility. ### Enhanced Message History Email delivery options are now stored with message history for better audit trails: - **CC Recipients**: Carbon copy addresses - **BCC Recipients**: Blind carbon copy addresses - **From Name**: Sender display name overrides - **Reply-To**: Custom reply-to addresses The message preview drawer displays these options when available. ### Modernized Docker Compose Our Docker setup now follows current best practices: - Renamed `docker-compose.yml` to `compose.yaml` - Removed deprecated `version` field - Updated to use `docker compose` plugin syntax - Improved `.env` file integration ## ✨ UI Improvements - **Cleaner Interface**: Removed cron setup instructions and status warning banner (no longer needed with internal scheduler) - **Notification Center Preview**: Test your notification center before going live with the new preview mode ## 🐛 Bug Fixes - **SMTP Anonymous Connections**: Now supports unauthenticated/anonymous SMTP connections (e.g., local mail relays on port 25) - **Docker Image Stability**: Built with CGO disabled to prevent SIGILL crashes on older CPUs - **HTML Entity Decoding**: URL attributes with query parameters now work correctly in MJML-compiled emails - **Timezone Normalization**: Browser timezone names are normalized to canonical IANA format - **Broadcast Pause**: Pausing a broadcast now also pauses the associated task ## 🗄️ Database Changes ### Schema Updates - Added `channel_options` JSONB column to `message_history` table ### Migration Notes - Migration v14 is **idempotent** and safe to run multiple times - Adds default telemetry and update check settings (both default to `true`) - Existing messages will have `channel_options = NULL` (no backfill) - **Estimated time**: < 1 second per workspace - **Server restart**: Automatically restarts after migration to reload all configuration settings ## 📦 Upgrade Instructions 1. **Backup your database** before upgrading 2. Pull the latest Docker image or update your binary 3. Update your `docker-compose.yml` to `compose.yaml` (optional but recommended) 4. Remove any external cron job configuration (optional, endpoints still work) 5. Start Notifuse - migration runs automatically 6. Configure privacy settings if desired (via environment variables or UI) ### Environment Variables #### New Optional Variables ```bash # Privacy Settings TELEMETRY=true # Send anonymous usage statistics (optional) CHECK_FOR_UPDATES=true # Check for new versions (optional) # Task Scheduler TASK_SCHEDULER_ENABLED=true # Enable internal scheduler (optional, default: true) TASK_SCHEDULER_INTERVAL=20s # Task execution interval (optional, default: 20s) TASK_SCHEDULER_MAX_TASKS=10 # Max concurrent tasks (optional, default: 10) ``` ## 📝 Deprecated Features The following features are deprecated but still functional: - `/api/cron` HTTP endpoint (use internal scheduler instead) - `/api/cron.status` HTTP endpoint (no longer advertised in UI) ## 🔗 Resources - [Full Changelog](CHANGELOG.md) - [Documentation](https://docs.notifuse.com) - [Installation Guide](https://docs.notifuse.com/installation) ## 💬 Feedback We'd love to hear your thoughts on this release! Please open an issue on our GitHub repository or reach out to our support team. --- **Thank you for using Notifuse!** 🚀