Files
2026-07-25 22:34:38 -04:00

57 lines
1.6 KiB
Markdown

# 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/
<AppId>/
manifest.txt
main.lua
...
scripts/update-manifests.py
```
`catalog.txt` is line-oriented:
```text
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:
```text
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
1. Add or edit an `apps/<AppId>` 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.