Skip to content

v2.0.0 - Major Performance & Feature Update

Choose a tag to compare

@htilly htilly released this 09 Dec 21:35
· 201 commits to master since this release

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