Codacy (pylint access-member-before-definition) on #403: the throttled
early-return read _wifi_status_last_result relying on the non-local
invariant that the first call always passes the throttle window and
assigns it. Correct at runtime, but fragile — initialise both throttle
fields in the constructor and drop the getattr fallback.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FqzC1nzTWL4kaqgMaQZFam
- _check_wifi_status_message stat'd the status file on every render
iteration (60+ fps) for a message whose lifetime is seconds; throttle
the check to 1 Hz with a cached result.
- Demote the per-iteration "Display active, processing mode" INFO to
DEBUG and convert the remaining eager f-string logs to lazy % args —
the devpi baseline showed ~9 journald lines/sec, which is both noise
and SD-card wear.
- Vegas cycle-end blank frame: hoist the inline PIL import and reuse a
preallocated buffer instead of allocating per cycle wrap.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FqzC1nzTWL4kaqgMaQZFam