2024.10: Heading in the right direction

Read the full announcement here!

16 Likes

A big thank you and keep up the good job to the devs and contributors :smile::clap:

2 Likes

This turned out to be a great feature. Nice work!

" Heading in the right direction

Update after update, Sections continues to become a customization powerhouse, and this month is no exception. Section titles are replaced with their own card, called the heading card. Making them a card rather than an inline title gives you a lot more flexibility, allowing you to put them nearly anywhere."

3 Likes

Already installed and the headings look great! Are there any plans to allow for templating within the heading card?

7 Likes

Great Update! I’ve been using it since the beta, and the new heading card finally made me update most of my dashboards to the Sections view. Really enjoying this change

1 Like

Great update! Already built an expandable section using the heading’s action features and hiding/unhiding some content. Feels really intuitive!

Collapsed:


Expanded:

Find the code bits here: 2024.10: Heading in the right direction - #62 by sebinity

6 Likes

Great work! Using the beta for a while without problems, and the little things were fixed a.s.a.p. Keep up the great work!

1 Like

Great work that we kan now use entities in the Heading Card Configuration as extra information. The question now is, how to we use attributes as well (without creating a template sensor or helper)?

Please consider some atributes for the title, like a bacround color banner…

1 Like

Unfortunately, I cannot run Home Assistant 2024.10 at all because it cannot find uv.

