SpruceChat could be listed on PortMaster — an app store for Linux handhelds with ~1,000 ports and 18k+ Discord members. Non-game apps are welcome (KOReader, music players, etc. are already on there).
- Adapt launch script to PortMaster conventions —
portmaster/Spruce Chat.sh - Solve Python runtime — bundled via astral-sh/python-build-standalone (aarch64, 3.11, stripped)
- Package —
port.json,gameinfo.xml, README.md, licenses/ written; CI pulls system-lib copyrights - Refactor chat.py for PortMaster — SDL GameController input path + font fallbacks +
$XDG_DATA_HOMEsupport (spruceOS behavior preserved) - CI workflow —
.github/workflows/build.ymlhas aportmasterjob that reuses the universal aarch64 build and producesspruce_chat.zip - Trigger CI build — run the workflow and confirm
SpruceChat-PortMasterartifact builds cleanly - Smoke-test on an actual device — install the zip to a PortMaster-supported aarch64 handheld and confirm it boots + accepts input
- Split model for PR — in the port dir submitted to PortMaster-New, split the ~409MB model into
.part.NNpieces (≤50MB each, seetools/build_data.pyDEFAULT_CHUNK_SIZE). PortMaster's build pipeline reassembles at release time; no runtime assembly (removed in e988e6d). Our own CI still ships the full file. - Test on multiple CFWs — ArkOS, ROCKNIX, muOS, AmberELEC (required for PR acceptance)
- Test at multiple resolutions — chat.py now auto-detects via
SDL_GetCurrentDisplayModewhenSCREEN_WIDTH/HEIGHTenv vars aren't set. Confirm layout at 480×320, 640×480, 720×720, 1280×720+ - Join PortMaster Discord — post in
#testing-n-devto create a testing thread. PRs without testing docs are rejected - Submit PR to PortsMaster/PortMaster-New
The aarch64 universal build already covers many PortMaster-supported devices:
- Anbernic RG35XX Plus/H/SP (H700)
- Anbernic RG353 series (RK3566)
- TrimUI Smart Pro / Brick (A133Plus)
- Potentially Steam Deck (x86_64 — would need a separate build)
- Smaller/faster model options (SmolLM2-135M for snappier responses on slow devices)
- WiFi chat — llama-server already listens on
0.0.0.0:8086, document using a browser from another device on the same network - System prompt customization (let users edit personality via a config file)