Skip to content
Merged
Changes from 2 commits
Commits
Show all changes
26 commits
Select commit Hold shift + click to select a range
d560931
Rebuild `home_valueXX_icon_color` engine
edwardtfn Feb 4, 2026
da2f5ca
Merge branch 'main' into v9999.99.9
edwardtfn Feb 4, 2026
1f253dd
Use valid Jinja expression in value color/icon guards
edwardtfn Feb 4, 2026
5f25295
Automatic versioning
edwardtfn Feb 5, 2026
78e5b32
style: auto-fix markdown lint issues
edwardtfn Feb 5, 2026
3c30041
Potential fix for code scanning alert no. 28: Workflow does not conta…
edwardtfn Feb 5, 2026
42c8521
Fix file reference
edwardtfn Feb 5, 2026
106ca39
Merge branch 'v9999.99.9' of https://github.com/edwardtfn/NSPanel-Eas…
edwardtfn Feb 5, 2026
f1e686c
style: auto-fix markdown lint issues
edwardtfn Feb 5, 2026
4e01343
Merge branch 'main' into v9999.99.9
edwardtfn Feb 5, 2026
7d0f7e8
Avoid force‑pushing all tags
edwardtfn Feb 5, 2026
b54bb88
Merge branch 'v9999.99.9' of https://github.com/edwardtfn/NSPanel-Eas…
edwardtfn Feb 5, 2026
bfb5eab
Clarify tag backups
edwardtfn Feb 5, 2026
38ad27d
active voice for clarity
edwardtfn Feb 5, 2026
5c4b6fc
Fix command injection vulnerability in tag message generation: quote …
edwardtfn Feb 5, 2026
be60f3d
Remove documentation describes temp branch workflow that doesn't exist
edwardtfn Feb 5, 2026
253845d
📝 CodeRabbit Chat: Add unit tests
coderabbitai[bot] Feb 5, 2026
ac9b218
lint
edwardtfn Feb 5, 2026
2ee0d20
Add Sponsor via GitHub
edwardtfn Feb 5, 2026
8993d54
Merge branch 'v9999.99.9' of https://github.com/edwardtfn/NSPanel-Eas…
edwardtfn Feb 5, 2026
a00e8e0
Fix start/end markers
edwardtfn Feb 5, 2026
9dde51d
Update .test/unit/test_versioning_advanced.py
edwardtfn Feb 5, 2026
2205fbe
Hardcoded absolute paths will break portability
edwardtfn Feb 5, 2026
9d25f35
Update .test/unit/test_versioning.py
edwardtfn Feb 5, 2026
6b68fb9
Merge branch 'v9999.99.9' of https://github.com/edwardtfn/NSPanel-Eas…
edwardtfn Feb 5, 2026
00666b7
Update .test/unit/test_versioning.py
edwardtfn Feb 5, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
140 changes: 71 additions & 69 deletions nspanel_easy_blueprint.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -689,7 +689,7 @@ blueprint:
home_value01_label_color:
name: Home page - Entity State 01 - Text color
description: *description_text_color
default: [200, 204, 200]
default: &default_home_value_color [200, 204, 200]
selector: *color_selector
home_value01_icon:
name: Home page - Entity State 01 - Icon (Optional)
Expand All @@ -700,7 +700,7 @@ blueprint:
home_value01_icon_color:
name: Home page - Entity State 01 - Icon color
description: *description_icon_color
default: [200, 204, 200]
default: *default_home_value_color
selector: *color_selector
home_value02:
name: Home page - Entity State 02 - Entity (Optional)
Expand All @@ -710,7 +710,7 @@ blueprint:
home_value02_label_color:
name: Home page - Entity State 02 - Text color
description: *description_text_color
default: [200, 204, 200]
default: *default_home_value_color
selector: *color_selector
home_value02_icon:
name: Home page - Entity State 02 - Icon (Optional)
Expand All @@ -720,7 +720,7 @@ blueprint:
home_value02_icon_color:
name: Home page - Entity State 02 - Icon color
description: *description_icon_color
default: [200, 204, 200]
default: *default_home_value_color
selector: *color_selector
home_value03:
name: Home page - Entity State 03 - Entity (Optional)
Expand All @@ -730,7 +730,7 @@ blueprint:
home_value03_label_color:
name: Home page - Entity State 03 - Text color
description: *description_text_color
default: [200, 204, 200]
default: *default_home_value_color
selector: *color_selector
home_value03_icon:
name: Home page - Entity State 03 - Icon (Optional)
Expand All @@ -740,7 +740,7 @@ blueprint:
home_value03_icon_color:
name: Home page - Entity State 03 - Icon color
description: *description_icon_color
default: [200, 204, 200]
default: *default_home_value_color
selector: *color_selector
home_value04:
name: Home page - Entity State 04 - Entity (Optional)
Expand All @@ -750,7 +750,7 @@ blueprint:
home_value04_label_color:
name: Home page - Entity State 04 - Text color
description: *description_text_color
default: [200, 204, 200]
default: *default_home_value_color
selector: *color_selector
home_value04_icon:
name: Home page - Entity State 04 - Icon (Optional)
Expand All @@ -760,7 +760,7 @@ blueprint:
home_value04_icon_color:
name: Home page - Entity State 04 - Icon color
description: *description_icon_color
default: [200, 204, 200]
default: *default_home_value_color
selector: *color_selector
home_page_chips:
name: Home page - Chips (optional)
Expand Down Expand Up @@ -9370,45 +9370,56 @@ action:
repeat:
for_each: '{{ home_page.entity_value | list }}'
sequence:
- condition:
- '{{ repeat.item.entity is defined }}'
- '{{ repeat.item.entity is string }}'
- '{{ repeat.item.entity.split(".") | count == 2 }}'
- variables:
entity_id: '{{ repeat.item.entity }}'
overlap:
icon: '{{ repeat.item.icon }}'
icon_color: >
{{
repeat.item.icon_color_rgb
if repeat.item.icon_color_rgb is defined and
repeat.item.icon_color_rgb is list and
repeat.item.icon_color_rgb | count == 3
else [200, 204, 200]
}}
- *variable_entity
- *delay_boot
- action: 'esphome.{{ nspanel_name }}_component_color'
data:
page: home
id: '{{ repeat.item.component }}'
color: >
{{
entity.icon_color
if entity.icon_color is defined and
entity.icon_color is list and
entity.icon_color | count == 3
else overlap.icon_color
}}
continue_on_error: true
- *delay_boot
- action: 'esphome.{{ nspanel_name }}_component_text'
data:
page: '{{ repeat.item.page }}'
id: '{{ repeat.item.component }}_icon'
txt: >
{{
entity.icon
if entity.icon is defined and entity.icon is string and entity.icon | length > 0
else all_icons.blank
}}
continue_on_error: true
default_color: *default_home_value_color
- alias: Text color
if:
- '{{ if repeat.item.label_color_rgb is defined }}'
- '{{ repeat.item.label_color_rgb is list }}'
- '{{ repeat.item.label_color_rgb | count == 3 }}'
- '{{ repeat.item.label_color_rgb != default_color }}'
then:
- *delay_boot
- action: 'esphome.{{ nspanel_name }}_component_color'
data:
page: home
id: '{{ repeat.item.component }}'
color: '{{ repeat.item.label_color_rgb }}'
continue_on_error: true

