The stock image gives an app no text console, so MeshTerm draws its own: the TUI runs in-process with prompt_toolkit's output feeding a small VT parser, the cells are drawn in Terminus 6x12 with MeshTerm's marks over it, and keys go in through a pipe in xterm's spelling. The front end is the only part that differs: framebuffer and evdev on the device (written ahead of the hardware), a Tk window on the desktop. Each handheld's glyph inventory is now named by Platform.font, which replaces ascii_fold; the render-boundary fold derives its accents, emoji, and fallback from that inventory and quantizes colour only where truecolor is off. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
43 lines
2.3 KiB
Markdown
43 lines
2.3 KiB
Markdown
# scripts/
|
|
|
|
Repo-side tools. None of these ship in the wheel.
|
|
|
|
| Script | What it is for |
|
|
|---|---|
|
|
| `basemap-doctor.py` | Why a user's map has no basemap — certificates, DNS, proxy, or colour depth |
|
|
| `picocalc/` | Calculinux device setup: console font, palette, Wi-Fi; `xiao-radio/` is the XIAO radio kit (firmware build, flashing, UART setup) |
|
|
| `uconsole/` | The uConsole's always-on SPI bridge service (MeshTerm can also drive that radio directly, with no script at all — see `docs/uconsole.md`) |
|
|
| `cardputer/` | The Cardputer Zero's console host: `fetch-terminus.py` installs the 12-pixel Terminus fonts it draws in (OFL, so never shipped with MeshTerm) |
|
|
|
|
## basemap-doctor.py
|
|
|
|
The map is the only networked part of MeshTerm, and every fetch failure on that path is
|
|
logged at DEBUG while `log_level` defaults to WARNING — so a reader whose tiles never
|
|
arrive sees a blank ground and no explanation. This prints the explanation and the fix.
|
|
|
|
Send a user this, to run **on the machine with the problem**:
|
|
|
|
```bash
|
|
curl -fsSL https://raw.githubusercontent.com/jpmartineau/MeshTerm/main/scripts/basemap-doctor.py -o /tmp/basemap-doctor.py
|
|
python3 /tmp/basemap-doctor.py
|
|
```
|
|
|
|
Any `python3` will do: if that one has no MeshTerm, the script reads the interpreter out
|
|
of the installed `meshterm` command's shebang and hands itself over, so the answer always
|
|
comes from **the app's own Python** — a Mac routinely has three and only that one has the
|
|
trust store that matters. Save it to a file as above rather than piping into `python3 -`:
|
|
with no file on disk there is nothing to hand over.
|
|
|
|
Have them paste the whole output back. It names the interpreter, the certificate store,
|
|
the tile source, the cached-tile count, `COLORTERM`, and then one verdict:
|
|
|
|
- **curl reached it, Python did not** — the Python's certificate store is empty. A
|
|
python.org install on macOS ships that way until `Install Certificates.command` is run.
|
|
- **neither reached it** — the network path: a firewall, a proxy, a DNS filter, or an
|
|
outage. Nothing to fix in MeshTerm.
|
|
- **both reached it** — tiles are fine and the complaint is colour: an unset `COLORTERM`
|
|
means 256 colours, where the basemap's greens and blues collide. Terminal.app cannot do
|
|
24-bit colour at all.
|
|
|
|
Exit status is 0 when tiles arrive and 1 when they do not, so it can be scripted.
|