Releases: htilly/SlackONOS
v2.3.1
What's Changed
Bug Fixes
- Discord message chunking - Fixed critical bug where
listcommand failed on Discord with 60+ tracks due to exceeding 2000 character limit - Emoji compatibility - Added conversion of Slack emoji codes to Unicode emoji for Discord display
Improvements
- Improved message chunking with
sendChunkSafehelper for reliable splitting - Used efficient regex-based emoji conversion (single pass)
- Fixed exact-length line handling that could cause blank messages
- Reduced inter-message delay from 500ms to 300ms for better UX
Dependencies
@slack/web-api: 7.13.0 → 7.14.1axios: 1.13.2 → 1.13.5posthog-node: 5.24.9 → 5.24.15openai: 6.16.0 → 6.22.0
Full Changelog: v2.3.0...v2.3.1
v2.3.0: Consolidate modules, add handlers, improve tests
- **Consolidate modules**: All root JS files moved to `lib/` folder
- **Extract add handlers**: New `lib/add-handlers.js` module (874 lines removed from index.js)
- Rename `spotify-async.js` → `lib/spotify.js`
- Fix duplicate playlist queueing bug (was queueing twice)
- Fix tolerance calculation for small values in integration tests
- Fix pluralization in searchalbum ("1 track" vs "1 tracks")
- Add Spotify null guards in search functions
- Replace `.map()` with `.forEach()` for side effects
- Add `githubToken` to setconfig with sensitive value masking
- Improve feature request error messages with setup instructions
- Add exact queue size verification (catches duplicate queueing bugs)
- Three-level validation: exact (silent), within tolerance (warning), outside (fail)
- Search album/playlist before adding to verify expected track count
- Fix test runner to detect threaded bot responses
- Add rate-limit handling and reduce polling frequency
- Add automatic retry with 10s backoff on test failure
- Show track count in searchalbum results
- Pin Node.js to 20.20.0 (meets posthog-node engine requirement)
- Fix Slack RTM → Socket Mode in AI generator prompt
- Fix heredoc variable expansion in workflow
- Bump posthog-node to 5.24.2
- 25 files changed, +2224 -955 lines
- 10 modules moved to `lib/`
- 42 new unit tests for add-handlers
- 8 new integration tests with queue size verification
- All 553 unit tests passing
Release v2.2.0
Release v2.2.0
Features
- Enhanced authentication setup with WebAuthn/Yubikey support
- OpenAI configuration options in setup wizard
- Improved admin help text with WebUI link
- Crossfade support via Sonos native API
- Case-insensitive setconfig values
Fixes
- Fixed voting system track identification and star emoji display
- Fixed null track reference handling in voting system
- Fixed currentTrackTitle return type consistency
- Improved code consistency and documentation
Release v2.1.0
What's New in 2.1.0
Added
- Slack Thread Support - Added
slackAlwaysThreadconfiguration option to send all bot messages as thread replies - Spotify Region Warnings - Bot now sends messages to admin channel when tracks fail due to region restrictions (errorCode 800)
- Enhanced AI Confirmation Detection - Improved handling of user confirmations like "do it", "yes", "ok" for AI suggestions
- New Screenshots - Added 7 new screenshots to README and testing documentation showcasing features
Changed
- WebAuthn Enhancements - Major improvements to WebAuthn/FIDO2 authentication
- Enhanced WebAuthn configuration and client integration
- Improved user verification and authenticator selection logic
- Updated @simplewebauthn/server to v13.2.2 for better compatibility
- Reduced WebAuthn debug logging for cleaner output
- Admin Panel Improvements
- Collapsed WebAuthn section into new "Security" section with password management
- Moved Log Level setting to Console Logs section for better organization
- Fixed log level filtering to properly respect configured level (debug/info/warn/error)
- Fixed duplicate log entries in admin panel log viewer
- Improved SSE connection management with better reconnection handling
- Branding Updates - Complete rebrand from ZenMusic to SlackONOS
- Replaced all ZenMusic.png references with SlackONOS.png
- Updated CSS colors to match new SlackONOS logo and Slack-inspired palette
- Added rounded corners and smoother logo appearance with better styling
- UI/UX Improvements
- Translated entire setup wizard from Swedish to English
- Improved Spotify region pre-fill in setup wizard (reads existing config value)
- Enhanced login page with "Login with Yubikey!" button text
- Better visual organization of admin panel sections
Fixed
- Discord Token Validation - Fixed regex to correctly validate Discord bot tokens with varying lengths
- SSL Certificate Generation - Added defensive checks for ipAddress to prevent certificate generation errors
- Log Level Not Respected - Fixed issue where debug logs were still showing even when log level was set to info
- Duplicate Log Entries - Fixed duplicate log entries appearing in admin panel log viewer
- GitHub Actions - Fixed GITHUB_REF passing to Docker container for correct release version detection
Dependencies
- Bumped
selfsignedfrom 5.1.1 to 5.2.0 - Bumped
bcryptfrom 5.1.1 to 6.0.0 - Bumped
@simplewebauthn/serverfrom 12.0.0 to 13.2.2
Documentation
- Enhanced README with detailed screenshot descriptions
- Updated Slack documentation (removed gong reactions, added thread support info)
- Improved testing documentation with new screenshots
See CHANGELOG.md for full details.
v2.0.1 — TTS HTTPS Fix + Workflow Improvements
v2.0.1 — TTS HTTPS Fix + Workflow Improvements
🐞 Bug Fixes
- TTS HTTPS Issue
- TTS (text-to-speech) använder nu HTTP istället för HTTPS.
- Sonos-enheter litar inte på självsignerade certifikat → HTTPS bröt uppspelningen.
- HTTP-endpoint fungerar nu stabilt i lokala nätverk.
- HTTPS används fortfarande för Setup Wizard och Admin-gränssnittet.
🔧 Improvements
- Test Workflow
- Lade till
master-branchen i test-workflow för korrekt branch protection.
- Lade till
- Test Fixes
- Åtgärdade timing-relaterad boundary-condition i memory-management-tester.
v2.0.0 - Major Performance & Feature Update
🎉 SlackONOS v2.0.0 - Major Performance & Feature Update
This is a major release with significant performance improvements, a complete web-based setup wizard, WebAuthn authentication, and extensive new features.
🚀 Performance Improvements (75-90% faster!)
Commands are now dramatically faster thanks to parallelized API calls and non-blocking operations:
addcommand: 75-90% faster (removed 1.5s delays, parallel API calls)listcommand: 50% faster (parallel state/queue/track fetching)bestofcommand: 90% faster (parallel track queueing)addalbum/addplaylist: 85% faster (immediate user feedback)getNowPlaying: 40-50% faster (parallel API calls)
All file I/O operations are now async, preventing event loop blocking.
🎨 Complete Web Interface
Setup Wizard (/setup)
Zero-config onboarding experience:
- ✅ Automatic Sonos device discovery (15s timeout)
- ✅ Slack/Discord bot credential validation
- ✅ Spotify API verification
- ✅ Admin password setup
- ✅ Live configuration preview
Admin Panel (/admin)
Full-featured management interface:
- 🎵 Real-time now-playing display with Server-Sent Events
- ⏯️ Playback controls (play, pause, next, volume)
- ⚙️ Configuration management with live validation
- 🔐 WebAuthn/FIDO2 security key management
- 📊 Credential caching and smart reconnection
🔐 Modern Authentication
WebAuthn/FIDO2 Passwordless Login
- Touch ID, Face ID, Windows Hello support
- Yubikey and hardware security key compatibility
- User verification toggle (PIN vs touch-only modes)
- Multi-credential support per user
Traditional Password Authentication
- bcrypt-based secure password hashing
- Secure session management with HttpOnly cookies
🤖 AI Enhancements
- Multi-turn conversations - Bot remembers context across messages
- Better natural language understanding - Improved reasoning and confidence
- Seasonal awareness - Music suggestions based on time of year
- Memory management - Automatic cleanup of old contexts
📁 Project Organization
The repository has been completely reorganized for better maintainability:
- 📚 All documentation moved to
/docsdirectory - 🐳 All Docker files moved to
/dockerdirectory - 🧩 Modular architecture with dedicated
lib/modules - 🧪 Expanded test coverage (622+ tests)
New Modules
lib/auth-handler.js- Authentication logiclib/webauthn-handler.js- WebAuthn implementationlib/setup-handler.js- Setup wizard backendlib/sonos-discovery.js- Device discovery- Validator modules for Slack, Discord, Spotify
🎵 Music Features
New source Command
Identify where music is playing from:
- Queue (SlackONOS-managed)
- Spotify Connect
- AirPlay
- Line-in or other external sources
Improved Queue Display
- Shows currently playing track with metadata
- Time remaining and total duration
- Lock icons for gong-immune tracks
- Source warnings for external playback
🐛 Bug Fixes
- Fixed WebAuthn user verification issues with Yubikey
- Fixed credential validation race conditions
- Fixed SSE connection handling and reconnection
- Fixed config value masking for sensitive data
- Fixed file I/O blocking event loop
- Fixed queue display position matching
- Fixed admin panel real-time update bugs
🔒 Security Enhancements
- Complete sensitive data redaction in all debug outputs
- Secure session management with HttpOnly cookies
- Password hashing with bcrypt
- WebAuthn challenge verification with proper attestation
📖 Documentation
New comprehensive guides:
- Slack Setup Guide - Socket Mode configuration
- Discord Setup Guide - Bot setup instructions
- Testing Guide - Running and writing tests
- Telemetry Documentation - Privacy and opt-out
- Troubleshooting Guide - Common issues
⚠️ Breaking Changes
-
Repository structure changed
- Documentation moved from root to
/docs - Docker files moved from root to
/docker - Update any hardcoded paths in scripts/workflows
- Documentation moved from root to
-
Config format extended
- New optional fields for WebAuthn, setup wizard, AI context
- Existing configs will continue to work
-
Node.js >= 18 recommended
- For optimal performance with native fetch support
- Node.js 16 still supported but not recommended
🎯 Migration Guide
- Update documentation links if you have hardcoded paths (use
/docs/prefix) - Update Docker build paths in custom workflows (use
./docker/Dockerfile) - Optional: Configure WebAuthn for passwordless admin access
- Optional: Set
aiContextLimitfor conversation memory management - Review new config options in
config/config.json.example
📦 Docker Images
Multi-platform images available:
docker pull htilly/slackonos:latestdocker pull htilly/slackonos:v2.0.0docker pull htilly/slackonos:2.0.0
Platforms: linux/amd64, linux/arm64, linux/arm/v7
🙏 Acknowledgments
Special thanks to Claude Code for extensive performance optimization and codebase analysis!
Full Changelog: See CHANGELOG.md for complete details
📥 Installation
Docker Compose (Recommended)
```bash
docker pull htilly/slackonos:v2.0.0
docker compose up -d
```
Node.js
```bash
npm install
node index.js
```
Then visit http://localhost:8000/setup to configure!
Questions? Check the docs or open an issue!
SlackONOS v1.7.3
What's New
Added
- Persistent Telemetry Instance ID - Anonymous telemetry now uses a persistent UUID stored in config, ensuring consistent tracking across restarts
- Soundcraft Volume Display - The
volumecommand now shows configured Soundcraft mixer channel levels alongside Sonos volume
Changed
- Soundcraft volume conversion now uses linear dB mapping for more accurate fader representation
Full Changelog: v1.7.2...v1.7.3
v1.7.2 - Bugfix add and search aligned
fix: resolve merge conflicts for v1.7.2 release
v1.7.1 - Bugfix for template text
Fixed wrong location of template text
v1.7.0 - Comprehensive Integration Testing & Repository Cleanup
Added
- Comprehensive Integration Test Suite: 21 automated end-to-end tests covering all major features
- Multi-channel testing support (regular + admin channels)
- Test configuration system with separate bot credentials (
test/config/) - Integration test tools (
test/tools/integration-test-suite.mjs) - Test documentation (
test/INTEGRATION_TESTING.md)
Changed
- Repository Organization: Moved template files to
config/messages/and help files toconfig/help/ - Dependency Updates:
- sinon: 19.0.2 → 21.0.0
- chai: 6.2.0 → 6.2.1
- posthog-node: 4.3.0 → 5.15.0
- openai: 4.76.1 → 6.9.1
- Updated Docker configuration (image reference, port mapping)
- Enhanced
.dockerignoreand.gitignore
Removed
- Legacy files:
tools/,.travis.yml,.snyk,Procfile - Unused sound file (
sound/gong.mp3) - Outdated Gemini documentation (
.gemini/)
Fixed
- Docker image reference in
docker-compose-example.yml(now useshtilly/slackonos:latest) - All template file paths in
index.jsto reflect new structure - Removed local paths from documentation