This repository was archived by the owner on Mar 5, 2026. It is now read-only.
Repository navigation
π― New Feature: Notification Batching
Reduce email notification frequency by intelligently batching low-priority events.
β¨ What's New
Smart Batching System
- Low-priority events (TODO completed, session idle) are queued instead of sending immediately
- High-priority events (errors, plan completed) trigger immediate send with queued summary
- Configurable 5-minute auto-flush window (default: 300000ms)
- Queue size limit with automatic oldest-item removal (default: 20)
Configuration
Event Priority
- π΄ High Priority:
session.error,planCompletedβ Send immediately + flush queue - π‘ Low Priority:
todo.updated(completed),session.idleβ Queue and wait
Email Format
- High-priority emails append summary block with queued notifications
- Auto-flush sends standalone summary email after windowMs timeout
- Each queued item shows: event label, subject, timestamp, original HTML body
π§ Technical Details
Files Modified
opencode/task-notifier.ts(285 β 447 lines)opencode/task-notifier.default.jsonc(70 β 91 lines)
Implementation Highlights
NotificationQueueclass with FIFO removalcompletedCountBySessiontracking prevents duplicate queuing- Config validation filters invalid
highPriorityTriggers - Default
enabled: falseensures zero breaking changes for existing users
π¦ Installation
Homebrew (recommended)
brew upgrade task-notifierManual Update
curl -fsSL https://raw.githubusercontent.com/FrankieeW/task-notifier/main/scripts/install.sh | bash -s -- --upgradeOpenCode Plugin
curl -fsSL https://raw.githubusercontent.com/FrankieeW/task-notifier/main/scripts/install-opencode.sh | bash -s -- --upgradeπ Usage
- Edit
~/.config/opencode/task-notifier.jsonc - Set
"batching": { "enabled": true } - Restart OpenCode
- Enjoy reduced email frequency!
π Bug Fixes
- None (feature release)
π Full Changelog
Previous Release: v1.0.3 - HTML email templates
{ "batching": { "enabled": false, // Default: disabled (backward compatible) "windowMs": 300000, // 5 minutes "maxQueueSize": 20, "highPriorityTriggers": ["errorOccurred", "planCompleted"] } }