2024-10-02 21:16:56.480 ERROR (MainThread) [homeassistant.bootstrap] Error setting up integration frontend - received exception
Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/setup.py", line 185, in async_setup_component
    await future
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/setup.py", line 185, in async_setup_component
    await future
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/setup.py", line 165, in async_setup_component
    result = await _async_setup_component(hass, domain, config)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/setup.py", line 326, in _async_setup_component
    await async_process_deps_reqs(hass, config, integration)
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/setup.py", line 575, in async_process_deps_reqs
    await requirements.async_get_integration_with_requirements(
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/requirements.py", line 54, in async_get_integration_with_requirements
    return await manager.async_get_integration_with_requirements(domain)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/requirements.py", line 170, in async_get_integration_with_requirements
    await future
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/requirements.py", line 159, in async_get_integration_with_requirements
    await self._async_process_integration(integration, done)
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/requirements.py", line 182, in _async_process_integration
    await self.async_process_requirements(
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/requirements.py", line 269, in async_process_requirements
    await self._async_process_requirements(name, missing)
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/requirements.py", line 301, in _async_process_requirements
    installed, failures = await self.hass.async_add_executor_job(
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/requirements.py", line 115, in _install_requirements_if_missing
    if pkg_util.is_installed(req) or _install_with_retry(req, kwargs):
                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/requirements.py", line 103, in _install_with_retry
    if pkg_util.install_package(requirement, **kwargs):
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/util/package.py", line 140, in install_package
    with Popen(
         ^^^^^^
  File "/usr/lib/python3.12/subprocess.py", line 1026, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/usr/lib/python3.12/subprocess.py", line 1955, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'uv'
2024-10-02 21:16:56.496 ERROR (MainThread) [homeassistant.bootstrap] Error setting up integration cloud - received exception
Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/setup.py", line 185, in async_setup_component
    await future
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/setup.py", line 185, in async_setup_component
    await future
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/setup.py", line 165, in async_setup_component
    result = await _async_setup_component(hass, domain, config)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/setup.py", line 326, in _async_setup_component
    await async_process_deps_reqs(hass, config, integration)
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/setup.py", line 575, in async_process_deps_reqs
    await requirements.async_get_integration_with_requirements(
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/requirements.py", line 54, in async_get_integration_with_requirements
    return await manager.async_get_integration_with_requirements(domain)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/requirements.py", line 170, in async_get_integration_with_requirements
    await future
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/requirements.py", line 159, in async_get_integration_with_requirements
    await self._async_process_integration(integration, done)
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/requirements.py", line 240, in _async_process_integration
    raise exceptions[0]
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/requirements.py", line 229, in _async_process_integration
    await self.async_get_integration_with_requirements(dep, done)
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/requirements.py", line 170, in async_get_integration_with_requirements
    await future
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/requirements.py", line 159, in async_get_integration_with_requirements
    await self._async_process_integration(integration, done)
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/requirements.py", line 240, in _async_process_integration
    raise exceptions[0]
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/requirements.py", line 229, in _async_process_integration
    await self.async_get_integration_with_requirements(dep, done)
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/requirements.py", line 170, in async_get_integration_with_requirements
    await future
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/requirements.py", line 159, in async_get_integration_with_requirements
    await self._async_process_integration(integration, done)
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/requirements.py", line 182, in _async_process_integration
    await self.async_process_requirements(
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/requirements.py", line 269, in async_process_requirements
    await self._async_process_requirements(name, missing)
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/requirements.py", line 301, in _async_process_requirements
    installed, failures = await self.hass.async_add_executor_job(
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/requirements.py", line 115, in _install_requirements_if_missing
    if pkg_util.is_installed(req) or _install_with_retry(req, kwargs):
                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/requirements.py", line 103, in _install_with_retry
    if pkg_util.install_package(requirement, **kwargs):
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/util/package.py", line 140, in install_package
    with Popen(
         ^^^^^^
  File "/usr/lib/python3.12/subprocess.py", line 1026, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/usr/lib/python3.12/subprocess.py", line 1955, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'uv'
2024-10-02 21:16:56.500 ERROR (MainThread) [homeassistant.bootstrap] Error setting up integration recovery_mode - received exception
Traceback (most recent call last):
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/setup.py", line 185, in async_setup_component
    await future
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/setup.py", line 185, in async_setup_component
    await future
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/setup.py", line 165, in async_setup_component
    result = await _async_setup_component(hass, domain, config)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/setup.py", line 326, in _async_setup_component
    await async_process_deps_reqs(hass, config, integration)
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/setup.py", line 571, in async_process_deps_reqs
    if failed_deps := await _async_process_dependencies(hass, config, integration):
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/setup.py", line 237, in _async_process_dependencies
    results = await asyncio.gather(
              ^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/setup.py", line 185, in async_setup_component
    await future
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/setup.py", line 185, in async_setup_component
    await future
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/setup.py", line 165, in async_setup_component
    result = await _async_setup_component(hass, domain, config)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/setup.py", line 326, in _async_setup_component
    await async_process_deps_reqs(hass, config, integration)
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/setup.py", line 575, in async_process_deps_reqs
    await requirements.async_get_integration_with_requirements(
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/requirements.py", line 54, in async_get_integration_with_requirements
    return await manager.async_get_integration_with_requirements(domain)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/requirements.py", line 170, in async_get_integration_with_requirements
    await future
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/requirements.py", line 159, in async_get_integration_with_requirements
    await self._async_process_integration(integration, done)
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/requirements.py", line 182, in _async_process_integration
    await self.async_process_requirements(
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/requirements.py", line 269, in async_process_requirements
    await self._async_process_requirements(name, missing)
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/requirements.py", line 301, in _async_process_requirements
    installed, failures = await self.hass.async_add_executor_job(
                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/lib/python3.12/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/requirements.py", line 115, in _install_requirements_if_missing
    if pkg_util.is_installed(req) or _install_with_retry(req, kwargs):
                                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/requirements.py", line 103, in _install_with_retry
    if pkg_util.install_package(requirement, **kwargs):
       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/srv/homeassistant/lib/python3.12/site-packages/homeassistant/util/package.py", line 140, in install_package
    with Popen(
         ^^^^^^
  File "/usr/lib/python3.12/subprocess.py", line 1026, in __init__
    self._execute_child(args, executable, preexec_fn, close_fds,
  File "/usr/lib/python3.12/subprocess.py", line 1955, in _execute_child
    raise child_exception_type(errno_num, err_msg, err_filename)
FileNotFoundError: [Errno 2] No such file or directory: 'uv'

Core installation, /srv/homeassistant/bin/uv exists.

1 Like

I’m having the exact same error with Core install : uv also exits (successfully installed by pip update).

2 Likes

I tried in debug mode but it looks it does not show where uv is searched.
It is only searched in $PATH if I understand correctly.

That’s a great idea but I don’t see a straightforward solution to do that.
Can you share how you do it?

I’m only thinking about using Visibility and a helper to control it with actions. Like input_boolean.shopping_list_visibility and input_boolean.toggle as action. That’s not so complicated but maybe I miss something even easier.

Hmm, have got a new time killer for fixing this:

Not sure if this improvement was really needed.
In many places plurals are not used:
image

1 Like

exact same problem, on core install

reverting to 2024.9.3 it’s a possible workaround

Maybe we should put /srv/homeassistant/bin in the $PATH in the SystemD unit.
Or simply create an issue to see what solution could be found in fact.

I see the headings have been made plural. Is the triggers portion still a logical or between multiple possible triggers or is there the ability to make them an and. I get you can use conditions but if you want to have something happen when three things are true, I have to make 3 different automations, each with a different trigger and then in the conditions I have an AND for both remaining triggers I want to be true in addition to what triggered.

Theoretically, with an AND, each true trigger would have it wait until all triggers are true and then run your automation.

Core installation here. Many errors like “Unable to install package home-assistant-frontend==20241002.2: error: No Python interpreters found in virtual environments” in HA log on startup after pip install -U :frowning:

1 Like

I don’t think it’s changed the workings of the automation sections…just the semantics.

For your automation can you not create just one with…three triggers for each of your “things you want true” so it triggers on any of them being true and then one condition which specifies that each of your “things you want true” have to be true…so any of the three things can trigger but condition only allows automation to proceed if all are true…
Off topic here so maybe post to a new thread and one of the more clever people than me will jump in no doubt…

Core installation.
FileNotFound errors looking for uv.
All my esphome devices stop working.
Reverting back to 2024.9.3

No need to “fix”, as mentioned in the release notes the old keywords will continue to work.

2 Likes