Selecting an app now opens a detail window (name, state, description)
with Back / Install-Update-Reinstall / Delete, where delete needs
confirmation and refuses to remove AppStore itself. Install progress
replaces the button hints in that window instead of a full-screen status.
Catalog entries are kept as raw lines and expanded only for drawn rows,
and the catalog is released before net.wifiConnect() then rebuilt from
the SD cache, which is what caused OOM when bringing up Wi-Fi. Status
screens use REFRESH_FAST between updates rather than REFRESH_HALF.
Track the manifest hash in the installed tree so the catalog can mark apps
as installed or updatable, and swap trees via a backup on reinstall.
Drop the catalog cache: it doubled the failure paths for little gain now
that every open needs a fresh catalog to detect updates.
Use a FAST waveform when redrawing the same screen.
Select opens the cached catalog when its sidecar URL still matches, so
browsing costs no network or TLS memory; Refresh fetches. Caches are
replaced through a backup so an interrupted download cannot leave an
empty catalog behind.
Switch to structured log.debug/info/error milestones and add
BinaryKeyboard, a two-button recursive text entry experiment.