57 lines
1.6 KiB
Markdown
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.
|