Skip to content

Commit 84ad5ec

Browse files
authored
Merge pull request #6100 from esphome/bump-2026.2.0b3
2026.2.0b3
2 parents 9b10a50 + 7bebbb3 commit 84ad5ec

File tree

13 files changed

+84
-52
lines changed

13 files changed

+84
-52
lines changed

astro.config.mjs

Lines changed: 0 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -55,27 +55,6 @@ function getChangelogItems() {
5555
}));
5656
}
5757

58-
// Get the latest changelog version for redirects
59-
function getLatestChangelog() {
60-
const changelogDir = path.join(__dirname, "src/content/docs/changelog");
61-
const files = fs
62-
.readdirSync(changelogDir)
63-
.filter((f) => f.endsWith(".mdx") && f !== "index.mdx");
64-
65-
let latest = { sortValue: 0, slug: "" };
66-
for (const f of files) {
67-
const match = f.match(/^(\d{4})\.(\d+)\.(\d+)\.mdx$/);
68-
if (match) {
69-
const [, year, month, patch] = match;
70-
const sortValue =
71-
parseInt(year) * 10000 + parseInt(month) * 100 + parseInt(patch);
72-
if (sortValue > latest.sortValue) {
73-
latest = { sortValue, slug: `${year}.${month}.${patch}` };
74-
}
75-
}
76-
}
77-
return latest.slug;
78-
}
7958

