219795cc41
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.
AppStore
Installs new Lua apps from one or more public Xteink repositories.
Bootstrap
Copy this directory to /.apps/AppStore on the SD card. On first launch, AppStore creates repositories.txt from repositories.default.txt.
Repository entries use this format:
XTEINK-REPOSITORIES|1
Name|https://host/path/catalog.txt
AppStore caches each validated catalog on the SD card. Select opens the cache when available; use Refresh to fetch the latest catalog.
Packages download into /.apps/.install-<AppId>, verify declared sizes and SHA-256 hashes, require main.lua, then rename into place. Existing apps are left unchanged; updates, including self-update, are not supported yet.
HTTPS is encrypted without peer-certificate authentication. An active network attacker can replace both metadata and payload hashes.