- alias: Icon color
if:
- '{{ if repeat.item.icon_color_rgb is defined }}'
- '{{ repeat.item.icon_color_rgb is list }}'
- '{{ repeat.item.icon_color_rgb | count == 3 }}'
- '{{ repeat.item.icon_color_rgb != default_color }}'
then:
- *delay_boot
- action: 'esphome.{{ nspanel_name }}_component_color'
data:
page: home
id: '{{ repeat.item.component }}_icon'
color: '{{ repeat.item.icon_color_rgb }}'
continue_on_error: true

- alias: Icon
if:
- '{{ if repeat.item.icon is defined }}'
- '{{ repeat.item.icon is string }}'
- '{{ repeat.item.icon is match "mdi:" }}'
- '{{ repeat.item.icon.split("mdi:")[1] in all_icons }}'
then:
- *delay_boot
- action: 'esphome.{{ nspanel_name }}_component_text'
data:
page: '{{ repeat.item.page }}'
id: '{{ repeat.item.component }}_icon'
txt: '{{ all_icons[repeat.item.icon.split("mdi:")[1]] }}'
continue_on_error: true

- alias: NSPanel Left Button Name
if: '{{ hardware.buttons.left.name | length > 0 }}'
Expand Down Expand Up @@ -10293,7 +10304,6 @@ action:
visible: true
continue_on_error: true

##### Home page - Values 01 - 04
- repeat:
for_each: >
{{
Expand All @@ -10304,26 +10314,27 @@ action:
}}
sequence:
- &display_value
if: >
{{
repeat.item.entity is defined and
repeat.item.entity is string and
has_value(repeat.item.entity)
}}
if:
- '{{ repeat.item.entity is defined }}'
- '{{ repeat.item.entity is string }}'
- '{{ repeat.item.entity.split(".") | count == 2 }}'
- '{{ has_value(repeat.item.entity) }}'
then:
- *delay_default
- variables:
entity_id: '{{ repeat.item.entity }}'
default_color: *default_home_value_color
overlap:
icon: '{{ repeat.item.icon if repeat.item.icon is defined and repeat.item.icon is string and repeat.item.icon.split("mdi:")[1] in all_icons else None }}'
icon_color: >
icon: >
{{
repeat.item.icon_color_rgb
repeat.item.icon
if
repeat.item.icon_color_rgb is defined and
repeat.item.icon_color_rgb is list and
repeat.item.icon_color_rgb != [200, 204, 200]
else None
repeat.item.icon is defined and
repeat.item.icon is string and
repeat.item.icon is match "mdi:" and
repeat.item.icon.split("mdi:")[1] in all_icons
else
None
}}
- *variable_entity
- if: '{{ entity_has_value }}'
Expand All @@ -10345,15 +10356,6 @@ action:
id: '{{ repeat.item.component }}_icon'
txt: '{{ entity.icon }}'
continue_on_error: true
- if: '{{ entity.icon_color != [200, 204, 200] }}'
then:
- *delay_default
- action: 'esphome.{{ nspanel_name }}_component_color'
data:
page: '{{ repeat.item.page }}'
id: '{{ repeat.item.component }}_icon'
color: '{{ entity.icon_color }}'
continue_on_error: true

- *delay_default
- action: 'esphome.{{ nspanel_name }}_component_text'
Expand Down