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.
Xteink Apps
App repository for CrossPoint Reader's Lua AppStore.
Catalog URL:
https://gitea.va.reichard.io/evan/xteink-apps/raw/branch/main/catalog.txt
Layout
catalog.txt
apps/
<AppId>/
manifest.txt
main.lua
...
scripts/update-manifests.py
catalog.txt is line-oriented:
XTEINK-CATALOG|1
<AppId>|<description>|<manifest path>|<manifest bytes>|<manifest SHA-256>
Each generated apps/<AppId>/manifest.txt contains every installable file in that app:
XTEINK-MANIFEST|1
<relative path>|<bytes>|<SHA-256>
App IDs use only letters, numbers, _, and -. Payload paths use ASCII letters, numbers, ., _, /, and -; empty files and traversal components are rejected. Descriptions come from the -- DESCRIPTION: line in each main.lua.
Compatible catalogs contain up to 64 apps, with at most 64 files, 8 MB per file, and 16 MB total per app. Catalogs are limited to 32 KB and manifests to 16 KB. Downloads are size- and SHA-256-checked. HTTPS is encrypted but the firmware does not authenticate peer certificates, so repository metadata is not protected against an active network attacker.
Adding or changing an app
-
Add or edit an
apps/<AppId>directory containingmain.lua. -
Regenerate metadata:
scripts/update-manifests.py -
Verify generated files are current:
scripts/update-manifests.py --check
Commit app payloads, manifests, and catalog.txt together. An app's root README.md is repository documentation and is intentionally excluded from its install manifest.