github jtenniswood/espcontrol v2.8.0

5 hours ago

EspControl v2.8.0

Changes since v2.7.1.

Full comparison

What changed?

  • User-facing features: 361 changes. Notable: Refresh subpages after layout changes; Refresh subpages after configuration changes.
  • User-facing bug fixes: 43 changes. Notable: Preserve secondary data during layout updates; Fix live secondary page layout refresh.

Update guidance

  • Recommended for users who want the latest firmware, setup page, device fixes, or documented behavior.
  • Affected devices: All supported displays may be affected because shared firmware, setup, or build files changed.

Known issues

  • No release-specific known issues are listed automatically for this release.
  • Check open GitHub issues before updating devices you rely on every day.

Summary

  • 404 user-facing changes are included in this release.
  • Release range: v2.7.1 to v2.8.0.

User-facing changes

User-facing features

  • Refresh subpages after layout changes
  • Refresh subpages after configuration changes
  • Refresh secondary pages in place
  • Load secondary page states after refresh
  • Move secondary cards without rebuilding data
  • Allow secondary card layout updates
  • Refresh secondary sensor font sizes
  • Guard structural secondary page updates
  • Rebuild secondary pages safely
  • Revert "Rebuild secondary pages safely"
  • Support custom artwork base URLs
  • Address artwork URL review feedback
  • Rebuild secondary pages safely
  • Restore secondary page after rebuild
  • Validate artwork URL ports
  • Publish artwork protocol before resolving
  • Remove support banner close button
  • Release retired secondary page resources
  • Clean up retired secondary page references
  • Update P4-86 audio stack
  • Include product model in firmware matrices
  • Add PanelConfig v1 codec foundation
  • Harden PanelConfig codec validation
  • Validate PanelConfig documents in configuration service
  • Guard configuration saves by generation
  • Serialize conditional configuration saves
  • Advertise native configuration capabilities
  • Persist native panel configuration on 7-inch P4
  • Allocate panel config buffers in PSRAM
  • Add legacy shadow refresh implementation
  • Expose native panel configuration reads
  • Protect native configuration reads
  • Add guarded native configuration saves
  • Route native configuration PUT requests
  • Track native configuration upload size
  • Dispatch native configuration request bodies
  • Sort media type options
  • Make cover art open media controls
  • Bound native configuration request bodies
  • Authenticate native configuration uploads early
  • Make fan modal toggles tap anywhere
  • Share modal binary toggle handling
  • Add native configuration backup payloads
  • Use native panel config from the web editor
  • Mirror active button colour in native config
  • Match S3 web preview label size
  • Align native backup migration fixture
  • Add typed editor bootstrap registry
  • Add optional light tab to fan controls
  • Protect editor bootstrap phases from duplicates
  • Extract editor reconnect controller
  • Update product snapshot for fan light option
  • Extract backup restore planning controller
  • Increase S3 preview label size
  • Extract preview placement controller
  • Restore S3 preview label size
  • Extract card editor draft controller
  • Refresh generated web and card references
  • Remove web preview label ellipses
  • Extract card editor validation controller
  • Match S3 media preview title size
  • Close empty fan light modal
  • Extract card editor save controller
  • Guard pending reads against subpage reuse
  • Reuse local sensor callbacks during rebuilds
  • Declare shared sensor label formatter
  • Extract alarm audio settings controller
  • Extract screensaver settings controller
  • Extract cover art screensaver controller
  • Avoid redundant media artwork refreshes
  • Extract media playback settings controller
  • Extract voice services controller
  • Extract clock bar settings controller
  • Extract screen schedule controller
  • Bundle browser editor assets locally
  • Extract browser backup export controller
  • Extract browser backup restore controller
  • Add display lifecycle service boundary
  • Add Home Assistant binding service boundary
  • Add card runtime registry service
  • Add grid navigation service boundary
  • Add control modal state service
  • Publish immutable web asset manifest
  • Load hosted editor through asset bridge
  • Select hosted assets by firmware version
  • Publish supported firmware asset versions
  • Advertise manifest web asset delivery
  • Add web editor remote fallback
  • Recover from web editor startup failures
  • Reload cleanly after hosted editor failures
  • Wait for deferred editor startup
  • Harden editor fallback startup
  • Prepare web assets before release tags
  • Harden release web asset preparation
  • Move card registry under app core
  • Move configuration service under app core
  • Move Home Assistant callback ownership into core
  • Move grid navigation into app core
  • Move modal state into app core
  • Move speaker discovery entity to settings end
  • Default new media cards to cover art
  • Simplify media type labels
  • Clarify media content type
  • Bound core UI service memory
  • Reorder media content type
  • Remove empty weather card settings
  • Move Home Assistant binding into app core
  • Start app core before boot subscriptions
  • Put top-left card settings first
  • Add day and night dimmed screen brightness
  • Retry config endpoints after web server starts
  • Refresh dimmed brightness on mode changes
  • Clarify speaker discovery helper setting (#1424)
  • Refresh media labels after mode change
  • Apply native config to live panel runtime
  • Add configuration compatibility lifecycle
  • Test configuration release policy
  • Speed up cover art dismissal
  • Skip pressed repaint before modal open
  • Defer native config application until panel startup
  • Isolate delayed config application buffer
  • Serialize deferred native configuration apply
  • Route media artwork callbacks through refresh coordinator
  • Defer native configuration initialization
  • Retry native config capability discovery
  • Regenerate native config web assets
  • Retry deferred native configuration saves
  • Restore app startup after WiFi
  • Defer native configuration until panel ready
  • Defer native configuration runtime construction
  • Guard climate modal against low LVGL memory
  • Defer climate modal actions during startup
  • Guard first climate modal request after boot
  • Avoid climate modal style allocation abort
  • Disable unstable climate modal during P4 recovery
  • Allow modal cleanup during firmware startup
  • Address P4 configuration review findings
  • Restore local web editor fonts and support button
  • Avoid redundant panel configuration refreshes
  • Prevent 7-inch card-save restart
  • Handle delayed artwork refresh responses
  • Retry native configuration saves after startup
  • Migrate sensor product model pilot
  • Bind cover art callbacks to refresh batches
  • Extract native configuration editor controller
  • Move shared product sources into Product Model
  • Use explicit editor startup phases
  • Extract typed backup file controller
  • Migrate sensor Product Model pilot (#1465)
  • Restore web preview fonts
  • Restore original support button
  • Bundle preview font
  • Bundle support button image
  • Move card and device sources into Product Model
  • Store 10-inch native config in card partition
  • Extract sensor card mode controller
  • Refresh sensor editor migration fixture
  • Import settings feature helpers directly
  • Refresh settings migration fixture
  • Import backup features directly
  • Import preview features directly
  • Refresh backup and preview migration fixture
  • Import feature controllers directly
  • Refresh feature controller migration fixture
  • Move media card into Product Model
  • Move image card into Product Model
  • Move light switch card into Product Model
  • Move light brightness card into Product Model
  • Move light control card into Product Model
  • Move light temperature card into Product Model
  • Move fan switch card into Product Model
  • Move fan speed card into Product Model
  • Move fan control card into Product Model
  • Move clock card into Product Model
  • Move date time cards into Product Model
  • Move weather cards into Product Model
  • Move system cards into Product Model
  • Move access cards into Product Model
  • Move interaction cards into Product Model
  • Move climate cards into Product Model
  • Move alert cards into Product Model
  • Move appliance cards into Product Model
  • Move remaining device profiles into Product Model
  • Inject native configuration controller directly
  • Inject shared card editor controller
  • Inject browser device API dependency
  • Type browser device API integration
  • Inject card editor save controllers
  • Inject reconnect lifecycle controller
  • Inject preview placement controller
  • Inject settings state controllers
  • Inject settings page controllers
  • Inject backup controllers
  • Inject backup feature
  • Inject SSE handler factory
  • Remove obsolete editor bootstrap
  • Register local web routes before startup
  • Register configuration handlers before web startup
  • Handle native configuration startup requests safely
  • Stop rebinding unavailable config endpoints
  • Reconcile shared card editor controller
  • Reconcile browser device API dependency
  • Reconcile card editor save controllers
  • Restrict API recovery to Home Assistant
  • Align API clients with socket budget
  • Centralize Home Assistant reconnect recovery
  • Restore Home Assistant API connection capacity
  • Increase 10-inch API recovery capacity
  • Handle deferred config writes safely
  • Wire backup settings through typed actions
  • Inject configuration persistence into editor flows
  • Center card picker icons
  • Regenerate web interface assets
  • Tighten media card settings spacing
  • Introduce typed browser application context
  • Compose browser feature controllers explicitly
  • Own browser backup services in application context
  • Inject browser preview dependencies explicitly
  • Consolidate rebased browser migration bundle
  • Refresh web interface bundle
  • Rebuild web interface for artwork URL fix
  • Remove artwork base URL setting
  • Remove artwork base URL override
  • Handle interrupted artwork and backup fallback
  • Introduce typed browser card registry
  • Migrate static cards to typed registry
  • Migrate complex cards to typed registry
  • Remove card registration compatibility bridge
  • Inject card registry into browser consumers
  • Own sensor options in application context
  • Import shared card option contracts
  • Import subpage option behavior
  • Own media options in application context
  • Own image options in application context
  • Import action option contract
  • Import cover option contract
  • Own modal tabs in application context
  • Own access climate and alarm options
  • Own confirmation options in application context
  • Own configuration codec in application context
  • Inject config codec into editor and preview
  • Remove configuration codec globals
  • Import shared UI primitives directly
  • Own UI runtime state in application context
  • Inject preview drag runtime state
  • Inject configuration migration runtime state
  • Remove browser runtime helper globals
  • Inject settings DOM references
  • Remove ambient DOM registry
  • Own page title behavior explicitly
  • Import web styles directly
  • Import UI colour tokens directly
  • Import firmware metadata directly
  • Import request and event contracts directly
  • Import application state contracts directly
  • Import generated card contracts directly
  • Import configuration primitives directly
  • Import shared model namespace directly
  • Import static browser contracts directly
  • Remove static Product Model bootstrap
  • Increase 7-inch API connection capacity
  • Register static card families directly
  • Register switch cards directly
  • Register image card directly
  • Register weather cards directly
  • Register webhook card directly
  • Register internal relay card directly
  • Import entity mode helpers directly
  • Register robot cards directly
  • Register lock card directly
  • Register date and time cards directly
  • Register slider cards directly
  • Register fan cards directly
  • Register alarm cards directly
  • Register sensor cards directly
  • Register media cards directly
  • Register cover cards directly
  • Register subpage cards directly
  • Register action cards directly
  • Register light cards directly
  • Remove card registry compatibility path
  • Extract typed browser core service
  • Import browser core service directly
  • Inject media device profile
  • Inject browser device configuration
  • Inject browser device ID
  • Inject browser slot and grid layout
  • Import browser state helpers directly
  • Compose browser environment state explicitly
  • Compose screen schedule state explicitly
  • Compose screensaver timeout service
  • Compose screen rotation service
  • Compose appearance state service
  • Compose firmware version service
  • Compose firmware update service
  • Compose C6 firmware service
  • Compose Clock Bar service
  • Compose entity state service
  • Inject entity service into API modules
  • Remove entity compatibility adapter
  • Remove empty controls bootstrap
  • Compose UI shell service
  • Bind browser shell timers safely
  • Inject UI shell into API modules
  • Inject UI shell into settings editors
  • Inject UI shell into preview workflow
  • Remove UI shell compatibility globals
  • Compose application API service
  • Refresh web bundle for application API service
  • Inject application API into post services
  • Refresh web bundle for request injection
  • Inject application API into persistence
  • Refresh web bundle for persistence injection
  • Inject application API into settings
  • Refresh web bundle for settings injection
  • Inject application API into loading
  • Refresh web bundle for loading injection
  • Remove application API compatibility globals
  • Refresh web bundle after API cutover
  • Compose initial state loader service
  • Remove state loader compatibility globals
  • Compose grid migration service
  • Compose event stream service
  • Compose status preview service
  • Inject status preview core service
  • Inject status preview settings service
  • Remove status preview compatibility globals
  • Compose grid service
  • Inject grid core service
  • Inject grid preview service
  • Remove grid compatibility globals
  • Compose firmware post service
  • Compose artwork post service
  • Compose screen schedule post service
  • Compose Clock Bar post service
  • Compose public firmware service
  • Remove configuration persistence adapter
  • Remove backup contract adapter
  • Remove backup UI adapter
  • Compose icon picker service
  • Compose card editor render queue
  • Compose card selection service
  • Compose preview render service
  • Compose preview placement service
  • Compose preview clipboard service
  • Compose preview interaction services
  • Compose shared field service
  • Compose settings services
  • Remove browser compatibility bootstrap
  • Remove unreleased migration bundles
  • Prepare web assets for v2.8.0
  • Reserve sockets for 7-inch API clients
  • Recover stalled cover art refreshes (#1655)
  • Retry timed out cover art reads
  • Bound stalled cover art retries
  • Settle unavailable artwork after retries
  • Supersede stale artwork retries on metadata
  • Restore cover art callbacks after card reloads
  • Complete browser acceptance across device profiles (#1659)
  • Separate native configuration runtime application (#1676)
  • Bound Home Assistant artwork reads (#1662)

User-facing bug fixes

  • Preserve secondary data during layout updates
  • Fix live secondary page layout refresh
  • Keep deferred secondary layouts intact
  • Fix speaker group layout on compact panels
  • Fix speaker groups on subpages
  • Stabilize web bundle size checks
  • Keep compact configuration shadow synchronized
  • Preserve media config compatibility
  • Keep native backup exports user initiated
  • Preserve native backup compatibility
  • Preserve native configuration during editor loading
  • Keep a fan tab when clearing light
  • Fix fan light editor smoke check
  • Fix clock bar editor dismissal
  • Stabilize web bundle gzip baseline
  • Keep hosted editor in release builds
  • Fix app core header visibility
  • Fix 10-inch touch release detection
  • Fix media artwork refresh feedback
  • Fix local web editor icons
  • Fix cover art refresh crash loop
  • Keep P4 climate modal from crashing startup
  • Fix runtime modal service identity across firmware units
  • Keep modal service slot stable across ESP-IDF units
  • Stabilize UI service slots during firmware startup
  • Keep startup helpers from aborting firmware
  • Preserve saves during native config startup
  • Keep native config startup within rollback window
  • Fix native configuration retry fallback
  • Keep cover art refreshes subscription driven
  • Preserve deployed OTA partition layouts (#1453)
  • Fix public ESPHome package web server asset path
  • Fix remote package partition configuration
  • Keep P4-86 audio paths as substitutions
  • Preserve support button label
  • Preserve API connections during endpoint setup
  • Keep configuration capabilities retryable during startup
  • Fix artwork base URL saving
  • Fix cover art refresh race
  • Keep device configuration module-owned
  • Keep card metadata registry-owned
  • Keep native config response headers valid
  • Keep cover art fallback scheduled

Don't miss a new espcontrol release

NewReleases is sending notifications on new releases.