Skip to content

NET-05: replace direct Wi-Fi toggle with bounded profile UI #544

Open

Description

@boburning

Work item

Implements v3 NET-05 — Wi-Fi UI on current main after merged NET-04A-D (#487–#490) and shared UI-05 (#502).

Current-main audit

Bloom Shell still models Wi-Fi as an inline toggle. A and left/right synchronously call bloom-network request enable|disable. That bypasses the guarded NET-04 profile/scan surface, conflicts with the transaction layer's explicit refusal to perform a sole-route remote Wi-Fi disable, and can leave the UI displaying desired state while association recovery is still unresolved.

Intended slice

  • replace the settings-row direct toggle with an explicit Wi-Fi detail surface built from shared Bloom UI components
  • keep Original Mini V1-V4 hidden and expose the surface only for qualified Plus/Flip capabilities
  • show desired, acquiring, associated, unavailable, operation, and recoverable-error states distinctly
  • consume only bounded, redacted NET-03/NET-04 profile and scan authorities
  • bound scan history/results, focus, retry, cancellation, profile selection, and stale-operation handling
  • keep passwords out of logs, status JSON, screenshots, durable Shell state, and command arguments; secret entry may reach only the fixed stdin profile boundary
  • remove direct A/left/right Wi-Fi disable from Settings and Quick Settings until a physically recoverable local disable contract is qualified
  • permit safe enable/reconcile and explicit profile-management operations without arbitrary command, path, SSID, or destination input
  • fail closed when the installed backend or schema is older than the UI

Safety and validation

Host fixtures will first cover malformed output, bounds, timeouts, stale operations, secret clearing, fixed argv/stdin, and nonblocking UI state. A Mini Plus gate may use a Hot/Warm Shell-only candidate for read-only status and synthetic /tmp fixtures. No real scan, association/profile transition, Wi-Fi disable, reboot, signed update activation, listener change, key mutation, or live credential entry is authorized until the host contract is green and an independently recoverable device step is explicitly reached.

Parent program: #434. Dependencies: NET-04 / #486 and UI-05 / #502.

Activity

  1. boburning commented on Aug 30, 2026

    @boburning
    OwnerAuthor

    PR #556 merged the host-only safe enable/reconcile slice as 4edb471. It intentionally adds no disable or profile-association path and did not deploy to the Mini Plus. Reopening this tracker because guarded profile association, complete state UX, and the required eventual device gate remain pending.

  2. boburning commented on Aug 31, 2026

    @boburning
    OwnerAuthor

    Read-only Mini Plus reconciliation on 2026-08-31:

    • installed known-good remains v0.1.0-dev-2933f706
    • Wi-Fi reports enabled and associated on the existing route
    • guarded network transaction is idle with no recovery lease
    • credential-free saved-profile projection is intentionally empty
    • disp04-shell-restore-b36e2eb6 remains the active Bloom Shell recovery overlay
    • no radio, profile, credential, route, listener, update, reboot, ROM, Save, or input mutation was attempted

    Because the profile store is empty, the saved-profile association gate cannot be exercised without recreating the exact high-risk mutation path that caused repeated rollback loops. NET-05 therefore remains in progress pending a deliberate later integrated checkpoint and physical walkthrough; this audit does not inflate remote evidence into physical certification.

    The installed baseline predates the merged exact BusyBox Telnet correction and a separate read-only listener audit found legacy port 23 active. Current main already contains the exact fced0821 correction; I did not run compatibility reconciliation or alter the device from this issue.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions