Releases: pedrofuentes/stream-deck-ical
v2.4.4 - SDK v2 upgrade for DRM compatibility
What's Changed
- 🔧 Upgraded @elgato/streamdeck SDK from v1.4.1 to v2.0.2 for DRM compatibility
- 🐛 Fixed Elgato Marketplace rejection due to manifest reading in DRM-encrypted plugins
Details
The previous SDK version (v1.4.1) read \manifest.json\ at runtime via \s.readFileSync. When Elgato applies DRM encryption for Marketplace distribution, the manifest becomes unreadable and the plugin would crash. SDK v2.0.2 handles this gracefully by returning
ull\ instead of throwing.
Installation
Download the .streamDeckPlugin\ file and double-click to install.
v2.4.3 - SDK & Software Version Update
What's Changed
- Updated \SDKVersion\ from 2 to 3
- Updated \Software.MinimumVersion\ from 6.4 to 6.9
- Per Elgato distribution/DRM requirements: https://docs.elgato.com/streamdeck/sdk/introduction/distribution/#enabling-drm
Installation
Download the .streamDeckPlugin\ file and double-click to install.
v2.4.2 - Fix Export Diagnostics clipboard copy
Bug Fix
- Fixed Export Diagnostics not copying to clipboard — caused false 'No response from plugin' error
- Robust clipboard fallback: execCommand -> Clipboard API -> manual textarea
- Upgraded vitest 1.6.1 -> 4.0.18 to resolve esbuild GHSA-67mh-4wv8-2f99
Installation
Download the .streamDeckPlugin file below and double-click to install.
v2.4.1 - Fix Loading iCal flicker
Bug Fixes
- 🐛 Fixed buttons showing Loading iCal on every background calendar refresh — buttons now stay on their current display during silent background refreshes
- 🐛 Background refresh failures now preserve cached events instead of clearing them — stale data is better than no data
Installation
Download the .streamDeckPlugin file below and double-click to install.
v2.4.0 — Stability & DST Fixes + Diagnostics Export
What's New
- 🐛 Fixed CPU spike from unbounded RRULE expansion — Recurring event expansion is now capped at 500 occurrences, preventing runaway CPU usage from rules like
FREQ=MINUTELYwith no end date (Closes #26) - 🐛 Fixed RECURRENCE-ID mismatch across DST boundaries — Date-fallback matching ensures recurring event exceptions display correctly when crossing daylight saving transitions (Closes #27)
- ✨ Export Diagnostics — New button in settings copies a full debug report to clipboard for easier bug reporting
- ✨ 30-second fetch timeout — Network requests abort after 30s to prevent the plugin from hanging
- ✨ Concurrent update guard — Prevents stacking calendar refresh requests
- ✨ Per-event error isolation — A bad event no longer breaks the entire calendar
- ✨ Enhanced logging — 500-entry debug buffer with error filtering for diagnostics
Installation
Download the .streamDeckPlugin file below and double-click to install.
v2.3.0 - Named Calendars & Configurable Thresholds
What's New in v2.3.0
Named Calendars (Closes #5)
Set up multiple calendars with friendly names in Settings! Each button can select which calendar to use from a dropdown - no more copy-pasting URLs for each button.
- Create a calendar library: Add calendars like 'Work', 'Personal', 'Family'
- Easy button assignment: Select calendar from dropdown in Property Inspector
- Efficient caching: Buttons using the same URL share a single cache
Configurable Warning Thresholds
Customize when orange and red color warnings appear:
- Orange warning: Choose from 1, 2, 3, 5, 10, 15, or 30 minutes (default: 5 min)
- Red warning: Choose from 10, 15, 30, 45, or 60 seconds (default: 30 sec)
Per-Button Settings
Each button can have its own time window (1-7 days) and all-day event preferences.
Graceful Calendar Deletion
When you delete a calendar from Settings, buttons using it automatically fall back to the default calendar.
Improved Settings UI
Redesigned Property Inspector with:
- Collapsible help sections
- Better organization of settings
- Cleaner calendar management interface
Technical Improvements
- Added CalendarManager service for multi-calendar support
- 529 tests (104 new tests for this release)
- Fixed button state preservation with SingletonAction pattern
- Fixed calendar selection not persisting after Stream Deck restart
Installation
Download the .streamDeckPlugin\ file below and double-click to install.
v2.2.0 - Smart Calendar Combined Action
What's New
Smart Calendar Action (Closes #10)
A new combined action that intelligently switches between modes:
- Next Meeting mode: Shows countdown to your next meeting when no meeting is active
- Time Left mode: Automatically switches to show time remaining when a meeting starts
- Seamless transitions: No manual switching needed - it just works!
Features
- Supports cycling through multiple concurrent meetings (press button to cycle)
- Shows meeting title as scrolling marquee when pressed (in next-meeting mode)
- Uses configurable title display duration from settings
- Flash notification when meeting starts (if enabled in settings)
- Color-coded countdown (orange at 5 min, red at 30 sec)
Testing
- Added 22 comprehensive tests for the Smart Calendar action
- Total test count: 308 tests
Installation
Download the .streamDeckPlugin file below and double-click to install.
Usage
- Drag the Smart Calendar action to your Stream Deck
- Configure your iCal URL in settings (same as other actions)
- The button will automatically show the appropriate information based on your calendar
v2.1.0 - Configurable Settings and UX Improvements
What's New
Features
- Configurable Title Display Duration: Choose how long meeting titles display (5, 10, 15, or 30 seconds) (Closes #20)
- Flash on Meeting Start: Optional visual alert when meetings begin (Closes #11)
- Improved Status Messages: Shows Please Setup for unconfigured plugins
Bug Fixes
- Fixed title display duration bug where 5 seconds was showing for 83 minutes
- Fixed startup race condition that caused buttons to get stuck on Loading
- Faster button initialization with 500ms polling
Documentation
- Expanded release process documentation
- Added automatic issue closing instructions
- Updated README with v2.1.0 features
Testing
- Added 18 new regression tests for v2.1.0 features
Installation
Download the .streamDeckPlugin file below and double-click to install.
Upgrade Notes
- Flash on Meeting Start is disabled by default for new installations
- Existing settings will be preserved when upgrading
v2.0.0 - Major rebuild with Node.js SDK
Summary
This is a major rebuild of the Stream Deck iCal plugin, migrating from the legacy SDK to the new Node.js-based @elgato/streamdeck SDK v1.4.1.
What's New
SDK Migration
- Node.js implementation: Full migration to @elgato/streamdeck Node.js SDK v1.4.1
- TypeScript: Complete TypeScript implementation with strict mode
- Modern build system: Rollup bundling with build-time configuration
- 261 tests: Comprehensive test coverage
Bug Fixes
- Recurring events: Fixed RRULE extraction so daily/weekly recurring events show correctly (fixes #2)
- Timezone handling: Proper IANA timezone support with Windows timezone mapping for Outlook (fixes #1, #12)
- Force refresh: Double-press button or use Property Inspector refresh button (fixes #17)
- All-day event filtering: New \excludeAllDay\ setting (default: true) to filter out all-day events
UI Improvements
- Single-line marquee: Horizontal scrolling text for meeting titles
- Debug mode toggle: Controlled by \STREAMDECK_DEBUG\ env variable at build time
- Improved settings UI: Better checkbox visibility and debug panel
Installation
- Download \com.pedrofuentes.ical.streamDeckPlugin\ below
- Double-click to install in Stream Deck
Requirements
- Stream Deck 6.4 or later
- Windows 10+ or macOS 10.15+
New functionality added for Next Meeting Action
- If the button is pushed it will show the title of the next meeting
- If the button is pushed while the text is showing it will go back to show the time left until the next meeting
- At the end of the title animation, the button will go back to show the time left until the next meeting