Commit Graph
23181 Commits
Author SHA1 Message Date
Tomasz Duda d1033e25fe fix 2026-02-11 13:09:03 +01:00
Tomasz Duda 22cd2e8274 fix 2026-02-11 13:08:07 +01:00
Tomasz Duda 054716fa51 fix 2026-02-11 12:54:35 +01:00
Tomasz Duda eee83b0edf fix 2026-02-11 12:27:03 +01:00
Tomasz Duda 2abf013eb4 fix 2026-02-11 12:15:54 +01:00
Tomasz Duda 89cc5e91b6 fix 2026-02-11 11:36:21 +01:00
Tomasz Duda d348a3ded0 fix 2026-02-11 11:24:37 +01:00
Tomasz Duda 66a2860526 fix 2026-02-11 10:36:13 +01:00
Tomasz Duda ccb1d7e5bc fix 2026-02-11 10:25:16 +01:00
Tomasz Duda 9f46bed686 fix 2026-02-11 10:10:47 +01:00
Tomasz Duda b79780f885 Merge remote-tracking branch 'origin/dev' into logger_threading 2026-02-11 09:52:40 +01:00
Tomasz Duda d15c466f7e fix 2026-02-11 09:52:32 +01:00
J. Nick Koston 38bba3f5a2 [scheduler] Reduce set_timer_common_ hot path size by 25% (#13899) 2026-02-11 16:42:13 +13:00
J. Nick Koston 225c13326a [core] Extract dump_config from Application::loop() hot path (#13900) 2026-02-11 16:41:07 +13:00
J. Nick Koston 5281fd3273 [api] Extract cold code from APIConnection::loop() hot path (#13901) 2026-02-11 16:30:34 +13:00
J. Nick KostonandCopilot e3bafc1b45 [esp32_ble] Extract state transitions from ESP32BLE::loop() hot path (#13903)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-11 16:29:29 +13:00
Thomas RupprechtandKeith Burzinski 42bc0994f1 [rtttl] Code Improvements (#13653)
Co-authored-by: Keith Burzinski <kbx81x@gmail.com>
2026-02-10 22:10:29 -05:00
J. Nick Koston 1af70e67b7 Merge branch 'light-validate-eliminate-redundant-clamp' into integration 2026-02-10 21:07:20 -06:00
J. Nick Koston 0b02476e8a [light] Eliminate redundant clamp in LightCall::validate_() and normalize_color()
After clamp_and_log_if_invalid() clamps the value in-place, the
LightColorValues setter's clamp() is guaranteed to be a no-op. For 5
of 9 fields the compiler was inlining the setter's clamp, generating
~18 bytes of redundant float compare + conditional move per field.

Use friend access to assign directly to LightColorValues fields,
bypassing the setter. Also apply the same optimization to
normalize_color() where division by max_value guarantees results
stay in [0,1].
2026-02-10 21:02:24 -06:00
J. Nick Koston e3fbbb2e99 [light] Eliminate redundant clamp in LightCall::validate_()
After clamp_and_log_if_invalid() clamps the value in-place, the
LightColorValues setter's clamp() is guaranteed to be a no-op. For 5
of 9 fields the compiler was inlining the setter's clamp, generating
~18 bytes of redundant float compare + conditional move per field.

Use friend access to assign directly to LightColorValues fields,
bypassing the setter. Saves ~204 bytes of flash on ESP32.
2026-02-10 20:45:05 -06:00
J. Nick Koston 58659e4893 [mdns] Throttle MDNS.update() polling on ESP8266 and RP2040 (#13917) 2026-02-10 18:48:13 -06:00
Jonathan SwobodaandClaude Opus 4.6 b4707344d3 [esp32] Upgrade uv to 0.10.1 and increase HTTP retries (#13918)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 00:44:12 +00:00
Jonathan SwobodaandClaude Opus 4.6 548b7e5dab [esp32] Fix ESP32-P4 test: replace stale esp_hosted component ref (#13920)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-11 00:04:12 +00:00
J. Nick Koston 4b59ea322a Merge remote-tracking branch 'origin/socket_ready_devirtualize' into integration 2026-02-10 17:41:47 -06:00
J. Nick Koston fd683a5609 [socket] Implement working ready() for LWIP raw TCP sockets (ESP8266/RP2040)
Previously ready() always returned true on ESP8266/RP2040, causing
every socket to be checked on every loop iteration even when no data
was available.

Override ready() in LWIPRawImpl to check rx_buf_/rx_closed_/pcb_ state,
and in LWIPRawListenImpl to check accepted_socket_count_. This uses
existing fields so no extra memory is needed per socket.

Keep ready() virtual only on the non-select path (ESP8266/RP2040) so
the select()-based path (ESP32) retains the non-virtual optimization
from the previous commit.
2026-02-10 17:37:42 -06:00
Tomasz Duda 26ed6aa314 fix 2026-02-10 23:34:40 +01:00
Tomasz Duda f3202522b8 Merge remote-tracking branch 'origin/dev' into logger_threading 2026-02-10 23:21:40 +01:00
Jesse Hills b9c2be8228 Merge branch 'release' into dev 2026-02-11 11:13:33 +13:00
Jesse Hills fb2f0ce62f Merge pull request #13915 from esphome/bump-2026.1.5
2026.1.5
2026.1.5
2026-02-11 11:13:08 +13:00
J. Nick Koston bc5bab7bc7 Merge remote-tracking branch 'origin/mdns-throttle-update-polling' into integration 2026-02-10 14:40:16 -06:00
J. Nick Koston 591c0e9c65 [mdns] Remove mDNS from per-iteration loop on ESP8266 and RP2040
On ESP8266 and RP2040, MDNS.update() was called every loop iteration
(~120 Hz) but only manages timer-driven probe/announce state machines.
Incoming mDNS packets are handled independently via the lwIP onRx UDP
callback and are unaffected by update() frequency.

Replace the loop() override with set_interval() at 50ms. This removes
the component from the loop list entirely via has_overridden_loop(),
eliminating all per-iteration overhead including virtual dispatch.

The 50ms interval provides sufficient resolution for all internal
timers (shortest is 250ms probe interval per RFC 6762 Section 8.1).
2026-02-10 14:37:46 -06:00
J. Nick Koston 16e5d4d172 Merge branch 'mdns-throttle-update-polling' into integration 2026-02-10 14:30:24 -06:00
J. Nick Koston 1b13f49e1b [mdns] Throttle MDNS.update() polling on ESP8266 and RP2040
On ESP8266 and RP2040, MDNS.update() is called every loop iteration
(~120 Hz) but only manages timer-driven probe/announce state machines.
Incoming mDNS packets are handled independently via the lwIP onRx UDP
callback and are unaffected by update() frequency.

The shortest internal timer is the 250ms probe interval (RFC 6762).
Throttling to 50ms provides sufficient resolution while reducing CPU
overhead by ~84% (from ~360ms to ~60ms per 60s measurement period).
2026-02-10 14:28:26 -06:00
J. Nick Koston d152438335 [libretiny] Update LibreTiny to v1.12.1 (#13851) 2026-02-10 20:07:09 +00:00
J. Nick Koston cf8f7ef0a1 Merge branch 'hardening/web-server-constant-time-compare' into integration
# Conflicts:
#	esphome/components/debug/debug_esp8266.cpp
#	esphome/components/rtttl/rtttl.cpp
2026-02-10 14:00:58 -06:00
J. Nick Koston e4b6bea51a Merge remote-tracking branch 'upstream/dev' into hardening/web-server-constant-time-compare
# Conflicts:
#	esphome/components/web_server_idf/web_server_idf.cpp
2026-02-10 13:57:43 -06:00
J. Nick Koston 868a2151e3 [web_server_idf] Reduce heap allocations by using stack buffers (#13549) 2026-02-10 13:56:12 -06:00
J. Nick Koston c65d3a0072 [mqtt] Add zero-allocation topic getters to MQTT_COMPONENT_CUSTOM_TOPIC macro (#13811) 2026-02-10 13:55:16 -06:00
J. Nick Koston e2fad9a6c9 [sprinkler] Convert state and request origin strings to PROGMEM_STRING_TABLE (#13806) 2026-02-10 13:55:01 -06:00
J. Nick Koston 5365faa877 [debug] Move ESP8266 switch tables to flash with PROGMEM_STRING_TABLE (#13813) 2026-02-10 13:54:48 -06:00
J. Nick KostonandCopilot 86feb4e27a [rtttl] Convert state_to_string to PROGMEM_STRING_TABLE (#13807)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-10 13:54:37 -06:00
J. Nick Koston 2a6d9d6325 [mqtt] Avoid heap allocation in on_log by using const char* publish overload (#13809) 2026-02-10 13:54:22 -06:00
J. Nick Koston 727bb27611 [bmp3xx_base/bmp581_base] Convert oversampling and IIR filter strings to PROGMEM_STRING_TABLE (#13808) 2026-02-10 13:54:07 -06:00
J. Nick Koston c03abcdb86 [http_request] Reduce heap allocations in update check by parsing JSON directly from buffer (#13588) 2026-02-10 13:53:53 -06:00
Jesse Hills a99f75ca71 Bump version to 2026.1.5 2026-02-11 08:45:06 +13:00
Sean Kelly 4168e8c30d [aqi] Fix AQI calculation for specific pm2.5 or pm10 readings (#13770) 2026-02-11 08:45:06 +13:00
J. Nick Koston 1a6c67f92e [ssd1306_base] Move switch tables to PROGMEM with lookup tables (#13814) 2026-02-10 13:45:03 -06:00
J. Nick Koston 3f7178599a Merge remote-tracking branch 'origin/libretiny_1120' into integration 2026-02-10 13:16:03 -06:00
J. Nick Koston 19abc28aa9 Merge remote-tracking branch 'upstream/dev' into libretiny_1120
# Conflicts:
#	.clang-tidy.hash
2026-02-10 13:04:50 -06:00
J. Nick Koston bed3e7307d Merge remote-tracking branch 'upstream/socket_ready_devirtualize' into integration 2026-02-10 12:52:20 -06:00