evan c339a6161d feat(appstore): add app detail screen, cut catalog memory use
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.
2026-07-27 09:03:24 -04:00
2026-07-25 22:34:38 -04:00
2026-07-25 22:13:35 -04:00
2026-07-26 20:59:07 -04:00
2026-07-25 22:13:35 -04:00
2026-07-25 22:13:35 -04:00
2026-07-25 22:34:38 -04:00

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

  1. Add or edit an apps/<AppId> directory containing main.lua.

  2. Regenerate metadata:

    scripts/update-manifests.py
    
  3. 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.

S
Description
No description provided
Readme 128 KiB
Languages
Lua 82.2%
Python 9.2%
Shell 7.9%
Nix 0.7%