# Xteink Apps App repository for CrossPoint Reader's Lua AppStore. Catalog URL: ```text https://gitea.va.reichard.io/evan/xteink-apps/raw/branch/main/catalog.txt ``` ## Layout ```text catalog.txt apps/ / manifest.txt main.lua ... scripts/update-manifests.py ``` `catalog.txt` is line-oriented: ```text XTEINK-CATALOG|1 |||| ``` Each generated `apps//manifest.txt` contains every installable file in that app: ```text XTEINK-MANIFEST|1 || ``` 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 1. Add or edit an `apps/` directory containing `main.lua`. 2. Regenerate metadata: ```bash scripts/update-manifests.py ``` 3. Verify generated files are current: ```bash 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.