J. Nick Koston
5ae259ccba
Sync ETag sidecar mtime with cache file; treat mismatched sidecars as stale
...
The ETag sidecar describes a specific snapshot of the cache file. If the
cache file is replaced or edited out-of-band (manual edit, restore from
backup, another tool overwriting it), the sidecar's recorded ETag no
longer matches the bytes on disk -- using it would cause the server to
return 304 and we'd serve the wrong content from cache.
- _write_etag now os.utime()'s the sidecar to share the cache file's
st_mtime_ns immediately after writing it.
- _read_etag compares the two mtimes; if they don't match it returns
None and removes the sidecar so subsequent calls don't re-check it.
2026-04-26 09:41:20 -05:00
J. Nick Koston
9f058ac1a6
[core] Use ETag in external_files cache to fix re-downloads from raw.githubusercontent.com
...
raw.githubusercontent.com ignores If-Modified-Since (always returns
200), but honors If-None-Match with ETag (returns 304). This caused
every esphome compile/config run to re-download every cached external
file (audio_file, micro_wake_word, image, font, bme68x_bsec2, etc.)
sourced from a /raw/ URL.
- Send If-None-Match with the cached ETag when present
- Persist the ETag from each download in a hidden sidecar file
(.{name}.etag) and refresh it when a 304 carries a new ETag
- Replace path.write_bytes() with helpers.write_file() so downloads are
written atomically and can no longer leave partially-written cache
files behind on crash
2026-04-26 09:26:20 -05:00
J. Nick Koston
0f25d91e68
[core] Unify skip_external_update and honor it in external_files for faster esphome logs ( #16016 )
2026-04-26 07:24:33 -05:00
68625a1b76
[core] Isolate generated build metadata ( #16007 )
...
Co-authored-by: J. Nick Koston <nick@koston.org >
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
2026-04-26 09:11:09 +00:00
b5ccd55f4e
[packages] Fix premature substitution of vars in remote package files ( #15997 )
...
Co-authored-by: J. Nick Koston <nick+github@koston.org >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-04-25 17:06:58 +00:00
Paulus Schoutsen
9b45b046a8
[core] Allow finding all devices as target that match mac suffix ( #13135 )
2026-04-23 08:43:32 -05:00
Jesse Hills
e1d629f0d2
[time] Handle Windows EINVAL when validating POSIX TZ strings ( #15934 )
2026-04-23 14:35:13 +12:00
Javier Peletier and J. Nick Koston
9cebce1b6e
[substitutions] Improve error messages with include stack trace ( #15874 )
...
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
2026-04-22 03:19:01 +02:00
aad1318b4a
[packages] Improve error messages with include stack and fix missing path propagation ( #15844 )
...
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@home-assistant.io >
Co-authored-by: Jesse Hills <3060199+jesserockz@users.noreply.github.com >
2026-04-19 21:09:14 +00:00
J. Nick Koston
7a23a339e9
[substitutions] Fix substitutions: !include file.yaml regression ( #15850 )
2026-04-20 09:00:31 +12:00
J. Nick Koston
523c6f2376
[core] coerce set_interval(0) / update_interval: 0ms to 1ms ( #15799 )
2026-04-17 02:45:50 -10:00
J. Nick Koston
c6ad23fbc0
[bundle] Force-resolve nested IncludeFile during file discovery ( #15762 )
2026-04-16 08:45:33 -10:00
J. Nick Koston and Copilot Autofix powered by AI
edb16a27d3
[esphome] Skip missing extra flash images in upload_using_esptool ( #15723 )
...
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
2026-04-13 16:58:48 -10:00
Jonathan Swoboda
5d0cfc31fa
[core] Move FILTER_PLATFORMIO_LINES into platformio_runner ( #15707 )
2026-04-13 14:18:44 -04:00
Javier Peletier
daa68a2a60
[packages] fix support packages: !include mypackages.yaml ( #15677 )
2026-04-13 09:48:30 +12:00
Jonathan Swoboda
2f684bf4f3
[esp32] Bump platform to 55.03.38, Arduino to 3.3.8, ESP-IDF to 5.5.4 ( #15666 )
2026-04-12 10:07:04 -10:00
J. Nick Koston
a72609e640
[yaml] Resolve top-level IncludeFile in load_yaml ( #15557 )
2026-04-08 08:39:14 -04:00
J. Nick Koston and Copilot
a8b7c7a4ac
[core] Add TemplatableFn for 4-byte function-pointer templatable storage ( #15545 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-04-08 08:38:00 -04:00
J. Nick Koston
4db82877af
[yaml] Add IncludeFile representer to ESPHomeDumper ( #15549 )
2026-04-07 16:27:11 -10:00
d20d613c1d
[substitutions] !include ${filename}, Substitutions in include filename paths (package refactor part 5) ( #12213 )
...
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
Co-authored-by: J. Nick Koston <nick@koston.org >
2026-04-07 15:12:55 -10:00
Jesse Hills
b307c7c74c
[config_validation] Add unbounded percentage validators ( #15500 )
2026-04-08 11:44:52 +12:00
J. Nick Koston
ef6c65c7ec
[cli] Add config bundle CLI command for remote compilation ( #13791 )
2026-04-07 10:37:19 -10:00
J. Nick Koston
6460f3a757
[api] Add max_data_length and force to DeviceInfoResponse/HelloResponse proto fields ( #15514 )
2026-04-07 10:24:36 -10:00
J. Nick Koston
0d809a7481
[automation] Add CallbackAutomation dataclass and build_callback_automations helper ( #15246 )
2026-04-07 10:09:27 -10:00
J. Nick Koston
10b38e1588
[api] Add max_data_length proto option and optimize entity name/object_id ( #15426 )
2026-04-07 03:31:01 +00:00
J. Nick Koston
9ee5089891
[time] Support */N syntax in cron expressions ( #15434 )
2026-04-04 00:30:41 -10:00
J. Nick Koston
8561a8c495
[core] Suppress component source overflow warnings in testing mode ( #15320 )
2026-03-30 08:48:04 -10:00
J. Nick Koston
a9aaf29d83
[core] Shrink Component from 12 to 8 bytes per instance ( #15103 )
2026-03-29 12:09:21 -10:00
J. Nick Koston
5da3253f4b
[esp8266] Add enable_scanf_float option ( #15284 )
2026-03-29 11:57:52 -10:00
Jonathan Swoboda
b6abfec82e
[core] Fix area/device hash collision validation not running ( #15259 )
2026-03-27 22:22:24 -04:00
J. Nick Koston
fa8a609bcc
[automation] Eliminate trigger trampolines with deduplicated forwarder structs ( #15174 )
2026-03-26 13:50:50 -10:00
Jonathan Swoboda
c2456409bd
[core] Improve clean-all with no arguments ( #15184 )
2026-03-26 13:39:19 -04:00
J. Nick Koston
a22d47c719
[api] Add --no-states flag to esphome logs command ( #15160 )
2026-03-25 07:36:53 -10:00
Jonathan Swoboda and J. Nick Koston
4ff85e2a1e
[core] Fix clean-all to handle custom build paths ( #15146 )
...
Co-authored-by: J. Nick Koston <nick+github@koston.org >
2026-03-24 19:48:17 -04:00
Javier Peletier and J. Nick Koston
7eddf429ea
[substitutions] speed up config loading: substitutions pass and !include redesign (package refactor part 4) ( #12126 )
...
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
2026-03-23 23:57:22 -10:00
Javier Peletier and J. Nick Koston
df4318505f
[substitutions] refactor substitute() as a pure function (package refactor part 3) ( #15031 )
...
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
2026-03-23 14:28:04 -10:00
bf6000ef3d
[substitutions] substitutions pass and !include redesign (package refactor part 2b) ( #14918 )
...
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
Co-authored-by: J. Nick Koston <nick@koston.org >
2026-03-23 12:50:28 -10:00
J. Nick Koston
8a3b5a8def
[core] Fix placement new storage name for templated types ( #15096 )
2026-03-23 16:09:23 +13:00
J. Nick Koston
6992219e34
[core] Attribute placement new storage symbols to components ( #15092 )
2026-03-22 16:27:07 -10:00
J. Nick Koston
6a77b8b1f4
[light] Fix gamma LUT quantizing small brightness to zero ( #15060 )
2026-03-23 09:19:28 +13:00
J. Nick Koston
02ada93ea5
[wifi] Reject WiFi config on RP2040/RP2350 boards without CYW43 chip ( #14990 )
2026-03-19 18:40:33 -10:00
Javier Peletier and J. Nick Koston
c2c50ceea7
[substitutions] substitutions pass and !include redesign (package refactor part 2a) ( #14917 )
...
Co-authored-by: J. Nick Koston <nick@koston.org >
2026-03-18 23:10:01 -10:00
J. Nick Koston
3e845d387a
[tests] Fix test_show_logs_serial taking 30s due to unmocked serial port wait ( #14903 )
2026-03-17 14:44:17 -10:00
0c5f055d45
[core] cpp tests: Allow customizing code generation during tests ( #14681 )
...
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
Co-authored-by: J. Nick Koston <nick@koston.org >
2026-03-18 00:16:01 +00:00
J. Nick Koston
8daa946afa
[esp32] Add crash handler to capture and report backtrace across reboots ( #14709 )
2026-03-12 14:00:20 +13:00
J. Nick Koston and Claude Opus 4.6
6356e3def9
[core] Warn on crystal frequency mismatch during serial upload ( #14582 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 20:42:38 +00:00
Jonathan Swoboda and Claude Opus 4.6
8d988723cd
[config] Allow !extend/!remove on components without id in schema ( #14682 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-10 16:38:50 -04:00
J. Nick Koston
2c7ef4f758
[rp2040] Use picotool for BOOTSEL upload and improve upload UX ( #14483 )
2026-03-10 09:10:33 -10:00
e82f0f4432
[cpptests] support testing platform components ( #13075 )
...
Co-authored-by: J. Nick Koston <nick@home-assistant.io >
Co-authored-by: J. Nick Koston <nick@koston.org >
2026-03-10 02:41:02 +00:00
J. Nick Koston and Claude Opus 4.6
088a8a4338
[ci] Match symbols with changed signatures in memory impact analysis ( #14600 )
...
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com >
2026-03-08 17:23:58 -10:00