8059
// Generate component sidebar items with proper labels
8160
function getComponentItems() {
@@ -141,15 +120,8 @@ function getComponentItems() {
141120
return items.map(({ sort, ...item }) => item);
142121
}
143122

144-
const latestChangelog = getLatestChangelog();
145-
146123
export default defineConfig({
147124
site: "https://esphome.io",
148-
redirects: {
149-
"/changelog/": `/changelog/${latestChangelog}/`,
150-
"/changelog/index/": `/changelog/${latestChangelog}/`,
151-
"/guides/changelog/": `/changelog/${latestChangelog}/`,
152-
},
153125
vite: {
154126
resolve: {
155127
alias: {

data/version.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
release: 2026.2.0b2
1+
release: 2026.2.0b3
22
version: '2026.2'

src/components/APIClass.astro

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,4 @@ const baseUrl = 'https://api-docs.esphome.io';
2929
const url = `${baseUrl}/classesphome_1_1${processedPath}`;
3030
---
3131

32-
<a href={url}>{text}</a>
32+
<a href={url}>API Reference: {text}</a>

src/components/APIRef.astro

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,6 @@ processedPath = processedPath.replace(/([A-Z])/g, (match) => `_${match.toLowerCa
3131
const baseUrl = 'https://api-docs.esphome.io';
3232
const url = `${baseUrl}/${processedPath}`;
3333
34-
// Display text defaults to "API Reference" if same as path
35-
const displayText = text === path ? 'API Reference' : text;
3634
---
3735

38-
<a href={url}>{displayText}</a>
36+
<a href={url}>API Reference: {text}</a>

src/components/APIStruct.astro

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,4 +29,4 @@ const baseUrl = 'https://api-docs.esphome.io';
2929
const url = `${baseUrl}/structesphome_1_1${processedPath}`;
3030
---
3131

32-
<a href={url}>{text}</a>
32+
<a href={url}>API Reference: {text}</a>
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
---
2+
import { getCollection, render } from "astro:content";
3+
4+
const allDocs = await getCollection("docs");
5+
6+
// Filter to changelog entries (excluding the index)
7+
const changelogs = allDocs.filter(
8+
(entry) =>
9+
entry.id.startsWith("changelog/") &&
10+
entry.id !== "changelog/" &&
11+
entry.id !== "changelog/index"
12+
);
13+
14+
// Parse version and find the latest
15+
let latest = { sortValue: 0, entry: null as (typeof changelogs)[0] | null };
16+
for (const entry of changelogs) {
17+
// Match 2021.x.x style IDs
18+
const match = entry.id.match(/changelog\/(\d{4})\.(\d+)\.(\d+)/);
19+
if (match) {
20+
const [, year, month, patch] = match;
21+
const sortValue =
22+
parseInt(year) * 10000 + parseInt(month) * 100 + parseInt(patch);
23+
if (sortValue > latest.sortValue) {
24+
latest = { sortValue, entry };
25+
}
26+
}
27+
}
28+
29+
const rendered = latest.entry ? await render(latest.entry) : null;
30+
const Content = rendered?.Content;
31+
const slug = latest.entry?.data.slug ?? latest.entry?.id;
32+
const redirectUrl = slug ? `/${slug}/` : null;
33+
---
34+
35+
{redirectUrl && <script define:vars={{ redirectUrl }}>window.location.replace(redirectUrl + window.location.hash);</script>}
36+
{Content && <Content />}

src/content/docs/changelog/2026.2.0.mdx

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -336,6 +336,10 @@ The lists below are grouped by tag and may contain duplicates across sections.
336336
- [alarm_control_panel] Fix flaky integration test race condition [esphome#13964](https://github.com/esphome/esphome/pull/13964) by [@swoboda1337](https://github.com/swoboda1337)
337337
- [docker] Suppress git detached HEAD advice [esphome#13962](https://github.com/esphome/esphome/pull/13962) by [@swoboda1337](https://github.com/swoboda1337)
338338
- [api] Fix ESP8266 noise API handshake deadlock and prompt socket cleanup [esphome#13972](https://github.com/esphome/esphome/pull/13972) by [@bdraco](https://github.com/bdraco)
339+
- [wifi] Fix ESP8266 DHCP state corruption from premature dhcp_renew() [esphome#13983](https://github.com/esphome/esphome/pull/13983) by [@bdraco](https://github.com/bdraco)
340+
- [combination] Fix 'coeffecient' typo with backward-compatible deprecation [esphome#14004](https://github.com/esphome/esphome/pull/14004) by [@swoboda1337](https://github.com/swoboda1337)
341+
- [fan] Fix preset_mode not restored on boot [esphome#14002](https://github.com/esphome/esphome/pull/14002) by [@swoboda1337](https://github.com/swoboda1337)
342+
- [esp32_rmt] Handle ESP32 variants without RMT hardware [esphome#14001](https://github.com/esphome/esphome/pull/14001) by [@swoboda1337](https://github.com/swoboda1337) (new-feature)
339343

340344
### All changes
341345

@@ -728,6 +732,17 @@ The lists below are grouped by tag and may contain duplicates across sections.
728732
- Allow Python 3.14 [esphome#13945](https://github.com/esphome/esphome/pull/13945) by [@swoboda1337](https://github.com/swoboda1337)
729733
- [wifi] Allow fast_connect without preconfigured networks [esphome#13946](https://github.com/esphome/esphome/pull/13946) by [@QRPp](https://github.com/QRPp)
730734
- [ethernet] Add per-PHY compile guards to eliminate unused PHY drivers [esphome#13947](https://github.com/esphome/esphome/pull/13947) by [@bdraco](https://github.com/bdraco)
735+
- [schema-gen] fix Windows: ensure UTF-8 encoding when reading component files [esphome#13952](https://github.com/esphome/esphome/pull/13952) by [@glmnet](https://github.com/glmnet)
736+
- [uart] Remove redundant mutex, fix flush race, conditional event queue [esphome#13955](https://github.com/esphome/esphome/pull/13955) by [@bdraco](https://github.com/bdraco)
737+
- [api] Extract cold code from APIServer::loop() hot path [esphome#13902](https://github.com/esphome/esphome/pull/13902) by [@bdraco](https://github.com/bdraco)
738+
- [pulse_meter] Fix early edge detection [esphome#12360](https://github.com/esphome/esphome/pull/12360) by [@LucasCZE](https://github.com/LucasCZE)
739+
- [alarm_control_panel] Fix flaky integration test race condition [esphome#13964](https://github.com/esphome/esphome/pull/13964) by [@swoboda1337](https://github.com/swoboda1337)
740+
- [docker] Suppress git detached HEAD advice [esphome#13962](https://github.com/esphome/esphome/pull/13962) by [@swoboda1337](https://github.com/swoboda1337)
741+
- [api] Fix ESP8266 noise API handshake deadlock and prompt socket cleanup [esphome#13972](https://github.com/esphome/esphome/pull/13972) by [@bdraco](https://github.com/bdraco)
742+
- [wifi] Fix ESP8266 DHCP state corruption from premature dhcp_renew() [esphome#13983](https://github.com/esphome/esphome/pull/13983) by [@bdraco](https://github.com/bdraco)
743+
- [combination] Fix 'coeffecient' typo with backward-compatible deprecation [esphome#14004](https://github.com/esphome/esphome/pull/14004) by [@swoboda1337](https://github.com/swoboda1337)
744+
- [fan] Fix preset_mode not restored on boot [esphome#14002](https://github.com/esphome/esphome/pull/14002) by [@swoboda1337](https://github.com/swoboda1337)
745+
- [esp32_rmt] Handle ESP32 variants without RMT hardware [esphome#14001](https://github.com/esphome/esphome/pull/14001) by [@swoboda1337](https://github.com/swoboda1337) (new-feature)
731746

732747
</details>
733748

src/content/docs/changelog/index.mdx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,6 @@ title: "Changelog"
44
pagefind: true
55
---
66

7-
Redirecting to the latest release...
7+
import LatestChangelog from "@components/LatestChangelog.astro";
8+
9+
<LatestChangelog />

src/content/docs/components/light/esp32_rmt_led_strip.mdx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ import APIRef from '@components/APIRef.astro';
77

88
This is a component using the ESP32 RMT peripheral to drive most addressable LED strips.
99

10+
> [!NOTE]
11+
> The ESP32-C2 and ESP32-C61 do not have RMT hardware and are not supported by this component.
12+
1013
```yaml
1114
light:
1215
- platform: esp32_rmt_led_strip
@@ -59,7 +62,6 @@ light:
5962
| ESP32-C3 | 96 symbols | 48 symbols |
6063
| ESP32-C5 | 96 symbols | 48 symbols |
6164
| ESP32-C6 | 96 symbols | 48 symbols |
62-
| ESP32-C61 | 96 symbols | 48 symbols |
6365
| ESP32-H2 | 96 symbols | 48 symbols |
6466
| ESP32-P4 | 192 symbols | 48 symbols |
6567
| ESP32-S2 | 256 symbols | 64 symbols |

src/content/docs/components/remote_receiver.mdx

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -88,16 +88,20 @@ Multiple remote receivers can be configured as a list of dict definitions within
8888
be considered complete. Defaults to `10ms`. The maximum allowable value is:
8989

9090
- `65536us` on the `ESP32` and `ESP32-S2` variants
91-
- `32767us` on all other ESP32 variants
92-
- `4294967295us` on all other platforms
91+
- `32767us` on other ESP32 variants with RMT hardware
92+
- `4294967295us` on all other platforms (including ESP32-C2 and ESP32-C61 which use a software implementation)
9393

94-
Note: The ESP32 values listed above assume the default `clock_resolution`. If a different `clock_resolution` is used,
95-
the values are scaled by 1000000 / `clock_resolution`.
94+
Note: The ESP32 RMT values listed above assume the default `clock_resolution`. If a different `clock_resolution` is
95+
used, the values are scaled by 1000000 / `clock_resolution`.
9696

9797
- **id** (*Optional*, [ID](/guides/configuration-types#id)): Manually specify the ID used for code generation. Useful when multiple
9898
receivers are configured on a single device.
9999

100-
### ESP32 configuration variables
100+
### ESP32 RMT configuration variables
101+
102+
> [!NOTE]
103+
> The following options apply only to ESP32 variants with RMT hardware. They are not available on the ESP32-C2 and
104+
> ESP32-C61, which use a software implementation.
101105

102106
- **rmt_symbols** (*Optional*, int): When `use_dma` is enabled, this sets the size of the driver's internal DMA
103107
buffer. When DMA is disabled, it specifies how much RMT memory is allocated to the component. RMT memory is shared
@@ -110,7 +114,6 @@ Multiple remote receivers can be configured as a list of dict definitions within
110114
| ESP32-C3 | 96 symbols | 48 symbols |
111115
| ESP32-C5 | 96 symbols | 48 symbols |
112116
| ESP32-C6 | 96 symbols | 48 symbols |
113-
| ESP32-C61 | 96 symbols | 48 symbols |
114117
| ESP32-H2 | 96 symbols | 48 symbols |
115118
| ESP32-P4 | 192 symbols | 48 symbols |
116119
| ESP32-S2 | 256 symbols | 64 symbols |

0 commit comments

Comments
 (0)