Skip to content

Releases: htilly/SlackONOS

v2.3.1

15 Feb 17:45
036395a

Choose a tag to compare

What's Changed

Bug Fixes

  • Discord message chunking - Fixed critical bug where list command 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 sendChunkSafe helper 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.1
  • axios: 1.13.2 → 1.13.5
  • posthog-node: 5.24.9 → 5.24.15
  • openai: 6.16.0 → 6.22.0

Full Changelog: v2.3.0...v2.3.1

v2.3.0: Consolidate modules, add handlers, improve tests

27 Jan 18:17

Choose a tag to compare

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

12 Dec 22:21

Choose a tag to compare

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

10 Dec 21:39

Choose a tag to compare

What's New in 2.1.0

Added

  • Slack Thread Support - Added slackAlwaysThread configuration 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 selfsigned from 5.1.1 to 5.2.0
  • Bumped bcrypt from 5.1.1 to 6.0.0
  • Bumped @simplewebauthn/server from 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

09 Dec 23:07

Choose a tag to compare

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.
  • Test Fixes
    • Åtgärdade timing-relaterad boundary-condition i memory-management-tester.

v2.0.0 - Major Performance & Feature Update

09 Dec 21:35

Choose a tag to compare

🎉 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:

  • add command: 75-90% faster (removed 1.5s delays, parallel API calls)
  • list command: 50% faster (parallel state/queue/track fetching)
  • bestof command: 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 /docs directory
  • 🐳 All Docker files moved to /docker directory
  • 🧩 Modular architecture with dedicated lib/ modules
  • 🧪 Expanded test coverage (622+ tests)

New Modules

  • lib/auth-handler.js - Authentication logic
  • lib/webauthn-handler.js - WebAuthn implementation
  • lib/setup-handler.js - Setup wizard backend
  • lib/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:


⚠️ Breaking Changes

  1. Repository structure changed

    • Documentation moved from root to /docs
    • Docker files moved from root to /docker
    • Update any hardcoded paths in scripts/workflows
  2. Config format extended

    • New optional fields for WebAuthn, setup wizard, AI context
    • Existing configs will continue to work
  3. Node.js >= 18 recommended

    • For optimal performance with native fetch support
    • Node.js 16 still supported but not recommended

🎯 Migration Guide

  1. Update documentation links if you have hardcoded paths (use /docs/ prefix)
  2. Update Docker build paths in custom workflows (use ./docker/Dockerfile)
  3. Optional: Configure WebAuthn for passwordless admin access
  4. Optional: Set aiContextLimit for conversation memory management
  5. Review new config options in config/config.json.example

📦 Docker Images

Multi-platform images available:

  • docker pull htilly/slackonos:latest
  • docker pull htilly/slackonos:v2.0.0
  • docker 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

03 Dec 17:33

Choose a tag to compare

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 volume command 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

02 Dec 21:15

Choose a tag to compare

fix: resolve merge conflicts for v1.7.2 release

v1.7.1 - Bugfix for template text

02 Dec 19:59

Choose a tag to compare

Fixed wrong location of template text

v1.7.0 - Comprehensive Integration Testing & Repository Cleanup

02 Dec 18:47

Choose a tag to compare

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 to config/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 .dockerignore and .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 uses htilly/slackonos:latest)
  • All template file paths in index.js to reflect new structure
  • Removed local paths from documentation