Skip to content

Releases: pedrofuentes/stream-deck-ical

v2.4.4 - SDK v2 upgrade for DRM compatibility

06 Mar 20:18

Choose a tag to compare

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

03 Mar 00:08

Choose a tag to compare

What's Changed

Installation

Download the .streamDeckPlugin\ file and double-click to install.

v2.4.2 - Fix Export Diagnostics clipboard copy

23 Feb 22:04

Choose a tag to compare

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

23 Feb 00:12

Choose a tag to compare

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

22 Feb 22:57

Choose a tag to compare

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=MINUTELY with 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

01 Feb 08:07

Choose a tag to compare

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

01 Feb 00:30

Choose a tag to compare

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

  1. Drag the Smart Calendar action to your Stream Deck
  2. Configure your iCal URL in settings (same as other actions)
  3. The button will automatically show the appropriate information based on your calendar

v2.1.0 - Configurable Settings and UX Improvements

01 Feb 00:10

Choose a tag to compare

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

31 Jan 11:14

Choose a tag to compare

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

  1. Download \com.pedrofuentes.ical.streamDeckPlugin\ below
  2. 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

25 Feb 07:25

Choose a tag to compare

  • 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