Commit Graph
23808 Commits
Author SHA1 Message Date
J. Nick Koston df863b99b6 Merge branch 'move_device_class_progmem' into integration 2026-03-03 11:10:14 -10:00
J. Nick Koston ca6a05bfdd move device class strings to PROGMEM on ESP8266
Same treatment as icons in #14437. Device class strings were in
.rodata (RAM on ESP8266). Now stored as individual PROGMEM char arrays.

- Add get_device_class_to(std::span<char, MAX_DEVICE_CLASS_LENGTH>)
  buffer API matching get_icon_to() pattern
- Add fill_and_encode_entity_info_with_device_class() wrapper to
  deduplicate buffer handling across 10 API entity types
- Centralize MQTT device_class in send_discovery_() lambda where
  buffer lifetime outlives ArduinoJson serialization
- Deprecate get_device_class_ref()/get_device_class() on non-ESP8266
- static_assert error on ESP8266 directing to get_device_class_to()
- Update all callers: api, mqtt, web_server, log helper
2026-03-03 10:50:39 -10:00
J. Nick Koston 5ba1886b9b Merge branch 'move_icons_progmem' into integration 2026-03-03 08:43:46 -10:00
J. Nick Koston afb8ba6813 preen 2026-03-03 08:43:35 -10:00
J. Nick Koston 06c7bbd4ee Merge branch 'move_icons_progmem' into integration 2026-03-03 08:40:03 -10:00
J. Nick Koston 6425c15ee1 bot review 2026-03-03 08:33:04 -10:00
J. Nick Koston 6fd20056ad Merge branch 'move_icons_progmem' into integration 2026-03-03 08:23:52 -10:00
J. Nick Koston 7becceb3b1 Merge remote-tracking branch 'upstream/dev' into integration 2026-03-03 08:23:42 -10:00
J. Nick Koston 4267d29cb5 simplify get_icon_to: single lookup call on non-ESP8266
- Non-ESP8266: just return entity_icon_lookup(idx) directly
- ESP8266: short-circuit idx==0 to avoid strncpy_P on non-PROGMEM ""
2026-03-03 08:19:30 -10:00
J. Nick Koston 8335bb5f8e remove unnecessary PROGMEM empty string from weak default
The weak default is only reached when USE_ENTITY_ICON is disabled,
and get_icon_to() already short-circuits with return "" in that case.
2026-03-03 08:18:18 -10:00
J. Nick Koston 4a22afb79d fix: ensure icon empty string is PROGMEM, skip lookup when disabled
- When USE_ENTITY_ICON is disabled, return "" directly without
  calling through the lookup table
- When enabled, ensure the empty-string fallback (index 0 / out of
  range) is a PROGMEM char array so strncpy_P on ESP8266 is safe
