Skip to content

Releases: alexpfau/calendar-card-pro

v4.0.0

Choose a tag to compare

@github-actions github-actions released this 18 Aug 18:46
f522678

Calendar Card Pro v4.0.0

Calendar Card Pro v4 — the week, side by side

This is a big one. 🎉

Two days after this card's first public release, someone opened #14 and asked whether the days could sit side by side instead of stacked on top of each other. That was March 2025. It was asked again in June, again in July, and again in November — the most-requested thing in this project's history, and the one I never had a good answer for. Last year did not leave me the time this card deserved, and some of you waited a lot longer than you should have for it.

So I gave this release the time instead: 560 commits, and the kind of polish I would want if I were the one installing it. 🗓️ Column view is here — the same agenda you already have, rotated, with your events and colors carrying over exactly as they are. And because a layout with its own defaults, its own per-view overrides and its own density rules needs an editor that can actually express them, ⚙️ the visual editor is rebuilt from the ground up: nine panels, a search box that reaches any of 119 settings in a keystroke, and a filter that hides everything you have never touched.

Here is the part I am proudest of, though. Both of those are opt-in — most cards will never set view or open a form — so this could easily have been a big release for a few people and nothing much for everyone else. It is not. ⚡ Moving the editor into a file that loads only when you open it leaves a card file 41% smaller to download on every single dashboard, whether or not you ever touch either feature. 🐛 And behind that sit twenty-three fixes that reach further than any feature does: week numbers wrong for one date in seven outside UTC, a twelve-hour clock handed to 33 of the 64 languages Home Assistant ships, and a first_day_of_week: system that quietly answered Monday to every user on earth.

A card that does not set view keeps the list it has always had. But a few things change whichever layout you use, so they come first. 👇

⚠️ Breaking Changes

  • Manual Installation Now Copies Two Files - The card is no longer a single file. A release ships calendar-card-pro.js and editor.js, and the card fetches the editor by URL the first time someone opens it. HACS handles this and needs nothing from you. If you install by copying files into www/, download both and put them in a folder of their own, such as www/calendar-card-pro/ — copying only calendar-card-pro.js leaves a card that renders normally but reports a missing file when you open the visual editor, and /config/www/ itself is shared with every other hand-installed card, where a second editor.js can take the name. Only calendar-card-pro.js is registered as a Lovelace resource; see Manual Installation
  • event_icon_vertical_alignment Now Defaults to top - It previously defaulted to middle. The option is invisible until a row wraps, and middle then centers the icon against the whole wrapped block — a clock or map-marker floating level with neither line of a two-line address. Column view wraps routinely, and the list view wraps on a long location or description, so the default moved to the alignment that reads correctly in both. Set event_icon_vertical_alignment: middle to keep the old behavior; see Spacing & Alignment
  • first_day_of_week: system Now Follows Home Assistant - system is the default, and the editor labels it Follow Home Assistant, but it returned Monday for every user on earth. Two faults produced it: the branch never read the First day of week setting in the Home Assistant user profile at all, and its language fallback tested for en-US, en-CA or es-US in a string that has always been lowercased before it arrives, so it could not match anything. The setting is now resolved the way Home Assistant resolves it — an explicit weekday in the profile wins, and only when that is left at Auto does the language decide. Upgrading therefore shifts week numbers, week separators and the start_date: start_of_week anchor for anyone whose profile or language implies a week that does not begin on Monday — nineteen of the 64 languages Home Assistant ships, seventeen starting on Sunday and Arabic and Persian on Saturday. Set first_day_of_week: monday to keep the old behavior; see Week Numbers & Visual Separators
  • Weather Badges Are Styled Through Custom Properties - The weather icon and text carried their font size and color as inline style attributes, which no theme could override. Those attributes are gone, and the six --calendar-card-weather-* properties the card was already emitting are now read by the stylesheet instead, making them a real override surface. Two things follow. Card-mod rules that targeted the inline-styled elements need updating — the properties are listed under Weather Custom Properties. And weather.date.color / weather.event.color no longer carry a default. They did in 3.x, but it never reached a card that showed weather: setConfig merged only the top level, so any weather: block replaced the whole default sub-tree. The rendered color came from a fallback in the renderer either way — primary for the day header, secondary for the per-event badge — and both fallbacks now live in the stylesheet with the same values, so the badge looks as it did

🎉 New Features

🗓️ Column View

