Skip to content

2026.2.0#6114

Merged
jesserockz merged 116 commits intocurrentfrom
bump-2026.2.0
Feb 18, 2026
Merged

2026.2.0#6114
jesserockz merged 116 commits intocurrentfrom
bump-2026.2.0

Conversation

@jesserockz
Copy link
Member

Do not merge, release script will automatically merge

  • Fix Made for ESPHome logo links and add missing PNGs docs#5917
  • Fix unresolved image warnings and fail build on missing images docs#5918
  • Update changelog for 2026.1.0 docs#5919
  • Update web_server and captive_portal compression default to gzip docs#5924
  • add Guition JC8012P4A1 docs#5922
  • [easy] Replace "name" key for color with "id" key in display docs docs#5927
  • [select] Document select.is condition docs#5928
  • [mipi_spi] Add docs for CYD variants docs#5947
  • [status] Document update_interval option docs#5943
  • [debug] Document min_free sensor and ESP32 fragmentation support docs#5921
  • Describe the max_delta filter docs#5807
  • Add Claude Code PR workflow skill docs#5930
  • [heatpumpir] Add ESP-IDF framework support to docs docs#5959
  • [infrared] Fix example in release notes docs#5963
  • [esp32] esp-idf is now the default framework for all variants docs#5960
  • [nextion] Add configurable startup and queue timeout constants docs#5454
  • [mipi_dsi] add M5Stack-Tab5-V2 model docs#5677
  • [bthome_mithermometer] add encrypted beacon support docs#5961
  • Remove media players that don't rely on Sendspin docs#5965
  • [sensor] Update clamp filter docs docs#5966
  • Add Dew Point Sensor Component to DIY examples docs#5964
  • [scd4x] fix indent in yaml example docs#5967
  • Adjust BMP581 for component rename, additional sensor example, stage for SPI docs#5914
  • initial creation for sy6970 component docs#5935
  • [http_request] Document ca_certificate_path for ESP32 docs#5982
  • [esp32] Document use_full_certificate_bundle advanced option docs#5989
  • Add Huidu HD-WF1 to display component list docs#5942
  • [zigbee,time] add zigbee time doc docs#5863
  • [zigbee] address change docs#5991
  • Bump docker/login-action from 3.6.0 to 3.7.0 docs#6000
  • [nrf52,zigbee] add number docs#5995
  • Add CH423 I/O expander documentation docs#5895
  • [pmsx003] add new types docs#5850
  • [esp32] Document include_builtin_idf_components advanced option docs#6001
  • Add docs for dlms_meter component docs#4536
  • [ethernet] Add docs for on_connect and on_disconnect triggers docs#6018
  • Add WAVESHARE-ESP32-P4-WIFI6-TOUCH-LCD-7B mipi_dsi driver docs#5998
  • [key_collector] Document text_sensor docs#6003
  • [cover] document new triggers docs#5971
  • Update Arduino vs ESP-IDF build time comparison docs#6036
  • [esp32] Document Arduino selective compilation optimization docs#6006
  • [vbus]: document DeltaSol BS/2 (DrainBack) support docs#6032
  • Update DSMR documentation to match changes in https://github.com/esph… docs#6038
  • Add target temperature lambda to water heater template docs#6012
  • [epaper_spi] Document JD79660 based Waveshare 1.54 (G) docs#6030
  • [mipi_dsi] Add WAVESHARE-ESP32-P4-WIFI6-TOUCH-LCD 3.4C and 4C docs#6046
  • Add on and away state lambdas to water heater template docs#6044
  • [globals] Document update_interval option docs#5945
  • [ld2450] Document on_data action docs#5993
  • [esp32] Document advanced sdkconfig options for debug, TLS, FATFS, and peripherals docs#5999
  • [bl0942] Update references docs#5853
  • [logger] Add nRF52 to task_log_buffer_size documentation docs#6061
  • fix: SchemaGen more resilent handling of docref shortcode docs#6062
  • [mqtt.cover] Adds mqtt_use_json_payload option to cover. docs#5817
  • [esp32_ble_beacon] Document tx_power unavailable on ESP-Hosted docs#6040
  • Hugo to Starlight migration docs#6037
  • [bl0942] Update docs to match esphome PR#12867 docs#6075
  • [changelog] Add 2026.2.0 release highlights and breaking changes docs#6070
  • Fix malformed links and add missing image in component index docs#6076
  • Fix blank guides/changelog and guides index pages docs#6077
  • Prefix APIRef links with "API Reference:" docs#6081
  • Make changelog index a real searchable page docs#6083
  • [remote_transmitter, remote_receiver, esp32_rmt_led_strip] Document ESP32-C2/C61 no RMT support docs#6086
  • Fix changelog redirect to preserve URL hash fragment docs#6088
  • [combination] Fix 'coeffecient' typo to 'coefficient' docs#6087
  • [sensor] Add filter headings to table of contents docs#6102
  • Remove Hugo leftovers and update dev tooling for Starlight docs#6078
  • Remove Docker development environment docs#6103
  • Remove dangling postCreate.sh file docs#6105
  • Remove assets symlink docs#6106
  • Auto-generate All Actions/Conditions lists from doc headings docs#6107
  • [docs] Add linter check for automation headings and fix sprinkler docs#6109
  • Link domain names to component pages in automation lists docs#6111
