Merge pull request #17093 from esphome/bump-2026.6.2

2026.6.2
This commit is contained in:
Jonathan Swoboda
2026-06-20 14:17:55 -04:00
committed by GitHub
7 changed files with 31 additions and 7 deletions

View File

@@ -48,7 +48,7 @@ PROJECT_NAME = ESPHome
# could be handy for archiving the generated documentation or if some version # could be handy for archiving the generated documentation or if some version
# control system is used. # control system is used.
PROJECT_NUMBER = 2026.6.1 PROJECT_NUMBER = 2026.6.2
# Using the PROJECT_BRIEF tag one can provide an optional one line description # Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a # for a project that appears at the top of each page and should give viewer a

View File

@@ -32,7 +32,7 @@ RUN \
-r /requirements.txt -r /requirements.txt
# Install the ESPHome Device Builder dashboard. # Install the ESPHome Device Builder dashboard.
RUN uv pip install --no-cache-dir esphome-device-builder==1.0.10 RUN uv pip install --no-cache-dir esphome-device-builder==1.0.12
RUN \ RUN \
platformio settings set enable_telemetry No \ platformio settings set enable_telemetry No \

View File

@@ -49,7 +49,21 @@ if bashio::fs.directory_exists '/config/esphome/.esphome'; then
rm -rf /config/esphome/.esphome rm -rf /config/esphome/.esphome
fi fi
# Only signal device-builder to expose the public LAN port when the operator
# mapped port 6052, matching the legacy dashboard where nginx listened on the
# fixed port 6052 only when it was configured. We use the mapping purely as a
# presence check and don't forward the published value; device-builder binds
# its default port 6052 (the fixed container port, as the legacy
# "listen 6052" did). --ha-addon-allow-public is inert on its own: the no-auth
# gate is the DISABLE_HA_AUTHENTICATION env var set above, so both opt-ins are
# required to bind 6052 unauthenticated; either alone stays ingress-only.
set --
if bashio::var.has_value "$(bashio::addon.port 6052)"; then
set -- --ha-addon-allow-public
fi
bashio::log.info "Starting ESPHome Device Builder..." bashio::log.info "Starting ESPHome Device Builder..."
exec esphome-device-builder /config/esphome \ exec esphome-device-builder /config/esphome \
--ha-addon \ --ha-addon \
--ingress-port "$(bashio::addon.ingress_port)" --ingress-port "$(bashio::addon.ingress_port)" \
"$@"

View File

@@ -50,6 +50,11 @@ async def new_fastled_light(config):
ref="d44c800a9e876a8394caefc2ce4915dd96dac77b", ref="d44c800a9e876a8394caefc2ce4915dd96dac77b",
) )
cg.add_library("SPI", None) cg.add_library("SPI", None)
# FastLED's RMT5 driver hard-codes intr_priority=3, which conflicts with
# esphome's RMT channels (remote_transmitter etc., priority 0): the IDF
# driver rejects FastLED's channel and show() then hangs ~3s with no
# output. Override to 0 so it shares the interrupt. See #17063.
cg.add_build_flag("-DFL_RMT5_INTERRUPT_LEVEL=0")
else: else:
cg.add_library("fastled/FastLED", "3.9.16") cg.add_library("fastled/FastLED", "3.9.16")
await light.register_light(var, config) await light.register_light(var, config)

View File

@@ -69,7 +69,7 @@ ENCRYPTION_SCHEMA = {
cv.Optional(CONF_ENCRYPTION): cv.maybe_simple_value( cv.Optional(CONF_ENCRYPTION): cv.maybe_simple_value(
cv.Schema( cv.Schema(
{ {
cv.Required(CONF_KEY): cv.string, cv.Required(CONF_KEY): cv.sensitive(cv.string),
} }
), ),
key=CONF_KEY, key=CONF_KEY,

View File

@@ -4,7 +4,7 @@ from enum import Enum
from esphome.enum import StrEnum from esphome.enum import StrEnum
__version__ = "2026.6.1" __version__ = "2026.6.2"
ALLOWED_NAME_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789-_" ALLOWED_NAME_CHARS = "abcdefghijklmnopqrstuvwxyz0123456789-_"
VALID_SUBSTITUTIONS_CHARACTERS = ( VALID_SUBSTITUTIONS_CHARACTERS = (

View File

@@ -81,8 +81,13 @@ def _get_idf_tools_path() -> Path:
Path object pointing to the ESP-IDF tools directory Path object pointing to the ESP-IDF tools directory
""" """
if "ESPHOME_ESP_IDF_PREFIX" in os.environ: if "ESPHOME_ESP_IDF_PREFIX" in os.environ:
return Path(get_str_env("ESPHOME_ESP_IDF_PREFIX", None)).expanduser() path = Path(get_str_env("ESPHOME_ESP_IDF_PREFIX", None)).expanduser()
return CORE.data_dir / "idf" else:
path = CORE.data_dir / "idf"
# Resolve so an unnormalized config path (e.g. compiling ``../config/x.yaml``)
# doesn't leave ``..`` segments in the IDF_TOOLS_PATH handed to idf.py, which
# otherwise warns that the venv interpreter path doesn't match the install.
return path.resolve()
# Windows' default MAX_PATH is 260 characters. ESP-IDF toolchains nest deeply # Windows' default MAX_PATH is 260 characters. ESP-IDF toolchains nest deeply