2026-03-03 08:15:56 -10:00
J. Nick Koston 1108511c63 move icons to progmem 2026-03-03 08:06:55 -10:00
J. Nick Koston 807e3f9efc move icons to progmem 2026-03-03 08:04:09 -10:00
J. Nick Koston 95544dddf8 [ci] Add code-owner-approved label workflow (#14421) 2026-03-03 07:11:47 -10:00
J. Nick Koston b209c903bb [core] Inline trivial Component state accessors (#14425) 2026-03-03 07:05:15 -10:00
J. Nick Koston 4f69c487da [bk72xx] Fix ~100ms loop stalls by raising main task priority (#14420) 2026-03-03 07:04:12 -10:00
J. Nick Koston 78602ccacb [ci] Add lint check to prevent powf in core and base entity platforms (#14126) 2026-03-03 07:03:50 -10:00
J. Nick Koston 1f1b20f4fe [core] Pack entity string properties into PROGMEM-indexed uint8_t fields (#14171) 2026-03-03 07:03:24 -10:00
J. Nick Koston d53ff7892a [socket] Cache lwip_sock pointers and inline ready() chain (#14408) 2026-03-03 07:03:02 -10:00
b6f0bb9b6b [speaker] Add off on capability to media player (#9295)
Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
Co-authored-by: Kevin Ahrendt <kevin.ahrendt@openhomefoundation.org>
2026-03-03 10:59:01 -05:00
Clyde Stubbs cfde0613bb [const][uart][usb_uart][weikai][core] Move constants to components/const (#14430) 2026-03-03 07:53:18 -05:00
Jesse Hills 903c67c994 Revert "[wifi] Revert cyw43_wifi_link_status change for RP2040"
This reverts commit 1b5bf2c848.
2026-03-03 22:16:54 +13:00
Jesse Hills d8d479cef7 Merge branch 'release' into dev 2026-03-03 22:15:06 +13:00
Jesse Hills f48106b160 Merge pull request #14427 from esphome/bump-2026.2.4
2026.2.4
2026.2.4
2026-03-03 22:07:35 +13:00
J. Nick Koston 1b5bf2c848 [wifi] Revert cyw43_wifi_link_status change for RP2040
The switch from cyw43_tcpip_link_status to cyw43_wifi_link_status
was intended for 2026.3.0 alongside the arduino-pico 5.5.0 framework
update but was accidentally included in 2026.2.3.

With the old framework (3.9.4), cyw43_wifi_link_status never returns
CYW43_LINK_UP, so the CONNECTED state is unreachable. The device
connects to WiFi but the status stays at CONNECTING until timeout,
causing a connect/disconnect loop.

Fixes https://github.com/esphome/esphome/issues/14422
2026-03-03 20:46:31 +13:00
Jesse Hills c4fa476c3c Bump version to 2026.2.4 2026-03-03 20:45:28 +13:00
schrobandJonathan Swoboda 60d66ca2dc [openthread] Add tx power option (#14200)
Co-authored-by: Jonathan Swoboda <154711427+swoboda1337@users.noreply.github.com>
2026-03-02 23:28:01 -05:00
J. Nick Koston 26391398f8 Merge remote-tracking branch 'origin/inline-component-state-accessors' into integration 2026-03-02 17:59:34 -10:00
J. Nick Koston c86e6cb8f8 [core] Inline trivial Component state accessors
Move trivial component_state_ accessors from out-of-line definitions
in component.cpp to inline definitions in the header. This allows the
compiler to inline these single-expression field accesses at call sites,
eliminating function call overhead. Most notably, get_component_state()
is called per-component per-loop iteration in Application::loop().

Inlined: get_component_state(), is_in_loop_state(), is_idle(),
is_failed(), status_has_warning(), status_has_error()

Kept out-of-line: is_ready() (3-way OR, larger body)
2026-03-02 17:58:54 -10:00
J. Nick Koston db15b94cd7 [core] Inline HighFrequencyLoopRequester::is_high_frequency() (#14423) 2026-03-03 03:17:20 +00:00
J. Nick Koston 2c7ae6f52d Merge remote-tracking branch 'origin/inline-is-high-frequency' into integration 2026-03-02 16:53:05 -10:00
J. Nick Koston efc29773a3 [core] Inline HighFrequencyLoopRequester::is_high_frequency()
Move is_high_frequency() from out-of-line definition in helpers.cpp
to inline in the header. This allows the compiler to inline the
trivial check (num_requests > 0) at the call site in
Application::loop(), avoiding a function call every loop iteration.
2026-03-02 16:27:36 -10:00
J. Nick Koston 48fdd9b072 merge merge error 2026-03-02 16:21:01 -10:00
J. Nick Koston 80a32db5a8 Merge remote-tracking branch 'origin/add-codeowner-approved-label' into integration 2026-03-02 16:17:43 -10:00
J. Nick Koston 1f270ce1d1 dry 2026-03-02 16:10:02 -10:00
J. Nick Koston 57c83b8053 dry 2026-03-02 16:06:24 -10:00
J. Nick Koston 52725e25e3 dry 2026-03-02 16:06:12 -10:00
J. Nick Koston ac454b6478 Merge remote-tracking branch 'origin/integration' into integration 2026-03-02 16:03:03 -10:00
J. Nick Koston 4d91ffaa25 Merge remote-tracking branch 'upstream/fix-ble-client-disconnect-race' into integration 2026-03-02 16:02:53 -10:00
J. Nick Koston 0ae2d31891 Merge remote-tracking branch 'upstream/fix-bk72xx-loop-time' into integration 2026-03-02 16:02:48 -10:00
J. Nick Koston b6ea52b6a7 Merge remote-tracking branch 'upstream/lint-no-powf-core' into integration 2026-03-02 16:02:44 -10:00
J. Nick Koston 3afcbd22b2 Merge branch 'add-codeowner-approved-label' into integration 2026-03-02 16:02:28 -10:00
J. Nick Koston 769031b724 reduce api calls 2026-03-02 16:01:23 -10:00
J. Nick Koston fbd00855b0 Merge branch 'dev' into lint-no-powf-core 2026-03-02 15:56:45 -10:00
J. Nick Koston 21bf561f0c one more 2026-03-02 15:56:17 -10:00
J. Nick Koston d9b5f54cf6 Pin codeowner-review-request checkout to base SHA
Explicitly checkout the base branch SHA for consistency and to
ensure the shared codeowners.js script is always loaded from
trusted code, not the PR head.
2026-03-02 15:53:14 -10:00
J. Nick Koston ca600a45a2 Address review feedback
- Actually filter bot reviews (not just comment about it)
- Use core.setFailed() instead of silently swallowing errors
- Remove unused getEffectiveOwners import from detectors.js
2026-03-02 15:52:04 -10:00
J. Nick Koston 55fc563c69 Checkout base branch to prevent PR author code injection
pull_request_review checks out the PR merge commit by default,
which means require() would load the PR author's version of
shared scripts. Explicitly checkout the base branch SHA instead.
2026-03-02 15:50:54 -10:00
ae49b67321 [ld2450] Clear all related sensors when a target is not being tracked (#13602)
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: J. Nick Koston <nick@koston.org>
2026-03-02 15:47:40 -10:00
J. Nick Koston ed63f51fcb [github-actions] Add code-owner-approved label workflow
Add a workflow that automatically manages a code-owner-approved label
on PRs when component-specific codeowners submit approvals. This helps
maintainers prioritize PRs that have domain-expert sign-off.

The workflow triggers on pull_request_review events and recalculates
the label based on all current reviews. Only individual component
codeowners count - the catch-all @esphome/core team is excluded.
Uses last-match-wins semantics for CODEOWNERS pattern matching.

Also extracts shared CODEOWNERS parsing logic into a reusable module
at .github/scripts/codeowners.js and updates codeowner-review-request
and auto-label-pr workflows to use it.
2026-03-02 15:45:08 -10:00