[lis2dw12] Accelerometer component documentation#6277
[lis2dw12] Accelerometer component documentation#6277latonita wants to merge 2 commits intoesphome:nextfrom
Conversation
There was a problem hiding this comment.
As this is a feature matched with a PR in https://github.com/esphome/esphome, please target your PR to the next branch and rebase.
|
Please take a look at the requested changes, and use the Ready for review button when you are done, thanks 👍 |
✅ Deploy Preview for esphome ready!
To edit notification comments on pull requests, go to your Netlify project configuration. |
There was a problem hiding this comment.
Pull request overview
This PR significantly expands and updates the ESPHome documentation set, including a new LIS2DW12 accelerometer page plus multiple other new/updated component docs and release-note tooling updates.
Changes:
- Added new component documentation pages (notably
lis2dw12, plus several others likeserial_proxy,sen6x,hdc302x,dew_point,rp2040_ble,zephyr_mcumgr, audio/media source docs). - Updated existing documentation across many components (WiFi, UART, OTA, ESP32 camera/BLE, OpenThread, Modbus, etc.).
- Updated release-notes generation tooling/templates and bumped
data/version.yaml; added*.webp binaryto.gitattributes.
Reviewed changes
Copilot reviewed 61 out of 67 changed files in this pull request and generated 6 comments.
Show a summary per file
| File | Description |
|---|---|
| src/content/docs/guides/troubleshooting.mdx | Adds ESP32 ESP-IDF automatic crash reporting section to troubleshooting guide. |
| src/content/docs/guides/supporters.mdx | Updates contributor list and last-updated date. |
| src/content/docs/guides/security_best_practices.mdx | Removes deprecated MQTT SSL fingerprint example comments. |
| src/content/docs/guides/cli.mdx | Removes deprecated mqtt-fingerprint CLI command docs. |
| src/content/docs/components/wifi.mdx | Documents band_mode option for esp32-c5. |
| src/content/docs/components/vbus.mdx | Adds DeltaSol CS4 model and supported sensors/binary sensors. |
| src/content/docs/components/usb_uart.mdx | Adds debug_prefix and documents flush_timeout type as [Time]. |
| src/content/docs/components/uart.mdx | Documents flush_timeout and debug_prefix and updates UART debug helper signatures. |
| src/content/docs/components/touchscreen/gt911.mdx | Expands GT911 examples and clarifies interrupt-pin behavior with IO expanders. |
| src/content/docs/components/text_sensor/version.mdx | Adds hide_hash option and updates examples/wording. |
| src/content/docs/components/serial_proxy.mdx | New docs page for the experimental Serial Proxy component. |
| src/content/docs/components/sensor/sen6x.mdx | New docs page for the Sensirion SEN6x series sensor platform. |
| src/content/docs/components/sensor/sen5x.mdx | Adds See Also link to the new SEN6x docs. |
| src/content/docs/components/sensor/lps22.mdx | Updates supported LPS22 variants and links to datasheets. |
| src/content/docs/components/sensor/lis2dw12.mdx | New docs page for LIS2DW12 accelerometer (hub + sensors/binary/text + triggers). |
| src/content/docs/components/sensor/integration.mdx | Adds sensor.integration.set_value action documentation. |
| src/content/docs/components/sensor/images/jst6pin.png | Adds connector image referenced by SEN6x wiring section. |
| src/content/docs/components/sensor/hdc302x.mdx | New docs page for HDC302x sensors including heater actions and usage guidance. |
| src/content/docs/components/sensor/dew_point.mdx | New docs page for dew point calculation sensor platform. |
| src/content/docs/components/safe_mode.mdx | Adds safe_mode.mark_successful action docs. |
| src/content/docs/components/rp2040_ble.mdx | New docs page for RP2040 BLE stack initialization component. |
| src/content/docs/components/rp2040.mdx | Expands RP2040 platform docs (supported boards, BOOTSEL flashing, pin names, serial debugging). |
| src/content/docs/components/ota/zephyr_mcumgr.mdx | New docs page for nRF52 OTA via Zephyr MCUmgr (MCUboot-only). |
| src/content/docs/components/ota/web_server.mdx | Updates APIRef header path to ota_backend.h. |
| src/content/docs/components/ota/index.mdx | Adds zephyr_mcumgr platform and updates APIRef header path. |
| src/content/docs/components/ota/http_request.mdx | Updates APIRef header path to ota_backend.h. |
| src/content/docs/components/ota/esphome.mdx | Updates APIRef header path to ota_backend.h. |
| src/content/docs/components/openthread.mdx | Adds output_power option and documents ESP-IDF↔OpenThread log level mapping. |
| src/content/docs/components/online_image.mdx | Documents 8-bit indexed BMP support. |
| src/content/docs/components/nrf52.mdx | Adds advanced config section for OTA rollback behavior. |
| src/content/docs/components/mqtt.mdx | Removes deprecated ssl_fingerprints option and section. |
| src/content/docs/components/modbus_controller.mdx | Updates example to use ESPTime and clarifies time-component requirement. |
| src/content/docs/components/modbus.mdx | Clarifies flow-control pin guidance; adds turnaround_time; improves disable_crc description. |
| src/content/docs/components/media_source/index.mdx | New domain index page for media sources. |
| src/content/docs/components/media_source/audio_file.mdx | New docs page for audio_file media source. |
| src/content/docs/components/media_player/speaker_source.mdx | New docs page for speaker_source media player platform. |
| src/content/docs/components/media_player/speaker.mdx | Updates supported codecs/options; refines performance notes and adds turn_on/off automations. |
| src/content/docs/components/media_player/index.mdx | Expands documented media_player actions/conditions and clarifies action support differences. |
| src/content/docs/components/logger.mdx | Adds nRF52-only logger options wait_for_cdc and early_message. |
| src/content/docs/components/index.mdx | Adds many new component index entries (Serial Proxy, RP2040 BLE, nRF52 OTA, sensors, media/audio, etc.). |
| src/content/docs/components/http_request.mdx | Documents ESP8266 TLS buffer size options. |
| src/content/docs/components/esp_ldo.mdx | Expands ESP32-P4 LDO docs (internal channels, passthrough, safety notes). |
| src/content/docs/components/esp8266.mdx | Documents enable_full_printf option. |
| src/content/docs/components/esp32_hosted.mdx | Documents sdio_frequency option. |
| src/content/docs/components/esp32_camera.mdx | Documents pixel_format and updates jpeg_quality; adds AtomS3R-CAM example. |
| src/content/docs/components/esp32_ble_server.mdx | Adds max_clients option docs. |
| src/content/docs/components/esp32_ble.mdx | Adds key-size and auth requirement options docs. |
| src/content/docs/components/esp32.mdx | Adds engineering_sample; expands execute_from_psram; documents enable_full_printf. |
| src/content/docs/components/display/nextion.mdx | Adds TFT upload timeout/retry/watchdog options and example. |
| src/content/docs/components/display/mipi_spi.mdx | Adds ST7789P to supported panel list. |
| src/content/docs/components/display/mipi_dsi.mdx | Reworks supported chips/displays/boards section and tables. |
| src/content/docs/components/display/epaper_spi.mdx | Adds supported models, busy-pin inversion note, and 4-color example. |
| src/content/docs/components/cc1101.mdx | Adds multiple runtime action docs (frequency/power/modulation/etc.). |
| src/content/docs/components/ble_nus.mdx | Expands BLE NUS modes and buffer/debug options; adds BLE serial link. |
| src/content/docs/components/binary_sensor/esp32_touch.mdx | Expands touch support notes to include ESP32-P4 and updates pin tables/variant notes. |
| src/content/docs/components/audio_file/index.mdx | New docs page for embedding audio files in firmware. |
| script/release_notes_template.mdx | Converts release notes template to MDX and adds new marker sections (upgrade checklist, undocumented API). |
| script/prompt_templates/breaking_changes.txt | Expands prompt to generate upgrade checklist and (optionally) undocumented API changes; includes all PR scan. |
| script/generate_release_notes.py | Updates generator for MDX template, new marker syntax, new labels, and new output files. |
| public/images/lis2dw12.jpg | Adds LIS2DW12 image for component index. |
| public/images/hdc302x.svg | Adds HDC302x component icon for component index. |
| lint.mjs | Excludes script/release_notes_template.mdx from linting. |
| data/version.yaml | Bumps version metadata to 2026.4.0-dev / 2026.4. |
| .gitattributes | Marks *.webp as binary. |
| - **output_power** (*Optional*, integer): The amount of TX power for the Thread 802.15.4 radio in dBm. | ||
| Range depends on the chip variant: ESP32-C5/C6 from ``-15dBm`` to ``20dBm``, ESP32-H2 from ``-24dBm`` to ``20dBm``. | ||
| Defaults to the platform default (typically ``0dBm``). Ensure the configured value complies with local regulatory limits. |
| ["StatsD", "/components/statsd/", "connection.svg", "dark-invert"], | ||
| ["UDP", "/components/udp/", "udp.svg"], | ||
| ["Packet Transport", "/components/packet_transport/", "packet_transport.svg", "dark-invert"], | ||
| ["Serial Proxy", "/components/serial_proxy/", "uart.svg", "dark-invert"], | ||
| ["Zigbee End Device", "/components/zigbee/", "zigbee.svg"], |
| - [Andre (@andre68723)](https://github.com/andre68723) | ||
| - [Andreas Brett (@andreasbrett)](https://github.com/andreasbrett) | ||
| - [Andreas Hergert (@andreashergert1984)](https://github.com/andreashergert1984) | ||
| - [AndreKR (@AndreKR)](https://github.com/AndreKR) | ||
| - [Andres Vahter (@andresv)](https://github.com/andresv) |
| The [I²C](/components/i2c) is required to be set up in your configuration for this touchscreen to work. | ||
|
|
||
| This controller is used in the Espressif ESP32-S3-BOX-3 and the m5paper; | ||
| This controller is used in the Espressif ESP32-S3-BOX-3 and the m5paper as well as some Waveshare-ESP32-S3-Touch devices; |
| - **interrupt_pin** (*Optional*, [Pin Schema](/guides/configuration-types#pin-schema)): The touch detection pin if run to an on-MCU pin. | ||
| If the touchscreen interrupt signal is wired through an IO Expander rather than directly to an ESP GPIO this will allow for configuration of touchscreen address | ||
| at boot but will not be used for interrupts and the driver will fall back to polling operation. |
| - **debug_prefix** (*Optional*, string): A string prepended to every debug log line for this channel. | ||
| Useful when multiple channels have debugging enabled, to distinguish their output in the log. Defaults to "". | ||
| - **flush_timeout** (*Optional*, [Time](/guides/configuration-types#time)): The maximum time to wait for the USB output queue to drain when `flush()` is called. If the queue does not drain within this time, `flush()` returns a `TIMEOUT` result. Defaults to `100ms`. |
WalkthroughThis PR introduces significant updates to ESPHome's release notes generation system (converting templates to MDX format, adding undocumented API changes tracking), adds extensive new component documentation (media/audio sources, multiple sensors, platform-specific features), and expands existing component documentation with new configuration options across 80+ files. It also removes deprecated MQTT SSL fingerprint functionality and updates infrastructure (version bump, lint rules). Changes
Estimated code review effort🎯 4 (Complex) | ⏱️ ~45 minutes Possibly related PRs
Suggested labels
Suggested reviewers
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
📝 Coding Plan
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment Tip Migrating from UI to YAML configuration.Use the |
There was a problem hiding this comment.
Actionable comments posted: 11
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (3)
src/content/docs/guides/troubleshooting.mdx (3)
12-12:⚠️ Potential issue | 🟡 MinorMinor: "Esphome" should be "ESPHome" for consistent branding.
The product name uses all-caps "ESP" in the official branding.
📝 Suggested fix
-> instructions, see [Installing Esphome](/guides/installing_esphome/). +> instructions, see [Installing ESPHome](/guides/installing_esphome/).🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/content/docs/guides/troubleshooting.mdx` at line 12, Replace the incorrect branding instance "Esphome" with the proper "ESPHome" in the documentation sentence (the snippet containing "instructions, see [Installing Esphome](/guides/installing_esphome/)."); update the link text to read "Installing ESPHome" while leaving the href unchanged.
90-90:⚠️ Potential issue | 🟡 MinorMinor: "Cli" should be "CLI" (acronym).
📝 Suggested fix
- Then use the command line interface (see the [Cli](/guides/cli/) guide for full details): + Then use the command line interface (see the [CLI](/guides/cli/) guide for full details):🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/content/docs/guides/troubleshooting.mdx` at line 90, Replace the lowercase-acronym instance "Cli" in the sentence "Then use the command line interface (see the [Cli](/guides/cli/) guide for full details):" with the uppercase form "CLI" and update the link text accordingly so it reads "... (see the [CLI](/guides/cli/) guide for full details):".
204-204:⚠️ Potential issue | 🟡 MinorMinor: "Esp32" should be "ESP32" for consistent capitalization.
📝 Suggested fix
-When using the ESP-IDF framework on [Esp32](/components/esp32/), you can also adjust the framework's internal +When using the ESP-IDF framework on [ESP32](/components/esp32/), you can also adjust the framework's internal🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/content/docs/guides/troubleshooting.mdx` at line 204, Replace the link text "Esp32" with the correctly capitalized "ESP32" in the sentence "When using the ESP-IDF framework on [Esp32](/components/esp32/)," (leave the URL /components/esp32/ as-is) so the visible text reads "When using the ESP-IDF framework on [ESP32](/components/esp32/),".
🧹 Nitpick comments (17)
src/content/docs/components/esp32_hosted.mdx (1)
47-49: Consider adding an explicit type forsdio_frequencyfor consistency.Other variables in this section include type metadata; adding one here improves scanability and consistency.
Suggested doc tweak
-- **sdio_frequency** (*Optional*): Set the speed of communication between the master and +- **sdio_frequency** (*Optional*, frequency): Set the speed of communication between the master and the slave. If you experience loss of communication, or reboots, then try reducing this value. The value can be between 400KHz and 50MHz, with a default of 40MHz.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/content/docs/components/esp32_hosted.mdx` around lines 47 - 49, Add explicit type metadata for the sdio_frequency property in the docs: update the existing line for **sdio_frequency** to include its type (e.g., "*Optional*, type: number (Hz)" or "integer (Hz)") alongside the optional marker and default value so it matches the other variables' metadata and improves scanability; reference the sdio_frequency entry and ensure the text still mentions valid range (400KHz–50MHz) and default 40MHz.src/content/docs/components/logger.mdx (1)
71-76: Consider aligning format with existing platform-specific options.Two minor suggestions for consistency with the rest of this document:
Platform restriction format: Other platform-specific options (e.g., line 48) use bold inline text like
**nRF52 only**:. Consider using the same style here.Missing default values: Other boolean options in this file document their defaults (e.g.,
Defaults to false). Adding defaults for these options would be helpful for users.📝 Suggested formatting for consistency
-- **wait_for_cdc** (*Optional*, boolean): Waits for the CDC port before starting setup (10-second timeout). - Only on nRF52. - -- **early_message** (*Optional*, boolean): Displays early debug information, such as the boot reason. - Only on nRF52. +- **wait_for_cdc** (*Optional*, boolean): **nRF52 only**: Waits for the CDC port before starting setup (10-second timeout). + Defaults to `false`. + +- **early_message** (*Optional*, boolean): **nRF52 only**: Displays early debug information, such as the boot reason. + Defaults to `false`.Note: Please verify the default values against the actual implementation.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/content/docs/components/logger.mdx` around lines 71 - 76, Update the docs for the two options wait_for_cdc and early_message to match the existing platform-specific formatting and include default values: change the platform note from "Only on nRF52." to the inline bold style "**nRF52 only**:" and append the default for each boolean (e.g., "Defaults to false") after the description. Locate the option entries for wait_for_cdc and early_message in the logger docs and apply the same phrasing/format as the existing option at line 48 to keep style consistent; verify the actual defaults in the implementation before committing.src/content/docs/components/esp_ldo.mdx (2)
56-64: Consider converting high-risk notes into GFM alerts for visibility.The bricking/corruption and passthrough constraints are important enough to present as warning/note alerts for faster scanning.
As per coding guidelines "Use GitHub-flavored alert syntax (`> [!NOTE]`, `> [!WARNING]`, `> [!TIP]`) for alert boxes in MDX".🧭 Suggested MDX formatting
## Notes -- The LDO output voltage may deviate by approximately 50-100 mV from the configured value. -- Channels 1 and 2 are connected to the chip's internal flash and PSRAM power domains on most ESP32-P4 modules. - Only use these channels if your specific board schematic confirms they are routed to an external pad and are - not powering internal components. -- ``passthrough`` mode passes the supply voltage directly to the output and does not support runtime voltage - adjustment. Setting ``adjustable: true`` together with ``voltage: passthrough`` is a configuration error and - will be rejected during validation. +> [!NOTE] +> The LDO output voltage may deviate by approximately 50-100 mV from the configured value. + +> [!WARNING] +> Channels 1 and 2 are connected to the chip's internal flash and PSRAM power domains on most ESP32-P4 modules. +> Only use these channels if your specific board schematic confirms they are routed to an external pad and are +> not powering internal components. + +> [!WARNING] +> ``passthrough`` mode passes the supply voltage directly to the output and does not support runtime voltage +> adjustment. Setting ``adjustable: true`` together with ``voltage: passthrough`` is a configuration error and +> will be rejected during validation.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/content/docs/components/esp_ldo.mdx` around lines 56 - 64, Convert the high-risk bullet items under the "Notes" section into GitHub-flavored alert blocks: wrap the bricking/corruption and channel-routing caution about "Channels 1 and 2" in a > [!WARNING] alert, and turn the "passthrough" mode constraint (mentioning `passthrough`, `adjustable: true`, and runtime voltage adjustment) into a > [!NOTE] or > [!WARNING] depending on severity; keep the less-critical LDO deviation bullet as a plain bullet or a > [!TIP]. Locate the "Notes" heading and the three list items (text referencing "LDO output voltage", "Channels 1 and 2", and "passthrough") and replace each with the appropriate GFM alert syntax while preserving the original text and code spans.
41-55: Mirror the passthrough precondition directly in the action intro.At Line 41, consider explicitly stating that runtime adjust applies only when
adjustable: trueandvoltageis notpassthrough, so readers don’t need to cross-reference earlier sections.✍️ Suggested wording tweak
-If the LDO is configured with ``adjustable: true``, the voltage can be updated at runtime: +If the LDO is configured with ``adjustable: true`` and ``voltage`` is not ``passthrough``, the voltage can be updated at runtime:🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/content/docs/components/esp_ldo.mdx` around lines 41 - 55, The action intro for esp_ldo.voltage.adjust should explicitly state the precondition that runtime voltage updates only work when the LDO is configured with adjustable: true and the voltage value is not passthrough; update the text surrounding the esp_ldo.voltage.adjust example to add a short sentence like “This runtime adjustment is valid only if the LDO was configured with adjustable: true and the voltage is not passthrough,” referencing the adjustable: true, voltage, and passthrough symbols so readers don’t need to cross‑reference earlier sections.src/content/docs/components/touchscreen/gt911.mdx (1)
47-49: Consider improving readability of the interrupt_pin description.The description on lines 48-49 is a single 42-word sentence that may be difficult to parse. Consider breaking it into multiple sentences for clarity:
📝 Suggested revision for clarity
-- **interrupt_pin** (*Optional*, [Pin Schema](/guides/configuration-types#pin-schema)): The touch detection pin if run to an on-MCU pin. -If the touchscreen interrupt signal is wired through an IO Expander rather than directly to an ESP GPIO this will allow for configuration of touchscreen address -at boot but will not be used for interrupts and the driver will fall back to polling operation. +- **interrupt_pin** (*Optional*, [Pin Schema](/guides/configuration-types#pin-schema)): The touch detection pin if run to an on-MCU pin. + If the touchscreen interrupt signal is wired through an IO Expander rather than directly to an ESP GPIO, + this pin will be used to configure the touchscreen address at boot. However, it will not be used for interrupt notifications, + and the driver will fall back to polling operation.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/content/docs/components/touchscreen/gt911.mdx` around lines 47 - 49, The interrupt_pin description for the GT911 touchscreen is a long, hard-to-parse sentence; split it into two concise sentences under the interrupt_pin entry in gt911.mdx: first state that interrupt_pin is the touch-detection pin used when wired directly to an MCU GPIO, and second explain that if the interrupt line is routed via an IO expander you can still configure the touchscreen address at boot but interrupts won’t be used and the driver will fall back to polling. Keep wording simple and preserve the optional Pin Schema link and the interrupt_pin identifier.lint.mjs (1)
32-35: Unify ignore-list naming to prevent future drift.There are now multiple
ignoreFileslists in different scopes with different contents. Consider using distinct names (or a shared source) to avoid accidental divergence.♻️ Suggested refactor
-const ignoreFiles = [ +const lintIgnoreFiles = [ 'script/release_notes_template.mdx', ]; ... - if (ignoreFiles.includes(fname)) { + if (lintIgnoreFiles.includes(fname)) { continue; }- const ignoreFiles = [ + const internalLinkIgnoreFiles = [ '.claude/instructions.md', 'script/release_notes_template.md', + 'script/release_notes_template.mdx', ]; - if (ignoreFiles.includes(fname)) return; + if (internalLinkIgnoreFiles.includes(fname)) return;Also applies to: 462-465
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@lint.mjs` around lines 32 - 35, The repository has multiple differently-scoped ignore lists named ignoreFiles, which risks drifting contents; consolidate and rename to a single canonical constant (e.g., ROOT_IGNORE_FILES or LINT_IGNORE_LIST) and update all usages to reference that single symbol. Locate the ignoreFiles declaration shown and the other occurrences (the other block referenced by the reviewer) and either export/import the canonical constant or move it to a shared module and replace the local declarations with references to the shared name so all linting code reads from one source of truth.src/content/docs/components/ble_nus.mdx (1)
38-39: Improve sentence structure and capitalization.The sentence is grammatically incomplete and "python" should be capitalized as a proper noun.
📝 Suggested fix
-`uart` can be used with python BLE Serial +The `uart` mode can be used with Python BLE Serial.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/content/docs/components/ble_nus.mdx` around lines 38 - 39, Rewrite the incomplete sentence to be grammatically correct and capitalize "Python"; replace the fragment "`uart` can be used with python BLE Serial" with a full sentence such as "The `uart` module can be used with Python BLE Serial" (or similar) so that `uart` remains referenced and "Python" is capitalized.src/content/docs/components/nrf52.mdx (1)
208-218: Clarify the nesting structure ofenable_ota_rollback.The documentation structure is slightly ambiguous. Line 208 mentions
advancedas a mapping underframework, but theenable_ota_rollbackoption at line 214 appears at the same indentation level as the section header. Consider clarifying thatenable_ota_rollbackis nested underframework.advanced, and add a YAML example showing the proper structure.📝 Suggested improvement
- **advanced** (*Optional*, mapping): See [Advanced Configuration](`#nrf52-advanced_configuration`) below. <span id="nrf52-advanced_configuration"></span> ## Advanced Configuration +```yaml +# Example configuration entry +nrf52: + framework: + advanced: + enable_ota_rollback: true +``` + - **enable_ota_rollback** (*Optional*, boolean): Enable OTA rollback support. When enabled, the bootloader will🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/content/docs/components/nrf52.mdx` around lines 208 - 218, Update the docs to clarify that enable_ota_rollback is nested under framework.advanced: explicitly state the path (framework -> advanced -> enable_ota_rollback), move or indent the bullet so its scope is unambiguous under the "Advanced Configuration" section (id: nrf52-advanced_configuration), and add a short YAML example showing the correct structure using the keys nrf52, framework, advanced, and enable_ota_rollback.src/content/docs/components/audio_file/index.mdx (1)
10-10: Minor: Hyphenate compound adjective."ESP32 based" should be hyphenated as "ESP32-based" when used as a compound adjective modifying "chips".
📝 Suggested fix
-This component only works on ESP32 based chips. +This component only works on ESP32-based chips.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/content/docs/components/audio_file/index.mdx` at line 10, In the docs text containing the phrase "ESP32 based chips" (in the audio_file component docs), update the compound adjective to be hyphenated as "ESP32-based chips" so the modifier is grammatically correct; search for the exact string "ESP32 based" and replace it with "ESP32-based" in the component's index.mdx content.src/content/docs/components/sensor/sen6x.mdx (2)
130-132: Use Astro Image import for local images.Per coding guidelines, single-use images should be imported locally from
./images/directory usingimport { Image } from 'astro:assets'. The sen5x.mdx file already imports this same image using the Astro pattern.📝 Suggested fix
Add the import at the top of the file (after line 6):
import APIRef from '@components/APIRef.astro'; + +import { Image } from 'astro:assets'; +import jst6pinImg from './images/jst6pin.png';Then update line 132:
- +<Image src={jst6pinImg} layout="constrained" alt="JST GHR-06V-S 6-pin connector" />As per coding guidelines: "Single-use images should be imported locally from
./images/directory usingimport { Image } from 'astro:assets'"🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/content/docs/components/sensor/sen6x.mdx` around lines 130 - 132, Add an Astro image import and use the Image component instead of the raw markdown image: at the top of sen6x.mdx add the import for Image from 'astro:assets' and import the local asset './images/jst6pin.png' (same pattern used in sen5x.mdx), then replace the markdown image reference () with the Astro Image component that uses the imported asset and preserves the alt text "JST GHR-06V-S 6-pin connector".
130-130: Minor: Consider hyphenating "6-pin".For consistency with compound modifiers, "6 pin" should be hyphenated as "6-pin" when used as an adjective.
📝 Suggested fix
-The sensor has a JST GHR-06V-S 6 pin type connector, with a 1.25mm pitch. The cable needs this connector: +The sensor has a JST GHR-06V-S 6-pin type connector, with a 1.25mm pitch. The cable needs this connector:🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/content/docs/components/sensor/sen6x.mdx` at line 130, Change the compound modifier "6 pin" to the hyphenated form "6-pin" in the sentence containing "JST GHR-06V-S 6 pin type connector" so it reads "JST GHR-06V-S 6-pin type connector" to follow compound adjective style; update that phrase wherever it appears in the same sentence or nearby text.src/content/docs/components/rp2040_ble.mdx (1)
35-38: Consider adding APIRef for consistency.Other component documentation pages include an
<APIRef>link to the header file. For consistency, consider adding a reference to the component's header file.✏️ Suggested addition
+import APIRef from '@components/APIRef.astro'; + ## See Also - [RP2040 Platform](/components/rp2040/) - [ESP32 BLE Component](/components/esp32_ble/) +- <APIRef text="rp2040_ble.h" path="rp2040_ble/rp2040_ble.h" />🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/content/docs/components/rp2040_ble.mdx` around lines 35 - 38, Add an <APIRef> link to the component header in the "See Also" section to match other component docs; update src/content/docs/components/rp2040_ble.mdx by adding an <APIRef> entry pointing to the RP2040 BLE component header (e.g., rp2040_ble.h) alongside the existing RP2040 Platform and ESP32 BLE links so the header API is discoverable and consistent with other pages.src/content/docs/components/sensor/hdc302x.mdx (2)
22-29: Consider adding descriptive alt text for accessibility.The
alt=""attributes on both images (lines 26 and 29) indicate decorative images. If these images convey meaningful information about the sensor, consider adding descriptive alt text for screen reader users.🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/content/docs/components/sensor/hdc302x.mdx` around lines 22 - 29, Update the empty alt attributes on the Figure and Image components to meaningful, descriptive text if they convey information about the HDC3022 sensor (e.g., set the alt prop on the Figure component and the alt prop on the Image component to short descriptions of the images), otherwise explicitly keep alt="" to mark them as decorative; locate the tags named Figure and Image in this file and change their alt="" props accordingly.
178-178: Hyphenate compound adjective for consistency."High Precision" modifies "Temperature and Humidity Sensor" and should be hyphenated.
✏️ Suggested fix
-- [HDC2010 High Precision Temperature and Humidity Sensor](/components/sensor/hdc2010/) +- [HDC2010 High-Precision Temperature and Humidity Sensor](/components/sensor/hdc2010/)🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/content/docs/components/sensor/hdc302x.mdx` at line 178, Update the link text "[HDC2010 High Precision Temperature and Humidity Sensor](/components/sensor/hdc2010/)" to hyphenate the compound adjective by changing "High Precision" to "High-Precision" so it reads "[HDC2010 High-Precision Temperature and Humidity Sensor](/components/sensor/hdc2010/)".script/release_notes_template.mdx (1)
152-159: Empty<summary>tag may need placeholder content.The
<summary>tag on line 153 is empty. If this is intentionally left blank for auto-population by the release notes generator script, consider adding a placeholder comment to clarify this.<details> <summary>{/* AUTO: Summary text will be inserted here */}</summary>🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@script/release_notes_template.mdx` around lines 152 - 159, The empty <summary> tag inside the release notes template (the <details> block surrounding the AUTO_GENERATED_ALL_CHANGES markers) should include a small placeholder comment so future readers know it’s intentionally left for auto-population; update the <summary> in script/release_notes_template.mdx (the <details>/<summary> block that contains the AUTO_GENERATED_ALL_CHANGES_START/END markers) to contain a brief comment like “AUTO: Summary will be inserted here” so the intent is explicit without changing generation behavior.src/content/docs/components/media_source/index.mdx (1)
21-23: Consider adding content to the Platforms and See Also sections.The "Platforms" and "See Also" sections are empty. Based on related files in this PR, consider adding:
- Under Platforms:
audio_fileplatform reference- Under See Also: Links to
/components/media_source/audio_file/and related media player componentsIf these sections are intentional placeholders for auto-generation or future expansion, this can be ignored.
Suggested content
## Platforms +- [Audio File](/components/media_source/audio_file/): Play audio files embedded in firmware + ## See Also + +- [Audio File Media Source](/components/media_source/audio_file/) +- [Speaker Media Player](/components/media_player/speaker/)🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@src/content/docs/components/media_source/index.mdx` around lines 21 - 23, Add entries under the empty "Platforms" and "See Also" headings in src/content/docs/components/media_source/index.mdx: under "Platforms" list the audio_file platform reference (e.g., mention audio_file and brief description), and under "See Also" add links to /components/media_source/audio_file/ and relevant media player components (reference the media player pages used elsewhere in the PR). Update the headings' content so they are not blank and ensure link paths match the existing routes used in the repo.script/generate_release_notes.py (1)
711-720: MakeImgTablepreservation whitespace-tolerant.These regexes only match
<ImgTable items={[...]} />with that exact spacing. A prettified or hand-edited MDX block with line breaks, extra spaces, or/>on its own line will stop matching here, and reassembly will drop the curated image table instead of preserving it.♻️ More tolerant pattern
+ imgtable_pattern = r"<ImgTable\b[^>]*\bitems=\{\s*\[.*?\]\s*\}\s*/>" existing_imgtable = None existing_full_list = None if output_file.exists(): existing_content = output_file.read_text() # Extract existing ImgTable content imgtable_match = re.search( - r"<ImgTable items=\{\[.*?\]\} />", existing_content, re.DOTALL + imgtable_pattern, existing_content, re.DOTALL ) if imgtable_match: items_content = imgtable_match.group(0) # Only preserve if it has actual entries (not just comments/empty) - if re.search(r'\[".+?"', items_content): + if re.search(r"\[\s*\[\s*['\"]", items_content, re.DOTALL): existing_imgtable = items_content print("✓ Preserving existing ImgTable") ... if existing_imgtable: template = re.sub( - r"<ImgTable items=\{\[.*?\]\} />", + imgtable_pattern, existing_imgtable, template, flags=re.DOTALL, )Also applies to: 817-821
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@script/generate_release_notes.py` around lines 711 - 720, The current regex that finds the ImgTable block is too strict about spacing and newlines; update the search in the imgtable_match logic to use a whitespace-tolerant pattern (e.g. allow arbitrary spaces/newlines around tags, braces and the self-closing slash) and keep re.DOTALL; replace the existing pattern used in the re.search call (and the similar one at the second occurrence) with something like r"<ImgTable\s+items=\{\s*\[.*?\]\s*\}\s*/?>" and continue using re.DOTALL; also relax the entries check on items_content from re.search(r'\[".+?"') to a whitespace-tolerant check such as re.search(r'\[\s*"[^"]+') so existing_imgtable and the print("✓ Preserving existing ImgTable") are preserved when formatting differs.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@script/generate_release_notes.py`:
- Around line 751-759: The code treats upgrade_checklist.md and
undocumented_api_changes.md as optional by reading them if the files exist and
not validating contents, allowing --assemble to proceed with missing or stale
data; update the logic around upgrade_checklist_file/upgrade_checklist and
undocumented_api_file/undocumented_api so that upgrade_checklist is required
(fail/raise/log an error when the file is missing or empty) and undocumented_api
is only used if the current run actually needs it (guard by the presence of the
undocumented-api-change label or an explicit flag), and clear or ignore any
stale undocumented_api file when it is not applicable; locate and modify the
code that uses self.responses_dir / "upgrade_checklist.md" and
self.responses_dir / "undocumented_api_changes.md" to enforce these checks and
fail fast for missing mandatory content.
In `@src/content/docs/components/cc1101.mdx`:
- Around line 191-200: The docs for the cc1101.set_frequency configuration list
the value field but don’t mark it as templatable even though examples use
!lambda; update the three occurrences of the "value" field description in
src/content/docs/components/cc1101.mdx (the sections describing the value
parameter for cc1101.set_frequency) to include the
[templatable](/automations/templates) annotation (e.g., change "- **value**
(**Required**, frequency):" to "- **value**
([templatable](/automations/templates), **Required**, frequency):") so the
schema text matches the !lambda examples shown.
In `@src/content/docs/components/http_request.mdx`:
- Around line 48-52: The description for tls_buffer_size_rx contains a sentence
fragment; replace the fragment "Should be set to `16384` to fit the TLS record
size of modern HTTP servers." with a complete sentence that states the
recommendation and reason (for example: "Set this to 16384 to accommodate the
TLS record size used by modern HTTP servers."), ensuring the paragraph remains
about default behavior and RAM implications referenced by tls_buffer_size_rx.
In `@src/content/docs/components/media_player/index.mdx`:
- Around line 189-199: The docs for media_player.group_join are missing what
selects the target group; update the `media_player.group_join` section to state
the required input (e.g., the entity_id(s) of the media player(s) to add and the
group identifier or master entity to join), describe any optional parameters,
and show a minimal YAML/example service call. Specifically mention the exact
parameter names used by the service (reference `media_player.group_join` and
`entity_id`/`group_id` or `master` as appropriate), explain the default behavior
when no explicit group is provided, and include a short example call
demonstrating how to pass the parameters.
In `@src/content/docs/components/media_player/speaker_source.mdx`:
- Around line 140-145: Update the docs to accurately list supported base media
player actions and explain pipeline targeting: in speaker_source.mdx replace the
blanket "supports all media player actions" claim with the explicit subset that
matches components/media_player/index.mdx (include play_media, turn_on,
turn_off, group_join if supported or remove them if not), and add a short note
describing how media_player.play_media routes a URL to the first matching
pipeline source and how the announcement flag selects the announcement pipeline.
Reference the action names (media_player.play_media, turn_on, turn_off,
group_join) and the announcement flag so readers can cross-check with the base
media_player index page.
In `@src/content/docs/components/media_player/speaker.mdx`:
- Line 170: Replace the phrase "memory constrained device" with the hyphenated
compound adjective "memory-constrained device" in the sentence about decoding
audio files—locate the string "To use the component on a memory constrained
device" in src/content/docs/components/media_player/speaker.mdx and update it to
"To use the component on a memory-constrained device".
In `@src/content/docs/components/media_source/audio_file.mdx`:
- Line 14: Replace the unhyphenated phrase "ESP32 based chips" with the
hyphenated compound adjective "ESP32-based chips" in the audio_file.mdx content
(and update any other occurrences of the same phrase in related ESPHome docs);
locate the sentence containing "ESP32 based chips" and edit it to read
"ESP32-based chips" to match the project's grammatical convention.
- Line 45: Update the APIRef path string in the APIRef element so it uses the
flattened path format: remove the "esphome/components/" prefix from the existing
path "esphome/components/audio_file/media_source/audio_file_media_source.h" and
change it to "audio_file/media_source/audio_file_media_source.h" to match other
APIRef entries; the change should be made in the APIRef element in
src/content/docs/components/media_source/audio_file.mdx.
In `@src/content/docs/components/modbus.mdx`:
- Line 55: The sentence describing CRC troubleshooting is ambiguous: replace the
phrase "Try increasing times above first" with explicit field names and guidance
(e.g., "Try increasing the request timeout (timeout) and/or the retry count
(retries) if you see CRC errors") so readers know which settings to change;
update the sentence near the disable_crc option in
src/content/docs/components/modbus.mdx to reference the exact configuration keys
used elsewhere in the docs (replace the placeholder with the actual field names
if they differ) and keep the note that disable_crc defaults to false.
In `@src/content/docs/components/ota/zephyr_mcumgr.mdx`:
- Line 25: The doc has conflicting defaults for the Zephyr MCUmgr OTA transport:
the "transport" section at the `transport` mapping currently states `ble: true`
while another spot states `ble: false`; confirm the actual default in the
implementation and make both descriptions consistent by updating the `transport`
mapping example and the later default statement to match the real default
(change the `ble: true`/`ble: false` text so both occurrences of `ble` reflect
the implementation). Ensure you update the `transport` mapping example and the
later sentence that mentions the default BLE value so they match exactly.
In `@src/content/docs/components/sensor/lis2dw12.mdx`:
- Around line 12-15: Update the lis2dw12 component docs to state that standard
I²C device options are supported by this platform and show the relevant option
names; explicitly mention that users can set address and i2c_id (and other
inherited I2C device settings) in the lis2dw12 config and link or reference the
main I²C component docs for full option descriptions. Edit the lis2dw12
configuration section (the lis2dw12 sensor/platform documentation) to add a
short paragraph and a concise example snippet calling out address and i2c_id
usage so users with non-default addresses or multiple I²C buses know to use
those fields.
---
Outside diff comments:
In `@src/content/docs/guides/troubleshooting.mdx`:
- Line 12: Replace the incorrect branding instance "Esphome" with the proper
"ESPHome" in the documentation sentence (the snippet containing "instructions,
see [Installing Esphome](/guides/installing_esphome/)."); update the link text
to read "Installing ESPHome" while leaving the href unchanged.
- Line 90: Replace the lowercase-acronym instance "Cli" in the sentence "Then
use the command line interface (see the [Cli](/guides/cli/) guide for full
details):" with the uppercase form "CLI" and update the link text accordingly so
it reads "... (see the [CLI](/guides/cli/) guide for full details):".
- Line 204: Replace the link text "Esp32" with the correctly capitalized "ESP32"
in the sentence "When using the ESP-IDF framework on
[Esp32](/components/esp32/)," (leave the URL /components/esp32/ as-is) so the
visible text reads "When using the ESP-IDF framework on
[ESP32](/components/esp32/),".
---
Nitpick comments:
In `@lint.mjs`:
- Around line 32-35: The repository has multiple differently-scoped ignore lists
named ignoreFiles, which risks drifting contents; consolidate and rename to a
single canonical constant (e.g., ROOT_IGNORE_FILES or LINT_IGNORE_LIST) and
update all usages to reference that single symbol. Locate the ignoreFiles
declaration shown and the other occurrences (the other block referenced by the
reviewer) and either export/import the canonical constant or move it to a shared
module and replace the local declarations with references to the shared name so
all linting code reads from one source of truth.
In `@script/generate_release_notes.py`:
- Around line 711-720: The current regex that finds the ImgTable block is too
strict about spacing and newlines; update the search in the imgtable_match logic
to use a whitespace-tolerant pattern (e.g. allow arbitrary spaces/newlines
around tags, braces and the self-closing slash) and keep re.DOTALL; replace the
existing pattern used in the re.search call (and the similar one at the second
occurrence) with something like r"<ImgTable\s+items=\{\s*\[.*?\]\s*\}\s*/?>" and
continue using re.DOTALL; also relax the entries check on items_content from
re.search(r'\[".+?"') to a whitespace-tolerant check such as
re.search(r'\[\s*"[^"]+') so existing_imgtable and the print("✓ Preserving
existing ImgTable") are preserved when formatting differs.
In `@script/release_notes_template.mdx`:
- Around line 152-159: The empty <summary> tag inside the release notes template
(the <details> block surrounding the AUTO_GENERATED_ALL_CHANGES markers) should
include a small placeholder comment so future readers know it’s intentionally
left for auto-population; update the <summary> in
script/release_notes_template.mdx (the <details>/<summary> block that contains
the AUTO_GENERATED_ALL_CHANGES_START/END markers) to contain a brief comment
like “AUTO: Summary will be inserted here” so the intent is explicit without
changing generation behavior.
In `@src/content/docs/components/audio_file/index.mdx`:
- Line 10: In the docs text containing the phrase "ESP32 based chips" (in the
audio_file component docs), update the compound adjective to be hyphenated as
"ESP32-based chips" so the modifier is grammatically correct; search for the
exact string "ESP32 based" and replace it with "ESP32-based" in the component's
index.mdx content.
In `@src/content/docs/components/ble_nus.mdx`:
- Around line 38-39: Rewrite the incomplete sentence to be grammatically correct
and capitalize "Python"; replace the fragment "`uart` can be used with python
BLE Serial" with a full sentence such as "The `uart` module can be used with
Python BLE Serial" (or similar) so that `uart` remains referenced and "Python"
is capitalized.
In `@src/content/docs/components/esp_ldo.mdx`:
- Around line 56-64: Convert the high-risk bullet items under the "Notes"
section into GitHub-flavored alert blocks: wrap the bricking/corruption and
channel-routing caution about "Channels 1 and 2" in a > [!WARNING] alert, and
turn the "passthrough" mode constraint (mentioning `passthrough`, `adjustable:
true`, and runtime voltage adjustment) into a > [!NOTE] or > [!WARNING]
depending on severity; keep the less-critical LDO deviation bullet as a plain
bullet or a > [!TIP]. Locate the "Notes" heading and the three list items (text
referencing "LDO output voltage", "Channels 1 and 2", and "passthrough") and
replace each with the appropriate GFM alert syntax while preserving the original
text and code spans.
- Around line 41-55: The action intro for esp_ldo.voltage.adjust should
explicitly state the precondition that runtime voltage updates only work when
the LDO is configured with adjustable: true and the voltage value is not
passthrough; update the text surrounding the esp_ldo.voltage.adjust example to
add a short sentence like “This runtime adjustment is valid only if the LDO was
configured with adjustable: true and the voltage is not passthrough,”
referencing the adjustable: true, voltage, and passthrough symbols so readers
don’t need to cross‑reference earlier sections.
In `@src/content/docs/components/esp32_hosted.mdx`:
- Around line 47-49: Add explicit type metadata for the sdio_frequency property
in the docs: update the existing line for **sdio_frequency** to include its type
(e.g., "*Optional*, type: number (Hz)" or "integer (Hz)") alongside the optional
marker and default value so it matches the other variables' metadata and
improves scanability; reference the sdio_frequency entry and ensure the text
still mentions valid range (400KHz–50MHz) and default 40MHz.
In `@src/content/docs/components/logger.mdx`:
- Around line 71-76: Update the docs for the two options wait_for_cdc and
early_message to match the existing platform-specific formatting and include
default values: change the platform note from "Only on nRF52." to the inline
bold style "**nRF52 only**:" and append the default for each boolean (e.g.,
"Defaults to false") after the description. Locate the option entries for
wait_for_cdc and early_message in the logger docs and apply the same
phrasing/format as the existing option at line 48 to keep style consistent;
verify the actual defaults in the implementation before committing.
In `@src/content/docs/components/media_source/index.mdx`:
- Around line 21-23: Add entries under the empty "Platforms" and "See Also"
headings in src/content/docs/components/media_source/index.mdx: under
"Platforms" list the audio_file platform reference (e.g., mention audio_file and
brief description), and under "See Also" add links to
/components/media_source/audio_file/ and relevant media player components
(reference the media player pages used elsewhere in the PR). Update the
headings' content so they are not blank and ensure link paths match the existing
routes used in the repo.
In `@src/content/docs/components/nrf52.mdx`:
- Around line 208-218: Update the docs to clarify that enable_ota_rollback is
nested under framework.advanced: explicitly state the path (framework ->
advanced -> enable_ota_rollback), move or indent the bullet so its scope is
unambiguous under the "Advanced Configuration" section (id:
nrf52-advanced_configuration), and add a short YAML example showing the correct
structure using the keys nrf52, framework, advanced, and enable_ota_rollback.
In `@src/content/docs/components/rp2040_ble.mdx`:
- Around line 35-38: Add an <APIRef> link to the component header in the "See
Also" section to match other component docs; update
src/content/docs/components/rp2040_ble.mdx by adding an <APIRef> entry pointing
to the RP2040 BLE component header (e.g., rp2040_ble.h) alongside the existing
RP2040 Platform and ESP32 BLE links so the header API is discoverable and
consistent with other pages.
In `@src/content/docs/components/sensor/hdc302x.mdx`:
- Around line 22-29: Update the empty alt attributes on the Figure and Image
components to meaningful, descriptive text if they convey information about the
HDC3022 sensor (e.g., set the alt prop on the Figure component and the alt prop
on the Image component to short descriptions of the images), otherwise
explicitly keep alt="" to mark them as decorative; locate the tags named Figure
and Image in this file and change their alt="" props accordingly.
- Line 178: Update the link text "[HDC2010 High Precision Temperature and
Humidity Sensor](/components/sensor/hdc2010/)" to hyphenate the compound
adjective by changing "High Precision" to "High-Precision" so it reads "[HDC2010
High-Precision Temperature and Humidity Sensor](/components/sensor/hdc2010/)".
In `@src/content/docs/components/sensor/sen6x.mdx`:
- Around line 130-132: Add an Astro image import and use the Image component
instead of the raw markdown image: at the top of sen6x.mdx add the import for
Image from 'astro:assets' and import the local asset './images/jst6pin.png'
(same pattern used in sen5x.mdx), then replace the markdown image reference
() with the Astro Image
component that uses the imported asset and preserves the alt text "JST GHR-06V-S
6-pin connector".
- Line 130: Change the compound modifier "6 pin" to the hyphenated form "6-pin"
in the sentence containing "JST GHR-06V-S 6 pin type connector" so it reads "JST
GHR-06V-S 6-pin type connector" to follow compound adjective style; update that
phrase wherever it appears in the same sentence or nearby text.
In `@src/content/docs/components/touchscreen/gt911.mdx`:
- Around line 47-49: The interrupt_pin description for the GT911 touchscreen is
a long, hard-to-parse sentence; split it into two concise sentences under the
interrupt_pin entry in gt911.mdx: first state that interrupt_pin is the
touch-detection pin used when wired directly to an MCU GPIO, and second explain
that if the interrupt line is routed via an IO expander you can still configure
the touchscreen address at boot but interrupts won’t be used and the driver will
fall back to polling. Keep wording simple and preserve the optional Pin Schema
link and the interrupt_pin identifier.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 05b86ddb-4f1e-4f5e-add1-262a4dcc4120
⛔ Files ignored due to path filters (4)
public/images/hdc302x.svgis excluded by!**/*.svgpublic/images/lis2dw12.jpgis excluded by!**/*.jpgsrc/content/docs/components/sensor/images/hdc302x-full.pngis excluded by!**/*.pngsrc/content/docs/components/sensor/images/jst6pin.pngis excluded by!**/*.png
📒 Files selected for processing (63)
.gitattributesdata/version.yamllint.mjspublic/images/sen6x.webpscript/generate_release_notes.pyscript/prompt_templates/breaking_changes.txtscript/release_notes_template.mdxsrc/content/docs/changelog/2026.3.0.mdxsrc/content/docs/components/audio_file/index.mdxsrc/content/docs/components/binary_sensor/esp32_touch.mdxsrc/content/docs/components/ble_nus.mdxsrc/content/docs/components/cc1101.mdxsrc/content/docs/components/display/epaper_spi.mdxsrc/content/docs/components/display/mipi_dsi.mdxsrc/content/docs/components/display/mipi_spi.mdxsrc/content/docs/components/display/nextion.mdxsrc/content/docs/components/esp32.mdxsrc/content/docs/components/esp32_ble.mdxsrc/content/docs/components/esp32_ble_server.mdxsrc/content/docs/components/esp32_camera.mdxsrc/content/docs/components/esp32_hosted.mdxsrc/content/docs/components/esp8266.mdxsrc/content/docs/components/esp_ldo.mdxsrc/content/docs/components/http_request.mdxsrc/content/docs/components/index.mdxsrc/content/docs/components/logger.mdxsrc/content/docs/components/media_player/index.mdxsrc/content/docs/components/media_player/speaker.mdxsrc/content/docs/components/media_player/speaker_source.mdxsrc/content/docs/components/media_source/audio_file.mdxsrc/content/docs/components/media_source/index.mdxsrc/content/docs/components/modbus.mdxsrc/content/docs/components/modbus_controller.mdxsrc/content/docs/components/mqtt.mdxsrc/content/docs/components/nrf52.mdxsrc/content/docs/components/online_image.mdxsrc/content/docs/components/openthread.mdxsrc/content/docs/components/ota/esphome.mdxsrc/content/docs/components/ota/http_request.mdxsrc/content/docs/components/ota/index.mdxsrc/content/docs/components/ota/web_server.mdxsrc/content/docs/components/ota/zephyr_mcumgr.mdxsrc/content/docs/components/rp2040.mdxsrc/content/docs/components/rp2040_ble.mdxsrc/content/docs/components/safe_mode.mdxsrc/content/docs/components/sensor/dew_point.mdxsrc/content/docs/components/sensor/hdc302x.mdxsrc/content/docs/components/sensor/integration.mdxsrc/content/docs/components/sensor/lis2dw12.mdxsrc/content/docs/components/sensor/lps22.mdxsrc/content/docs/components/sensor/sen5x.mdxsrc/content/docs/components/sensor/sen6x.mdxsrc/content/docs/components/serial_proxy.mdxsrc/content/docs/components/text_sensor/version.mdxsrc/content/docs/components/touchscreen/gt911.mdxsrc/content/docs/components/uart.mdxsrc/content/docs/components/usb_uart.mdxsrc/content/docs/components/vbus.mdxsrc/content/docs/components/wifi.mdxsrc/content/docs/guides/cli.mdxsrc/content/docs/guides/security_best_practices.mdxsrc/content/docs/guides/supporters.mdxsrc/content/docs/guides/troubleshooting.mdx
💤 Files with no reviewable changes (3)
- src/content/docs/guides/security_best_practices.mdx
- src/content/docs/components/mqtt.mdx
- src/content/docs/guides/cli.mdx
| upgrade_checklist_file = self.responses_dir / "upgrade_checklist.md" | ||
| upgrade_checklist = "" | ||
| if upgrade_checklist_file.exists(): | ||
| upgrade_checklist = upgrade_checklist_file.read_text().strip() | ||
|
|
||
| undocumented_api_file = self.responses_dir / "undocumented_api_changes.md" | ||
| undocumented_api = "" | ||
| if undocumented_api_file.exists(): | ||
| undocumented_api = undocumented_api_file.read_text().strip() |
There was a problem hiding this comment.
Don't let --assemble silently skip required AI output.
The second prompt is now always generated because the upgrade checklist is mandatory, but Lines 751-759 still treat a missing or empty upgrade_checklist.md as optional. That lets --assemble succeed with an incomplete changelog. Separately, undocumented_api_changes.md is read whenever the file exists, so a stale response from an earlier run can be injected even when the current PR set no longer has any undocumented-api-change labels.
💡 Suggested guardrails
- upgrade_checklist_file = self.responses_dir / "upgrade_checklist.md"
- upgrade_checklist = ""
- if upgrade_checklist_file.exists():
- upgrade_checklist = upgrade_checklist_file.read_text().strip()
-
- undocumented_api_file = self.responses_dir / "undocumented_api_changes.md"
- undocumented_api = ""
- if undocumented_api_file.exists():
- undocumented_api = undocumented_api_file.read_text().strip()
+ upgrade_checklist_file = self.responses_dir / "upgrade_checklist.md"
+ upgrade_checklist = (
+ upgrade_checklist_file.read_text().strip()
+ if upgrade_checklist_file.exists()
+ else ""
+ )
+ if not upgrade_checklist:
+ print(f"Error: Missing AI response: {upgrade_checklist_file}")
+ print("Please run the breaking_changes.txt prompt through Claude first")
+ return False
+
+ undocumented_api = ""
...
prs = self.load_prs_by_numbers(pr_numbers)
+ needs_undocumented_api = any(
+ LABEL_UNDOCUMENTED_API_CHANGE in pr.labels for pr in prs
+ )
+ if needs_undocumented_api:
+ undocumented_api_file = self.responses_dir / "undocumented_api_changes.md"
+ undocumented_api = (
+ undocumented_api_file.read_text().strip()
+ if undocumented_api_file.exists()
+ else ""
+ )
+ if not undocumented_api:
+ print(f"Error: Missing AI response: {undocumented_api_file}")
+ print("Please run the breaking_changes.txt prompt through Claude first")
+ return False- if upgrade_checklist:
- template = self._replace_marker_content(
- template, "UPGRADE_CHECKLIST", upgrade_checklist
- )
+ template = self._replace_marker_content(
+ template, "UPGRADE_CHECKLIST", upgrade_checklist
+ )Also applies to: 784-788, 799-803
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@script/generate_release_notes.py` around lines 751 - 759, The code treats
upgrade_checklist.md and undocumented_api_changes.md as optional by reading them
if the files exist and not validating contents, allowing --assemble to proceed
with missing or stale data; update the logic around
upgrade_checklist_file/upgrade_checklist and
undocumented_api_file/undocumented_api so that upgrade_checklist is required
(fail/raise/log an error when the file is missing or empty) and undocumented_api
is only used if the current run actually needs it (guard by the presence of the
undocumented-api-change label or an explicit flag), and clear or ignore any
stale undocumented_api file when it is not applicable; locate and modify the
code that uses self.responses_dir / "upgrade_checklist.md" and
self.responses_dir / "undocumented_api_changes.md" to enforce these checks and
fail fast for missing mandatory content.
| #### Configuration variables | ||
|
|
||
| - **value** (**Required**, frequency): | ||
| The frequency to set. Range: `300MHz` to `928MHz`. | ||
|
|
||
| ```yaml | ||
| on_...: | ||
| - cc1101.set_frequency: 433.92MHz | ||
| - cc1101.set_frequency: | ||
| value: !lambda "return 868.0e6;" |
There was a problem hiding this comment.
Mark value as templatable where !lambda is documented.
Lines 193, 217, and 242 describe value as a plain literal field, but the examples on Lines 199-200, 224-225, and 249-250 use !lambda. Please add the [templatable](/automations/templates) annotation here so the config schema matches the examples.
Also applies to: 215-225, 240-250
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/content/docs/components/cc1101.mdx` around lines 191 - 200, The docs for
the cc1101.set_frequency configuration list the value field but don’t mark it as
templatable even though examples use !lambda; update the three occurrences of
the "value" field description in src/content/docs/components/cc1101.mdx (the
sections describing the value parameter for cc1101.set_frequency) to include the
[templatable](/automations/templates) annotation (e.g., change "- **value**
(**Required**, frequency):" to "- **value**
([templatable](/automations/templates), **Required**, frequency):") so the
schema text matches the !lambda examples shown.
| - **tls_buffer_size_rx** (*Optional*, integer): Change TLS receive buffer size. Should be set to `16384` to fit the TLS | ||
| record size of modern HTTP servers. This will increase RAM usage significantly and may require removing other | ||
| components to free up RAM. You can check the max free heap block using the [Debug Component](/components/debug/). If | ||
| the server is configured to support the MFL TLS extension then this can be reduced, but most popular servers (Traefik, | ||
| Caddy, Cloudflare) don't support it and nginx has it disabled by default. Defaults to `512`. |
There was a problem hiding this comment.
Complete the sentence at Line 48 for readability.
The phrase “Should be set to 16384...” is a sentence fragment. Rewording it as a full sentence improves documentation clarity.
✏️ Suggested edit
-- **tls_buffer_size_rx** (*Optional*, integer): Change TLS receive buffer size. Should be set to `16384` to fit the TLS
+- **tls_buffer_size_rx** (*Optional*, integer): Change TLS receive buffer size. Set this to `16384` to fit the TLS
record size of modern HTTP servers. This will increase RAM usage significantly and may require removing other
components to free up RAM. You can check the max free heap block using the [Debug Component](/components/debug/). If📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - **tls_buffer_size_rx** (*Optional*, integer): Change TLS receive buffer size. Should be set to `16384` to fit the TLS | |
| record size of modern HTTP servers. This will increase RAM usage significantly and may require removing other | |
| components to free up RAM. You can check the max free heap block using the [Debug Component](/components/debug/). If | |
| the server is configured to support the MFL TLS extension then this can be reduced, but most popular servers (Traefik, | |
| Caddy, Cloudflare) don't support it and nginx has it disabled by default. Defaults to `512`. | |
| - **tls_buffer_size_rx** (*Optional*, integer): Change TLS receive buffer size. Set this to `16384` to fit the TLS | |
| record size of modern HTTP servers. This will increase RAM usage significantly and may require removing other | |
| components to free up RAM. You can check the max free heap block using the [Debug Component](/components/debug/). If | |
| the server is configured to support the MFL TLS extension then this can be reduced, but most popular servers (Traefik, | |
| Caddy, Cloudflare) don't support it and nginx has it disabled by default. Defaults to `512`. |
🧰 Tools
🪛 LanguageTool
[style] ~48-~48: To form a complete sentence, be sure to include a subject.
Context: ...teger): Change TLS receive buffer size. Should be set to 16384 to fit the TLS reco...
(MISSING_IT_THERE)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/content/docs/components/http_request.mdx` around lines 48 - 52, The
description for tls_buffer_size_rx contains a sentence fragment; replace the
fragment "Should be set to `16384` to fit the TLS record size of modern HTTP
servers." with a complete sentence that states the recommendation and reason
(for example: "Set this to 16384 to accommodate the TLS record size used by
modern HTTP servers."), ensuring the paragraph remains about default behavior
and RAM implications referenced by tls_buffer_size_rx.
| <span id="media_player-group_join"></span> | ||
|
|
||
| ### `media_player.group_join` Action | ||
|
|
||
| This action will join the media player to a group. | ||
|
|
||
| <span id="media_player-clear_playlist"></span> | ||
|
|
||
| ### `media_player.clear_playlist` Action | ||
|
|
||
| This action will clear the media player's playlist. |
There was a problem hiding this comment.
Document how media_player.group_join selects its target group.
Lines 191-193 introduce the action, but unlike media_player.play_media and media_player.volume_set, this section never describes any action-specific input or example. As written, the docs still don't tell the reader what to pass to actually join a group. Please add the required parameter(s) or explain how the default target is determined.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/content/docs/components/media_player/index.mdx` around lines 189 - 199,
The docs for media_player.group_join are missing what selects the target group;
update the `media_player.group_join` section to state the required input (e.g.,
the entity_id(s) of the media player(s) to add and the group identifier or
master entity to join), describe any optional parameters, and show a minimal
YAML/example service call. Specifically mention the exact parameter names used
by the service (reference `media_player.group_join` and `entity_id`/`group_id`
or `master` as appropriate), explain the default behavior when no explicit group
is provided, and include a short example call demonstrating how to pass the
parameters.
| ### Base Media Player Actions | ||
|
|
||
| This platform supports all [media player actions](/components/media_player#media_player-actions) including `play`, `pause`, `stop`, `toggle`, `volume_set`, `volume_up`, `volume_down`, `mute`, `unmute`, `next`, `previous`, `repeat_off`, `repeat_one`, `repeat_all`, `shuffle`, `unshuffle`, and `clear_playlist`. | ||
|
|
||
| When using the `media_player.play_media` action, the media URL is routed to the first source in the pipeline that can handle the URI prefix. For example, a URL starting with `audio-file://` is routed to an Audio File media source. | ||
|
|
There was a problem hiding this comment.
Clarify which base actions are actually supported and how they target a pipeline.
This section says the platform supports all media player actions, but the list on Line 142 omits play_media, turn_on, turn_off, and group_join from src/content/docs/components/media_player/index.mdx, and Line 144 immediately relies on media_player.play_media. It also never points readers to the base announcement flag that selects the announcement pipeline. Please either narrow the claim to the supported subset or document the full set plus pipeline selection.
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/content/docs/components/media_player/speaker_source.mdx` around lines 140
- 145, Update the docs to accurately list supported base media player actions
and explain pipeline targeting: in speaker_source.mdx replace the blanket
"supports all media player actions" claim with the explicit subset that matches
components/media_player/index.mdx (include play_media, turn_on, turn_off,
group_join if supported or remove them if not), and add a short note describing
how media_player.play_media routes a URL to the first matching pipeline source
and how the announcement flag selects the announcement pipeline. Reference the
action names (media_player.play_media, turn_on, turn_off, group_join) and the
announcement flag so readers can cross-check with the base media_player index
page.
| Files are played using the `audio-file://` URI scheme; the part after `audio-file://` is used as the | ||
| `id` of the audio file to play. | ||
|
|
||
| This component only works on ESP32 based chips. |
There was a problem hiding this comment.
Minor: Consider using hyphenated compound adjective.
"ESP32 based chips" should be "ESP32-based chips" for grammatical correctness. This pattern appears in other ESPHome docs.
Proposed fix
-This component only works on ESP32 based chips.
+This component only works on ESP32-based chips.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| This component only works on ESP32 based chips. | |
| This component only works on ESP32-based chips. |
🧰 Tools
🪛 LanguageTool
[grammar] ~14-~14: Use a hyphen to join words.
Context: ...lay. This component only works on ESP32 based chips. ```yaml # Example configur...
(QB_NEW_EN_HYPHEN)
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/content/docs/components/media_source/audio_file.mdx` at line 14, Replace
the unhyphenated phrase "ESP32 based chips" with the hyphenated compound
adjective "ESP32-based chips" in the audio_file.mdx content (and update any
other occurrences of the same phrase in related ESPHome docs); locate the
sentence containing "ESP32 based chips" and edit it to read "ESP32-based chips"
to match the project's grammatical convention.
|
|
||
| - [Audio File Component](/components/audio_file/) | ||
| - [Media Source Components](/components/media_source/) | ||
| - <APIRef text="audio_file_media_source.h" path="esphome/components/audio_file/media_source/audio_file_media_source.h" /> |
There was a problem hiding this comment.
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
# Check for consistency in APIRef path formats across the codebase
rg -n 'APIRef.*path=' --type=mdx | head -20Repository: esphome/esphome-docs
Length of output: 91
🏁 Script executed:
#!/bin/bash
# Find all MDX files and search for APIRef patterns
fd '\.mdx$' --type f | head -30Repository: esphome/esphome-docs
Length of output: 1254
🏁 Script executed:
#!/bin/bash
# Search for APIRef usage in all files (mdx, jsx, tsx, etc.)
rg -n 'APIRef.*path=' . --type-add 'mdx:*.mdx' --type mdx 2>/dev/null || rg -n 'APIRef.*path=' --include='*.mdx' | head -30Repository: esphome/esphome-docs
Length of output: 50376
🏁 Script executed:
#!/bin/bash
# More direct approach: search for APIRef in .mdx files
find src/content/docs -name "*.mdx" -type f -exec grep -n 'APIRef.*path=' {} + 2>/dev/null | head -30Repository: esphome/esphome-docs
Length of output: 3827
🏁 Script executed:
#!/bin/bash
# Search for all audio_file references in MDX files
find src/content/docs -name "*.mdx" -type f -exec grep -n 'audio_file' {} + | grep -i apirefRepository: esphome/esphome-docs
Length of output: 379
🏁 Script executed:
#!/bin/bash
# Look at the actual file to see context
grep -n -A 2 -B 2 'APIRef.*audio_file' src/content/docs/components/media_source/audio_file.mdxRepository: esphome/esphome-docs
Length of output: 299
🏁 Script executed:
#!/bin/bash
# Check what the pattern should be - look for similar component references
# Check if there are other nested component references with esphome/ prefix
rg 'path="esphome/' src/content/docs --type mdx -cRepository: esphome/esphome-docs
Length of output: 91
Fix the API reference path to match the standard format used throughout the codebase.
The path esphome/components/audio_file/media_source/audio_file_media_source.h includes the esphome/components/ prefix, which is inconsistent with all other APIRef paths in the documentation. Remove the esphome/components/ prefix so the path reads: audio_file/media_source/audio_file_media_source.h. This matches the flattened path format used consistently across the rest of the codebase (e.g., alarm_control_panel/alarm_control_panel.h, api/api_server.h).
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/content/docs/components/media_source/audio_file.mdx` at line 45, Update
the APIRef path string in the APIRef element so it uses the flattened path
format: remove the "esphome/components/" prefix from the existing path
"esphome/components/audio_file/media_source/audio_file_media_source.h" and
change it to "audio_file/media_source/audio_file_media_source.h" to match other
APIRef entries; the change should be made in the APIRef element in
src/content/docs/components/media_source/audio_file.mdx.
| This value is ideally set to the maximum time required for the slowest device on the bus to process a message and be ready to process another. Note that all devices will receive all messages and will require time to process them even if they don't need to reply. | ||
| If devices don't respond sometimes, it can help to increase this value. | ||
|
|
||
| - **disable_crc** (*Optional*, boolean): If set to `true`, invalid CRC values are ignored. This will reduce error messages but will not fix communication issues. Try increasing times above first if you see CRC errors. Defaults to `false`. |
There was a problem hiding this comment.
Clarify wording in CRC troubleshooting guidance.
Line 55’s phrase “increase times above first” is unclear. Please name the fields explicitly to avoid ambiguity.
✏️ Proposed wording tweak
-- **disable_crc** (*Optional*, boolean): If set to `true`, invalid CRC values are ignored. This will reduce error messages but will not fix communication issues. Try increasing times above first if you see CRC errors. Defaults to `false`.
+- **disable_crc** (*Optional*, boolean): If set to `true`, invalid CRC values are ignored. This will reduce error messages but will not fix communication issues. If you see CRC errors, first try increasing `send_wait_time` and `turnaround_time`. Defaults to `false`.📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| - **disable_crc** (*Optional*, boolean): If set to `true`, invalid CRC values are ignored. This will reduce error messages but will not fix communication issues. Try increasing times above first if you see CRC errors. Defaults to `false`. | |
| - **disable_crc** (*Optional*, boolean): If set to `true`, invalid CRC values are ignored. This will reduce error messages but will not fix communication issues. If you see CRC errors, first try increasing `send_wait_time` and `turnaround_time`. Defaults to `false`. |
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/content/docs/components/modbus.mdx` at line 55, The sentence describing
CRC troubleshooting is ambiguous: replace the phrase "Try increasing times above
first" with explicit field names and guidance (e.g., "Try increasing the request
timeout (timeout) and/or the retry count (retries) if you see CRC errors") so
readers know which settings to change; update the sentence near the disable_crc
option in src/content/docs/components/modbus.mdx to reference the exact
configuration keys used elsewhere in the docs (replace the placeholder with the
actual field names if they differ) and keep the note that disable_crc defaults
to false.
|
|
||
| ## Configuration variables | ||
|
|
||
| - **transport** (*Optional*, mapping): Specifies the transport method used by Zephyr MCUmgr for OTA updates. By default, Bluetooth Low Energy (`ble: true`) is enabled. |
There was a problem hiding this comment.
Resolve the conflicting BLE default.
Line 25 says BLE transport is enabled by default (ble: true), but Line 42 says the default is false. Only one can be correct, and this changes whether the minimal config exposes BLE OTA automatically. Please align both places with the implementation.
Also applies to: 42-42
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/content/docs/components/ota/zephyr_mcumgr.mdx` at line 25, The doc has
conflicting defaults for the Zephyr MCUmgr OTA transport: the "transport"
section at the `transport` mapping currently states `ble: true` while another
spot states `ble: false`; confirm the actual default in the implementation and
make both descriptions consistent by updating the `transport` mapping example
and the later default statement to match the real default (change the `ble:
true`/`ble: false` text so both occurrences of `ble` reflect the
implementation). Ensure you update the `transport` mapping example and the later
sentence that mentions the default BLE value so they match exactly.
| The `lis2dw12` sensor platform allows you to use your ST LIS2DW12 tri-axial, low-g | ||
| accelerometer ([datasheet](https://www.st.com/resource/en/datasheet/lis2dw12.pdf)) | ||
| with ESPHome. The [I²C](/components/i2c) is required to be set up in your configuration for this sensor to work. | ||
|
|
There was a problem hiding this comment.
Add the inherited I²C device options to the config docs.
Lines 12-15 say the component requires I²C, but the configuration section never mentions that the usual I²C device settings also apply. Users with a non-default address or multiple I²C buses won't know from this page how to set address / i2c_id.
Suggested doc addition
### Configuration variables
+All [I²C Device](/components/i2c#i2c-device-configuration-variables) options are supported.
+
The configuration is made up of several parts: The central component, acceleration sensors,
text sensor with orientation information, and binary sensors for taps, freefall, and movement detection.Also applies to: 31-39
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/content/docs/components/sensor/lis2dw12.mdx` around lines 12 - 15, Update
the lis2dw12 component docs to state that standard I²C device options are
supported by this platform and show the relevant option names; explicitly
mention that users can set address and i2c_id (and other inherited I2C device
settings) in the lis2dw12 config and link or reference the main I²C component
docs for full option descriptions. Edit the lis2dw12 configuration section (the
lis2dw12 sensor/platform documentation) to add a short paragraph and a concise
example snippet calling out address and i2c_id usage so users with non-default
addresses or multiple I²C buses know to use those fields.
There was a problem hiding this comment.
As this is a feature matched with a PR in https://github.com/esphome/esphome, please target your PR to the next branch and rebase.
Base branch has been corrected - dismissing previous review.
Base branch has been corrected - dismissing previous review.
Description
Add a new component for the ST LIS2DW12 3-axis MEMS accelerometer. This is a low-power 14-bit accelerometer communicating over I2C, supporting tap/double-tap detection,free-fall, wake-up/activity, and 6D orientation features.
Features:
Related issue (if applicable): fixes https://github.com/orgs/esphome/discussions/3565
Pull request in esphome with YAML changes (if applicable):
Checklist
I am merging into
nextbecause this is new documentation that has a matching pull-request in esphome as linked above.or
I am merging into
currentbecause this is a fix, change and/or adjustment in the current documentation and is not for a new component or feature.Link added in
/src/content/docs/components/index.mdxwhen creating new documents for new components or cookbook.New Component Images
If you are adding a new component to ESPHome, you can automatically generate a standardized black and white component name image for the documentation.
To generate a component image:
Comment on this pull request with the following command, replacing
component_namewith your component name in lower_case format with underscores (e.g.,bme280,sht3x,dallas_temp):The ESPHome bot will respond with a downloadable ZIP file containing the SVG image.
Extract the SVG file and place it in the
/public/images/folder of this repository.Use the image in your component's index table entry in
/src/content/docs/components/index.mdx.Example: For a component called "DHT22 Temperature Sensor", use:
Note: All images used in ImgTable components must be placed in
/public/images/as the component resolves them to absolute paths.