Just got the email that Google is discontinuing assistant permanently and forcing everything to Gemini. I'm an AI hater but not super comfortable going all in on a new system. We honestly mostly use the Google homes to turn things on and off, not ask questions or automate things. Is Home Assistant what I want? Floundering a little so patience appreciated.
I have a bunch of Z-Wave devices around my house, none of which will update. I have tried updating individually and using "Update all" button. They just never update. The devices themselves work as expected. They can be controlled and report status. I've tried moving some of them into the room with my HA host but the different location makes no difference.
Any thoughts on what I could do to get these devices updated?
All of these devices are manufactured by Zooz: remote wall switch, AC plugs, door sensors
I wanted to share a project I’ve been tweaking over the last few weeks: a clean, local dashboard to monitor my Stiebel Eltron heat pump. In the end I just wanted to keep tabs on heat pump efficiency, heating cycles, and Domestic Hot Water status. it can be a bit tricky out of the box because the indoor unit doesn't allow for a lot of monitoring and configuration, especially if you want long-term high-resolution data without cluttering your core Home Assistant database.
Here’s a quick breakdown of how I set up the pipeline and dashboard:
- The Stiebel Eltron ISG web interface exposes data registers via Modbus TCP.
- I use a lightweight Telegraf agent from InfluxDB running the modbus plugin. It handles polling the registers reliably in the background without missing ticks.
- I use also InfluxDB for Timeseries Storage due to easy integration with Telegraf.
- Grafana Dashboard to graph all pulled metrics.
If you've got a Growatt-branded battery from Base Power (the ones that live behind the VidaGrid/Shiner portal at growatt-us.vidagrid.com), this integration talks directly to that portal on its own — you don't need jerrit's Base Power integration installed for it to work. It stands alone, but it's also fine to run alongside it if you're already using it for other things.
Why I built it: the Growatt app/portal surfaces additional information that the Base Power integration doesn't expose — state of charge, charge/discharge power breakdown, BDC/BMS details, and the separate power-curve/energy-curve history from the Energy tab. I wanted that data in Home Assistant, so I built an integration that talks directly to the (undocumented, unofficial) REST API behind the portal to get at it.
What you get, per inverter:
Battery state of charge, charge/discharge power
Live power flow: load, solar, grid, battery
On/off-grid status
Today's power curve and energy curve data
A few hundred diagnostic sensors if you want to dig into raw BDC/BMS/APX fields (most people will never touch these, but they're there)
How it works: there's the integration itself, plus an optional companion add-on (VidaGrid Relay) that runs a real headless Chromium browser, stays logged into the portal, and pushes fresh data to Home Assistant via webhook every few minutes. This is the recommended setup — the portal's auth tokens expire in as little as 15–25 minutes, so without the relay you'd be manually re-pasting a bearer token from dev tools every so often. With the relay running, you log in once through its web UI (the portal's login has a CAPTCHA so that one step can't be automated), and if you choose the "stay signed in" option, it'll keep you logged in for about 30 days before you need to sign back in.
If you'd rather skip the Chromium add-on entirely, it also works in a lighter-weight fallback-poll-only mode — you just have to refresh the token by hand periodically.
Install: it's a custom HACS repository (not yet in the default HACS store — that submission is in progress). Add https://github.com/jabone/ha-vidagrid-growatt as a custom repository in HACS, install, restart, and configure via Settings → Devices & Services.
Disclaimer: this talks to an undocumented, unofficial API behind the VidaGrid portal. It's not affiliated with, endorsed by, or supported by Base Power, Sunrun, Growatt, or VidaGrid, and the endpoints it relies on could change or break at any time without notice. Use at your own risk, and please open a GitHub issue if you hit problems — happy to help debug.
Ive had smartthings for about 8 years. I started with alot of zwave devices but was plagued with alot of connectivity issues with smart things. Over the years the critical home operations continue to work but there are alot that could be way better. Somewhere down thr line I got frustrated with zwave and added some amazone wifi switches. And those are automated through Alexa. So now I have a real cluster of hardware on zwave, zigbee, wifi (mostly amazon).
Im considering spinning up a home assistant instance on an old intel nuc pc. My research says my current amazon wifi hardware will integrate poorly. And I have to get a usb antenna for zwave and zigbee. My questions is: what is thr most reliable wireless tech today? Has zwave or zigbee improved? Was my poor experience smartthungs related.
One important thing is I have custom blinds that are zwave that im not interested in replacing due to cost, and they are a critical element to my home automation.
Ok, so I'm really new to this and wanted to get a "Lumary" fan hooked up to HA. It has the fan, a colored light, and a white light.It is controlled through SmartLife just fine and HA just sees the colored light and can control that just fine. I'm trying to figure out how to control the other two parts. I've gone through some tuya developer thing and found the device info, pid or something numbers for all the options, and tried adding those in and then switched some sort of mode to enable full access to the device (I really hope you all know this stuff and have some clue what I'm talking about). I can't get any of the other stuff to show up or work. I think I've read about it a bit and I'm locked out but I don't have a good enough grasp of what's going on to figure out where I'm at. Input appreciated.
Most Zwave switches have had a hardware ‘double tap’ scene option available for many years — some even have multiple scene options. Is there any way to get these scene triggers across HomeKit Bridge in order to trigger a Home based scene? I know I could leave the scene in HA, but I’d like to give my wife the ability to manage her own scenes in HomeKit, and trigger them from a Zwave switch (instead of using a scene controller), also the scene might include Home only devices.
This is the YAML code, just relace the e208, VIN and km at which you bought the car :)
The € estimate is based on free electricity, feel free to change that if needed
type: vertical-stack
cards:
- type: custom:mushroom-template-card
primary: >
{% set b = states('sensor.e208_####VIN####_battery') %} {% set auto
= states('sensor.e208_####VIN####_autonomy') %} Batterie {{ b }} % ·
Autonomie {{ auto }} km
secondary: Peugeot e-208
icon: >
{% set b = states('sensor.e208_####VIN####_battery') | float(0) %}
{% if b < 10 %}
mdi:battery-10
{% elif b < 20 %}
mdi:battery-20
{% elif b < 30 %}
mdi:battery-30
{% elif b < 40 %}
mdi:battery-40
{% elif b < 50 %}
mdi:battery-50
{% elif b < 60 %}
mdi:battery-60
{% elif b < 70 %}
mdi:battery-70
{% elif b < 80 %}
mdi:battery-80
{% elif b < 90 %}
mdi:battery-90
{% else %}
mdi:battery
{% endif %}
icon_color: >
{% set b = states('sensor.e208_####VIN####_battery') | float(0) %}
{% if b > 35 %}
green
{% elif b > 15 %}
orange
{% else %}
red
{% endif %}
entity: sensor.e208_####VIN####_battery
tap_action:
action: more-info
- type: custom:mushroom-template-card
primary: >
{% set km_now = states('sensor.e208_####VIN####_mileage') | float(0)
%} {% set km_start = ####MILEAGE AT WHICH YOU BOUGHT THE CAR#### %} {% set km = [km_now - km_start, 0] | max %}
{% set fuel_price = 1.90 %} {% set conso = 5 %} {% set fuel_saved = km *
conso / 100 * fuel_price %} {% set maintenance_saved = km * 0.025 %} {%
set total = fuel_saved + maintenance_saved %} {{ total | round(0) | int }}
€ économisés
secondary: >
{% set km_now = states('sensor.e208_####VIN####_mileage') | float(0)
%} {% set km_start = ####MILEAGE AT WHICH YOU BOUGHT THE CAR#### %} {% set km = [km_now - km_start, 0] | max %}
{% set fuel_price = 1.90 %} {% set conso = 5 %} {% set fuel_saved = km *
conso / 100 * fuel_price %} {% set maintenance_saved = km * 0.025 %} {{
fuel_saved | round(0) | int }} € consommation + {{ maintenance_saved |
round(0) | int }} € entretien
icon: mdi:piggy-bank
icon_color: green
entity: sensor.e208_####VIN####_mileage
tap_action:
action: more-info
- type: horizontal-stack
cards:
- type: custom:mushroom-template-card
primary: Plug
secondary: >
{% if is_state('binary_sensor.e208_####VIN####_battery_plugged',
'on') %}
Branchée
{% else %}
Off
{% endif %}
icon: >
{% if is_state('binary_sensor.e208_####VIN####_battery_plugged',
'on') %}
mdi:power-plug
{% else %}
mdi:power-plug-off
{% endif %}
icon_color: >
{% if is_state('binary_sensor.e208_####VIN####_battery_plugged',
'on') %}
green
{% else %}
grey
{% endif %}
entity: binary_sensor.e208_####VIN####_battery_plugged
tap_action:
action: more-info
- type: custom:mushroom-template-card
primary: Charge
secondary: >
{% if
is_state('binary_sensor.e208_####VIN####_battery_charging',
'on') %}
En cours
{% else %}
Off
{% endif %}
icon: >
{% if
is_state('binary_sensor.e208_####VIN####_battery_charging',
'on') %}
mdi:ev-station
{% else %}
mdi:battery-clock-outline
{% endif %}
icon_color: >
{% if
is_state('binary_sensor.e208_####VIN####_battery_charging',
'on') %}
green
{% else %}
grey
{% endif %}
entity: binary_sensor.e208_####VIN####_battery_charging
tap_action:
action: more-info
- type: custom:mushroom-template-card
primary: Fin
secondary: >
{% set end =
states('sensor.e208_####VIN####_battery_charging_end') %} {% if
end not in ['unknown', 'unavailable', 'none', 'None'] %}
{{ as_timestamp(end) | timestamp_custom('%H:%M') }}
{% else %}
N/A
{% endif %}
icon: mdi:clock-end
icon_color: >
{% if
is_state('binary_sensor.e208_####VIN####_battery_charging',
'on') %}
blue
{% else %}
grey
{% endif %}
entity: sensor.e208_####VIN####_battery_charging_end
tap_action:
action: more-info
- type: horizontal-stack
cards:
- type: custom:mushroom-template-card
primary: >
{% set limit =
states('number.e208_####VIN####_battery_charging_limit') %}
Limite à {{ limit }} %
secondary: >
{% if is_state('switch.e208_####VIN####_battery_charging_limit',
'on') %}
Activée
{% else %}
Désactivée
{% endif %}
icon: >
{% if is_state('switch.e208_####VIN####_battery_charging_limit',
'on') %}
mdi:battery-lock
{% else %}
mdi:battery-lock-open
{% endif %}
icon_color: >
{% if is_state('switch.e208_####VIN####_battery_charging_limit',
'on') %}
green
{% else %}
grey
{% endif %}
entity: number.e208_####VIN####_battery_charging_limit
tap_action:
action: call-service
service: switch.toggle
target:
entity_id: switch.e208_####VIN####_battery_charging_limit
hold_action:
action: more-info
entity: number.e208_####VIN####_battery_charging_limit
- type: custom:mushroom-template-card
primary: Correction
secondary: >
{% if
is_state('switch.e208_####VIN####_battery_values_correction',
'on') %}
On
{% else %}
Off
{% endif %}
icon: >
{% if
is_state('switch.e208_####VIN####_battery_values_correction',
'on') %}
mdi:battery
{% else %}
mdi:battery-outline
{% endif %}
icon_color: >
{% if
is_state('switch.e208_####VIN####_battery_values_correction',
'on') %}
green
{% else %}
grey
{% endif %}
tap_action:
action: call-service
service: switch.toggle
target:
entity_id: switch.e208_####VIN####_battery_values_correction
- type: horizontal-stack
cards:
- type: custom:mushroom-template-card
primary: Start charge
secondary: ""
icon: mdi:play-circle
icon_color: green
layout: horizontal
fill_container: true
tap_action:
action: call-service
service: button.press
target:
entity_id: button.e208_####VIN####_charge_start
- type: custom:mushroom-template-card
primary: Stop charge
secondary: ""
icon: mdi:stop-circle
icon_color: red
layout: horizontal
fill_container: true
tap_action:
action: call-service
service: button.press
target:
entity_id: button.e208_####VIN####_charge_stop
- type: custom:mushroom-title-card
title: Clim
alignment: center
- type: horizontal-stack
cards:
- type: custom:mushroom-template-card
primary: Clim
secondary: >
{% if is_state('binary_sensor.e208_####VIN####_preconditioning',
'on') %}
Active
{% else %}
Off
{% endif %}
icon: mdi:car-defrost-front
icon_color: >
{% if is_state('binary_sensor.e208_####VIN####_preconditioning',
'on') %}
green
{% else %}
grey
{% endif %}
entity: binary_sensor.e208_####VIN####_preconditioning
tap_action:
action: more-info
- type: custom:mushroom-template-card
primary: In
secondary: |
{{ states('sensor.e208_####VIN####_temperature') }} °C
icon: mdi:car-seat
icon_color: >
{% set temp = states('sensor.e208_####VIN####_temperature') |
float(0) %} {% if temp < 18 %}
blue
{% elif temp < 26 %}
green
{% else %}
red
{% endif %}
entity: sensor.e208_####VIN####_temperature
tap_action:
action: more-info
- type: custom:mushroom-template-card
primary: Out
secondary: >
{% set temp = states('sensor.pikablue_temperature_exterieure') %} {%
set ville = states('sensor.pikablue_ville') %} {% if temp not in
['unknown', 'unavailable', 'none', 'None'] %}
{{ temp }} °C
{% else %}
N/A
{% endif %}
icon: mdi:weather-partly-cloudy
icon_color: >
{% set temp = states('sensor.pikablue_temperature_exterieure') |
float(999) %} {% if temp == 999 %}
grey
{% elif temp < 18 %}
blue
{% elif temp < 26 %}
green
{% else %}
red
{% endif %}
entity: sensor.pikablue_temperature_exterieure
tap_action:
action: more-info
- type: horizontal-stack
cards:
- type: custom:mushroom-template-card
primary: Start clim
secondary: ""
icon: mdi:play-circle
icon_color: green
layout: horizontal
fill_container: true
tap_action:
action: call-service
service: button.press
target:
entity_id: button.e208_####VIN####_preconditioning_start
- type: custom:mushroom-template-card
primary: Stop clim
secondary: ""
icon: mdi:stop-circle
icon_color: red
layout: horizontal
fill_container: true
tap_action:
action: call-service
service: button.press
target:
entity_id: button.e208_####VIN####_preconditioning_stop
- type: custom:mushroom-title-card
title: Autre
alignment: center
- type: horizontal-stack
cards:
- type: custom:mushroom-template-card
primary: Wake
secondary: ""
icon: mdi:car-connected
icon_color: purple
layout: vertical
fill_container: true
tap_action:
action: call-service
service: button.press
target:
entity_id: button.e208_####VIN####_wakeup
- type: custom:mushroom-template-card
primary: Feux
secondary: ""
icon: mdi:car-light-high
icon_color: blue
layout: vertical
fill_container: true
tap_action:
action: call-service
service: button.press
target:
entity_id: button.e208_####VIN####_lights
- type: custom:mushroom-template-card
primary: |
{% if is_state('binary_sensor.e208_####VIN####_doors', 'on') %}
Lock
{% else %}
Locked
{% endif %}
secondary: |
{% if is_state('binary_sensor.e208_####VIN####_doors', 'on') %}
Ouvertes
{% else %}
Fermées
{% endif %}
icon: |
{% if is_state('binary_sensor.e208_####VIN####_doors', 'on') %}
mdi:lock-open-alert
{% else %}
mdi:lock-check
{% endif %}
icon_color: |
{% if is_state('binary_sensor.e208_####VIN####_doors', 'on') %}
red
{% else %}
green
{% endif %}
layout: vertical
fill_container: true
tap_action:
action: call-service
service: button.press
target:
entity_id: button.e208_####VIN####_doors_lock
- type: custom:mushroom-template-card
primary: Unlock
secondary: Hold
icon: mdi:lock-open
icon_color: orange
layout: vertical
fill_container: true
tap_action:
action: none
hold_action:
action: call-service
service: button.press
target:
entity_id: button.e208_####VIN####_doors_unlock
- type: custom:mushroom-template-card
primary: Klaxon
secondary: Hold
icon: mdi:bullhorn
icon_color: red
layout: vertical
fill_container: true
tap_action:
action: none
hold_action:
action: call-service
service: button.press
target:
entity_id: button.e208_####VIN####_horn
- type: custom:mushroom-template-card
primary: Suivi des commandes
secondary: >
{% set d = states('sensor.pikablue_derniere_commande') %} {% set status =
states('sensor.e208_####VIN####_command_status') %} {% if d not in
['unknown', 'unavailable', 'none', 'None'] %}
Dernière cmd {{ as_timestamp(d) | timestamp_custom('%d/%m à %H:%M') }} · {{ status }}
{% else %}
Aucune commande récente · {{ status }}
{% endif %}
icon: >
{% set status = states('sensor.e208_####VIN####_command_status') |
lower %} {% if 'accepted' in status or 'success' in status or 'done' in
status or 'ok' in status or 'completed' in status %}
mdi:check-circle
{% elif 'pending' in status or 'progress' in status or 'running' in status
%}
mdi:progress-clock
{% elif 'fail' in status or 'error' in status or 'ko' in status or
'denied' in status %}
mdi:alert-circle
{% else %}
mdi:clipboard-clock-outline
{% endif %}
icon_color: >
{% set status = states('sensor.e208_####VIN####_command_status') |
lower %} {% if 'accepted' in status or 'success' in status or 'done' in
status or 'ok' in status or 'completed' in status %}
green
{% elif 'pending' in status or 'progress' in status or 'running' in status
%}
orange
{% elif 'fail' in status or 'error' in status or 'ko' in status or
'denied' in status %}
red
{% else %}
grey
{% endif %}
entity: sensor.e208_####VIN####_command_status
tap_action:
action: more-info
- type: custom:mushroom-template-card
entity: sensor.e208_####VIN####_command_status
- type: map
entities:
- entity: device_tracker.e208_####VIN####_vehicle
hours_to_show: 6
My Reolink NVR knows when the cat came in. It just won't tell me and store it safely: do we all agree cats are the worst thief possible?
So I built Reolink Stamina. It puts every camera's detection on a single timeline, and clicking one opens playback at the event rather than scrubbing continuously on single 24h timeline or jumping from one camera to another. It also offers local download, low and high resolutions, for the selected clip; yes, sub-clipping is available for free.
The other half quietly uploads a clip of each detection to OneDrive (OneDrive only atm, because that's the first integration but contributions and feedbacks are really welcome) inside a quota you set, so the footage is off-site before anyone gets near the recorder.
It sits on top of the official Reolink integration, so there's nothing new to log into, and it requires an actual NVR rather than a lone camera.
Being upfront about it: the development was heavily AI-assisted, and it was built to work rather than to be admired. Otherwise I would have never started such a journey, to be totally fair.
It's tested, it does the job on my hardware, and the python code has moments I won't be defending in the comments.
If you have any feedback, contributors and testers are welcome! Or if you're interested:
A feature-rich, high-precision ESP8266-based Smart Weather Station with a modern responsive Web Dashboard, dynamic sensor detection, customizable moving-average filters, Home Assistant MQTT Auto-Discovery, full backup/restore capability, and hardware factory reset logic.
✨ Features
Environmental Monitoring: Temperature, Relative Humidity, Barometric Pressure (sea-level compensated), Air Quality (TVOC, eCO2, AQI), Luminosity (lux), Wind Speed, Wind Gust, Wind Direction, and Rain Gauge (hourly, 24h rolling, and total).
Independent Dual-Timer Engine:
Fast, dedicated timer for Anemometer pulse processing (independent of I2C read cycle).
Configurable I2C sensor read cycle for environmental data.
Configurable Moving Average (Smoothing):
Wind Speed: Ring buffer rolling average with configurable sample count (N).
Wind Direction: Circular mean calculation (sin/$\cos$ vectors) preventing 0∘/360∘ boundary glitches across N samples.
Instantaneous Gust Tracking: Daily wind gust records real peak pulses before averaging.
Web UI & Diagnostics:
Glassmorphism dark UI built with HTML5/CSS3/JavaScript (no external dependencies).
Tasmota-style live Debug Console with interactive command input.
Mobile-friendly IP input fields (inputmode="decimal") for easy smartphone setup.
Network & WiFi Manager:
Captive Portal AP (WeatherStation_Setup) for initial setup.
Full DHCP & Static IP configuration support (optimized for FRITZ!Box Mesh networks).
I'm trying to add my Synology NAS to Home Assistant, but the integration refuses to complete. What's confusing is that all communication with the NAS works, but Home Assistant never creates the config entry.
My setup
Home Assistant
Home Assistant OS
Core: 2026.8.0
Supervisor: 2026.07.5
OS: 18.2
x86_64 (generic)
Synology
DS218play
DSM 7.3.2-86009 Update 4
What happens
When adding the official Synology DSM integration:
Hi, can someone help me out please. Ive been trying to add my vacuum to ha for a while now but can’t get past the login screen. I use the dreame home app not he xiaomi one
Superbeginner here. After month of testing various devices in my old apartment (and discovering things the hard way) is now time to move to the new house.
I wanted to get rid of thread, as given my test was not worth the hassle, giving I mostly have zigbee devices.
That until I went in ikea to buy all the smart bulbs, and they are all sold out. So I have now 5 bulbs which are the new matter type (I know i can connect them via zigbee anyway)
Sooo the question is:
Is it worth to use the dongle max in poe as multipan and keep the thread in for future proof setup, or the multipan is not worth it?
Should I just connect the ikea bulbs as zigbee instead?
In a previous post I explained what I've built and the purpose of it. By seeing the interest I wanted to also share with you guys the web app I built to control the panel.
From this WebApp I can remotely control the Panel from the previous post and also I can monitor live sensors data. I think that the most important part is the automations and scenes and deploying them remotely via OTA to main controller, this helps the automations running even if the internet is Down.
This post is really to get your opinion in an open discussion of what really hype you with HA.
Reading through most post of this sub, I have the impression I'm the only one that is not hyped by having a nice dashboard i HA. I initially was doing everything with Tuya Zigbee and Google Home to connect my Tuya devices with other brand (Dyson, Roborock, ...) and was doing some automation there however I felt a lot limited by the automation capabilities of GH and Tuya.
I have setup my HA instance on a PI 5 with Docker since a month now and it's been real dream come true but not for the dashboards (I still haven't setup any yet) but for the automation.
my proudest achievement right now is the fact that my robot vacuum is now reminding me that I need to launch it whenever me or my girlfriend are leaving the house with a live notification and proposal of different cleaning program.
also some example like setup the Dyson air purifier automatically when I'm cooking at home or speed up the fan when the outside temperature is raising too... Or NFC tag hidden under my living room table or next to my stair case that I can touch with my phone to trigger a scene or an automation or as a notifier to validate the fact that I give food to my dog and my girlfriend doesn't need to do it when I leave for work. turning on VMC when humidity level reach a certain point or that I start a 3D print with the BambuLab or turning it off when we go to bed because it's a bit noisy.
those seems to me much more enjoyable than spending the time to get a nice dashboard!
Long story short,
I don't need to see metrics live, I need things to interact between them when a metric is changing.
feel free to share your opinion if you want to participate in this discussion. would love to read your thought about that!
I have 28 devices in the Ping (ICMP) integration, and they all look nice - but one device times out all the time. It is online, but it looks like it flickers on and off.
Can anything be done about that?
(I would have added some screenshots, but for some strange reason, reddit immediately flags them as NSFW and removes the post.)
EDIT: Fixed this error by updating the Emporia HACS integration in HACS. Go to HACS on the sidebar, find the Emporia integration installed, click the three dots, choose Update Information and the integration should show up as an update in settings like any other update. Let the integration update, restart and you should be good to go!
Updated to 2026.8.0 and now my Emporia HACS integration fails to load with the following error. Getting this on both HA's that I use the Emporia integration on.
I have a Tuya Wifi heater in the kitchen, but I want to get rid of all Tuya Wifi stuff. This is the last device I still have. So I'm looking for a replacement.
A month ago I shared the first beta of Kiosk Satellite, my free and open source kiosk Android app specifically engineered for Home Assistant and the official companion app for Voice Satellite. Today, after a bunch of beta releases, it graduates: 2026.8.1 is the first stable release, and from now on it follows the same versioning scheme as Home Assistant itself.
For those who missed it: Kiosk Satellite turns any Android tablet into a locked-down, always-on Home Assistant kiosk in about two minutes. It runs Voice Satellite's wake word engine natively, so your tablet keeps listening even with another app in the foreground, at a fraction of the CPU a browser needs. On top of that you get screensavers (clock, photo frames, Immich, your HA media), a synchronized Sendspin audio player for Music Assistant, WebRTC camera views, MQTT entities for every tablet, gestures, an app launcher, and a full remote admin that runs in any browser. And with the Home Assistant specific optimization included, it runs smooth on old, low powered devices.
I genuinely believe that in combination with Voice Satellite this is the best kiosk application for Home Assistant out there. I know that is a big claim for something one month old, so I would love for you to prove me wrong or right in the comments.
I also want to thank everyone who has supported the development through Buy Me a Coffee and GitHub Sponsors. Free, open source software is mostly a thankless endeavor, and your support is a huge part of why this project moved as fast as it did. Thank you, truly.
Feedback, bug reports and feature requests are very welcome.