Skip to content

Commit 0e99fa9

Browse files
authored
Merge branch 'current' into wifi_hidden_docs
2 parents d642ab9 + c45f315 commit 0e99fa9

File tree

25 files changed

+263
-298
lines changed

25 files changed

+263
-298
lines changed

Makefile

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,6 @@ check-links: anchors
2727
anchors: repo-data
2828
$(PAGEFIND) -s pagefind-bootstrap
2929
hugo --environment anchors
30-
python3 script/md_anchors.py
3130

3231
repo-data: directories
3332
mkdir -p data/automations
@@ -54,7 +53,6 @@ convert-branch-in-place:
5453
netlify: repo-data
5554
$(PAGEFIND) -s pagefind-bootstrap
5655
hugo --environment anchors
57-
python3 script/md_anchors.py
5856
hugo --minify
5957
$(PAGEFIND)
6058
# rerun hugo to incorporate generated index

content/changelog/2025.10.0.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ If you manage multiple devices, the dashboard will feel noticeably faster and mo
159159

160160
## Device Onboarding Improvements
161161

162-
Getting your ESPHome devices online has never been easier. This release brings major improvements to the initial setup experience, particularly for ESP32-IDF devices and the [Made for ESPHome](https://esphome.io/guides/made_for_esphome/) program.
162+
Getting your ESPHome devices online has never been easier. This release brings major improvements to the initial setup experience, particularly for ESP32-IDF devices and the [Made for ESPHome](/guides/made_for_esphome/) program.
163163

164164
### Captive Portal for ESP-IDF
165165

@@ -179,9 +179,9 @@ This brings ESP-IDF up to feature parity with Arduino for onboarding, and since
179179

180180
**Why passive scanning matters:** Many home automation systems and BLE scanners only support passive scanning (not active scanning). Making the device name visible to passive scanners means your devices show up in more scanning apps and are easier to identify during setup.
181181

182-
These improvements directly support the [Made for ESPHome program](https://esphome.io/guides/made_for_esphome/), which requires Improv provisioning via BLE for Wi-Fi projects to ensure a consistent, high-quality setup experience across all ESPHome-compatible products.
182+
These improvements directly support the [Made for ESPHome program](/guides/made_for_esphome/), which requires Improv provisioning via BLE for Wi-Fi projects to ensure a consistent, high-quality setup experience across all ESPHome-compatible products.
183183

184-
The Made for ESPHome program requires Improv BLE provisioning for Wi-Fi projects. See the [certification requirements](https://esphome.io/guides/made_for_esphome/) for details.
184+
The Made for ESPHome program requires Improv BLE provisioning for Wi-Fi projects. See the [certification requirements](/guides/made_for_esphome/) for details.
185185

186186
## Home Assistant Action Responses
187187

content/changelog/2025.11.0.md

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -142,13 +142,13 @@ Added `ignore_not_found` option (default `true`) to allow disabling `CONFIG_SPIR
142142

143143
**7 New Sensor/Device Components:**
144144

145-
- [HDC2010](https://esphome.io/components/sensor/hdc2010.html) ([#6674](https://github.com/esphome/esphome/pull/6674)) - Texas Instruments temperature and humidity sensor
146-
- [MCP3221](https://esphome.io/components/sensor/mcp3221.html) ([#7764](https://github.com/esphome/esphome/pull/7764)) - I2C A-D converter with configurable reference voltage
147-
- [HLK-FM22X](https://esphome.io/components/hlk_fm22x.html) ([#8059](https://github.com/esphome/esphome/pull/8059)) - Face recognition module family
148-
- [BH1900NUX](https://esphome.io/components/sensor/bh1900nux.html) ([#8631](https://github.com/esphome/esphome/pull/8631)) - Rohm Semiconductor temperature sensor
149-
- [RX8130](https://esphome.io/components/time/rx8130.html) ([#10511](https://github.com/esphome/esphome/pull/10511)) - Epson RTC chip (used in M5Stack devices)
150-
- [BLE NUS Logger](https://esphome.io/components/logger.html#ble-logging) ([#9846](https://github.com/esphome/esphome/pull/9846)) - Logging over BLE for nRF52 platform
151-
- [TinyUSB](https://esphome.io/components/tinyusb.html) ([#11678](https://github.com/esphome/esphome/pull/11678)) - USB device functionality foundation for ESP32-S2/S3
145+
- [HDC2010](/components/sensor/hdc2010) ([#6674](https://github.com/esphome/esphome/pull/6674)) - Texas Instruments temperature and humidity sensor
146+
- [MCP3221](/components/sensor/mcp3221) ([#7764](https://github.com/esphome/esphome/pull/7764)) - I2C A-D converter with configurable reference voltage
147+
- [HLK-FM22X](/components/hlk_fm22x) ([#8059](https://github.com/esphome/esphome/pull/8059)) - Face recognition module family
148+
- [BH1900NUX](/components/sensor/bh1900nux) ([#8631](https://github.com/esphome/esphome/pull/8631)) - Rohm Semiconductor temperature sensor
149+
- [RX8130](/components/time/rx8130) ([#10511](https://github.com/esphome/esphome/pull/10511)) - Epson RTC chip (used in M5Stack devices)
150+
- [BLE NUS Logger](/components/ble_nus) ([#9846](https://github.com/esphome/esphome/pull/9846)) - Logging over BLE for nRF52 platform
151+
- [TinyUSB](/components/tinyusb) ([#11678](https://github.com/esphome/esphome/pull/11678)) - USB device functionality foundation for ESP32-S2/S3
152152

153153
**Extended Hardware Support:**
154154

@@ -518,6 +518,22 @@ The 2025.11 release blog posts include comprehensive migration examples for comm
518518

519519
<!-- markdownlint-disable MD013 -->
520520

521+
## Release 2025.11.2 - November 27
522+
523+
<details>
524+
<summary></summary>
525+
526+
- [nextion] Do not set alternative baud rate when not specified or `<= 0` [esphome#12097](https://github.com/esphome/esphome/pull/12097) by [@edwardtfn](https://github.com/edwardtfn)
527+
- [esp32] Fix platformio flash size print [esphome#12099](https://github.com/esphome/esphome/pull/12099) by [@swoboda1337](https://github.com/swoboda1337)
528+
- [script] Fix script.wait hanging when triggered from on_boot [esphome#12102](https://github.com/esphome/esphome/pull/12102) by [@bdraco](https://github.com/bdraco)
529+
- [lvgl] Allow multiple widgets per grid cell [esphome#12091](https://github.com/esphome/esphome/pull/12091) by [@clydebarrow](https://github.com/clydebarrow) (new-feature)
530+
- [lvgl] Fix position of errors in widget config [esphome#12111](https://github.com/esphome/esphome/pull/12111) by [@clydebarrow](https://github.com/clydebarrow)
531+
- [esp32] Fix hosted update when there is no wifi [esphome#12123](https://github.com/esphome/esphome/pull/12123) by [@swoboda1337](https://github.com/swoboda1337)
532+
- [wifi] Restore blocking setup until connected for RP2040 [esphome#12142](https://github.com/esphome/esphome/pull/12142) by [@clydebarrow](https://github.com/clydebarrow)
533+
- [scheduler] Fix use-after-move crash in heap operations [esphome#12124](https://github.com/esphome/esphome/pull/12124) by [@bdraco](https://github.com/bdraco)
534+
535+
</details>
536+
521537
## Release 2025.11.1 - November 24
522538

523539
<details>

content/components/climate/thermostat.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -301,13 +301,13 @@ These should be used to control the fan only, if available.
301301
These are triggered when the humidity control action is changed by the thermostat controller. It can trigger actions
302302
to activate humidification **or** dehumidification.
303303

304-
- **humidity_control_dehumidify_action** (*Optional*, [Action](#config-action)): The action to call when
304+
- **humidity_control_dehumidify_action** (*Optional*, [Action](/automations/actions#config-action)): The action to call when
305305
dehumidification is required.
306306

307-
- **humidity_control_humidify_action** (*Optional*, [Action](#config-action)): The action to call when
307+
- **humidity_control_humidify_action** (*Optional*, [Action](/automations/actions#config-action)): The action to call when
308308
humidification is required.
309309

310-
- **humidity_control_off_action** (*Optional*, [Action](#config-action)): The action to call when
310+
- **humidity_control_off_action** (*Optional*, [Action](/automations/actions#config-action)): The action to call when
311311
(de)humidification should stop. This action is **required** when either of the above actions are configured.
312312

313313
## Advanced Configuration/Behavior
@@ -562,7 +562,7 @@ the range of allowed temperature values in the thermostat component. See {{< doc
562562
before calling the idle [action](/automations/actions#all-actions). Defaults to 0.5 °C.
563563

564564
- **humidity_hysteresis** (*Optional*, float): The maximum humidity differential (above/below the set point)
565-
before calling the respective humidity control [action](#config-action). Defaults to 1%.
565+
before calling the respective humidity control [action](/automations/actions#config-action). Defaults to 1%.
566566

567567
> [!NOTE]
568568
>

content/components/lvgl/_index.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -147,15 +147,15 @@ The following configuration variables apply to the main `lvgl` component, in ord
147147
- **widgets** (*Optional*, list): A list of {{< docref "/components/lvgl/widgets" >}} to be drawn on the root display. May not be used if `pages` (below) is configured.
148148
- **pages** (*Optional*, list): A list of page IDs. Each page acts as a parent for widgets placed on it. May not be used with `widgets` (above). Options for each page:
149149
- **skip** (*Optional*, boolean): Option to skip this page when navigating between them with [`lvgl.page.next`, `lvgl.page.previous`](#lvgl-page-next-previous-action).
150-
- **layout** (*Optional*): See [Layouts](#lvgl-layouts) for details. Defaults to `NONE`.
150+
- **layout** (*Optional*): See [Layouts](/components/lvgl/layouts#lvgl-layouts) for details. Defaults to `NONE`.
151151
- **widgets** (*Optional*, list): A list of {{< docref "/components/lvgl/widgets" >}} to be drawn on the page.
152152
- All other options from [Style properties](#lvgl-styling) to be applied to this page.
153153
- **page_wrap** (*Optional*, boolean): Wrap from the last to the first page when navigating between them with [`lvgl.page.next`, `lvgl.page.previous`](#lvgl-page-next-previous-action). Defaults to `true`.
154154
- **top_layer** (*Optional*, list): A special kind of *Always on Top* page, which acts as a parent for widgets placed on it. It's shown above all the pages, which may be useful for widgets which always need to be visible.
155-
- **layout** (*Optional*): See [Layouts](#lvgl-layouts) for details. Defaults to `NONE`.
155+
- **layout** (*Optional*): See [Layouts](/components/lvgl/layouts#lvgl-layouts) for details. Defaults to `NONE`.
156156
- **widgets** (*Optional*, list): A list of {{< docref "/components/lvgl/widgets" >}} to be drawn on the page.
157157
- All other options from [Style properties](#lvgl-styling) to be applied to this page.
158-
- **layout** (*Optional*): See [Layouts](#lvgl-layouts) for details. Defaults to `NONE`.
158+
- **layout** (*Optional*): See [Layouts](/components/lvgl/layouts#lvgl-layouts) for details. Defaults to `NONE`.
159159
- All other options from [Style properties](#lvgl-styling) to be applied to all widgets directly.
160160

161161
**Example:**
@@ -832,11 +832,11 @@ This [trigger](/components/lvgl/widgets#lvgl-automation-triggers) is triggered a
832832

833833
### `on_draw_start`
834834

835-
This [trigger](#lvgl-automation-triggers) is executed before each LVGL drawing operation.
835+
This [trigger](/components/lvgl/widgets#lvgl-automation-triggers) is executed before each LVGL drawing operation.
836836

837837
### `on_draw_end`
838838

839-
This [trigger](#lvgl-automation-triggers) is executed after LVGL has completed drawing all updated screen elements. It
839+
This [trigger](/components/lvgl/widgets#lvgl-automation-triggers) is executed after LVGL has completed drawing all updated screen elements. It
840840
may be used for example to trigger an update of a display component like an e-paper screen that requires the buffer
841841
to be sent to the display for it to be updated.
842842

content/components/lvgl/layouts.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,12 @@ The layout configuration options are applied to any parent widget or page, influ
1414
The position and size calculated by the layout override the *normal* `x`, `y`, `width`, and `height` settings of the
1515
children.
1616

17-
Check out [Flex layout positioning](#lvgl-cookbook-flex), [Grid layout positioning](#lvgl-cookbook-grid)
18-
and [Weather forecast panel](#lvgl-cookbook-weather) in the Cookbook for examples which demonstrate how to automate
17+
Check out [Flex layout positioning](/cookbook/lvgl#lvgl-cookbook-flex), [Grid layout positioning](/cookbook/lvgl#lvgl-cookbook-grid)
18+
and [Weather forecast panel](/cookbook/lvgl#lvgl-cookbook-weather) in the Cookbook for examples which demonstrate how to automate
1919
widget positioning, potentially reducing the size of your device's YAML configuration, and saving you from lots of
2020
manual calculations.
2121

22-
The `hidden`, `ignore_layout` and `floating` [flags](#lvgl-widget-flags) can be used on widgets to ignore them in layout
22+
The `hidden`, `ignore_layout` and `floating` [flags](/components/lvgl/widgets#lvgl-widget-flags) can be used on widgets to ignore them in layout
2323
calculations.
2424

2525
### Configuration variables
@@ -188,9 +188,9 @@ placement:
188188
- **grid_cell_row_pos** (*Optional*, int16): Position of the widget, in which row to appear (0 based count).
189189
- **grid_cell_column_pos** (*Optional*, int16): Position of the widget, in which column to appear (0 based count).
190190
- **grid_cell_x_align** (*Optional*, string): How to align the widget horizontally within the cell. Can also be applied
191-
through [Style properties](#lvgl-styling). Possible options below.
191+
through [Style properties](/components/lvgl#lvgl-styling). Possible options below.
192192
- **grid_cell_y_align** (*Optional*, string): How to align the widget vertically within the cell. Can also be applied
193-
through [Style properties](#lvgl-styling). Possible options below.
193+
through [Style properties](/components/lvgl#lvgl-styling). Possible options below.
194194
- **grid_cell_row_span** (*Optional*, int16): How many rows to span across the widget. Defaults to `1`.
195195
- **grid_cell_column_span** (*Optional*, int16): How many columns to span across the widget. Defaults to `1`.
196196

content/components/lvgl/widgets.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ The properties below are common to all widgets.
2222
> [!NOTE]
2323
> By default, the `x` and `y` coordinates are measured from the *top left corner* of the parent's content area. [Important](/components/lvgl#lvgl-styling): content area starts *after the padding* thus if the parent has a non-zero padding value, position will be shifted with that. Percentage values are calculated from the parent's content area size.
2424
>
25-
> If specifying `align`, `x` and `y` can be used as an offset to the calculated position (can also be negative). They are ignored if [Layouts](/components/lvgl#lvgl-layouts) are used on the parent.
25+
> If specifying `align`, `x` and `y` can be used as an offset to the calculated position (can also be negative). They are ignored if [Layouts](/components/lvgl/layouts#lvgl-layouts) are used on the parent.
2626
2727
- **height** (*Optional*): Height of the widget in pixels or a percentage, or `SIZE_CONTENT`.
2828
- **width** (*Optional*): Width of the widget in pixels or a percentage, or `SIZE_CONTENT`.
@@ -49,7 +49,7 @@ The properties below are common to all widgets.
4949
{{< img src="lvgl_align.png" alt="Image" class="align-center" >}}
5050

5151
- **group** (*Optional*, string): The name of the group of widgets which will interact with a {{< docref "/components/sensor/rotary_encoder" >}}. In every group there is always one focused widget which receives the encoder actions. You need to associate an input device with a group. An input device can send key events to only one group but a group can receive data from more than one input device. If no group is specified for a widget or an encoder, an unnamed default group will be assigned, so in most cases where only one encoder is used it will not be necessary to explicitly specify a group.
52-
- **layout** (*Optional*): See [Layouts](/components/lvgl#lvgl-layouts) for details. Defaults to `NONE`.
52+
- **layout** (*Optional*): See [Layouts](/components/lvgl/layouts#lvgl-layouts) for details. Defaults to `NONE`.
5353
- **styles** (*Optional*, [ID](/guides/configuration-types#id)): The ID of a *style definition* from the main component configuration to override the theme styles.
5454
- **theme** (*Optional*, list): A list of styles to apply to the widget and children. Same configuration option as at the main component.
5555
- **widgets** (*Optional*, list): A list of LVGL widgets to be drawn as children of this widget. Same configuration option as at the main component.
@@ -808,7 +808,7 @@ it is invisible. It has a default width and height of 100%.
808808

809809
**Configuration variables:**
810810

811-
- Style options from [Style properties](#lvgl-styling).
811+
- Style options from [Style properties](/components/lvgl#lvgl-styling).
812812

813813
**Triggers:**
814814

@@ -1040,7 +1040,7 @@ A label is the basic widget type that is used to display text.
10401040

10411041
**Configuration variables:**
10421042

1043-
- **long_mode** (*Optional*, list): By default, the width and height of the label is set to `SIZE_CONTENT`. Therefore, the size of the label is automatically expanded to the text size. Otherwise, if the `width` or `height` are explicitly set (or set by [Layouts](/components/lvgl#lvgl-layouts)), the lines wider than the label's width can be manipulated according to the long mode policies below. These policies can be applied if the height of the text is greater than the height of the label.
1043+
- **long_mode** (*Optional*, list): By default, the width and height of the label is set to `SIZE_CONTENT`. Therefore, the size of the label is automatically expanded to the text size. Otherwise, if the `width` or `height` are explicitly set (or set by [Layouts](/components/lvgl/layouts#lvgl-layouts)), the lines wider than the label's width can be manipulated according to the long mode policies below. These policies can be applied if the height of the text is greater than the height of the label.
10441044
- `WRAP` : Wrap lines which are too long. If the height is `SIZE_CONTENT`, the label's height will be expanded, otherwise the text will be clipped (default).
10451045
- `DOT` : Replaces the last 3 characters from bottom right corner of the label with dots.
10461046
- `SCROLL` : If the text is wider than the label, scroll the text horizontally back and forth. If it's higher, scroll vertically. Text will scroll in only one direction; horizontal scrolling has higher precedence.

content/components/openthread.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ openthread:
6464
- **mesh_local_prefix** (ipv6network): Used to build Mesh-Local IPv6 addresses (ML-EIDs), which are unique to each Thread device within the network partition
6565
- **use_address** (*Optional*, string): Manually override what address to use to connect
6666
to the ESP. Defaults to auto-generated value.
67-
- **poll_period** (*Optional*, [Time](#config-time)): When Poll_Period is set on an MTD device, the parent router will enqueue any messages and wait for the child to submit a poll data request
67+
- **poll_period** (*Optional*, [Time](/guides/configuration-types#config-time)): When Poll_Period is set on an MTD device, the parent router will enqueue any messages and wait for the child to submit a poll data request
6868

6969
> [!NOTE]
7070
> esphome.ota does not work when poll_period > 0, instead use http_request.ota, timeout and watchdog_timeout need to be tested to find the correct values. Values greater than 100sec may be required.

content/components/ota/esphome.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ ota:
3131
- **password** (*Optional*, string): The password to use for updates.
3232
3333
> [!IMPORTANT]
34-
> Always use strong, unique passwords for OTA updates. See the [Security Best Practices](/guides/security_best_practices#ota-password-protection) guide for more information.
34+
> Always use strong, unique passwords for OTA updates. See the [Security Best Practices](/guides/security_best_practices#3-ota-password-protection) guide for more information.
3535
3636
- **port** (*Optional*, int): The port to use for OTA updates. Defaults:
3737

0 commit comments

Comments
 (0)