The console font gains the two powerline chevrons, drawn into the next two donor slots (U+2559 and U+255B, which nothing draws), in both the 6x12 and the 6x8 builds. With them in its inventory, the PicoCalc's verdict is core, so its routes are ribbons of chips like the Cardputer's. A chip there can only be filled from the eight background slots, since under a 512-glyph font the VT has no bright backgrounds. So a node's chip is the dim twin of its hue (theme.DIM_TWIN), and its label is the hue itself: the colour the name has in every list and in arrow mode. A hash label and an annotation are that colour throughout. A keyless chip is white on light grey, the same pair one bank down. Our star, a faded hop and the composer's slot have no dark grey to stand on, so they stand on the page, the slot as a white + in a break of the ribbon. Two chips of one colour join on a thin chevron in that colour. Bold is brightness on the console, and Rich merges a selected row's bold into every span on it, which turned the dim fills bright. Every chip style there says "not bold"; the tests read the rendered row back through the emulator's VT to hold that. The new font takes effect once the font script runs again on the Lyra (as root). Until then the PicoCalc's installed font lacks the chevrons. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
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 |
cardputer-zero/ |
launcher-entry.sh puts a source checkout on the Cardputer Zero's app launcher (and remove takes it off), until there is a store package; meshterm.png is its icon, the website's logo at the launcher's 100×100. type-text.py types a pasted string (an API key, a Wi-Fi password) on the Cardputer's keyboard from another computer, over SSH |
picocalc-lyra/ |
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/devices/uconsole.md) |
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:
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.commandis 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
COLORTERMmeans 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.