chore: initial baseline before refactoring

Initial snapshot of Home Assistant config (HAOS 2026.4.4)
prior to dashboard restructuring and helper YAML migration.

Pre-commit cleanup applied:
- Removed blueprints/switch_manager/ (9.4 MB stale, component already gone)
- Removed .storage/switch_manager
- Removed home-assistant.log.{1,old,fault}
- Removed zigbee2mqtt/configuration_backup_v{1..4}.yaml
- Removed zigbee2mqtt/database.db.tmp.2024-09-27 (1.5y old)
- Created empty themes/ to satisfy configuration.yaml include

.gitignore uses allowlist strategy for .storage/ to keep
all tokens, keys, and PINs out of version control.
This commit is contained in:
2026-05-02 14:24:53 +02:00
commit 5f01411780
149 changed files with 47886 additions and 0 deletions
@@ -0,0 +1,322 @@
blueprint:
name: Synchronize 2 Home Assistant todo list
description: This blueprint for Home Assistant synchronizes 2 to-do lists. Originally
designed to sync Google Keep lists with the Bring shopping list, its versatility
allows syncing any list. Currently limited to syncing only active items, those
marked as completed are removed from the lists
source_url: https://gist.github.com/hectorzin/53f9811ff2d6a673af9ff3a9801df7af
domain: automation
input:
google_list:
name: List 1
description: Select your first list to synchronize
selector:
entity:
domain:
- todo
multiple: false
bring_list:
name: List 2
description: Select your second list to synchronize
selector:
entity:
domain:
- todo
multiple: false
temp_list:
name: Temp List
description: Select the temporary list that is used as the basis of the synchronization
selector:
entity:
domain:
- todo
multiple: false
trigger:
- platform: state
entity_id:
- !input google_list
- platform: state
entity_id:
- !input bring_list
condition: []
action:
- variables:
google_list: !input google_list
bring_list: !input bring_list
temp_list: !input temp_list
- service: todo.get_items
target:
entity_id: '{{ google_list }}'
data:
status: needs_action
response_variable: google_incompleted
- service: todo.get_items
target:
entity_id: '{{ bring_list }}'
data:
status: needs_action
response_variable: bring_incompleted
- service: todo.get_items
target:
entity_id: '{{ temp_list }}'
data:
status: needs_action
response_variable: temp_incompleted
- variables:
deleted_items: "{%- for temp_item in temp_incompleted[temp_list]['items'] -%}\n
\ {% set ns = namespace(found=false) %}\n {%- for google_item in google_incompleted[google_list]['items']
-%}\n {%- if google_item.summary|capitalize == temp_item.summary|capitalize
-%}\n {% set ns.found = true %}\n {%- endif -%}\n {%- endfor -%}\n
\ {%- if not ns.found -%}\n {{ temp_item.summary }};\n {%- endif -%}\n{%-
endfor -%}\n{%- for temp_item in temp_incompleted[temp_list]['items'] -%}\n
\ {% set ns = namespace(found=false) %}\n {%- for bring_item in bring_incompleted[bring_list]['items']
-%}\n {%- if bring_item.summary|capitalize == temp_item.summary|capitalize
-%}\n {% set ns.found = true %}\n {%- endif -%}\n {%- endfor -%}\n
\ {%- if not ns.found -%}\n {{ temp_item.summary }};\n {%- endif -%}\n{%-
endfor -%}\n"
- variables:
deleted_items: "{% for index in range(deleted_items.split(';')|length-1) -%}\n
\ {%- set item = deleted_items.split(';')[index] -%}\n {%- for google_item
in google_incompleted[google_list]['items'] -%}\n {%- if item|capitalize
== google_item.summary|capitalize -%}\n {{ google_item.summary }};\n {%-
endif -%}\n {%- endfor -%}\n{%- endfor -%}\n{% for index in range(deleted_items.split(';')|length-1)
-%}\n {%- set item = deleted_items.split(';')[index] -%}\n {%- for bring_item
in bring_incompleted[bring_list]['items'] -%}\n {%- if item|capitalize ==
bring_item.summary|capitalize -%}\n {{ bring_item.summary }};\n {%-
endif -%}\n {%- endfor -%}\n{%- endfor -%}\n"
- repeat:
for_each: '{{ (deleted_items).split('';'') | list }}'
sequence:
- condition: template
value_template: '{{ repeat.item != "" }}'
- service: todo.update_item
target:
entity_id:
- '{{ temp_list }}'
data:
item: '{{ repeat.item }}'
status: completed
- variables:
delete_google: "{% set ns = namespace(found=\"\") %} {%- for google_item in\ngoogle_incompleted[google_list]['items']
-%}\n {%- if google_item.summary|capitalize == repeat.item|capitalize -%}\n
\ {% set ns.found = google_item.summary %}\n {%- endif -%}\n{%- endfor
-%}\n{%- if ns.found != \"\" -%}\n {{ ns.found }}\n{%- else -%}\n \n{%-
endif -%}\n"
- if:
- condition: template
value_template: '{{ delete_google != "" }}'
then:
- service: todo.remove_item
target:
entity_id:
- '{{ google_list }}'
data:
item: '{{ delete_google }}'
- variables:
delete_bring: "{% set ns = namespace(found=\"\") %}\n{%- for bring_item in
bring_incompleted[bring_list]['items'] -%}\n {%- if bring_item.summary|capitalize
== repeat.item|capitalize -%}\n {% set ns.found = bring_item.summary
%}\n {%- endif -%}\n{%- endfor -%}\n{%- if ns.found != \"\" -%}\n {{ ns.found
}}\n{%- else -%}\n \n{%- endif -%}\n"
- if:
- condition: template
value_template: '{{ delete_bring != "" }}'
then:
- service: todo.update_item
target:
entity_id:
- '{{ bring_list }}'
data:
item: '{{ delete_bring }}'
status: completed
- service: todo.get_items
target:
entity_id: '{{ temp_list }}'
data:
status: needs_action
response_variable: temp_incompleted
- service: todo.get_items
target:
entity_id: '{{ google_list }}'
data:
status: needs_action
response_variable: google_incompleted
- service: todo.get_items
target:
entity_id: '{{ bring_list }}'
data:
status: needs_action
response_variable: bring_incompleted
- variables:
items_to_buy_rep: "{%- for google_item in google_incompleted[google_list]['items']
-%}\n {% set ns = namespace(found=false) %}\n {%- for temp_item in temp_incompleted[temp_list]['items']
-%}\n {%- if google_item.summary|capitalize == temp_item.summary|capitalize
-%}\n {% set ns.found = true %}\n {%- endif -%}\n {%- endfor -%}\n
\ {%- if not ns.found -%}\n {{ google_item.summary|capitalize }};\n {%-
endif -%}\n{%- endfor -%}\n{%- for bring_item in bring_incompleted[bring_list]['items']
-%}\n {% set ns = namespace(found=false) %}\n {%- for temp_item in temp_incompleted[temp_list]['items']
-%}\n {%- if bring_item.summary|capitalize == temp_item.summary|capitalize
-%}\n {% set ns.found = true %}\n {%- endif -%}\n {%- endfor -%}\n
\ {%- if not ns.found -%}\n {{ bring_item.summary|capitalize }};\n {%- endif
-%}\n{%- endfor -%}\n"
- variables:
items_to_buy: "{% for index in range(items_to_buy_rep.split(';')|length-1) -%}\n
\ {% set ns = namespace(found=false) %}\n {%- set item = items_to_buy_rep.split(';')[index]
-%}\n {% for index2 in range(index+1,items_to_buy_rep.split(';')|length-1)
-%}\n {%- set item2 = items_to_buy_rep.split(';')[index2] -%}\n {%- if
item == item2 -%}\n {% set ns.found = true %}\n {%- endif -%}\n {%-
endfor -%}\n {%- if not ns.found -%}\n {{ item }};\n {%- endif -%}\n{%-
endfor -%}\n"
- service: todo.get_items
target:
entity_id: '{{ temp_list }}'
data:
status: completed
response_variable: temp_completed
- variables:
items_to_delete: "{% for index in range(items_to_buy.split(';')|length-1) -%}\n
\ {% set ns = namespace(found=false) %}\n {%- set item = items_to_buy.split(';')[index]
-%}\n {%- for temp_item in temp_completed[temp_list]['items'] -%}\n {%-
if item|capitalize == temp_item.summary|capitalize -%}\n {{ temp_item.summary
}};\n {%- endif -%}\n {%- endfor -%}\n{%- endfor -%}\n"
- repeat:
for_each: '{{ (items_to_delete).split('';'') | list }}'
sequence:
- condition: template
value_template: '{{ repeat.item != "" }}'
- service: todo.remove_item
target:
entity_id: '{{ temp_list }}'
data:
item: '{{ repeat.item }}'
- repeat:
for_each: '{{ (items_to_buy).split('';'') | list }}'
sequence:
- condition: template
value_template: '{{ repeat.item != "" }}'
- service: todo.add_item
target:
entity_id: '{{ temp_list }}'
data:
item: '{{ repeat.item }}'
- service: todo.get_items
target:
entity_id: '{{ temp_list }}'
data:
status: needs_action
response_variable: temp_incompleted
- variables:
items_to_bring: "{%- for temp_item in temp_incompleted[temp_list]['items'] -%}\n
\ {% set ns = namespace(found=false) %}\n {%- for bring_item in bring_incompleted[bring_list]['items']
-%}\n {%- if bring_item.summary|capitalize == temp_item.summary|capitalize
-%}\n {% set ns.found = true %}\n {%- endif -%}\n {%- endfor -%}\n
\ {%- if not ns.found -%}\n {{ temp_item.summary|capitalize }};\n {%- endif
-%}\n{%- endfor -%}\n"
- service: todo.get_items
target:
entity_id: '{{ bring_list }}'
data:
status: completed
response_variable: bring_completed
- variables:
items_to_delete: "{% for index in range(items_to_bring.split(';')|length-1) -%}\n
\ {% set ns = namespace(found=false) %}\n {%- set item = items_to_bring.split(';')[index]
-%}\n {%- for bring_item in bring_completed[bring_list]['items'] -%}\n {%-
if item|capitalize == bring_item.summary|capitalize -%}\n {{ bring_item.summary
}};\n {%- endif -%}\n {%- endfor -%}\n{%- endfor -%}\n"
- repeat:
for_each: '{{ (items_to_delete).split('';'') | list }}'
sequence:
- condition: template
value_template: '{{ repeat.item != "" }}'
- service: todo.remove_item
target:
entity_id: '{{ bring_list }}'
data:
item: '{{ repeat.item }}'
- repeat:
for_each: '{{ (items_to_bring).split('';'') | list }}'
sequence:
- condition: template
value_template: '{{ repeat.item != "" }}'
- service: todo.add_item
target:
entity_id: '{{ bring_list }}'
data:
item: '{{ repeat.item }}'
- variables:
items_delete_bring: "{%- for bring_item in bring_incompleted[bring_list]['items']
-%}\n {% set ns = namespace(found=false) %}\n {%- for temp_item in temp_incompleted[temp_list]['items']
-%}\n {%- if bring_item.summary|capitalize == temp_item.summary|capitalize
-%}\n {% set ns.found = true %}\n {%- endif -%}\n {%- endfor -%}\n
\ {%- if not ns.found -%}\n {{ bring_item.summary }};\n {%- endif -%}\n{%-
endfor -%}\n"
- repeat:
for_each: '{{ (items_delete_bring).split('';'') | list }}'
sequence:
- condition: template
value_template: '{{ repeat.item != "" }}'
- service: todo.update_item
target:
entity_id: '{{ bring_list }}'
data:
item: '{{ repeat.item }}'
status: completed
- variables:
items_to_google: "{%- for temp_item in temp_incompleted[temp_list]['items'] -%}\n
\ {% set ns = namespace(found=false) %}\n {%- for google_item in google_incompleted[google_list]['items']
-%}\n {%- if google_item.summary|capitalize == temp_item.summary|capitalize
-%}\n {% set ns.found = true %}\n {%- endif -%}\n {%- endfor -%}\n
\ {%- if not ns.found -%}\n {{ temp_item.summary|capitalize }};\n {%- endif
-%}\n{%- endfor -%}\n"
- service: todo.get_items
target:
entity_id: '{{ google_list }}'
data:
status: completed
response_variable: google_completed
- variables:
items_to_delete: "{% for index in range(items_to_google.split(';')|length-1) -%}\n
\ {% set ns = namespace(found=false) %}\n {%- set item = items_to_google.split(';')[index]
-%}\n {%- for google_item in google_completed[google_list]['items'] -%}\n {%-
if item|capitalize == google_item.summary|capitalize -%}\n {{ google_item.summary
}};\n {%- endif -%}\n {%- endfor -%}\n{%- endfor -%}\n"
- repeat:
for_each: '{{ (items_to_delete).split('';'') | list }}'
sequence:
- condition: template
value_template: '{{ repeat.item != "" }}'
- service: todo.remove_item
target:
entity_id: '{{ google_list }}'
data:
item: '{{ repeat.item }}'
- repeat:
for_each: '{{ (items_to_google).split('';'') | list }}'
sequence:
- condition: template
value_template: '{{ repeat.item != "" }}'
- service: todo.add_item
target:
entity_id: '{{ google_list }}'
data:
item: '{{ repeat.item }}'
- variables:
items_delete_google: "{%- for google_item in google_incompleted[google_list]['items']
-%}\n {% set ns = namespace(found=false) %}\n {%- for temp_item in temp_incompleted[temp_list]['items']
-%}\n {%- if google_item.summary|capitalize == temp_item.summary|capitalize
-%}\n {% set ns.found = true %}\n {%- endif -%}\n {%- endfor -%}\n
\ {%- if not ns.found -%}\n {{ google_item.summary }};\n {%- endif -%}\n{%-
endfor -%}\n"
- repeat:
for_each: '{{ (items_delete_google).split('';'') | list }}'
sequence:
- condition: template
value_template: '{{ repeat.item != "" }}'
- service: todo.update_item
target:
entity_id: '{{ google_list }}'
data:
item: '{{ repeat.item }}'
status: completed
mode: single