See the week at a glance instead of scrolling through it. view: column lays the days out side by side, one column each, instead of stacking them — the same agenda the list layout already shows, rotated. Your events, labels and colors carry over exactly as they are; only the date moves, from the left of each row to the top of each column. The default is still list, so nothing changes until you ask for it (#377, #14, #263, #253)

  • It Falls Back on a Phone - Columns need width, so a card too narrow to give every day a readable one — column.min_day_width, 140 pixels — simply renders as a list instead. The same card can be columns on a desktop dashboard and a list on a phone, with no second card and no conditional wrapper. That is also why the editor annotates list-only options rather than hiding them: hiding a control would remove it for the layout that same card uses on a phone
  • Or Sheds a Day Instead - If you would rather keep the columns, column.min_days_to_show lets a narrowing card drop trailing days one at a time before it gives up on the layout. It defaults to days_to_show, which leaves the behavior off, because a card quietly showing four of seven days looks exactly like a card configured for four. column.min_days_fallback: cramp keeps every day and lets the columns go narrower still
  • Different Values in Columns Than in the List - A size tuned for a full-width row is usually wrong in a 140px track, so a nested column: block holds the values that apply only when the card renders as columns; anything it does not mention keeps its top-level value. It works in both directions, so an option switched off at the top level can be switched back on for columns. Only presentation options may go there — anything deciding which events are loaded has to hold one value in both layouts, since the card switches between them as the dashboard resizes (see Overriding Options in Column View)
  • Two Options Start From a Different Default - show_empty_days and split_multiday_events both default to true in column view and do not inherit the top-level value. A list reads perfectly well with the blank days left out; a row of columns does not, because dropping the empty ones stops the columns corresponding to consecutive days. The same reasoning covers a multi-day event — a column is a day, so an event spanning three of them belongs in all three (see Options That Start From a Different Default)
  • Separators Rotate into the Gutter - Day, week and month separators keep their existing options and become full-height vertical rules between the columns, with month taking precedence over week and week over day. A column-only rule can also run under each day header — column.day_header_separator_width and _color — off by default like every other separator in the card. Switching it on centers it inside the space column.day_header_gap already reserves, rather than shifting the layout
  • A Header Per Column - Week numbers move into each column's header instead of taking a full-width row, and the today indicator becomes a leading marker on the weekday row so it stays unambiguous at any column width — the default 15% 50% position is calibrated for the list view's narrow date cell and would land inside the day number on a full-width column header
  • Room for the Progress Bar - A countdown and a progress bar never appear on the same event, so each now gets the treatment it needs instead of one compromise suiting neither. The countdown stays on the time row as trailing text after a middot, breaking at an ordinary word boundary when the column is too narrow; the bar moves to a row of its own under the title, spanning 80% of the column
  • One Click From the Card Picker - Adding a card by entity and picking a calendar.* entity now offers two starting points under Community: _Calendar Card...
Read more

v3.6.0

Choose a tag to compare

@github-actions github-actions released this 14 Aug 08:46
44ccfe9

Calendar Card Pro v3.6.0

A documentation site of its own, and six fixes for defects that made the card look broken rather than merely wrong. Everything that used to be buried in a very long README now lives at calendar-card-pro.alexpfau.com, with a page per feature and a complete configuration reference. Alongside it: a card that no longer disappears behind a red error box because of one stray line of YAML, per-calendar settings that take effect when you change them instead of whenever a cache happens to expire, and text that stops vanishing mid-word.

🎉 New Features

📚 A Documentation Site

🐛 Bug Fixes

Reliability

  • One Stray Line of YAML Took Down the Whole Card - A bare - in the entities: list, left behind while editing or written as entities: [~], parses to null. The config normalizer accepted it and then read a property off it, throwing before the card rendered — so Home Assistant replaced the entire calendar with a red error box. Malformed entries are now discarded, which is what the surrounding code always intended (#389)
  • Per-Calendar Settings Ignored Until the Cache Expired - Events were cached after processing, but the cache key described only what had been fetched — the calendars and the time window. Every other option the processing step reads was invisible to it, so editing a per-calendar label, colour or toggle appeared to do nothing until the entry aged out. The cache now stores the raw calendar payload and reprocesses it on every read, so edits apply immediately; per-calendar event limits were also silently degrading on a cache hit and no longer do

Appearance

  • Titles Ellipsised When Nothing Had Been Truncated - Event titles showed a trailing at certain card widths even though no characters had been dropped, and at slightly narrower widths the ellipsis ate one or two real characters before the title finally wrapped. The card offers no title-truncation option, so that ellipsis could only ever announce a truncation that had not happened
  • Words Disappeared Mid-Character in Descriptions and Locations - The description, location and time rows could shrink below the width of their own longest word and clip it mid-glyph, with no ellipsis to indicate anything was missing — measured on a 300px card, a 179px word in a 167px box painted 12 pixels of its last character and dropped the rest. Long words now wrap instead of being cut off

Countdown

  • Multi-Day Countdowns Disagreed From Row to Row - With split_multiday_events enabled a multi-day event renders one row per day, and each row was counted differently: the first measured wall-clock time and lost a day after midday, the middle rows counted calendar days, and the last counted to a midnight that exists only because of the split. A holiday four days out read in 3 days / in 5 days / in 6 days / in 6 days. Every row now counts whole calendar days to its own date, so the sequence reads consecutively; this also fixes countdowns vanishing from just the middle rows when show_countdown_allday was off (Thanks @Scooshie and @BalooDK, #344)

Configuration

  • Options Removed in v3.0.0 Were Ignored in Silence - Five options dropped in the v3.0.0 cleanup — max_events_to_show, vertical_line_color, horizontal_line_width, horizontal_line_color and row_spacing — were discarded without comment for anyone configuring the card in YAML: the value vanished, its replacement took the default, and nothing anywhere said so, which reads as "the update changed my styling". Each removed option is now reported in the browser console together with the option that replaces it. The visual editor already offered a one-click upgrade; this closes the gap for everyone who never opens it

🔧 Under the Hood

The renderer's leaf elements and the event presentation model moved into modules of their own, and whether an all-day event shows a time row is now decided by the formatter instead of by substring-matching the string it had just produced — a test that had no margin in the eight languages whose "until" translation is two characters long. The list view's rendered DOM is byte-identical throughout, now pinned by a test suite so that stays true.

Related Issues

  • #344 - Countdown display appears one day short for all-day calendar events by @Scooshie

Full Changelog: v3.5.0...v3.6.0

v3.5.0

Choose a tag to compare

@github-actions github-actions released this 10 Aug 09:29
b991a6c

Calendar Card Pro v3.5.0

Cards that hide themselves when there is nothing to show, start dates that follow the week, titles rendered from Home Assistant templates — and a fix that restores the card title to its intended size. This release is mostly about fitting the card to the dashboard around it: disappearing when it is empty, saying something useful when a day has no events, anchoring to next Monday instead of a date you keep updating, and driving the title from Home Assistant itself. The card is also easier to find in the first place, now that Home Assistant offers it directly when you add a calendar entity.

🎉 New Features

🫥 Empty State Control

  • hide_when_empty Option - Removes the entire card from the dashboard when there are no upcoming events, so the cards around it close the gap instead of leaving a "No upcoming events" placeholder behind. A conditional card cannot do this, because this card is not backed by an entity of its own. Defaults to false, so existing cards are unchanged (#286)
  • empty_day_text Option - Replaces the text shown on a day that has no events, so a meal-plan calendar can read "Leftovers" instead of "No upcoming events". The prefix is dropped for custom text and kept for the default, and clearing the field restores both (#279, #197)

The card deliberately never hides while you are editing the dashboard, never hides an error state, and never hides because a compact limit collapsed it — emptiness is measured against the fully expanded event set.

📅 Flexible Start Dates

start_date now accepts an anchor plus offsets, so a card can follow the calendar rather than a date you have to keep editing:

  • Week Anchor - start_of_week resolves to Monday or Sunday according to the card's first_day_of_week setting
  • Weekday Anchors - saturday, or the short form sat, resolves to the next Saturday, counting today if today is already Saturday
  • Composable Offsets - +N / -N days, +Nw / -Nw weeks and +<weekday> / -<weekday> jumps combine on any anchor: start_of_week+7, today+sat+7, monday+1w

Parsing is case-insensitive and ignores whitespace, and existing values such as a fixed 2025-07-01, today+7 and +3 behave exactly as before. The README has worked examples of every anchor and offset combination — see Start Date Configuration (#296, #276, #193)

🏷️ Templated Titles

  • Home Assistant Templates in title - A title containing {{ ... }} or {% ... %} is rendered by Home Assistant and updates live, so a card can show {{ now().strftime('%-d %B %Y') }} or pull a value straight from a sensor. There is no new option to switch on — a title without template syntax is passed through untouched. Template errors are reported under the Title field in the visual editor, and a template that starts failing keeps the last good title on screen rather than blanking the card (#303)

🔎 Easier to Find

  • Suggested in the Card Picker - Home Assistant 2026.6 and newer show Calendar Card Pro under Community when you add a card by entity and pick a calendar.* entity, pre-filled with that calendar and previewed with its real events. Until now the card only appeared in the full card list, so finding it meant already knowing it existed. There is nothing to configure, and older Home Assistant versions are unaffected (#373)

🐛 Bug Fixes

Appearance

  • Card Title Rendered as Body Text - The card header was styled entirely through Polymer --paper-font-headline_-_* variables that Home Assistant no longer defines. With no fallback values every declaration became invalid, so the title inherited body text and a titled card had no visual hierarchy at all — the card title looked identical to an event title beneath it. Titles now render at their intended size, weight and opacity. Titled cards become roughly 10px taller and their titles noticeably larger, which is how they were always meant to look; set title_font_size explicitly if you preferred the smaller text (#369)

Reliability

  • A Calendar That Failed to Load Looked Like an Empty Calendar - A calendar the card could not read returned zero events, which was indistinguishable from a calendar with nothing in it. The card stated there were no upcoming events, and with hide_when_empty enabled it removed itself from the dashboard entirely — an unreachable integration could quietly erase a card, leaving nothing on screen to explain why. Failed fetches are now tracked separately, so the card stays visible and shows its error state instead of asserting that the calendar is empty
  • A Failed Refresh Blanked Events Already on Screen - Each fetch replaced the event list wholesale, so a single failed poll emptied a populated card until the next successful one. Events already on screen now survive a failed refresh, scoped to the current configuration so that pointing a card at a mistyped entity still clears the previous calendar's events rather than showing them indefinitely
  • Empty Results Cached During an Outage - An empty result was cached even when an entity had failed, so a transient outage could persist emptiness and keep serving it after the calendar had recovered. Empty results are no longer cached when any entity failed

Configuration

  • Card With No Entities Stuck on "Loading calendar events..." - A card with an empty entities list never finished its initial load, so it showed the loading message indefinitely and its error state was unreachable. It now reports the misconfiguration instead

Visual Editor

  • Blank Date Picker for Relative Start Dates - The editor treated anything that was not a bare number as a fixed date, so documented values such as today+7 — and the ISO dates Home Assistant itself writes — opened an empty date picker that was one click away from overwriting the configured value. Relative expressions now route to the relative field and keep their value, and ISO dates hand their date portion to the picker (#365)

Related Issues

Full Changelog: v3.4.0...v3.5.0

v3.4.0

Choose a tag to compare

@github-actions github-actions released this 08 Aug 19:03
ee5d80b

Calendar Card Pro v3.4.0

Weather across the full day range, correct all-day countdowns, and a card that no longer empties itself when a number field is cleared. This release closes a set of gaps where the card silently rendered less than it should, and adds editor guidance so the configurations that quietly do nothing become visible while you are creating them.

🎉 New Features

⏳ Countdown Control

  • show_countdown_allday Option - Hide the countdown on all-day events while keeping it on timed ones. Defaults to true, so existing cards are unchanged (#323)

🧭 Compact Mode Guidance

Two configurations look perfectly reasonable but produce a card that is identical before and after an expand action. Both now surface a warning in the visual editor:

  • Missing Compact Limits - Shown when an expand action is configured but no compact limit is set anywhere, including per-entity compact_events_to_show overrides
  • Inert compact_days_to_show - Shown when compact_days_to_show is not lower than days_to_show, in which case it is silently clamped and has no effect
  • Helper Text for compact_events_to_show - A note explaining that the limit only takes effect once the selected day range actually contains more events than the limit

The warnings are advisory only — nothing is blocked and no runtime behavior changes.

🐛 Bug Fixes

Countdown

  • All-Day Countdowns Off By One - All-day countdowns were measured from the current instant rather than the calendar day, so they showed the wrong number for roughly half of every day, flipping at midday. An all-day event on the following day also counted down in hours, which is meaningless for an event with no time of day. All-day countdowns now measure whole calendar days from the start of today; timed events are unchanged (#344)

Weather

  • Missing Weather on Timed Events - Home Assistant's hourly forecast only spans about two days, and with weather.position: event any timed event beyond that horizon silently showed nothing, even though the daily forecast for that same date was already loaded. Timed events now fall back to their day's forecast, so weather appears across the full range instead of only the first day or two. The new weather.event.daily_forecast_fallback option (default true) turns the fallback off for anyone who would rather see nothing than a daily high next to a 09:00 event (#336)

Configuration

  • Cleared Number Fields Could Blank the Card - Clearing a numeric field in the visual editor saved an empty string instead of removing the option. Empty strings slipped past the card's existing guards and then coerced to zero, which dropped every event from a single calendar or, in the case of days_to_show and the global compact_events_to_show, rendered the entire card empty. Empty and invalid numbers are now ignored throughout, and configurations already saved in this state repair themselves on load (#327)

Compact Mode

  • Expand Blocked by Valid Limits - tap_action: expand did nothing when the only compact limit in play was compact_events_to_show: 0 or a per-entity override. The first case left a card that rendered empty with no way to get back, because zero was treated as "no limit set". Both configurations now expand and collapse correctly (#335)

Translations

  • Raw Key Names in the Visual Editor - The description toggle and its helper text rendered as the literal strings show_description and entity_show_description_note in Estonian, Lithuanian, Norwegian Bokmål, Polish, Slovak and Swedish. All eleven editor languages are now complete against the English reference

Console

  • Source Map 404 on Every Page Load - Every build appended a sourceMappingURL comment referencing a .map file that is never published through HACS, so anyone with browser devtools open saw a 404 on each load. Sourcemaps are no longer emitted, and CI now fails if the reference ever returns (#358)

⚡ Performance

  • Memoized Color Conversion - Resolving a color to RGBA created a temporary element, appended it to the document and read back its computed style — a forced synchronous layout that ran once per rendered event, on every render. Results are now cached, removing hundreds of forced layouts per refresh on large calendars. Theme-dependent var(...) colors are unaffected and still repaint correctly on a theme change

🔧 Technical Changes

  • Documented two previously unstated aspects of filter_duplicates in the README: the first-listed calendar wins a duplicate and takes its styling with it, and matching ignores the source calendar entirely, so identically named concurrent events merge even within a single calendar
  • Added a CI guard that fails the build if a sourceMappingURL comment or a dist/*.map file ever reappears

Related Issues

  • #304 - 2 different calendars have an event at the same time and only 1 event shows in the calendar by @nytram-md
  • #323 - Add option to disable countdown to all-day events by @doctorkb
  • #327 - Standard view doesn't show all day events in initial view by @FS1961
  • #335 - 'action: expand' does not work by @fredokl
  • #336 - Weather icons missing on days containing timed events by @harryvandervossen
  • #344 - Countdown display appears one day short for all-day calendar events by @Scooshie
  • #358 - Source map error by @tomlut

Full Changelog: v3.3.0...v3.4.0

v3.3.0

Choose a tag to compare

@github-actions github-actions released this 07 Aug 13:34
1c0e839

Calendar Card Pro v3.3.0

Home Assistant 2026.5+ visual editor compatibility, two new languages, and important color and relative-time fixes. This release restores the visual editor on recent Home Assistant versions, brings the card to 35 languages, and resolves several long-standing color and translation issues.

🎉 New Features

🌐 New Language Additions

Two new languages bring the total to 35:

  • British English (en-GB) - Complete interface and editor translation (Thanks @martinconroy, #334)
  • Latvian (lv) - Complete interface and editor translation (Thanks @djadjuks, #340)

🌐 Expanded Editor Language Support

Three new editor translations bring the visual editor to 11 languages total (English, British English, German, Norwegian Bokmål, Swedish, Slovak, Polish, Estonian, Lithuanian, Italian, Latvian):

  • Italian Editor Translation - Complete translation for the visual configuration editor, along with refinements to existing Italian interface strings (Thanks @papperone, #333)
  • British English Editor Translation - Complete translation for the visual configuration editor
  • Latvian Editor Translation - Complete translation for the visual configuration editor

🐛 Bug Fixes

Compatibility

  • Home Assistant 2026.5+ Visual Editor - Restored the text input fields in the visual editor, which disappeared entirely on Home Assistant 2026.5 and later after the ha-textfield component was removed. The editor now detects ha-input where available and falls back to ha-textfield on older versions, so a single build keeps working across both (#338)

Event Colors

  • event_color Now Applied Correctly - Fixed event_color being ignored whenever no per-entity color was configured, which caused affected events to always fall back to the default accent color (Thanks @astraios-de, #341)

Translations

  • Catalan and Romanian Relative Times - Fixed relative time strings such as "in 2 days" silently falling back to English for Catalan and Romanian, both of which were missing their Day.js locale registration
  • Latvian Locale Registration - Completed the Latvian registration so its relative times resolve correctly rather than falling back to English

🔧 Technical Changes

  • Added AGENTS.md documenting repository conventions, the branch model, and the translation checklist for AI coding agents
  • Corrected contributor guidance in CONTRIBUTING.md, which previously directed pull requests at the wrong base branch
  • Added TypeScript type checking (tsc --noEmit) to the CI pipeline
  • The release workflow now publishes the curated notes from docs/RELEASE_NOTES.md instead of auto-generating a commit list

Related Issues

Full Changelog: v3.2.0...v3.3.0

v3.2.0

Choose a tag to compare

@github-actions github-actions released this 27 Mar 21:34
b69a30b

Calendar Card Pro v3.2.0

Event descriptions, weather UV index, RTL support, and Home Assistant 2026.3 compatibility. This release introduces major new display features alongside critical compatibility updates and significant bug fixes.

🎉 New Features

📝 Event Description Display

Calendar Card Pro now supports displaying event descriptions directly below event titles, giving users more context at a glance without opening the event details:

  • show_description Option - Toggle display of event descriptions globally or per entity (Thanks @IT-BAER, #277)
  • description_max_lines Option - Limit displayed lines with CSS line-clamp and ... truncation (0 = unlimited)
  • Automatic HTML Processing - HTML tags are stripped and HTML entities are decoded for clean, readable text
  • Full Styling Control - Configurable description_font_size, description_color, and description_icon_size

🌤️ UV Index Display

Weather forecasts now support UV index information, displayable in both date column and event positions:

  • show_uv_index Option - Show UV index in weather forecasts for both date and event positions (Thanks @jandechent, #273)
  • uv_index_threshold Option - Only display the UV index when it exceeds a configurable threshold value (e.g., set to 3 to hide low UV readings)

🎨 Enhanced Customization

  • Event Icon Vertical Alignment - New event_icon_vertical_alignment option (top, middle, bottom) to control vertical positioning of time, location, and description icons relative to their text
  • Label Icon Color - New per-entity label_icon_color option to customize the color of mdi: and other icon-type labels independently from event text color, with full visual editor support (Thanks @aw1604, #302)
  • Two-Digit Hours - New time_two_digit_hours option to pad single-digit hours with a leading zero (e.g., 09:00 instead of 9:00)

🔄 Improved Loading UX

  • Events now remain visible during background data refresh instead of being replaced by a loading spinner
  • A subtle, non-intrusive spinner appears in the top-right corner during refresh
  • Added aria-busy attribute on the card for improved accessibility
  • Distinguished initial load (full spinner) from background refresh (subtle indicator)

↔️ RTL Language Support

  • Added right-to-left (RTL) support for event borders and accent lines using CSS logical properties, enabling proper display for RTL languages such as Hebrew and Arabic (Thanks @baruchiro, #275)

🌐 New Language Additions

Three new languages bring the total to 33:

  • Estonian (et) - Complete interface and editor translation
  • Lithuanian (lt) - Complete interface and editor translation
  • Turkish (tr) - Complete interface translation (Thanks @ofilis, #268)

🌐 Expanded Editor Language Support

Three new editor translations bring the visual editor to 8 languages total (English, German, Norwegian Bokmål, Swedish, Slovak, Polish, Estonian, Lithuanian):

  • Polish Editor Translation - Complete translation for the visual configuration editor interface
  • Estonian Editor Translation - Complete translation for the visual configuration editor interface
  • Lithuanian Editor Translation - Complete translation for the visual configuration editor interface

🐛 Bug Fixes

Compatibility

  • Home Assistant 2026.3+ Compatibility - Migrated ha-select dropdowns to the new WebAwesome API introduced in HA 2026.3, preventing visual editor rendering failures
  • Browser_mod Compatibility - Delegated tap/hold actions to Home Assistant's native action handler, restoring compatibility with browser_mod and similar custom integrations

Weather & Performance

  • Weather WebSocket Subscription Leak - Fixed a memory leak caused by weather forecast WebSocket subscriptions accumulating over time without proper cleanup (#291)
  • Enhanced Refreshing and Caching Logic - Improved data refresh reliability with better cache invalidation and smarter refresh triggers (#297)

Location & Description Processing

  • Location Display Corruption Fix - Removed redundant location/description processing in the renderer that could corrupt location strings when using a custom remove_location_country regex pattern—e.g., a regex like New York|USA could inadvertently blank the location after double-processing (Thanks @sevorl, #331)

Visual Editor

  • Date Picker Fix - Replaced the broken date picker component with a native date input for reliable start date selection
  • Start Date Offset Field - Fixed the start_date relative offset field (today+N) vanishing during editing
  • Label Icon Color Editor - Added label_icon_color to the visual editor entity configuration panels

Display & Rendering

  • Non-MDI Icon Prefix Support - Fixed rendering of non-mdi: icon prefixes (e.g., fas:, hass:) in labels and today indicators
  • Loading Spinner Positioning - Adjusted the loading spinner position to respect the card's border radius

Translation Fixes

  • Norwegian - Corrected day and month name capitalization and preposition usage
  • Slovak - Fixed a typo in the Slovak translation
  • Estonian - Corrected the Estonian language mapping in localize.ts

Build & Infrastructure

  • Production Build Fixes - Resolved production build issues by removing development mode warnings and optimizing build configurations
  • Dependency Updates - Updated project dependencies

Related Issues

Full Changelog: v3.1.0...v3.2.0

v3.1.0

Choose a tag to compare

@github-actions github-actions released this 22 Jun 20:50
cde3f10

Calendar Card Pro v3.1.0

Enhanced internationalization and improved customization. This release significantly expands language support for the visual configuration editor while adding powerful new customization options and fixing important display issues.

🎉 New Features

🌐 Expanded Editor Language Support

Calendar Card Pro's visual configuration editor now supports three additional languages, making configuration accessible to even more users:

  • Norwegian Bokmål Editor Translation - Complete translation for the visual configuration editor interface (Thanks @mathiasbk, #235)
  • German Editor Translation - Complete translation for the visual configuration editor interface (Thanks @NetSecond, #237)
  • Swedish Editor Translation - Complete translation for the visual configuration editor interface (Thanks @JonasHedberg, #238)

The visual editor now supports 5 languages total: English, Slovak, Norwegian, German, and Swedish.

🆕 New Language Addition

  • Bulgarian Language Support - Added complete Bulgarian translation for the calendar card interface, bringing the total number of supported languages to 30! (Thanks @kyutov, #246)

🎨 Enhanced Styling Capabilities

  • Tomorrow CSS Class - Added new HTML tomorrow CSS class to tomorrow's events, enabling users to use card-mod to apply specific styling to tomorrow's events that's distinct from other future events. See the ReadMe for an example. (Thanks @Squazel, #249)

🐛 Bug Fixes

Weather Display Improvements

  • Zero Temperature Display Fix - Fixed an issue where minimum temperature values of exactly 0° would not be displayed in the date column when show_low_temp: true was configured. The condition now properly handles zero values by checking for undefined instead of using truthy evaluation. (Thanks @DaveOzzie, #252)

Layout and Container Issues

  • Grid Container Overflow Fix - Resolved an issue where the calendar card would exceed its container boundaries and overlay other sections when grid_options.rows was configured. The card now properly respects container boundaries in all grid configurations. (Thanks @Deltids, #233)

Related Issues

  • #235 - Added editor values to Norwegian bokmål language by @mathiasbk
  • #237 - Update de.json (complete) by @NetSecond
  • #238 - Swedish Translation by @JonasHedberg
  • #246 - Add support for Bulgarian language by @kyutov
  • #248 - [Feature]: Include HTML class to indicate "tomorrow" by @Squazel
  • #249 - feat(tomorrow): Added new HTML class 'tomorrow' by @Squazel
  • #252 - [Bug]: Weather minimum temperature not displayed if it's zero degrees by @DaveOzzie
  • #233 - [Bug]: Calendar card exceeds container when grid_options.rows is set by @Deltids

Full Changelog: v3.0.6...v3.1.0

v3.0.6

Choose a tag to compare

@github-actions github-actions released this 23 May 19:58
f7240ae

Calendar Card Pro v3.0.6

🎉 New Features

  • Slovak Editor Translation - Added complete Slovak translation for the visual configuration editor, making Slovak the second fully supported editor language after English. (Thanks @jose1711, #230)

🐛 Bug Fixes

  • Event Background Color Fix - Fixed an issue where the event background color did not correctly use the global accent_color setting when no entity-specific accent_color was defined. The event background now properly matches the global accent color setting.
  • Slovak Translation Typo Fix - Fixed a small typo in the Slovak translation for the calendar card interface. (Thanks @jose1711, #230)

Related Issues

Full Changelog: v3.0.5...v3.0.6

v3.0.5

Choose a tag to compare

@github-actions github-actions released this 18 May 20:59
3015b57

Calendar Card Pro v3.0.5

🐛 Bug Fixes

  • Allowlist/Blocklist Filtering Fix - Fixed incorrect behavior when using multiple configurations for the same calendar entity with different allowlist/blocklist filters. Each entity configuration is now processed independently, correctly applying filters and event limits.
  • Empty Space Removal - Resolved an issue causing excessive empty space when compact_events_to_show was set only at the entity level without a global limit. Days without visible events are now properly filtered out, eliminating unnecessary empty space.
  • Ukrainian Translation Fix - Corrected incorrect Ukrainian translations for calendar elements.

Related Issues

Full Changelog: v3.0.4...v3.0.5

v3.0.4

Choose a tag to compare

@github-actions github-actions released this 13 May 19:51
f94f759

Calendar Card Pro v3.0.4

🐛 Bug Fixes

  • Fixed accent color backgrounds - Resolved an issue where event background colors wouldn't display properly when using named colors like "blue" in the accent_color setting (RGB and hex values were unaffected)

Related Issues

  • #219 - Shaded Accent Backgrounds fail after 3.0.x by @dml105

Full Changelog: v3.0.3...v3.0.4


Calendar Card Pro v3.0.0

Visual configuration meets weather integration. This major release transforms how you interact with and view calendar information, combining intuitive visual configuration with powerful weather forecasts—making your calendar both easier to set up and more contextually informative than ever before.

🎉 New Features

⚙️ Visual Configuration Editor

Calendar Card Pro now includes a comprehensive visual editor that makes configuration simple and intuitive! This highly-requested feature provides a rich, guided interface for customizing every aspect of your calendar card.

Visual Configuration Editor

  • Native Home Assistant Design - Built with the same UI components as Home Assistant for perfect visual integration and consistent theming
  • Smart, Context-Aware Interface - Options only appear when relevant, reducing clutter and simplifying configuration
  • Organized Configuration Sections - Settings are grouped into logical, collapsible panels for easy navigation
  • Automatic Config Upgrader - ✨ Detects deprecated settings and updates your configuration with one click
  • Specialized Input Helpers - Advanced pickers for entities, icons, colors and other complex options
  • Mobile-Friendly Design - Fully responsive interface that works on any device

Upgrading from previous versions? When you first open the editor after updating, any deprecated parameters in your configuration will be automatically detected. Simply click the "Update config..." button that appears to instantly migrate to the latest parameter names!

Note: The visual configuration editor is currently only available in English. The configured calendar card will still display in your selected language, but the editor interface itself is English-only at this time.

Editor Feature Details
  • Logical Organization - Edit configuration in intuitive sections including Calendar Entities, Core Settings, Appearance & Layout, Date Display, Event Display, Weather Integration, and Interactions
  • Dynamic Fields - Options for styling and advanced features only appear when their parent features are enabled
  • Smart Validation - Type-specific input fields with validation ensure your configuration is always correct
  • Visual Helpers - Specialized selectors for today indicators, calendar labels, and other visual elements
  • Enhanced Accessibility - Inclusive design principles ensure the editor is usable by everyone

🌦️ Weather Integration

Calendar Card Pro now supports displaying weather forecasts directly alongside your calendar events! This powerful new integration allows you to see the expected weather conditions for each day or for specific events.

Weather Integration

  • Dual Display Positions: Show weather in the date column, event column, or both
  • Customizable Information: Choose what weather data to display independently for each position
  • Per-Position Styling: Control the appearance and content of weather data independently in each position
  • Automatic Forecast Matching: Weather data automatically matches the correct day or event time
  • Home Assistant Integration: Uses your existing weather entities and requires no additional setup

Pro Tip: The new visual editor makes configuring weather integration simple! Just select your weather entity and customize display options through the intuitive Weather Integration panel.

Manual YAML Configuration Details
type: custom:calendar-card-pro
# Basic weather configuration
weather:
  entity: weather.your_weather_entity
  position: date # Options: 'date', 'event', or 'both'
  date:
    show_conditions: true
    show_high_temp: true
    show_low_temp: false
  event:
    show_conditions: true
    show_temp: true

For full parameter documentation including styling options, see our GitHub README.

🕒 Improved Time Format Detection

Calendar Card Pro now correctly integrates with all Home Assistant time format settings:

  • Complete HA Integration - Properly detects and respects all four Home Assistant time format options: 12-hour, 24-hour, language-based, and system-based settings
  • Smart Language Detection - When HA is set to use language-based time format, the card intelligently determines the appropriate format based on the language
  • System Settings Support - Properly detects system/browser time format preferences when HA is configured to use them
  • Override Capability - Still allows explicit time format configuration via the card's time_24h setting, independent of Home Assistant settings

New Languages

Extended language support to further regions, so that 29 languages are now supported:

  • Croatian Language - Added complete Croatian translations for all calendar elements

Parameter Updates

The following parameters have been renamed or removed in v3.0.0 (the editor will automatically detect and update these for you):

  • max_events_to_showcompact_events_to_show (both global and entity-level)
  • vertical_line_coloraccent_color
  • horizontal_line_widthday_separator_width
  • horizontal_line_colorday_separator_color

🐛 Bug Fixes

Today Indicator Emoji Detection

  • Improved Emoji Support – Today indicator now reliably detects and displays all emoji characters, including complex and multi-codepoint emojis, by using Unicode property escapes for robust emoji detection.

Entity-level Settings Consistency

  • Fixed Entity-level Location Display - Entity-specific show_location: true now correctly overrides the global show_location: false setting, ensuring consistent behavior with other entity-level settings like show_time.

Related Issues

This release addresses community-reported issues:

Full Changelog: v2.4.5...v3.0.0