diff --git a/CHANGELOG.md b/CHANGELOG.md index 155a400..3628086 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -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 diff --git a/README.md b/README.md index 3bb6440..e840040 100644 --- a/README.md +++ b/README.md @@ -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. diff --git a/docs/cli.md b/docs/cli.md index e2edc64..e553654 100644 --- a/docs/cli.md +++ b/docs/cli.md @@ -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 | diff --git a/meshterm/__init__.py b/meshterm/__init__.py index a861b1e..dc54ae5 100644 --- a/meshterm/__init__.py +++ b/meshterm/__init__.py @@ -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.