镜像站点 · 本页由第三方 GitHub 只读镜像提供,非 GitHub 官方站点,不接受任何登录或凭据输入。前往 github.com
Skip to content

fix(display): end the scroll before the schedule-off blank and WiFi notice - #721

Merged
ChuckBuilds merged 1 commit into
mainfrom
claude/handover-wifi-schedule-off
Oct 2, 2026
Merged

ChuckBuilds merged 1 commit into
mainfrom
claude/handover-wifi-schedule-off

Conversation

@ChuckBuilds

Copy link
Copy Markdown
Owner

Why

#716 ends the scroll state at a scroller-to-static handover, but only for plugin screens: it hooks _dispatch_first_frame. The display controller draws two screens itself, so they never got it:

Both were found by the adversarial review of #716 and listed in docs/SCROLL_PERFORMANCE.md as a follow-up.

What

A new helper, DisplayController._end_scroll_before_core_screen(), calls display_manager.set_scrolling_state(False) (guarded with getattr like #716's helpers). It runs:

  • before _blank_while_scheduled_off clears the panel;
  • before _show_wifi_notice draws a pending notice. It does nothing when there is no notice.

With the state ended, _scan_segments sends the frame out as drawn and drops the history, the hold goes back to 1, and the frame is timed as static. A scroller or Vegas that resumes after the notice sets the state again on its next frame, as every scroller already does.

docs/SCROLL_PERFORMANCE.md drops the follow-up note. The one screen still composed after a scroll is an older static-image forced into the high-FPS loop. There is a CHANGELOG entry under Fixes.

Tests

test/test_handover_scroll_state.py::TestTheControllersOwnScreens uses a real emulator DisplayManager with ledpi's lag band. It checks that:

  • the schedule-off blank shows none of the ticker, and is timed as a static frame;
  • the WiFi notice shows none of the ticker, and is timed as a static frame;
  • with no notice pending, the scroll and its hold are left alone.

Mutation check: with the helper made a no-op, the first two fail (they see the ticker's red rows). With it, all pass.

Related suites pass: 419 tests, covering the run loop goldens, WiFi preemption, live takeover, controller, on-demand, pending changes, the exception breaker, dirty tracking, scan order and frame timing.

Not soaked: neither screen comes up in a normal rotation soak.

🤖 Generated with Claude Code

…otice

Both screens are drawn by the display controller, not dispatched to a
plugin, so #716's handover never reached them. Drawn while the last
scroll's state was still set, the schedule-off blank went out with the
ticker's lagging rows on a scan-compensated panel and stayed up for its
60 s dwell, and the WiFi notice's redraws (which #712 now shows over a
running scroller or Vegas) were timed as 0.5-1 s freezes of the old scroll
and logged as a mid-scroll Render stall. The controller now calls
set_scrolling_state(False) before drawing either; a scroller that resumes
sets the state again on its next frame.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@coderabbitai

coderabbitai Bot commented Oct 2, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Next included review available in 42 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: a9d77c11-6419-405c-ac74-42c655a2531e

📥 Commits

Reviewing files that changed from the base of the PR and between f72d69c and c3a971b.

📒 Files selected for processing (4)
  • CHANGELOG.md
  • docs/SCROLL_PERFORMANCE.md
  • src/display_controller.py
  • test/test_handover_scroll_state.py
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


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

Comment @coderabbitai help to get the list of available commands.

@codacy-production

Copy link
Copy Markdown

Up to standards ✅

🟢 Issues 0 issues

Results:
0 new issues

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@ChuckBuilds
ChuckBuilds merged commit 85be4bf into main Oct 2, 2026
13 checks passed
@ChuckBuilds
ChuckBuilds deleted the claude/handover-wifi-schedule-off branch October 2, 2026 00:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant