Skip to content

feat: Graph page, stale home values indicator and active climate preset - #587

Merged
edwardtfn merged 131 commits into
mainfrom
dev
Nov 2, 2026
Merged

edwardtfn merged 131 commits into
mainfrom
dev

Conversation

@edwardtfn

@edwardtfn edwardtfn commented Oct 23, 2026 •

Copy link
Copy Markdown
Owner

Highlights

A release shaped by the community

Most of the changes in this release come from contributors, which is what keeps this project moving. Thank you!

Graph page for the Home page values

Each of the four Home page values has a new Graph option. When it is enabled, tapping the value (or its icon) opens a page with a graph of the entity over the last 24 hours, one point per 5 minutes, together with the current value, the lower and upper bounds of the scale and the local time every 6 hours. The scale is automatic by default, and either bound can be fixed with the new Graph minimum and Graph maximum inputs. The graph is drawn from the recorder statistics of Home Assistant, so only sensors with a state_class of measurement or measurement_angle can be graphed. See docs/blueprint.md. Contributed by @JPicard90. (#579, #590)

Stale values indicated while Home Assistant is disconnected

When Home Assistant is unreachable for longer than a grace period (30 seconds by default), the home page no longer shows its last received values as if they were current. Chips from Home Assistant entities, the home custom buttons and the weather picture are hidden, the outdoor temperature and the home values are grayed out, and the indoor temperature falls back to the panel's own sensor. Short drops, like a Home Assistant restart, leave the display untouched, and the relay and embedded thermostat chips are not affected, as they are controlled locally. Everything is restored as soon as the connection is back, without waiting for a state change in Home Assistant. The grace period can be changed with the new api_stale_grace_period substitution, documented in docs/substitutions.md. (#519, #580)

Active climate preset on the climate page

The preset button on the climate page now shows which preset is active. For the standard presets (home, away, boost, comfort, eco, sleep and activity), the button shows the same icon Home Assistant uses for that preset, and it is highlighted while a preset is active. When no preset is active, or for custom presets, the button keeps the generic preset icon. This works for Home Assistant climate entities and for the embedded thermostat, where the panel updates the button itself, so it keeps working while Home Assistant is unavailable. (#613)

Bluetooth Proxy and TFT updates together

The documentation no longer recommends disabling Bluetooth Proxy for TFT updates. The TFT upload add-on releases the Bluetooth memory before the upload starts, so both add-ons can be enabled at the same time, including for automatic TFT updates. See docs/install.md and docs/addon_upload_tft.md. (#578, #584)

Improvements

Bug fixes

Documentation

  • Back up the original Sonoff firmware. The new docs/backup_stock_firmware.md explains how to back up the original firmware before the first flash, and how to restore it later. Each panel's original firmware holds unique device credentials that the first flash erases, so this backup is the only way to fully return a panel to its original state, for example to claim the warranty. (docs: Add guide to back up the original Sonoff firmware #618)
  • Network guide. The new docs/network.md covers the panel network settings: Wi-Fi, DHCP or a manual IP address, gateway and DNS, different subnets and VLANs, and the connection to Home Assistant. It also explains why the panel needs internet access (only to download the TFT from GitHub), what happens when it is blocked, and which firewall rules to use. The network examples moved there from docs/customization.md. (docs: Add network guide #623)
  • Outdated customization examples removed. The examples removing the web server and the captive portal were removed from docs/customization.md and docs/addon_espectre.md, as neither is part of the standard configuration anymore. (docs: Remove outdated web server and captive portal references #624)
  • ESPHome substitutions reference. The new docs/substitutions.md lists the substitutions you can set in your panel's YAML, with the default and the effect of each one. (docs: Add a reference of the ESPHome substitutions available to users #582)
  • Security policy and code of conduct. SECURITY.md explains how to report vulnerabilities privately, and CODE_OF_CONDUCT.md adopts the Contributor Covenant 3.0 for the repository, the Discord server and the Home Assistant Community forum thread. (docs: Add security policy and code of conduct #586)
  • AI usage. The new docs/ai_usage.md describes how AI is used in this project, how to identify posts from the panel-easy-assistant[bot] account, and the expectations for AI-assisted contributions. (docs: Add section on how AI is used in this project #585)
  • Simpler update instructions. The new Update NSPanel Easy section in docs/howto.md gives one path for the default configuration: update the firmware, let the TFT update automatically, then re-import the Blueprint. The README, the installation guide and the firmware version notification now point to it, and no longer ask to edit ref: or to follow a component update order. (Enhancement Clearer update instructions #588, docs: Simplify update instructions #589)

Other changes

Update notes

  • The firmware, the TFT and the Blueprint all change in this release. Follow Update NSPanel Easy in docs/howto.md: update the firmware, let the TFT update automatically, then re-import the Blueprint.
  • The Blueprint requires the firmware from this release. If the Blueprint is updated first, it shows a notification and stops until the firmware is updated.
  • If qrcode_restore_value is enabled, the QR code and its title are not restored on the first boot after the update. They are shown again once Home Assistant sends the code, and restored normally from then on.

Closes #519
Closes #579
Closes #588
Closes #591
Closes #593
Closes #598
Closes #601
Closes #619
Closes #625
Related to #478, #514, #548, #578 and #609

Summary by Sourcery

Improve resilience and transparency when Home Assistant is unavailable, expand ESPHome configuration documentation, and simplify panel maintenance guidance.

New Features:

  • Indicate Home Assistant-derived home-page values as stale after a configurable disconnection grace period and restore them immediately when the connection returns.
  • Document the available ESPHome substitutions, including the new stale-value grace-period setting.
  • Allow Bluetooth Proxy and TFT upload support to remain enabled together during automatic and manual TFT updates.

Bug Fixes:

  • Restore Blueprint-configured home-value colors after display restarts.
  • Update home custom-button visibility immediately when entities become unavailable.
  • Prevent climate-page refreshes from failing when event data lacks a previous state.
  • Improve weather picture selection and handling of unavailable sun or weather data.
  • Handle oversized subscribed entity IDs by clearing the binding and reporting the required buffer size.

Enhancements:

  • Refine home-page rendering fallbacks and refresh behavior when Home Assistant data becomes stale or fresh again.

CI:

  • Adjust link checking so Home Assistant Community forum links are recognized as valid.

Documentation:

  • Add a security policy, code of conduct, and documentation describing the project's AI usage.
  • Simplify the standard NSPanel Easy update workflow and update related installation and README guidance.

Chores:

  • Update contribution guidance to cover the Code of Conduct and AI-assisted contributions.

Summary by CodeRabbit

  • New Features

    • Added optional 24-hour history graphs for Home page values, with configurable bounds.
    • Added group toggle actions and clearer activation feedback for supported button-page entities.
    • Climate preset buttons show the active preset’s icon and highlight; weather icons reflect day and night when sun information is available.
  • Bug Fixes

    • After a configurable period without a Home Assistant connection, affected values and icons are greyed out or hidden, and indoor temperature falls back to the panel sensor. Values refresh when the connection returns.
    • Climate preset options refresh correctly, and text sizing better accounts for UTF-8 character widths.
  • Documentation

    • Added networking, firmware backup and restore, substitutions, community conduct, security, and AI-use guides. Consolidated update instructions and clarified TFT upload memory handling and entity ID size warnings. The minimum TFT version is now 22.3.

panel-easy-assistant Bot and others added 25 commits October 23, 2026 06:06
…ected

After the api_stale_grace_period substitution (default 30s) without Home Assistant, chips, home custom buttons and the weather picture are hidden, the indoor temperature falls back to the embedded sensor, and the outdoor temperature and the home values are greyed out. Everything recovers on reconnection without waiting for a state change.

Closes #519
Related to #514
docs: Add a reference of the ESPHome substitutions available to users
ci: Skip link checks for the Home Assistant community forum
feat: Indicate stale home page values while Home Assistant is disconnected
docs: Add section on how AI is used in this project
docs: Add security policy and code of conduct
…stence

docs: Remove outdated guidance to disable Bluetooth for TFT uploads
@coderabbitai

coderabbitai Bot commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

Review in Change Stack →

No actionable comments were generated in the recent review.

Recent review info
Run configuration
Commits

Reviewing files that changed from the base of the PR and between fe834b3 and 2b0574b.

Files selected for processing: 3
  • docs/backup_stock_firmware.md
  • docs/blueprint.md
  • nspanel_easy_blueprint.yaml
Files skipped from review as they are similar to previous changes: 1
  • docs/blueprint.md

Included review availability: This review used your included allowance. Your plan provides up to 2 included reviews per hour; 1 remain after this review.

Walkthrough

The pull request adds a recorder-backed graph page and stale API display handling. It also changes Blueprint and ESPHome behavior for bindings, buttons, climate presets, weather, text sizing, and QR codes. New policies and user guides cover security, networking, installation, updates, and project contributions.

Changes: Home-value history graphs

Layer / File(s) Summary
Graph data model and history calculations
components/nspanel_easy/page_graph.h, components/nspanel_easy/page_graph.cpp, components/nspanel_easy/pages.h
Adds graph configuration and history APIs, graph calculations, HMI component identifiers, and graph page registration.
Blueprint history flow and panel drawing
nspanel_easy_blueprint.yaml, esphome/nspanel_esphome_page_graph.yaml, esphome/nspanel_esphome_standard.yaml, hmi/dev/nextion2text/nspanel_*/graph.txt, docs/blueprint.md
Adds optional graph settings for four Home values. The Blueprint retrieves five-minute recorder statistics and sends history and updates to ESPHome. ESPHome draws and refreshes the page; both HMI layouts define graph components.

Stale API display handling

Layer / File(s) Summary
API stale-state lifecycle
components/nspanel_easy/base.cpp, components/nspanel_easy/base.h, esphome/nspanel_esphome_api.yaml, esphome/nspanel_esphome_api_subscribe.yaml
Adds a configurable grace period, stale-state updates on disconnection and reconnection, and subscription rerendering when stale state changes.
Subscription and home-page rendering
components/nspanel_easy/chips.cpp, components/nspanel_easy/chips.h, components/nspanel_easy/page_home.cpp, components/nspanel_easy/page_home.h, esphome/nspanel_esphome_page_home.yaml
Hides chips and selected home-page content while stale. Indoor temperature uses the panel sensor. Outdoor temperature and Blueprint-pushed values and icons are greyed out.

Blueprint and firmware behavior

Layer / File(s) Summary
Subscription bindings and text sizing
components/nspanel_easy/api_subscriptions.cpp, components/nspanel_easy/api_subscriptions.h, components/nspanel_easy/text.cpp, components/nspanel_easy/text.h, esphome/nspanel_esphome_page_entities.yaml
Binding comparisons now match targets instead of positions. Text length uses UTF-8 width weighting, with configurable entity-page font thresholds.
Buttons and climate presets
nspanel_easy_blueprint.yaml, components/nspanel_easy/addon_climate.h, esphome/nspanel_esphome_addon_climate_base.yaml, docs/blueprint.md, docs/addon_climate.md
Adds group button actions and changes momentary-indicator handling. Climate presets display preset icons and active-state colors.
Weather, QR codes, and display compatibility
nspanel_easy_blueprint.yaml, esphome/nspanel_esphome_page_qrcode.yaml, esphome/nspanel_esphome_version.yaml, hmi/dev/nextion2text/nspanel_*/boot.txt
Adds forecast day/night icon selection, bounds QR title length at a UTF-8 boundary, sets restore-data limits, and raises the minimum TFT version to 22.3.
Home-value and utility refresh behavior
nspanel_easy_blueprint.yaml, esphome/nspanel_esphome_page_utilities.yaml
Moves clearing of unconfigured home slots to startup or automation reload. Home-value updates also run while the graph page is open.

Policies and user documentation

Layer / File(s) Summary
Conduct, security, and AI contribution guidance
CODE_OF_CONDUCT.md, SECURITY.md, CONTRIBUTING.md, docs/ai_usage.md, README.md, docs/README.md
Adds conduct and security policies and documents AI use and contribution expectations. Project pages link to these resources.
Setup and reference guidance
docs/network.md, docs/substitutions.md, docs/backup_stock_firmware.md, docs/install.md, docs/customization.md, docs/README.md
Adds network, substitution, and stock-firmware backup guides. Installation and customization guidance changes the Bluetooth Proxy and network examples.
Update and feature documentation
docs/howto.md, docs/addon_upload_tft.md, docs/tft_upload.md, docs/different_version.md, docs/blueprint.md, docs/addon_climate.md, docs/addon_espectre.md, README.md, .rules/mlc_config.json
Revises update and TFT-upload instructions and documents graph, climate preset, and customization behavior. The link checker ignores Home Assistant community URLs.

CI maintenance

Layer / File(s) Summary
Validation tool versions
.github/requirements.txt, .github/workflows/*
Updates the pinned flake8 version and Python and Markdown validation action versions.

Estimated code review effort: 5 (Critical) | ~90 minutes

Change: Feature · Severity of issue fixed: Medium

Sequence Diagram(s)

sequenceDiagram
  participant HomeValue
  participant Blueprint
  participant Recorder
  participant ESPHomeGraph
  participant NextionGraph
  HomeValue->>Blueprint: Open graph for configured entity
  Blueprint->>Recorder: Request five-minute mean statistics
  Recorder->>Blueprint: Return history
  Blueprint->>ESPHomeGraph: Send graph configuration and history
  ESPHomeGraph->>NextionGraph: Draw graph
  ESPHomeGraph->>Blueprint: Request newer samples while graph is open
Loading

Suggested reviewers: actions-user

Merge Risk: Moderate · up to 2b057

Concurrent Blueprint updates can leave the panel with incorrect entity bindings and cause unnecessary restarts.

Pre-merge checks: Passed 3 · Failed 2

Failed Failed checks: 2 warnings

Check name Status Explanation Resolution
Linked Issues check Warning [#519] The stale-state flag, grace timer, reconnect refresh, and stale rendering behavior are implemented. [#588] The combined update guide documents the firmware, TFT, and Blueprint order. [#591] Unc… For [#579], either implement the issue's specified sampled-value and firmware ring-buffer design, or update the active requirement to explicitly accept recorder-statistics history. For [#593], add an explicit text-scaling enable/disable set…
Out of Scope Changes check Warning The direct linked targets cover stale home values, graphs, update instructions, API-set home values, entity-page scaling, climate refresh errors, hardware-button groups, QR restoration, and binding-pu… Move unrelated features and documentation to pull requests with matching active direct issues, or add active direct issue targets that define their coding scope. Keep changes that support [#519], [#579], [#588], [#591], [#593], [#598], [#60…
Passed Passed checks: 3 passed
Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title clearly identifies the primary changes: the graph page, stale home values indicator, and active climate preset behavior. It is concise and directly related to the changeset.
Docstring Coverage Passed Docstring coverage is inconclusive: files from earlier reviews still need to be rechecked within the check's analysis limits. Not blocking.
Full details: Linked Issues check

Explanation

[#519] The stale-state flag, grace timer, reconnect refresh, and stale rendering behavior are implemented. [#588] The combined update guide documents the firmware, TFT, and Blueprint order. [#591] Unconfigured home slots and API-set colors are preserved. [#598] Climate refresh tolerates missing old_state. [#601] Hardware-button entity and state-indicator selectors accept old-style groups. [#619] QR globals define restore lengths for the supported QR and title limits. [#625] Repeated staged targets restart the staging push. [#579] The implementation uses Home Assistant recorder statistics and transfers history, which does not meet the issue's specified Blueprint sampling and firmware ring-buffer design. [#593] The implementation adds font-length thresholds, but it does not provide an on/off control for text scaling. The change inventory identifies no new automated tests for the graph or scaling behavior.

Resolution

For [#579], either implement the issue's specified sampled-value and firmware ring-buffer design, or update the active requirement to explicitly accept recorder-statistics history. For [#593], add an explicit text-scaling enable/disable setting while preserving the documented default behavior. Add automated coverage for the new graph and scaling behavior where the repository test framework supports it.

Full details: Out of Scope Changes check

Explanation

The direct linked targets cover stale home values, graphs, update instructions, API-set home values, entity-page scaling, climate refresh errors, hardware-button groups, QR restoration, and binding-push concurrency. The reviewed changes also add active climate-preset display behavior, weather day/night handling, button-page behavior, screensaver brightness changes, Bluetooth Proxy and TFT workflow changes, network and firmware-backup guides, security, conduct and AI documents, API entity-length handling, utility-button changes, and CI tool updates. The supplied direct linked issues do not define these objectives. The changes are therefore not limited to the linked issue scope.

Resolution

Move unrelated features and documentation to pull requests with matching active direct issues, or add active direct issue targets that define their coding scope. Keep changes that support [#519], [#579], [#588], [#591], [#593], [#598], [#601], [#619], and [#625].

Finishing Touches
Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

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.

Share

@sourcery-ai

sourcery-ai Bot commented Oct 23, 2026

Copy link
Copy Markdown
Contributor

Reviewer's Guide

This release PR combines repository governance and security/AI transparency documentation with a firmware behavior change that detects prolonged Home Assistant disconnection, marks subscribed values stale after a configurable grace period, applies component-specific fallbacks or visual suppression, and re-renders cached state on reconnection; it also consolidates ESPHome substitution and Bluetooth/TFT configuration guidance.

Sequence diagram for stale Home Assistant value handling

sequenceDiagram
    participant HA as HomeAssistant
    participant API as api_server
    participant Timer as api_stale_timer
    participant Panel as NSPanel
    participant Render as api_stale_changed

    HA--xAPI: Disconnect state subscription
    API->>Timer: execute()
    Timer->>Timer: delay(api_stale_grace_period)
    Timer->>API: is_connected_with_state_subscription()
    API-->>Timer: false
    Timer->>Panel: api_stale = true
    Timer->>Render: execute()
    Render->>Panel: sub_render_all()
    Panel-->>Panel: Hide stale controls, grey values, or use local fallback
    HA->>API: Reconnect state subscription
    API->>Timer: stop()
    API->>Panel: api_stale = false
    API->>Render: execute()
    Render->>Panel: sub_render_all()
    Panel-->>Panel: Restore cached Home Assistant values
Loading

Flow diagram for stale home display rendering

flowchart TD
    A[Home Assistant state subscription disconnected] --> B{Grace period elapsed}
    B -- No --> C[Keep last display values]
    B -- Yes --> D[Set api_stale]
    D --> E[Hide chips, custom buttons, and weather]
    D --> F[Grey home values and outdoor temperature]
    D --> G[Use panel sensor for indoor temperature]
    E --> H{Home Assistant reconnects}
    F --> H
    G --> H
    H --> I[Clear api_stale]
    I --> J[Re-render cached bindings and restore colors]
Loading

File-Level Changes

Change Details Files
Introduces project governance, security reporting, and AI-transparency documentation.
  • Adds a Contributor Covenant-based code of conduct and reporting channels.
  • Adds a private vulnerability disclosure policy with supported-version and scope guidance.
  • Documents maintainer AI usage, data handling, and expectations for AI-assisted contributions.
  • Links the new policies from contributor, README, and documentation landing pages.
CODE_OF_CONDUCT.md
SECURITY.md
CONTRIBUTING.md
README.md
docs/README.md
docs/ai_usage.md
Adds a Home Assistant API staleness state with a configurable grace period and coordinated display recovery.
  • Tracks API value freshness globally and transitions it after a 30-second configurable disconnect grace period.
  • Hides stale chips, custom buttons, and weather; falls back to the local indoor temperature sensor; and greys stale outdoor/home values.
  • Re-renders subscriptions and page-home elements when connectivity freshness changes, preserving blueprint-pushed colors for restoration.
  • Adds stale-state scripts and lifecycle handling to the ESPHome API packages.
components/nspanel_easy/base.cpp
components/nspanel_easy/base.h
components/nspanel_easy/chips.cpp
components/nspanel_easy/chips.h
components/nspanel_easy/page_home.cpp
components/nspanel_easy/page_home.h
esphome/nspanel_esphome_api.yaml
esphome/nspanel_esphome_api_subscribe.yaml
esphome/nspanel_esphome_page_home.yaml
Expands and reorganizes user-facing configuration documentation.
  • Adds a comprehensive ESPHome substitutions reference, including API subscription entity-length configuration.
  • Updates API subscription and feature documentation links and descriptions.
  • Simplifies installation and TFT-upload guidance around the Bluetooth Proxy add-on and runtime memory handling.
docs/substitutions.md
docs/api_subscribe.md
docs/install.md
docs/addon_upload_tft.md
docs/tft_upload.md
Updates repository linting and release documentation metadata.
  • Extends the MLC rules configuration.
  • Adds the release-related documentation and policy references throughout the project.
.rules/mlc_config.json

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@panel-easy-assistant panel-easy-assistant Bot changed the title Release PR feat: Indicate stale home page values and document the ESPHome substitutions Oct 23, 2026
@panel-easy-assistant
panel-easy-assistant Bot marked this pull request as ready for review October 23, 2026 08:44
edwardtfn and others added 11 commits November 1, 2026 20:05
fix: Prevent concurrent binding pushes from mixing and restarting the panel
Bumps [flake8](https://github.com/pycqa/flake8) from 7.4.1 to 7.5.0.
- [Commits](PyCQA/flake8@7.4.1...7.5.0)

---
updated-dependencies:
- dependency-name: flake8
  dependency-version: 7.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps the actions-official group with 1 update: [actions/setup-python](https://github.com/actions/setup-python).


Updates `actions/setup-python` from 7.0.0 to 7.1.0
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](actions/setup-python@v7.0.0...v7.1.0)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: 7.1.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: actions-official
...

Signed-off-by: dependabot[bot] <support@github.com>
Bumps the actions-markdown group with 1 update: [DavidAnson/markdownlint-cli2-action](https://github.com/davidanson/markdownlint-cli2-action).


Updates `DavidAnson/markdownlint-cli2-action` from 24.2.0 to 25.0.0
- [Release notes](https://github.com/davidanson/markdownlint-cli2-action/releases)
- [Commits](DavidAnson/markdownlint-cli2-action@v24.2.0...v25.0.0)

---
updated-dependencies:
- dependency-name: DavidAnson/markdownlint-cli2-action
  dependency-version: 25.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: actions-markdown
...

Signed-off-by: dependabot[bot] <support@github.com>
…e8-7.5.0

build: bump flake8 from 7.4.1 to 7.5.0 in /.github
…ons-official-d87422eef0

ci: bump actions/setup-python from 7.0.0 to 7.1.0 in the actions-official group
…ons-markdown-7be0ce6664

ci: bump DavidAnson/markdownlint-cli2-action from 24.2.0 to 25.0.0 in the actions-markdown group
@panel-easy-assistant
panel-easy-assistant Bot marked this pull request as ready for review November 2, 2026 08:04
@sourcery-ai

sourcery-ai Bot commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

Sorry @panel-easy-assistant[bot], your pull request is larger than the review limit of 150,000 diff characters

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Linked issues

#519 Indicate stale home page values while Home Assistant is disconnected · 1 of 2 met

# Requirement Status Notes
1 Indicate stale home-page values using UnavailableBehavior 🟡 Partly met Stale values are indicated, but stale chips and custom buttons are hidden unconditionally instead of following the configured unavailable-entity behavior.
2 Recover on reconnect without waiting for a state change ✅ Met The reconnect path clears api_stale and re-renders cached subscription states.

#579 `Enhancement` Graph page for the history of a numeric sensor · 2 of 2 met

# Requirement Status Notes
1 Add an optional graph page for Home page sensor history ✅ Met The Blueprint adds per-value graph options and supplies recorder statistics for the graph page.
2 Show the current value, scale bounds and time axis ✅ Met The page draws the current value, min/max labels, bound lines and local-time ticks.

#588 `Enhancement` Clearer update instructions · 1 of 1 met

# Requirement Status Notes
1 Give clear instructions for updating a running panel ✅ Met The guide now presents firmware, TFT and Blueprint updates in one sequence and explains that the TFT normally updates automatically.

#591 `Bug` texts and icon set through API are now more visible if not configured in blueprint · 1 of 2 met

# Requirement Status Notes
1 Keep API-set values and icons on unconfigured Home page slots ✅ Met Unconfigured slots are cleared only when the Blueprint settings are refreshed, rather than whenever Home page values are updated.
2 Provide a setting to enable or disable clearing unconfigured slots 🟡 Partly met The change preserves API-set values during normal page updates, but does not add a setting; slots are still cleared on Blueprint reload or Home Assistant start.

#593 `Enhancement` entity pages text scaling switch · 1 of 1 met

# Requirement Status Notes
1 Allow users to turn entity-page value scaling on or off ✅ Met The configurable font thresholds let users keep the default font by setting both limits to 255, and the documented defaults preserve the existing scaling behavior.

#598 `Bug` NSPanel Easy Blueprint v2026.10.7 intermittently fails while refreshing the climate details page · 1 of 1 met

# Requirement Status Notes
1 Handle climate refreshes when old_state is absent ✅ Met The refresh template checks whether old_state exists before reading it and treats a missing prior state as a reason to push the options again.

#601 `Enhancement` Allow group entities for hardware buttons · 2 of 2 met

# Requirement Status Notes
1 Allow group entities as hardware-button entities and state indicators ✅ Met The group domain is added to both hardware-button selectors.
2 Toggle group members together according to the group state ✅ Met A press turns all members off when the group is on and on when it is off.

#619 QR code longer than 63 characters is not restored after reboot · 1 of 1 met

# Requirement Status Notes
1 Persist QR codes up to the Nextion component's supported length ✅ Met The QR string restore limit is set to 105 characters, and the title also receives an explicit restore limit.

#625 `Bug` Concurrent binding pushes interleave on automation reload; panels reboot twice · 1 of 1 met

# Requirement Status Notes
1 Prevent concurrent binding pushes from mixing ✅ Met A repeated target restarts staging, and staged bindings are compared with the live set by target rather than position.

Comment thread components/nspanel_easy/page_home.cpp Resolved
Comment thread nspanel_easy_blueprint.yaml Resolved
@edwardtfn

Copy link
Copy Markdown
Owner Author

@coderabbitai resume

@coderabbitai

coderabbitai Bot commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor
Action performed

Reviews resumed and review finished.

@edwardtfn

Copy link
Copy Markdown
Owner Author

@coderabbitai review

@sourcery-ai
sourcery-ai Bot dismissed their stale review November 2, 2026 08:25

Sourcery withdrew this approval because it has stopped reviewing this pull request.

@sourcery-ai

sourcery-ai Bot commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

Sourcery has withdrawn its approval of this pull request. It auto-reviews a pull request 5 times, and this push is past that limit, so the approval no longer reflects code Sourcery has read.

Comment @sourcery-ai review to get a fresh review, which can approve again.

Re-reviews, rate limits and approvals

@edwardtfn

Copy link
Copy Markdown
Owner Author

@sourcery-ai review

@sourcery-ai

sourcery-ai Bot commented Nov 2, 2026

Copy link
Copy Markdown
Contributor

Sorry @edwardtfn, your pull request is larger than the review limit of 150,000 diff characters

@coderabbitai coderabbitai Bot left a comment •

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

  • Fix comments: Fix CodeRabbit comments on this PR

Comment thread docs/backup_stock_firmware.md Resolved
Comment thread nspanel_easy_blueprint.yaml Resolved
@coderabbitai

coderabbitai Bot commented Nov 2, 2026 •

Copy link
Copy Markdown
Contributor
Action not completed

No files to review.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment