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!** 🚀