J. Nick Koston
64e000de13
[ci] Tighten import-time margin to 15%
...
CI measured 126.2ms against 123ms baseline + 25% ceiling (153.8ms). That's
27.6ms of headroom — enough slack that a real regression could hide under
it. Drop to 15% (ceiling 141.5ms, ~15ms headroom over observed). Still
well above GHA runner variance, tight enough to catch the class of
regression we care about (zeroconf-style top-level import additions).
2026-04-23 14:22:33 -05:00
J. Nick Koston
900232be21
[ci] Parse importtime-waterfall HAR JSON; raise budget for CI runner
...
The previous parser walked `-X importtime` stderr by hand (string-splitting
on `|`, indent-width math). Replace it with a load of the HAR JSON that
importtime-waterfall already produces: each entry carries the module name,
self-time, and cumulative — no tree reconstruction needed. Drops the
hand-rolled retry loop too, since importtime-waterfall does best-of-6
internally.
The committed budget (75.2ms) was seeded on a fast local machine; GHA
runners measured 122.8ms, so the first CI run tripped the check. Reset
the baseline to 123ms with a 25% margin (ceiling ~154ms) to absorb GHA
variance. Tighten later once we have several data points.
Adds unit tests for should_run_import_time across the trigger matrix and
wires the new mock into the existing test_main_* suite.
2026-04-23 14:20:31 -05:00
J. Nick Koston
0dd2a57ba4
[ci] Add import-time regression check for esphome.__main__
...
Adds a CI gate that runs `python -X importtime -c "import esphome.__main__"`
via importtime-waterfall's best-of-N harness, compares the root cumulative
time against a checked-in budget (script/import_time_budget.json, seeded
at 75.2ms with a 15% margin), and fails the build when top-level imports
regress.
The CLI pays this cost on every invocation before the requested command
even runs, so silently adding a top-level dep chain (the recent zeroconf
move in #13135 being the motivating case) hurts every user. The check
gives us a signal without waiting for user reports.
- script/check_import_time.py: --check / --update / --har PATH modes.
On regression, prints a ranked top-15 offenders table by self-time.
- script/import_time_budget.json: baseline + margin_pct.
- script/determine-jobs.py: should_run_import_time() gates the job on
esphome/**/*.py, requirements.txt, requirements_dev.txt, pyproject.toml,
or changes to the check itself.
- .github/workflows/ci.yml: new import-time job, runs when gated and
uploads a waterfall HAR artifact (14-day retention) for inspection.
2026-04-23 14:13:01 -05:00
f757cd1210
[zigbee][core] Add support for Zigbee binary sensors on ESP32 H2 and C6 ( #11553 )
...
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org >
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com >
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-04-23 12:46:56 -04:00
Paulus Schoutsen
9b45b046a8
[core] Allow finding all devices as target that match mac suffix ( #13135 )
2026-04-23 08:43:32 -05:00
J. Nick Koston
70ae614abd
[api] Fall back to plaintext for logger connections ( #15938 )
2026-04-23 08:23:38 -05:00
J. Nick Koston
8f9b91eece
[wifi] Avoid BDK 3.0.78 wifi_event_sta_disconnected_t collision on BK72xx ( #15942 )
2026-04-23 08:22:17 -05:00
J. Nick Koston
3ca86fc3fc
[core] Raise WDT_FEED_INTERVAL_MS to 2000ms on BK72xx ( #15943 )
2026-04-23 08:21:46 -05:00
J. Nick Koston
b38db617a2
[core] Clean up stale includes and inline yield_with_select_ in application ( #15945 )
2026-04-23 08:21:05 -05:00
J. Nick Koston
13fe881f70
[scheduler][core] Lock-free fast-path on ESPHOME_THREAD_MULTI_NO_ATOMICS via __atomic builtins ( #15947 )
2026-04-23 08:20:31 -05:00
J. Nick Koston
50c181671c
[ci] Better explain too-big bot review message ( #15939 )
2026-04-23 06:47:16 -05:00
PolarGoose
43a371caab
[dsmr] Small refactoring: Move Aes128GcmDecryptorImpl type inside esphome::dsmr namespace. ( #15940 )
2026-04-23 04:08:49 -05:00
dependabot[bot]
64290d32a1
Bump aioesphomeapi from 44.20.0 to 44.21.0 ( #15941 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-23 03:32:12 -05:00
J. Nick Koston
9685d4eb0b
[core] feed_wdt wraps feed_wdt_with_time ( #15932 )
2026-04-23 01:15:44 -05:00
Keith Burzinski
4c2efd4165
[radio_frequency] Add experimental radio_frequency entity type (base component + API) ( #15556 )
2026-04-23 01:15:25 -05:00
J. Nick Koston
6f00ea1457
[core] Move host socket-select wake mechanism into wake.h/wake.cpp ( #15931 )
2026-04-23 15:53:10 +12:00
Jonathan Swoboda
a881121110
[ota] Make set_auth_password() lambda-callable via empty-password opt-in ( #15928 )
2026-04-22 23:06:31 -04:00
dependabot[bot]
f8167c9a70
Bump aioesphomeapi from 44.19.0 to 44.20.0 ( #15936 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-23 02:40:19 +00:00
Jesse Hills
e1d629f0d2
[time] Handle Windows EINVAL when validating POSIX TZ strings ( #15934 )
2026-04-23 14:35:13 +12:00
Clyde Stubbs
224cc7b419
[lvgl] Triggers on tabview tabs fix ( #15935 )
2026-04-23 14:35:00 +12:00
Jesse Hills
4d4347d33a
Merge branch 'release' into dev
2026-04-23 14:10:54 +12:00
Jesse Hills
6ca5b31fab
Merge pull request #15933 from esphome/bump-2026.4.2
...
2026.4.2
2026.4.2
2026-04-23 14:10:10 +12:00
dependabot[bot]
17f9269841
Update wheel requirement from <0.47,>=0.43 to >=0.43,<0.48 ( #15926 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-22 19:12:15 -05:00
dependabot[bot]
6253947311
Bump click from 8.3.2 to 8.3.3 ( #15927 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-22 19:12:02 -05:00
Jesse Hills
00b71208a6
Bump version to 2026.4.2
2026-04-23 11:18:39 +12:00
Keith Burzinski
76eb8f697f
[usb_uart] Derive TX output chunk count from buffer_size config ( #15909 )
2026-04-23 11:18:39 +12:00
Jonathan Swoboda
2a3bd8bc85
[io_expanders] Self-heal interrupt-driven expanders when INT stays asserted across the read ( #15923 )
2026-04-23 11:18:39 +12:00
Keith Burzinski
629da4d878
[esp32] Add Secure Boot V1 ECDSA signing scheme for pre-rev-3.0 ESP32 ( #15882 )
2026-04-23 11:18:39 +12:00
Jonathan Swoboda
5c2ceb63e0
[ld2412] Fix null deref in set_basic_config when entities unconfigured ( #15893 )
2026-04-23 11:18:39 +12:00
Jonathan Swoboda
92cb6dd7fd
[core] Fix Pvariable placement new losing subclass identity ( #15881 )
2026-04-23 11:18:39 +12:00
Jonathan Swoboda
06e5931ad7
[image] Fix rodata bloat for multi-frame RGB565+alpha animations ( #15873 )
2026-04-23 11:18:39 +12:00
Clyde Stubbs
dc5b06285d
[lvgl] Fix update of textarea attached to keyboard ( #15866 )
2026-04-23 11:18:38 +12:00
Clyde Stubbs
3d0a2421a6
[lvgl] Fix overloads for setting images on styles ( #15864 )
2026-04-23 11:18:38 +12:00
Clyde Stubbs
22f6791dea
[lvgl] Fix format of hello world page ( #15868 )
2026-04-23 11:18:38 +12:00
Keith Burzinski
70b1d9a087
[api_protobuf] Support compound ifdef conditions in proto generator ( #15930 )
2026-04-22 17:57:15 -05:00
Keith Burzinski
36720c8495
[usb_uart] Derive TX output chunk count from buffer_size config ( #15909 )
2026-04-23 09:16:14 +12:00
Jonathan Swoboda
c48ab2ef92
[io_expanders] Self-heal interrupt-driven expanders when INT stays asserted across the read ( #15923 )
2026-04-23 09:05:15 +12:00
Keith Burzinski
162ee2ecaf
[i2s_audio] Split speaker into base class and standard subclass ( #15404 )
2026-04-22 14:40:18 -05:00
Asela Fernando and Jonathan Swoboda
a73bac0b5f
[ac_dimmer] Zero-crossing interrupt type ( #15862 )
...
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com >
2026-04-22 14:57:53 -04:00
Rishab Mehta and Jonathan Swoboda
4e84611ae7
[internal_temperature] Fix internal Temperature discrepancy on BK7231T ( #15771 )
...
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com >
2026-04-22 17:50:59 +00:00
PolarGoose
ea2e36e55a
[dsmr] Improve performance. Add missing sensors. Remove Crypto-no-arduino. ( #15875 )
2026-04-22 13:49:14 -04:00
fcbc4d64fe
[one_wire] Reset bus before SKIP ROM command ( #14669 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
2026-04-22 13:20:02 -04:00
Timothy and Jonathan Swoboda
dcd103cec0
[cse7761] bidirectional active power ( #15162 )
...
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com >
2026-04-22 13:11:18 -04:00
Ludovic BOUÉ and Jonathan Swoboda
5e715692d6
[network] Reorder IPv6 configuration for network components ( #11694 )
...
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com >
2026-04-22 17:01:20 +00:00
rwrozelle and J. Nick Koston
d5263cd46e
[esp32] add watchdog_timeout configuration variable ( #15908 )
...
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
2026-04-22 13:01:23 +00:00
J. Nick Koston
c399cd2fa2
[core] RAII guard for component loop phase ( #15897 )
2026-04-22 14:04:29 +02:00
J. Nick Koston
f6bf6dc8e5
[core] Dedupe yield() fast path in wakeable_delay and always-inline ( #15915 )
2026-04-22 13:52:40 +02:00
J. Nick Koston
e35b435f02
[libretiny] Inline xTaskGetTickCount() for millis() fast path ( #15918 )
2026-04-22 13:52:27 +02:00
J. Nick Koston
886cd7ab72
[core] Collapse adjacent USE_HOST ifdef blocks in Application ( #15914 )
2026-04-22 07:47:01 -04:00
dependabot[bot]
73714dc489
Bump aioesphomeapi from 44.18.0 to 44.19.0 ( #15920 )
...
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-22 12:26:25 +02:00