Skip to content

pedrofuentes/stream-deck-ical

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

100 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Stream Deck iCal Plugin

Version License Tests

Display your calendar events on Elgato Stream Deck. Visual countdowns and color warnings help you stay on schedule.

Plugin Example

Download from Stream Deck Store ยท Latest Release ยท Report Bug


Quick Start

  1. Install the plugin from Stream Deck Store (search "iCal")
  2. Get your calendar URL (Google | Outlook | Apple)
  3. Add a button - Drag "Smart Calendar" to your Stream Deck
  4. Configure - Click Settings โ†’ Add Calendar โ†’ Paste URL โ†’ Save

That's it! Your next meeting countdown appears on the button.


Actions

Action Best For Description
Smart Calendar โญ Most users Auto-switches between countdown modes. Shows "Time Left" during meetings, "Next Meeting" otherwise.
Next Meeting Anticipating upcoming Always shows countdown to next meeting. Tap for meeting title.
Time Left During meetings Shows time remaining in current meeting. Supports concurrent meetings.

๐Ÿ’ก Recommendation: Start with Smart Calendar - it combines both modes intelligently.


Features

๐Ÿ“… Multiple Calendars

Set up named calendars (Work, Personal, Family) and assign different calendars to different buttons.

โฐ Visual Warnings

  • Orange when meeting is approaching (default: 5 min, configurable)
  • Red when meeting is imminent (default: 30 sec, configurable)

๐Ÿ”„ Recurring Events

Full support for daily, weekly, monthly patterns (RRULE) with exceptions (EXDATE).

๐ŸŒ Timezone Smart

Automatic conversion between Windows and IANA timezones. Works globally.

โšก Quick Actions

  • Tap to show meeting title (scrolling marquee)
  • Double-tap to force refresh calendar
  • Tap during meeting to cycle through concurrent meetings

Supported Calendars

Provider Status Notes
Google Calendar โœ… Full support Including Workspace
Microsoft Outlook โœ… Full support Outlook.com & Office 365
Apple Calendar โœ… Full support iCloud sharing
Any iCal URL โœ… Works RFC 5545 compatible

Getting Your Calendar URL

Google Calendar
  1. Open Google Calendar
  2. Click โ‹ฎ next to your calendar โ†’ Settings and sharing
  3. Scroll to "Integrate calendar"
  4. Copy "Secret address in iCal format"

โš ๏ธ Use the "Secret address" - the public address won't show private events.

Microsoft Outlook / Office 365
  1. Open Outlook Calendar
  2. Click โš™๏ธ Settings โ†’ View all Outlook settings
  3. Go to Calendar โ†’ Shared calendars
  4. Under "Publish a calendar", select your calendar
  5. Click Publish and copy the ICS link
Apple Calendar / iCloud
  1. Open Calendar app on Mac
  2. Right-click calendar โ†’ Share Calendar
  3. Check "Public Calendar" and copy the URL
  4. Replace webcal:// with https:// when pasting

Configuration

Settings Overview

Click Settings in the Property Inspector to access:

Setting Description Default
Calendars Add/remove named calendars -
Default Calendar Used when button has no selection First added
Orange Warning Minutes before meeting 5 min
Red Warning Seconds before meeting 30 sec
Title Duration How long to show meeting title 15 sec
Flash on Start Visual alert when meeting begins Off

Per-Button Options

Each button can use a different calendar from your library - just select it from the dropdown in the Property Inspector.


Troubleshooting

No events showing
  1. Verify URL is correct (test in browser - should download .ics file)
  2. Check events are within time window (default: 3 days)
  3. Double-tap button to force refresh
  4. Check if "Exclude all-day events" is filtering them out
Wrong times displayed
  1. Verify your computer's timezone is correct
  2. For Outlook: Plugin auto-converts Windows timezones
  3. Try force refresh after timezone change
Button stuck on "Loading"
  1. Check internet connection
  2. Verify calendar URL is accessible
  3. Restart Stream Deck software
  4. Check Settings for error messages

What's New in v2.4

  • Stability Fixes - Capped RRULE expansion, fetch timeouts, concurrent update guards (#26)
  • DST-Aware Recurrence - Fixed RECURRENCE-ID matching across daylight saving transitions (#27)
  • Export Diagnostics - One-click diagnostic report for easier bug reporting
  • Error Isolation - Bad events no longer break the entire calendar

See full changelog for all versions.


Development

Tech Stack

Technology Purpose
TypeScript Type-safe plugin code
Node.js SDK v2 Stream Deck integration
Vitest 572 unit tests
Rollup Bundle optimization
rrule Recurring event expansion
Luxon Timezone handling

Contributing

See CONTRIBUTING.md for:

  • Development setup
  • Architecture overview
  • Testing guidelines
  • Pull request process

Changelog

v2.4.4 (2026)

  • ๐Ÿ”ง 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

v2.4.2 (2026)

  • ๐Ÿ› Fixed Export Diagnostics not copying to clipboard (caused "No response from plugin" false alarm)
  • ๐Ÿ”ง Robust clipboard fallback: execCommand โ†’ Clipboard API โ†’ manual textarea

v2.4.1 (2026)

  • ๐Ÿ› Fixed buttons showing "Loading iCal" on every background calendar refresh
  • ๐Ÿ› Background refresh failures now preserve cached data instead of clearing events

v2.4.0 (2026)

  • ๐Ÿ› Fixed CPU spike from unbounded RRULE expansion (#26)
  • ๐Ÿ› Fixed RECURRENCE-ID mismatch across DST boundaries (#27)
  • โœจ Export Diagnostics button for one-click bug reports
  • โœจ 30-second fetch timeout to prevent hangs
  • โœจ Concurrent update guard prevents stacking requests
  • โœจ Per-event error isolation for resilient parsing
  • โœจ Enhanced debug logging (500-entry buffer, error filtering)

v2.3.0 (2026)

  • โœจ Named Calendars with friendly names
  • โœจ Per-button calendar selection
  • โœจ Configurable warning thresholds
  • โœจ Graceful calendar deletion handling
  • ๐Ÿ› Fixed calendar selection persistence

v2.2.0 (2026)

  • โœจ Smart Calendar action (auto-switching)

v2.1.0 (2026)

  • โœจ Configurable title display duration
  • โœจ Flash on meeting start option
  • ๐Ÿ› Fixed startup race conditions

v2.0.0 (2026)

  • โœจ Recurring events (RRULE/EXDATE)
  • โœจ Configurable time window
  • โœจ Improved timezone handling
  • โœจ Force refresh feature

v1.1.0

  • ๐ŸŽ‰ Initial release

License

MIT License - see LICENSE

Author

Created by Pedro Fuentes


Report Bug ยท Discussions ยท Contribute