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.