Metadata

@coderabbitai ignore

swoboda1337 and others added 30 commits January 14, 2026 09:19
* [hub75] Update scan enum values

* add SCAN_1_8_40PX_HIGH
* Fix Made for ESPHome logo links and add missing PNGs

- Move logo files from content/guides/images/ to static/images/
  for simpler absolute path references
- Generate missing PNG versions of logos (white-on-black,
  black-on-transparent, white-on-transparent)
- Update markdown to use absolute paths (/images/...) instead
  of relative paths that resolved incorrectly
- Fix SEO image path in frontmatter

Fixes #5894

Co-Authored-By: Claude Opus 4.5 <[email protected]>

* Skip absolute /images/ paths in internal link validation

Allow links to static image assets like /images/foo.png in markdown
without triggering the internal link checker.

Co-Authored-By: Claude Opus 4.5 <[email protected]>

---------

Co-authored-by: Claude Opus 4.5 <[email protected]>
Move images from static/images/ to content/images/ (which is
mounted as assets/) so Hugo's resource pipeline can find them.

The img shortcode uses resources.Get which searches in assets/,
not static/. This fixes warnings like:
"Unresolved image 'captive_portal-ui.png' in page..."

Images moved:
- captive_portal-ui.png
- factory-rst-ui.png
- gpio-ui.png
- haier-climate.jpg
- output-ui.png
- safemode-ui.png
- shutdown-ui.png

Also change warnf to errorf in the image partial so CI will
catch missing images by failing the build.

Co-authored-by: Claude Opus 4.5 <[email protected]>
This one entry in the docs has a "name" key for a color, but this appears to be mistaken; every other entry has "id", and "id" appears to be correct.
* Add reference to water heater template documentation

