github NemesisRE/kiosk-mode v8.1.0-beta.0

latest releases: v9.0.1, v9.0.0, v8.0.1...
pre-releaseone month ago

⚠️⚠️⚠️ BREAKING CHANGE ⚠️⚠️⚠️

This release is a major refactoring of the plugin and it changes radically the way of setting kiosk-mode options through entities state changes.

1. Removal of entity_settings

The entity_settings and ignore_entity_settings options have been removed.

2. All the options can be booleans or JavaScript / Jinja templates

Excluding ignore_mobile_settings and ignore_disable_km, all the options can be set as a JavaScript or a Jinja template that returns a boolean. If you set the option as a string but it is not a valid template, the library will throw an error. If you set a template and it doesn't return a boolean, the option will be set as false and a warning will be thrown.

JavaScript template example:

kiosk_mode:
  hide_header: '[[[ user_name === "ElChiniNet" ]]]'
  hide_sidebar: '[[[ is_state("input_boolean.hide_sidebar", "on") ]]]'

Jinja template example:

kiosk_mode:
  hide_header: '{{ user_name == "ElChiniNet" }}'
  hide_sidebar: '{{ is_state("input_boolean.hide_sidebar", "on") }}'

This solves one of the biggest issues that the plugin has: If one wants to configure entity changes for different users or for admins and non-admins the current configuration is not enough because there is a single place to configure entitites changes and it doesn't take into account users or admin privileges. With this new change it is possible to make something like this:

kiosk_mode:
  ## By default the sidebar will be hidden 
  hide_sidebar: true
  admin_settings:
    ## If the input_boolean.hide_sidebar is off the sidebar will be visible for admins
    hide_sidebar: '[[[ is_state("input_boolean.hide_sidebar", "on") ]]]'
  user_settings:
    - users:
        - "ryan meek"
        - "maykar"
      ## If the input_boolean.hide_sidebar_for_friends is off the sidebar will be visible for ryan meek and maykar
      hide_sidebar: '[[[ is_state("input_boolean.hide_sidebar_for_friends", "on") ]]]'

3. JavaScript templates use Home Assistant Javascript Templates behind the scenes

JavaScript templates use Home Assistant Javascript Templates for the JavaScript templating system. To know all the objects, variables and methods available in the JavaScript templates, consult the proper section in the repository.

4. Jinja templates will have access to client side variables

Inside the Jinja templates you can use some client variables that are very useful:

  • user_name: String with the logged user's name
  • user_is_admin: Bolean value than indicates if the logged user is admin or not
  • user_is_owner: Bolean value than indicates if the logged user is the owner or not
  • user_agent: User agent of the browser in which Home Assistant is being executed

Advantages of using templates for the options

Using templates for the options gives a lot of flexibility and depending on your objectives you can omit the usage of the conditional configs, so when you start to create conditional configurations, ask yourself if it can be achieved with templates. For example:

kiosk_mode:
  hide_sidebar: false
  hide_header: false
  user_settings:
    - users:
      - "ryan meek"
      - "maykar"
      hide_header: true
  non_admin_settings:
    hide_sidebar: true

Can be transformed into a simpler version:

kiosk_mode:
  hide_header: '{{ user_name in ("maykar", "ryan meek") }}'
  hide_sidebar: '[[[ !user_is_admin ]]]'

5. New debug options

This pull request implements two new options:

Config Option Description
debug Prints useful information in the console. The raw config loaded from the Lovelace panel, the resulting final config with all the options, and if a template is rendered, it will print the option that trigerred the template, the template code and the evaluated result of it.
debug_template Useful to debug the result of a single template without activating the debug mode.

debug

Example with a valid template

image

Example with an invalid template

image

debug_template

image

Changes

⚙️ Configuration

  • [Github Actions]: Bump actions/checkout from 4 to 5 in the actions-deps group @dependabot[bot] (#406)

🚀 Features

  • Implement an option to hide the dialogs breadcrumb navigation
  • Add custom variable when the sidebar is hidden @elchininet (#407)
  • Make Kiosk Mode compatible with Home Assistant 2025.9.x @elchininet (#411)

🛠 Fixes

  • Make Kiosk Mode compatible with Home Assistant 2025.9.x @elchininet (#411)

🧩 Dependencies

  • [Dependencies]: Bump @types/node from 22.15.15 to 22.15.17 in the dependencies-dev group
  • [Dependencies]: Bump the dependencies-dev group with 4 updates
  • [Dependencies]: Bump the dependencies-dev group with 2 updates
  • [Dependencies]: Bump the dependencies-dev group across 1 directory with 5 updates
  • [Dependencies]: Bump the dependencies-dev group with 6 updates
  • [Dependencies]: Bump the dependencies-dev group with 4 updates
  • [Dependencies]: Bump the dependencies-dev group with 4 updates
  • [Dependencies]: Bump the dependencies-dev group with 2 updates @dependabot[bot] (#408)
  • [Dependencies]: Bump the dependencies-dev group across 1 directory with 6 updates @dependabot[bot] (#403)
  • [Dependencies]: Bump the dependencies-dev group with 4 updates @dependabot[bot] (#398)
  • [Dependencies]: Bump the dependencies-dev group with 3 updates @dependabot[bot] (#397)
  • [Dependencies]: Bump the dependencies-dev group with 5 updates @dependabot[bot] (#396)
  • [Dependencies]: Bump the dependencies-dev group with 6 updates @dependabot[bot] (#395)
  • [Dependencies]: Bump the dependencies-dev group with 2 updates @dependabot[bot] (#413)
  • [Dependencies]: Bump the dependencies-dev group with 4 updates @dependabot[bot] (#412)

📝 Documentation

📦 Other

Don't miss a new kiosk-mode release

NewReleases is sending notifications on new releases.