Releases: keefetang/opencode-alert
Releases · keefetang/opencode-alert
Release list
v0.3.3
v0.3.2
Added
- 79 tests across 3 files (config, terminal, notify)
- CI and publish workflows now run
bun test
Changed
- Strict tsconfig (added
noUncheckedIndexedAccess,exactOptionalPropertyTypes, etc.) - Standardized .gitignore, switched lockfile from package-lock.json to bun.lock
- AGENTS.md references shared plugin SDK doc
v0.3.1
Changed
- Updated
@opencode-ai/pluginfrom ^1.4.3 to ^1.15.0 - Updated
softprops/action-gh-releasefrom v2 to v3 (Node 24 runtime) - Updated
typescriptfrom 6.0.2 to 6.0.3 - Updated
bun-typesfrom 1.3.12 to 1.3.14
v0.3.0
Added
- Multi-protocol notification dispatch — routes to OSC 777 (Ghostty, WezTerm, foot, rxvt-unicode), OSC 9 (iTerm2), OSC 99 (Kitty), or Windows toast (Windows Terminal) based on auto-detected terminal
- tmux passthrough — OSC sequences are wrapped in DCS passthrough when
$TMUXis set, alongside existing client TTY resolution - Kitty support — OSC 99 with monotonic notification IDs for concurrent notifications
- iTerm2 support — OSC 9 protocol, detected via
TERM_PROGRAMorITERM_SESSION_ID - Windows Terminal support — PowerShell toast notifications with injection-safe escaping
soundCommandconfig option — run a custom shell command alongside built-in sounds (any platform). Also available viaOPENCODE_ALERT_SOUND_CMDenv varprotocolfield on terminal database entries — informational, indicates which notification protocol each terminal supports
Changed
- Notification writes are now non-blocking — replaced
writeFileSyncwith asyncfs.open/write/closecallbacks - When no TTY path is resolved, notifications are dropped silently (never writes to stdout — OpenCode owns it)
- Non-tmux TTY resolution is cached after first call — eliminates repeated
execSync("tty")on every notification
Security
- OSC sanitization now strips all C0/C1 control characters (0x00-0x1F, 0x7F-0x9F), including ST (0x9C) which terminates OSC in 8-bit terminal mode
v0.1.1
Removed
persistentAlertsconfig option — the modal dialog (display alert) was a poor substitute for native persistent notifications and appeared as a centered blocking dialog rather than a proper macOS notification
Changed
- All macOS notifications now use
display notification(Notification Centre banners) consistently
How to get persistent notifications on macOS
macOS controls notification style at the system level. To make OpenCode notifications stay on screen until clicked: System Settings → Notifications → Script Editor → Alert style → Alerts.