* Remove empty line in water heater index file
…mperature documentation (#5949)

* [water_heater] Fix incorrect Home Assistant integration and target_temperature documentation

* Update content/changelog/2026.1.0.md

Co-authored-by: Copilot <[email protected]>

---------

Co-authored-by: Copilot <[email protected]>
Co-authored-by: Clyde Stubbs <[email protected]>
Co-authored-by: dcgrove <[email protected]>
Add a skill that teaches Claude Code the proper procedures for creating
pull requests in esphome-docs, including:
- Basing branches on upstream (not fork)
- Using the correct PR template
- Choosing the right base branch (current vs next)
- Filling in all required template sections

Co-authored-by: Claude Opus 4.5 <[email protected]>
swoboda1337 and others added 23 commits February 17, 2026 13:24
Copilot AI review requested due to automatic review settings February 18, 2026 20:37
@esphome esphome bot added the current label Feb 18, 2026
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Migrates the ESPHome docs site from the legacy Hugo-based structure to an Astro/Starlight-based setup and updates tooling/CI accordingly.

Changes:

  • Added Astro/Starlight configuration and updated repository docs to reflect the new structure and authoring patterns.
  • Updated CI/dev tooling (Node-based build/lint, devcontainer, Gitpod, VS Code task).
  • Removed legacy Hugo content/pages, build scripts, and Docker-based dev workflow artifacts.

Reviewed changes

Copilot reviewed 65 out of 2772 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
content/changelog/2024.7.0.md Removes legacy Hugo changelog page (part of migration cleanup).
content/changelog/2023.8.0.md Removes legacy Hugo changelog page (part of migration cleanup).
content/changelog/2023.7.0.md Removes legacy Hugo changelog page (part of migration cleanup).
content/changelog/2023.5.0.md Removes legacy Hugo changelog page (part of migration cleanup).
content/changelog/2023.4.0.md Removes legacy Hugo changelog page (part of migration cleanup).
content/changelog/2023.10.0.md Removes legacy Hugo changelog page (part of migration cleanup).
content/changelog/2022.9.0.md Removes legacy Hugo changelog page (part of migration cleanup).
content/changelog/2022.8.0.md Removes legacy Hugo changelog page (part of migration cleanup).
content/changelog/2022.6.0.md Removes legacy Hugo changelog page (part of migration cleanup).
content/changelog/2022.5.0.md Removes legacy Hugo changelog page (part of migration cleanup).
content/changelog/2022.4.0.md Removes legacy Hugo changelog page (part of migration cleanup).
content/changelog/2022.3.0.md Removes legacy Hugo changelog page (part of migration cleanup).
content/changelog/2022.10.0.md Removes legacy Hugo changelog page (part of migration cleanup).
content/automations/templates.md Removes legacy Hugo automation templates page (part of migration cleanup).
content/automations/all_conditions.md Removes legacy Hugo generated automations list page (part of migration cleanup).
content/automations/all_actions.md Removes legacy Hugo generated automations list page (part of migration cleanup).
content/automations/actions.md Removes legacy Hugo automations documentation page (part of migration cleanup).
content/automations/_index.md Removes legacy Hugo automations section index (part of migration cleanup).
content/_index.md Removes legacy Hugo homepage content (part of migration cleanup).
build_automations_pages.py Removes legacy helper script used for Hugo automation pages.
astro.config.mjs Adds Astro/Starlight site configuration and sidebar generation logic.
assets Removes legacy assets symlink (migration cleanup).
all_automations.json Removes legacy generated automation data file (migration cleanup).
README.md Updates repo documentation for Astro/Starlight structure and workflows.
Makefile Removes Hugo/Pagefind build targets (replaced by npm scripts).
Dockerfile Removes Docker-based dev environment (migration cleanup).
.vscode/tasks.json Updates VS Code task to run Astro dev server instead of make live-html.
.markdownlintignore Ignores node_modules for markdown linting in Node-based workflow.
.gitpod.yml Updates Gitpod port and commands for Astro dev server.
.github/workflows/docker.yml Removes Docker image build workflow (migration cleanup).
.github/workflows/ci.yml Switches CI to Node-based install/build/lint.
.github/dependabot.yml Switches Dependabot from pip to npm updates.
.github/copilot-instructions.md Updates contributor/AI guidance to Astro/Starlight + MDX practices.
.github/PULL_REQUEST_TEMPLATE.md Updates template paths and image placement guidance for new structure.
.devcontainer/postCreate.sh Removes Hugo/Python devcontainer bootstrapping script.
.devcontainer/devcontainer.json Updates devcontainer to Node/Astro toolchain and port 4321.
.claude/instructions.md Updates writing guidance to MDX/Astro conventions (images, alerts, links).

import { defineConfig } from "astro/config";
import starlight from "@astrojs/starlight";
import sitemap from "@astrojs/sitemap";
import starlightBlog from "starlight-blog";
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

starlightBlog is imported but not used (the plugin configuration is commented out). This commonly fails linting in Node/TS repos. Either remove the unused import or re-enable the plugin configuration so the import is exercised.

Suggested change
import starlightBlog from "starlight-blog";

Copilot uses AI. Check for mistakes.
Comment on lines +16 to +24
function getChangelogItems() {
const changelogDir = path.join(__dirname, "src/content/docs/changelog");
const files = fs.readdirSync(changelogDir).filter((f) => f.endsWith(".mdx"));

const versions = files
.map((f) => {
const filePath = path.join(changelogDir, f);
const content = fs.readFileSync(filePath, "utf-8");
const titleMatch = content.match(/^title:\s*["']?([^"'\n]+)["']?/m);
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The sidebar generation reads and parses every changelog file synchronously during config evaluation. With many changelog entries this can noticeably slow npm run dev startup and rebuilds. Consider generating this list from filenames only, caching results, or using a frontmatter parser with a fast partial read (e.g., read only the frontmatter block) rather than readFileSync for full file contents.

Copilot uses AI. Check for mistakes.
Comment on lines +60 to +71
function getComponentItems() {
const componentsDir = path.join(__dirname, "src/content/docs/components");
const entries = fs.readdirSync(componentsDir, { withFileTypes: true });
const items = [];

for (const entry of entries) {
if (entry.name === "images" || entry.name === "index.mdx") continue;

if (entry.isFile() && entry.name.endsWith(".mdx")) {
const filePath = path.join(componentsDir, entry.name);
const content = fs.readFileSync(filePath, "utf-8");
const titleMatch = content.match(/^title:\s*["']?([^"'\n]+)["']?/m);
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Similar to changelogs, generating the full components sidebar by synchronously reading every MDX file can become a bottleneck (the components directory is typically large). If you need titles, consider a pre-generated index (built once and committed), or a content-collection-driven approach that avoids full-file sync reads on startup.

Copilot uses AI. Check for mistakes.
.map((f) => {
const filePath = path.join(changelogDir, f);
const content = fs.readFileSync(filePath, "utf-8");
const titleMatch = content.match(/^title:\s*["']?([^"'\n]+)["']?/m);
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The title: extraction uses a regex over the entire file and isn’t scoped to frontmatter. If a file ever lacks a frontmatter title (or the frontmatter is malformed), the regex can accidentally match title: inside a code block or example and produce an incorrect sidebar label. Using a frontmatter parser (e.g., gray-matter) or restricting the search to the first frontmatter block would make this more robust.

Copilot uses AI. Check for mistakes.
Comment on lines +67 to +68
```jsx
<Image src="/images/shared-image.jpg" alt="Description" layout="constrained" />
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This example suggests using astro:assetsImage component with a /public absolute path. In Astro, images in public/ are typically referenced via standard <img>/Markdown, while Image is generally used with imported assets (or configured remote sources) for optimization. To avoid readers copying a pattern that may not work or won’t be optimized, update this example to either (a) use an <img src=\"/images/...\">/Markdown image, or (b) show importing the image so it’s processed by the asset pipeline.

Suggested change
```jsx
<Image src="/images/shared-image.jpg" alt="Description" layout="constrained" />
```html
<img src="/images/shared-image.jpg" alt="Description" />

Copilot uses AI. Check for mistakes.
Comment on lines +166 to +171
- Reference using absolute path

Examples:
```markdown
![Debug output](debug.png)
```mdx
<Image src="/images/shared-image.jpg" alt="Description" layout="constrained" />
```

Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This repeats the guidance to use astro:assets Image with /public/images/... paths. If the project expects public images to be used via <img>/Markdown (and only imported images to use Image), the instructions should reflect that to prevent contributors from introducing non-working or non-optimized image markup.

Suggested change
- Reference using absolute path
Examples:
```markdown
![Debug output](debug.png)
```mdx
<Image src="/images/shared-image.jpg" alt="Description" layout="constrained" />
```
- Reference using an absolute path in Markdown or HTML
- **Do NOT** use `astro:assets` `Image` for `/public` images; use standard Markdown or `<img>` instead
```markdown
![Description](/images/shared-image.jpg)

or, if you need HTML:

<img src="/images/shared-image.jpg" alt="Description">

Copilot uses AI. Check for mistakes.
Comment on lines +22 to +23
- name: Set up Node.js
uses: actions/setup-node@6044e13b5dc448c55e2357c09f80417699197238 # v6.2.0
Copy link

Copilot AI Feb 18, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The inline version comment # v6.2.0 appears incorrect for actions/setup-node (and can cause confusion during dependency/security audits). Since the action is pinned by SHA, consider either updating the comment to the correct tag version for that SHA or removing the tag comment entirely.

Copilot uses AI. Check for mistakes.
@netlify
Copy link

netlify bot commented Feb 18, 2026

Deploy Preview for esphome ready!

Name Link
🔨 Latest commit c8412e5
🔍 Latest deploy log https://app.netlify.com/projects/esphome/deploys/6996231648305c0008040a20
😎 Deploy Preview https://deploy-preview-6114--esphome.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

@jesserockz jesserockz merged commit 0051110 into current Feb 18, 2026
6 checks passed
@jesserockz jesserockz deleted the bump-2026.2.0 branch February 18, 2026 22:41
@github-actions github-actions bot locked and limited conversation to collaborators Feb 20, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.