MeshTerm 0.3.3

This commit is contained in:
Jean-Pierre Martineau committed 2026-09-13 15:44:44 -04:00
1 parent 8a1bb875a7
commit 37ceb8e860
4 files changed
+61 -9

No files matched your search

+53 -1
View File
@@ -17,8 +17,19 @@ allowed to change behaviour, not just add to it.
## [Unreleased]
## [0.3.3] — 2026-09-13
### Added
- **`meshterm --version` answers**, and under `--mock` the `devices` command lists the
simulator as the one device and scans nothing — it used to walk the serial ports and
switch the Bluetooth radio on, on the first command a stranger without a radio would try.
- **[`docs/hardware.md`](docs/hardware.md)** is the one manual for putting MeshTerm on a
PicoCalc or a uConsole: the Calculinux bring-up, the console font, the XIAO UART radio from
parts to a verified link, the SPI bridge, and a closing list of what has only ever been
proven on one bench. The two script READMEs are short indexes pointing at it.
- **The standalone installers carry their own licences now.** Each one-file build
bundles `LICENSE`, `NOTICE` and a generated `THIRD-PARTY-NOTICES.txt` — every
MIT/BSD/PSF dependency's own licence text, gathered at build time from what that
@@ -84,6 +95,46 @@ allowed to change behaviour, not just add to it.
`key = value` with text in quotes. A line TOML refuses costs only that line, and a word
left unquoted (`log_level = DEBUG`) is still understood.
- **A trophy case record is a page, not a card floating over the list.** It fills the frame
like the browser under it and takes the node page's shape: a header line that reads as a
sentence — the discipline's mark, its standing and its score — over three tabs. *Info* is
the record's stats, identity first, with the page's actions at its foot; *Route* is the walk
two ways, the route graph and the route line, where Enter traces the path on show; *Area*
is the ground the walk covered, drawn across the whole stage with every pin labelled by its
hash byte so a pin and the graph node under it match by eye. Tab and Shift+Tab switch, F3 on
the PicoCalc. The trophy case itself fills the frame whichever way it is opened, from the
menu or from a trace.
- **A QR code is white on black, and when it is the answer it is the whole screen.** A camera
reads contrast, and light-on-dark is what a scanner expects of a screen, so every code
MeshTerm draws is pure white on pure black on both themes. A channel's share link and a
contact card are no longer a titled popup with an instruction over the code: they are a
bare frame with nothing on it but the code and the URL it encodes, and Esc leaves.
- **A question is a popup, and it is gone before the page it asked for opens.** The trace
target, the repeater admin's node and the TX optimize link used to stay pushed as full
screens under the page they led to, so Esc out of a trace or an admin page landed back on
the list it was picked from — two places where there is one. Each now floats over the main
menu, is popped before its page opens, and Esc from the page lands on the menu. The TX
optimize link is one box that turns its page (`… · step 1 of 2`): Esc on the second step
turns back with the picked node still highlighted. A refused admin login re-asks with the
same node highlighted.
- The three delay settings — TX delay, direct TX delay and RX delay — show, stage and send at
one decimal on both the repeater admin and Device config pages; Device config's RX delay
had no rounding at all.
- The source distribution ships the package, its tests and the manual, not
the repository: the Claude skills, the GitHub config, the PyInstaller spec and the device
scripts are out of it.
### Fixed
- **A share code's bottom-left finder was one cell skewed**, so a camera could not lock on.
Rich's centre justify strips a row's trailing spaces before padding it, so a code row whose
right edge was light modules landed a column off its neighbours. A code is now moved across
a line one way only, the same indent in front of every row.
## [0.3.2] — 2026-09-11
### Added
@@ -646,7 +697,8 @@ deliberately not reconstructed here.
- Two `TYPE_CHECKING` imports the test suite referenced but never imported, on paths that
happened never to run.
[Unreleased]: https://github.com/jpmartineau/MeshTerm/compare/v0.3.2...HEAD
[Unreleased]: https://github.com/jpmartineau/MeshTerm/compare/v0.3.3...HEAD
[0.3.3]: https://github.com/jpmartineau/MeshTerm/releases/tag/v0.3.3
[0.3.2]: https://github.com/jpmartineau/MeshTerm/releases/tag/v0.3.2
[0.3.1]: https://github.com/jpmartineau/MeshTerm/releases/tag/v0.3.1
[0.3.0]: https://github.com/jpmartineau/MeshTerm/releases/tag/v0.3.0
+6 -6
View File
@@ -79,14 +79,14 @@ if anything goes wrong at startup the window closes before you can read why.
**Windows** — open Windows Terminal or PowerShell, `cd` to your downloads, then:
```powershell
.\meshterm-0.2.8-windows-x64.exe
.\meshterm-0.3.3-windows-x64.exe
```
**macOS and Linux** — open Terminal, `cd` to your downloads, then:
```bash
chmod +x meshterm-0.2.8-*
./meshterm-0.2.8-*
chmod +x meshterm-0.3.3-*
./meshterm-0.3.3-*
```
### A word about terminals, on Windows
@@ -124,7 +124,7 @@ becomes just `meshterm` from anywhere.
> project.
>
> - **macOS**: *"cannot be opened because the developer cannot be verified"*. Clear it with
> `xattr -d com.apple.quarantine meshterm-0.2.8-*` and run it again.
> `xattr -d com.apple.quarantine meshterm-0.3.3-*` and run it again.
> - **Windows**: *"Windows protected your PC"*. Click **More info → Run anyway**.
>
> Every release ships a `SHA256SUMS` file if you'd rather check the download first.
@@ -134,10 +134,10 @@ becomes just `meshterm` from anywhere.
> MeshTerm uses that same folder. Set `MESHTERM_HOME` to try one in isolation:
>
> ```bash
> MESHTERM_HOME=~/meshterm-test ./meshterm-0.2.8-* # macOS, Linux
> MESHTERM_HOME=~/meshterm-test ./meshterm-0.3.3-* # macOS, Linux
> ```
> ```powershell
> $env:MESHTERM_HOME = "$HOME\meshterm-test"; .\meshterm-0.2.8-windows-x64.exe
> $env:MESHTERM_HOME = "$HOME\meshterm-test"; .\meshterm-0.3.3-windows-x64.exe
> ```
>
> Same variable if you run two radios and want them kept apart.
+1 -1
View File
@@ -1460,7 +1460,7 @@ each link; the scripted face prints the link alone.
**`--json`:**
```json
{"page":"discord","title":"Join Discord","version":"0.3.2","text":"Join the Discord\n Questions, ideas, bug reports, and mesh talk.\n\n • https://discord.gg/AZwe5Uvb3S","links":["https://discord.gg/AZwe5Uvb3S"]}
{"page":"discord","title":"Join Discord","version":"0.3.3","text":"Join the Discord\n Questions, ideas, bug reports, and mesh talk.\n\n • https://discord.gg/AZwe5Uvb3S","links":["https://discord.gg/AZwe5Uvb3S"]}
```
| Field | Type | Meaning |
+1 -1
View File
@@ -6,7 +6,7 @@ Supports USB, Bluetooth and TCP companion connection. For Windows, macOS and Lin
from datetime import datetime
__version__ = "0.3.2"
__version__ = "0.3.3"
__author__ = "Jean-Pierre Martineau"
#: The year MeshTerm was first published; the copyright span starts here.