fix(wifi): port the provisioning, retry, and splash train from litclock-dev - #50
Merged
Merged
Conversation
…ck-dev File-level port of the wifi/provisioning seam of the litclock-dev #606-#631 train (dev PRs #606, #609, #610, #616, #619, #625, #629, #630, plus the #614 review-polish hunks that land in these files): - litclock-dev#606: redacted sentinel argv, post-validation SSID storage, honest litclock-update.timer comment - litclock-dev#609: snapshot-and-diff profile cleanup - failed attempts leave no armed NM profile - litclock-dev#610: retry surfaces reflect the actual failure class (WifiFailure carries failure_class; e-ink retry variants) - litclock-dev#616 + #630: a reused profile's PSK survives a failed connect - #630 passwd-file connect + editor-stdin restore is the working form (the #616 snapshot listing is rejected by real nmcli), and the PSK no longer transits nmcli argv (litclock-dev#599) - litclock-dev#619: page-build scan path serialized under _SCAN_CACHE_LOCK - litclock-dev#625: setup splash validates + clamps credentials, fixes the silent 10px font fallback - litclock-dev#629: hotspot --ssid/--password validated where the AP is created; /etc/issue box sized at runtime - litclock-dev#614 (partial): review-polish items in setup_server and the wifi test files Each file byte-verified against litclock-dev master modulo ref requalification; public-only content (the #529 Setup-Incomplete poweroff branch and its tests) preserved.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
File-level port of the wifi/provisioning seam of the litclock-dev #606-#631 train into the public repo. The companion PR ports the rest of the train; the two are file-disjoint and merge in either order.
What ships (dev PRs folded here)
--ask+ stdin, restore usesconnection editwith the secret fed on stdin. The version on public master today never fires.failure_class; e-ink retry variants; conditional banner advice)._SCAN_CACHE_LOCK.--ssid/--passwordvalidated where the AP is created; the/etc/issuebox is sized at runtime and tested for alignment across the full admitted credential range.Port method and verification
Per-file
public..devdelta against a per-file merge base, never wholesale copies of diverged files (the repos diverge bidirectionally). Every ported file was verified equivalent to litclock-dev master after normalizing thelitclock-dev#NNNref requalification; an independent review pass additionally confirmedwifi_provision.pyandeink_display.pyare AST-identical to dev, and traced every PSK path (stdin only, argv redacted on both result shapes, no temp secret files exist).Public-only content preserved and pinned by tests: the #529 Setup-Incomplete poweroff branch in
first-boot.sh(dev's "Or SSH in" copy stays replaced by "Unplug, then plug back in") plus itsTestSetupIncompletePoweroffclass, alongside dev's newTestIssueBoxAlignment.Gates on this branch's tree: ruff clean; pytest 3,098 passed (freetype-gated renderer tests executed locally in a freetype venv, zero relevant skips); the ported wifi suite also ran green from a clean archive export (370 passed).
One deliberate divergence from dev found in review and kept: a test fixture UUID token that carried a real-world SSID name was renamed to a neutral token.
Fleet impact
None until a release is tagged: OTA is tag-gated, so merging to master exposes nobody. This train is the substance of the planned v0.224.0. Fresh-flash QA on the bench Pi matters more than usual for that release because the WiFi stack changed shape under litclock-dev#630, and fresh-flash is exactly what exercises it.