-
Notifications
You must be signed in to change notification settings - Fork 0
Migration Guide
Orbit Room Card has been renamed to Orbit Area Card.
New configs should use:
type: custom:orbit-area-cardExisting configs using:
type: custom:orbit-room-cardcontinue to work through a legacy alias.
When an old Room Card config is opened in the visual editor, the editor migrates:
type: custom:orbit-room-cardto:
type: custom:orbit-area-cardIt also migrates:
room_name: Loungeto:
area_name: LoungeOlder Area/Room Card configs may use:
navigate:
navigation_path: /dashboard-main/loungeThis still works as a legacy fallback.
New configs should use:
tap_action:
action: navigate
navigation_path: /dashboard-main/loungeThe visual editor writes navigation through tap_action.
Area Card now supports icon source selection:
icon_source: areaOptions:
areaentitycustomtemplate
If custom icon config exists, the editor can preserve custom mode. If no custom icon config exists, it prefers Area when an area is configured, otherwise Entity when a main entity is configured.
Actions now live in a native-style Interactions section in the editor.
Unset actions use card defaults.
Use:
action: noneonly when you intentionally want to disable an interaction.
| Old | New |
|---|---|
custom:orbit-room-card |
custom:orbit-area-card |
room_name |
area_name |
navigate.navigation_path |
tap_action.navigation_path with action: navigate
|
Deck Card is compatible with the same basic item shape used by custom:tabbed-card.
Change:
type: custom:tabbed-card
tabs:
- attributes:
icon: mdi:home
label: Home
card:
type: entities
entities:
- light.loungeto:
type: custom:orbit-deck-card
layout: tabs
decks:
- attributes:
icon: mdi:home
label: Home
card:
type: entities
entities:
- light.loungeDeck Card accepts attributes.label. When the visual editor opens the card, it saves that value back as attributes.name.
Orbit now uses the same compact presentation schema across Area, Status, Action, and Status Badge components. Legacy presentation keys are migrated automatically when the component loads.
Common colour migrations:
| Previous key | Current key |
|---|---|
accent_color_source |
color_source |
accent_color |
color |
accent_on_color |
color_on |
accent_off_color |
color_off |
Common icon migrations:
| Previous key | Current key |
|---|---|
main_entity_icon_source or entity_icon_source
|
icon_source |
main_entity_icon_template, entity_icon_template, or icon_template
|
icon |
main_entity_icon or entity_icon
|
icon |
main_entity_icon_on or entity_icon_on
|
icon_on |
main_entity_icon_off or entity_icon_off
|
icon_off |
| Corresponding prefixed SVG override keys | icon*_svg_color_override |
When icon_source: template is selected, the Jinja template is stored directly in icon. Colour template mode uses color_source: template and stores its Jinja template in color.
Area Card additionally migrates:
-
main_entity_state_templatetostate_template; -
statusN_icon_templatetostatusN_icon; - button, curved-button, and Action-button
*_icon_templateto*_icon; - their
*_on_color/*_off_colorkeys to*_color_on/*_color_off.
Action Card migrates accent_color to color and its main_entity_icon* presentation keys to the generic icon* keys, both at the root and inside grouped entities entries.
Status Badge migrates its legacy accent colour and icon_template keys to the shared schema.
If both a current and legacy key exist, the current value wins and the legacy key is removed. Orbit Area, Action, and Status Cards nested inside Deck Cards are also migrated recursively, including nested Deck Cards and both release and -dev types.
Status Card also migrates these non-presentation keys:
| Previous key | Current key |
|---|---|
main_entity |
entity |
status_name |
name |
main_entity_tap_action |
entity_tap_action |
main_entity_hold_action |
entity_hold_action |
main_entity_double_tap_action |
entity_double_tap_action |
These renames apply to Status Card. main_entity remains the current entity key for Area Card and Action Card, and Area Card retains main_entity_*_action for its large icon interactions.
Root Status Card configs and object entries inside grouped entities are normalized. New visual-editor configs explicitly save state_source: entity, area_count, or template; runtime configs that omit it remain compatible and default to Entity.
Legacy Status configs containing state_template or label_template without an Area Count or Template source are automatically assigned state_source: template. The templates themselves are preserved:
# Previous
main_entity: sensor.recycle_collection
label_template: >-
{{ state_attr('sensor.recycle_collection', 'daysTo') }}
state_template: >-
{{ state_attr('sensor.recycle_collection', 'daysTo') | int < 2 }}
# Automatically normalized
state_source: template
entity: sensor.recycle_collection
label_template: >-
{{ state_attr('sensor.recycle_collection', 'daysTo') }}
state_template: >-
{{ state_attr('sensor.recycle_collection', 'daysTo') | int < 2 }}In Template state, state_template supplies the rendered state and fallback active detection. label_template optionally supplies the displayed status text. active_template and inactive_template can override active detection explicitly. Person mode keeps state_template as its tracker active-state override.
Grouped Icon only Status Cards store an explicit state_source, Area Count filters, presentation, templates, and interactions on each item, allowing Entity, Area Count, and Template items in one group.
Area Card button state templates and Status Card templates use Home Assistant's native Jinja renderer.
Legacy bare expressions such as:
state_template: state_attr('fan.wetroom_extractor_fan', 'percentage') | int > 50are migrated when the card is loaded in the visual editor:
state_template: >-
{{ state_attr('fan.wetroom_extractor_fan', 'percentage') | int > 50 }}Templates that already contain Jinja delimiters are preserved unchanged.