Repository navigation
Releases: jpmartineau/MeshTerm
Release list
MeshTerm 0.11.5
Install
One file, no Python needed.
macOS — paste these into Terminal. Use curl, not your browser: a browser
flags the download and macOS then refuses to open it at all, and on Sequoia and
later right-click → Open no longer gets you past it. curl flags nothing, so it
simply runs.
curl -fL -o meshterm https://github.com/jpmartineau/MeshTerm/releases/download/v0.11.5/meshterm-0.11.5-macos-arm64
chmod +x meshterm
./meshtermThat is the build for Apple silicon Macs (M1 and later). On an Intel Mac, swap
arm64 for x64.
Linux — the same three lines with linux-x64, or linux-arm64 on a uConsole
or another 64-bit ARM handheld.
curl -fL -o meshterm https://github.com/jpmartineau/MeshTerm/releases/download/v0.11.5/meshterm-0.11.5-linux-x64
chmod +x meshterm
./meshtermWindows — download meshterm-0.11.5-windows-x64.exe, then run it from Windows
Terminal or PowerShell rather than by double-clicking, so you can read anything it
says on the way up.
.\meshterm-0.11.5-windows-x64.exeCardputer Zero — install MeshTerm from M5Stack's app store on the device. The
same package is attached below as meshterm_0.11.5-1_arm64.deb.
Every binary below is listed in SHA256SUMS. The version-less copies —
meshterm-macos-arm64 and its four siblings — are the same binaries under a name
that never changes, for anything that wants whichever release is newest without
being told its number. Installing with pip or pipx, and the rest of the
detail.
What changed
The Courier outbox is a table, and Enter opens the message of an entry. Each section of
the outbox has column headers, and each row shows its full message. A table that is wider
than the screen pans with ←→, and does not cut its rows. A footer hint that is too wide
keeps its Esc.
Changed
- The Courier outbox is a table with column headers. A waiting entry shows TARGET,
TRIGGER, and MESSAGE. A finished entry shows TARGET, OUTCOME, and MESSAGE. Nothing is
shortened to fit. When the table is wider than the screen, ←→ pan the rows and their
headers together, and the footer says so. The column headers stay at the top with their
section heading while the section scrolls. Typing still narrows the outbox. - Enter on a Courier entry opens its message. On a waiting entry, Enter opens the
message so that you can edit it. The courier holds the entry while the prompt is open, so
the old text cannot go out while you edit. On a finished entry, Enter shows the message.
The menu of an entry is gone: ^R sends a waiting entry now, and Del deletes an entry after
a red confirm. On the PicoCalc and the Cardputer Zero,Sendis on F3, withDelete
behind it on Shift+F3. - The message field of the Courier has the colours of the chat's compose line: a white
prompt mark and white text.
Fixed
- A footer hint that is too wide keeps its Esc. The footer line cut a hint that was too
wide at the right edge, and Esc, the last atom of each hint, went with the cut. Now the
footer removes atoms in front of Esc, as the splash already did. - A cut in the text next to a chip ends on an ellipsis. When a row had a chip and then
text, and the text ran past the screen, the cut drew a half block in the colour of the
chip at the right edge. Now the half block is only for a cut inside a path, and a cut in
plain text ends on….
You ❤️ MeshTerm? Please give the repository a ⭐. It helps other MeshCore users find it, because GitHub ranks projects by stars in its search and topic pages. 🙏
MeshTerm 0.11.4
Install
One file, no Python needed.
macOS — paste these into Terminal. Use curl, not your browser: a browser
flags the download and macOS then refuses to open it at all, and on Sequoia and
later right-click → Open no longer gets you past it. curl flags nothing, so it
simply runs.
curl -fL -o meshterm https://github.com/jpmartineau/MeshTerm/releases/download/v0.11.4/meshterm-0.11.4-macos-arm64
chmod +x meshterm
./meshtermThat is the build for Apple silicon Macs (M1 and later). On an Intel Mac, swap
arm64 for x64.
Linux — the same three lines with linux-x64, or linux-arm64 on a uConsole
or another 64-bit ARM handheld.
curl -fL -o meshterm https://github.com/jpmartineau/MeshTerm/releases/download/v0.11.4/meshterm-0.11.4-linux-x64
chmod +x meshterm
./meshtermWindows — download meshterm-0.11.4-windows-x64.exe, then run it from Windows
Terminal or PowerShell rather than by double-clicking, so you can read anything it
says on the way up.
.\meshterm-0.11.4-windows-x64.exeCardputer Zero — install MeshTerm from M5Stack's app store on the device. The
same package is attached below as meshterm_0.11.4-1_arm64.deb.
Every binary below is listed in SHA256SUMS. The version-less copies —
meshterm-macos-arm64 and its four siblings — are the same binaries under a name
that never changes, for anything that wants whichever release is newest without
being told its number. Installing with pip or pipx, and the rest of the
detail.
What changed
You can lock a contact from more places, and a serial radio that stops when your laptop
wakes from sleep opens the reconnect dialog. In the archive preview, ⇧Del keeps a contact
out of each sweep that follows. In a conversation and on the Contacts list, ^K locks a
contact or unlocks it, and a locked sender has a padlock on its chip. The battery gauge of
the Cardputer Zero stays on with the Cap.
Added
- In the archive preview, Shift+Delete keeps a contact out of the sweep and locks it.
Delete keeps a contact out of this sweep only. ⇧Del also locks the contact, so that no
sweep that follows can take it. MeshTerm writes the lock when you select Apply, with the
archive. Esc and Back ask before they discard a lock that is not written yet. If you lock
each contact in the preview, Apply only writes the locks. On the PicoCalc and the
Cardputer Zero,Lockis on Shift+F3, behindDelete. - ^K locks the author of a message in a channel, a direct chat, and a room. Select a
message and press ^K. Press it again to unlock the author. The status line tells you what
the key did. On the PicoCalc and the Cardputer Zero,Lockis on Shift+F2 in a channel
and in a direct chat. In a room, Shift+F2 isLog in, so there the page of the author
(Shift+F3) hasLock contactorUnlock contact. - ^K on the Contacts list locks the highlighted contact or unlocks it. The padlock of
the row changes at once. On the handhelds,Lockis on Shift+F2. - A locked sender has a padlock on its chip in a chat. The chip reads
🔒 Name
(⚿ Nameon the PicoCalc), in the place where our own chip has its★.
Changed
- The selected message of a chat makes its chips white. The text of the selected
message was already white. Now the mention chips in it, and the chip of its author, have
a white label too. Each chip keeps its fill, so you can still tell the nodes apart. A
mention of an unknown node is white on its grey fill. - In the archive preview, the footer says
Enter openon a contact, because Enter opens
its node page.
Fixed
- A serial radio that stops when your laptop wakes from sleep opens the reconnect
dialog. When a laptop wakes, the kernel can reset the USB device and close the open
port, but keep the same device file. MeshTerm still saw the port in the list of ports, so
it thought that the link was up. No reconnect dialog opened, and each command failed with
no_event_received(issue #32). Now the check also reads the connection flag of the
client, as the Bluetooth and TCP checks already did. - The battery gauge of the Cardputer Zero stays on with the Cap. On battery with the
Cap, most reads of the gauge failed, sometimes for almost two minutes. The gauge read
three times in 11 seconds and then waited 20 seconds, so it missed the good periods.
After seven failed reads, the gauge went away. Now MeshTerm tries again 5.5 seconds after
a failed read, and the last good reading stays for 10 minutes. A change between charging
and discharging must be read two times, because a bad read said "Charging" while the
battery discharged.
You ❤️ MeshTerm? Please give the repository a ⭐. It helps other MeshCore users find it, because GitHub ranks projects by stars in its search and topic pages. 🙏
MeshTerm 0.11.3
Install
One file, no Python needed.
macOS — paste these into Terminal. Use curl, not your browser: a browser
flags the download and macOS then refuses to open it at all, and on Sequoia and
later right-click → Open no longer gets you past it. curl flags nothing, so it
simply runs.
curl -fL -o meshterm https://github.com/jpmartineau/MeshTerm/releases/download/v0.11.3/meshterm-0.11.3-macos-arm64
chmod +x meshterm
./meshtermThat is the build for Apple silicon Macs (M1 and later). On an Intel Mac, swap
arm64 for x64.
Linux — the same three lines with linux-x64, or linux-arm64 on a uConsole
or another 64-bit ARM handheld.
curl -fL -o meshterm https://github.com/jpmartineau/MeshTerm/releases/download/v0.11.3/meshterm-0.11.3-linux-x64
chmod +x meshterm
./meshtermWindows — download meshterm-0.11.3-windows-x64.exe, then run it from Windows
Terminal or PowerShell rather than by double-clicking, so you can read anything it
says on the way up.
.\meshterm-0.11.3-windows-x64.exeCardputer Zero — install MeshTerm from M5Stack's app store on the device. The
same package is attached below as meshterm_0.11.3-1_arm64.deb.
Every binary below is listed in SHA256SUMS. The version-less copies —
meshterm-macos-arm64 and its four siblings — are the same binaries under a name
that never changes, for anything that wants whichever release is newest without
being told its number. Installing with pip or pipx, and the rest of the
detail.
What changed
No log keeps a password or a secret, and a bug report can hide your home folder and the
address of your radio. Passwords, channel secrets, and pairing PINs went into the log and
the run log as plain text, and this release removes them, also from the old records. The new
Anonymize preference masks your personal details in the log and in the diagnostics. The
demo mesh now looks more like a real one.
Added
- The Anonymize preference masks your personal details in the log and in the
diagnostics. It is in the Diagnostics group of the Preferences page, and it is off by
default. When it is on, MeshTerm masks the account name in your home folder, the
Bluetooth address of your radio, IP addresses, and the name of a network companion. Each
masked value keeps a few characters, in the way that a card number prints as
51xx xxxx xxxx 4571:C:\Users\j*********u,DA:xx:xx:xx:7C:7C,192.xxx.x.180, and
m******e.local. Thus a maintainer can still tell two radios apart. The log masks each
line as MeshTerm writes it, and a change applies at once. A line that MeshTerm wrote
before you turned the preference on stays as it is. - The diagnostics can be anonymized for one report.
meshterm diagnostics --anonymize
masks the report, and--no-anonymizeshows it in full when the preference is on. On the
Diagnostics page, pressa(Shift+F3 on the PicoCalc) to change between the two forms,
andssaves the form that you see. A new fact,anonymized, says which form a report
is.
Changed
- The demo mesh uses the regions of the real mesh. The regions are
na,can,
onqc,qc, andyul, each one inside the one before it. The#montrealchannel sends
inyul. The invented regions are gone. - In the demo, messages arrive as they do on a real mesh. Most messages arrive two
times, through the two repeaters that our node hears, and most paths use three bytes for
each hop. A node that our node mentions in a channel answers a few seconds later. TX
optimize now has something to find: the power of a repeater changes how well the next
node hears it.
Fixed
- The log and the run log no longer keep passwords or secrets. At the DEBUG level, the
log file showed the parameters of each command as you typed them, and the run log in the
database kept them at each level. Thus they held room and admin passwords, channel
secrets, channel links, and the pairing PIN ofconfig set device_pin. Each chat run also
stored the secret of its channel. Now MeshTerm writes<secret>in the place of each
one, in the log file, on the console, and in the run log, always. The rule finds a secret
by its name, by its form (a remotepasswordcommand, orsecret=in a link), and by
its value, when MeshTerm has read or sent that secret before. The first start of this
version removes the secrets that earlier versions stored in the run log. - The remote command line no longer stores a new password in its history. The history
keepspasswordandset guest.passwordwithout the value, so ↑ still recalls the
start of the command. - An error about the device PIN no longer repeats the PIN that you typed.
You ❤️ MeshTerm? Please give the repository a ⭐. It helps other MeshCore users find it, because GitHub ranks projects by stars in its search and topic pages. 🙏
MeshTerm 0.11.2
Install
One file, no Python needed.
macOS — paste these into Terminal. Use curl, not your browser: a browser
flags the download and macOS then refuses to open it at all, and on Sequoia and
later right-click → Open no longer gets you past it. curl flags nothing, so it
simply runs.
curl -fL -o meshterm https://github.com/jpmartineau/MeshTerm/releases/download/v0.11.2/meshterm-0.11.2-macos-arm64
chmod +x meshterm
./meshtermThat is the build for Apple silicon Macs (M1 and later). On an Intel Mac, swap
arm64 for x64.
Linux — the same three lines with linux-x64, or linux-arm64 on a uConsole
or another 64-bit ARM handheld.
curl -fL -o meshterm https://github.com/jpmartineau/MeshTerm/releases/download/v0.11.2/meshterm-0.11.2-linux-x64
chmod +x meshterm
./meshtermWindows — download meshterm-0.11.2-windows-x64.exe, then run it from Windows
Terminal or PowerShell rather than by double-clicking, so you can read anything it
says on the way up.
.\meshterm-0.11.2-windows-x64.exeCardputer Zero — install MeshTerm from M5Stack's app store on the device. The
same package is attached below as meshterm_0.11.2-1_arm64.deb.
Every binary below is listed in SHA256SUMS. The version-less copies —
meshterm-macos-arm64 and its four siblings — are the same binaries under a name
that never changes, for anything that wants whichever release is newest without
being told its number. Installing with pip or pipx, and the rest of the
detail.
What changed
In a chat, your messages show your name, MeshTerm has a demo mesh, and the colours are
calmer. Your messages and each mention of you are now easy to find in a chat.
meshterm --demo runs a whole mesh over Montréal with no radio. The greys have no blue in
them, the borders are grey, and the node marks are white.
Added
meshterm --demoruns MeshTerm in a demo mesh over Montréal. No radio is
necessary. The demo has approximately forty invented nodes: repeaters on the high points
of the city, room servers, sensors, and the people of the mesh. It has a week of traffic,
conversations on the channels, in a room, and in direct messages, and traces with their
records in the trophy case. Each run starts from the same state, in a directory of its
own, so your history never gets a node of the demo. The screenshots in the README and on
the website come from it.
Changed
- In a chat, your messages show your name. A channel, a direct chat, and a room put
your messages under★and your node's name, and the Messages list shows them in the
same way. Your name is white, on the same colour of box that your key gives each chip,
where each other sender has the colour of its key as the text. A mention of your name
has the same white text, and the message that has it gets a white★at the left of
its time. Thus the messages that name you are easy to find down the left side of the
chat. Before, your messages showed only the★. - Your node's star is white. The
★that marks your node on the map, in routes, in
lists, and in a chat is white, the same white as your name in the lists. Before, it was
yellow. A star in a faded part of a route stays grey. - The greys are neutral, and the borders are grey. Each grey of MeshTerm is now a
neutral grey, with no blue in it, at the same lightness as before. A plain border is
grey, where it was indigo. The amber and red borders of a caution keep their colours. - Each node mark is white. The marks of a companion, a repeater, a room server, and a
sensor (●,▲,■,◉) are white, because the shape already shows the type. Before,
they had four colours. The mark of an unknown node (○) stays grey. - A section heading has the colour of the title of its frame, and it has no icon.
- In a chat, a name that MeshTerm cannot match to a node is black on grey. The box
around a sender or a mention with no known node has black text on a grey box. Thus it
does not stand out among the coloured names. Before, it was light blue on slate. - A mention has no
@in front of it. The coloured box around the name already says
that it is a mention. On a terminal that cannot draw the boxes, a mention keeps its@. - The line where you write a message shows each mention as a box. When you type the
]of@[Name], or reply to a message, the mention changes into the same coloured box
that the chat shows after you send it. The arrow keys move over the box in one step, and
one Backspace removes all of it. A reply now puts its mention where the cursor is, so you
can name more than one person in one message. The text that you type is white. - On the uConsole and the Cardputer Zero, an imported seed stays a seed. MeshTerm saves
a 32-byte seed in the node'sidentity.keyas you give it. This is the same form that
the node uses when it makes its own key. A firmware companion still gets the full 64-byte
key, because it accepts only that form. - A blank line comes before each section. In each list that has sections (the main
menu, the Messages list, the Preferences page, Device config, and the others), the line
comes before each section heading. In a chat, it comes after the messages of each author
and before each new day. Thus the parts of a screen are easier to find, and a
conversation is easier to follow when many people write. By default, the line shows on a
terminal of 24 rows or more. A smaller terminal, and the 14 rows of the Cardputer Zero,
keep each row for content. The new Section spacing preference in the Display group
sets the smallest terminal that gets the line: any height, 20, 24, 30, or 40 rows, or
never. - The About page has a section on the Cardputer Zero. It says that MeshTerm runs on the
Cardputer Zero and on the Cardputer Zero Lite.
You ❤️ MeshTerm? Please give the repository a ⭐. It helps other MeshCore users find it, because GitHub ranks projects by stars in its search and topic pages. 🙏
MeshTerm 0.11.1
Install
One file, no Python needed.
macOS — paste these into Terminal. Use curl, not your browser: a browser
flags the download and macOS then refuses to open it at all, and on Sequoia and
later right-click → Open no longer gets you past it. curl flags nothing, so it
simply runs.
curl -fL -o meshterm https://github.com/jpmartineau/MeshTerm/releases/download/v0.11.1/meshterm-0.11.1-macos-arm64
chmod +x meshterm
./meshtermThat is the build for Apple silicon Macs (M1 and later). On an Intel Mac, swap
arm64 for x64.
Linux — the same three lines with linux-x64, or linux-arm64 on a uConsole
or another 64-bit ARM handheld.
curl -fL -o meshterm https://github.com/jpmartineau/MeshTerm/releases/download/v0.11.1/meshterm-0.11.1-linux-x64
chmod +x meshterm
./meshtermWindows — download meshterm-0.11.1-windows-x64.exe, then run it from Windows
Terminal or PowerShell rather than by double-clicking, so you can read anything it
says on the way up.
.\meshterm-0.11.1-windows-x64.exeCardputer Zero — install MeshTerm from M5Stack's app store on the device. The
same package is attached below as meshterm_0.11.1-1_arm64.deb.
Every binary below is listed in SHA256SUMS. The version-less copies —
meshterm-macos-arm64 and its four siblings — are the same binaries under a name
that never changes, for anything that wants whichever release is newest without
being told its number. Installing with pip or pipx, and the rest of the
detail.
What changed
Show private key shows the key again, and the uConsole and the Cardputer Zero can import
an identity key. On each device, the menu showed the warning of Show private key and no
key. On the handhelds that MeshTerm drives over SPI, an import of a key failed. An import
now also reads a file and accepts a 32-byte seed. MeshTerm no longer keeps the private key
in its history of commands.
Added
- You can import an identity key from a file. On Device config, Identity key… has
a new row, Import from a file…. On the command line,config import-key --from PATH
does the same. The file can hold the key as hex text, asexport-key --outwrites it, or
as raw bytes, as theidentity.keyof a node keeps it. - An import accepts a 32-byte seed. The node that MeshTerm runs on an SPI radio keeps
its key as a seed. A firmware companion accepts only the full 64-byte key. Thus MeshTerm
makes the full key from the seed, in the same way as the firmware, before it sends it.
A key of the wrong length now stops at the prompt, before you confirm the import.
Fixed
- Show private key shows the key again. On Device config, Identity key… → Show
private key showed its warning and no key. This occurred on each device since 0.10.0.
On the command line,meshterm config export-keyalways printed the key.
(#26) - You can import a key on the uConsole and on the Cardputer Zero. On these handhelds,
MeshTerm runs the node itself, and that node refused each import. Now MeshTerm writes
the key into the node'sidentity.key, and then restarts the node to use it.
(#26) - A firmware that does not accept an imported key says so. Some firmware builds turn
the import off. MeshTerm waited until the command timed out, and then showed a refusal
with no cause. - The private key no longer stays in MeshTerm's history. MeshTerm stores the arguments
of each command that it runs. The key that you gave toconfig import-keywas stored
there as plain text. Now MeshTerm stores<secret>in its place, and when this version
opens your database for the first time, it removes the keys that earlier versions
stored. - Only you can read an exported key file.
config export-key --outand Export to a
file… now write the file with mode 0600, as MeshTerm writes each other file that holds
a secret. Before, the other users of the computer could read it.
If MeshTerm is useful to you, please give the repository a ⭐. It helps other MeshCore users find it, because GitHub ranks projects by stars in its search and topic pages.
MeshTerm 0.11.0
Install
One file, no Python needed.
macOS — paste these into Terminal. Use curl, not your browser: a browser
flags the download and macOS then refuses to open it at all, and on Sequoia and
later right-click → Open no longer gets you past it. curl flags nothing, so it
simply runs.
curl -fL -o meshterm https://github.com/jpmartineau/MeshTerm/releases/download/v0.11.0/meshterm-0.11.0-macos-arm64
chmod +x meshterm
./meshtermThat is the build for Apple silicon Macs (M1 and later). On an Intel Mac, swap
arm64 for x64.
Linux — the same three lines with linux-x64, or linux-arm64 on a uConsole
or another 64-bit ARM handheld.
curl -fL -o meshterm https://github.com/jpmartineau/MeshTerm/releases/download/v0.11.0/meshterm-0.11.0-linux-x64
chmod +x meshterm
./meshtermWindows — download meshterm-0.11.0-windows-x64.exe, then run it from Windows
Terminal or PowerShell rather than by double-clicking, so you can read anything it
says on the way up.
.\meshterm-0.11.0-windows-x64.exeCardputer Zero — install MeshTerm from M5Stack's app store on the device. The
same package is attached below as meshterm_0.11.0-1_arm64.deb.
Every binary below is listed in SHA256SUMS. The version-less copies —
meshterm-macos-arm64 and its four siblings — are the same binaries under a name
that never changes, for anything that wants whichever release is newest without
being told its number. Installing with pip or pipx, and the rest of the
detail.
What changed
MeshTerm supports the Cardputer Zero, and from a message you can open its author on the
map or on a node page. Each release now has a package for the Cardputer Zero, and the
release sends it to M5Stack's app store. In a chat or on the board of a room, ^L opens the
map on the author of a message, and ^O opens the page of that node. A name that two nodes
use at the same time is now grey, because MeshTerm cannot tell which node wrote the
message. On the handhelds, a channel, a direct chat, and a room have the same F-key chips.
Added
- MeshTerm supports the Cardputer Zero. Each release has a Debian package for the
handheld,meshterm_<version>-1_arm64.deb, and the release also sends it to M5Stack's
app store. The package has all that MeshTerm needs, which includes the radio library for
the Cap LoRa-1262 and the font of the display. Install it from the store on the
handheld, or from the release page. The store shows a new app after M5Stack examines
it. The Cardputer Zero
page
has the details. - ^L shows a node on the map from a chat and from Contacts. In a chat or on the board
of a room, select a message and press ^L. The map opens on the node that wrote it. On
the Contacts page, ^L opens the map on the highlighted contact. The key works only when
MeshTerm knows where the node is, and the hint at the bottom of the screen names it only
then. On the handhelds, the chip isMap, on F3. - ^O opens the page of the node that wrote a message. In a chat or on the board of a
room, select a message and press ^O. The node page opens, the same page that the
Contacts list opens. For a message of yours, the page of your own node opens. The key
works only when the author is one of your contacts. On the handhelds, the chip is
Author, on Shift+F3.
Changed
- ^L is now the map key, and ^G logs in to a room. On the map and in the mesh walk, ^L
goes back to your own node. That key was ^Y. On the board of a room, ^G logs in. That
key was ^L. - A channel, a direct chat, and a room have the same F-key chips. On the handhelds,
F1, F2, and F3 arePaths,URL→QR, andMapon the three screens. With Shift, these
keys hold what only one screen has:RetryorResend, andLog inon a room. The
Day ↑andDay ↓chips are gone. On the desktop, ^PgUp and ^PgDn still move from one
day to the next. - A name that two nodes use at the same time is grey. A channel message names its
sender only by the name that the sender typed, and any node can use any name. When two
nodes used the same name within a week, MeshTerm cannot know which one wrote the
message. Thus the name is grey, as an unknown node is, and ^L and ^O do not open
anything for it. When the old node has been quiet for longer than that, the name goes
to the node heard most recently, because a radio that is flashed again gets a new
identity. Before, MeshTerm chose one of the two nodes, often the old one. The new
Shared names preference on the Preferences page sets the week. - Chips show where a route starts and where it ends. Where your terminal draws path
chips, the author of a message has a point on the right of its chip. A mention is a chip
with a notch on its left. The packet viewer, the live feed, the Messages list, and the
courier show the sender and the recipient in the same way. - Enter on the live feed keeps it on the newest packet. When the live feed follows new
packets (the pin at the top), Enter opens the packet viewer, and the viewer also follows
new packets. The feed stays on the pin. Before, Enter stopped the feed on one packet.
Enter on a packet that you selected still opens that packet and holds it.
Fixed
- The page of a contact shows its map preview again. On a terminal of 24 rows, the
action rows left too little space, and the preview was gone. Now the preview keeps its
size and the page scrolls. Only the short display of the Cardputer Zero leaves it out. - The PicoCalc's radio recovers when a byte is lost on its serial line. One lost or
damaged byte could make the XIAO wait for data that never came. Then each start of
MeshTerm said "No response from meshcore node". The firmware that the PicoCalc guide
builds now drops an incomplete command after 200 ms of silence. To get this repair, build
and flash the firmware again, as the guide says. The steps of the guide that install
PlatformIO and flash the XIAO are also correct now.
If MeshTerm is useful to you, please give the repository a ⭐. It helps other MeshCore users find it, because GitHub ranks projects by stars in its search and topic pages.
MeshTerm 0.10.3
Install
One file, no Python needed.
macOS — paste these into Terminal. Use curl, not your browser: a browser
flags the download and macOS then refuses to open it at all, and on Sequoia and
later right-click → Open no longer gets you past it. curl flags nothing, so it
simply runs.
curl -fL -o meshterm https://github.com/jpmartineau/MeshTerm/releases/download/v0.10.3/meshterm-0.10.3-macos-arm64
chmod +x meshterm
./meshtermThat is the build for Apple silicon Macs (M1 and later). On an Intel Mac, swap
arm64 for x64.
Linux — the same three lines with linux-x64, or linux-arm64 on a uConsole
or another 64-bit ARM handheld.
curl -fL -o meshterm https://github.com/jpmartineau/MeshTerm/releases/download/v0.10.3/meshterm-0.10.3-linux-x64
chmod +x meshterm
./meshtermWindows — download meshterm-0.10.3-windows-x64.exe, then run it from Windows
Terminal or PowerShell rather than by double-clicking, so you can read anything it
says on the way up.
.\meshterm-0.10.3-windows-x64.exeEvery binary below is listed in SHA256SUMS. The version-less copies —
meshterm-macos-arm64 and its four siblings — are the same binaries under a name
that never changes, for anything that wants whichever release is newest without
being told its number. Installing with pip or pipx, and the rest of the
detail.
What changed
You can join room servers, move your channels to a new device, and find the public
channels that MeshTerm heard. On the handhelds, paths are chips, QR codes are braille, and
the map no longer freezes. MeshTerm now logs in to a room server, reads its board, and
posts to it. The Channels page exports and imports all your channels, and its channel guide
adds a public channel that MeshTerm heard on the mesh. You can hold Esc to quit. The
Cardputer Zero runs MeshTerm for the first time, but it is not supported yet.
Added
- You can join a room server, read its board, and post to it. A room server is a message
board on a radio. The new Rooms page, next to Channels, lists each room server that
your radio knows, with the rooms that you joined first. Each room has a page: join, log in
again, change the password, open the board, forget the room, or delete its stored posts.
MeshTerm asks for the room password one time and remembers it. On the board, each post
shows under the member who wrote it. Joined rooms are in Chat, and their new posts count
toward the unread badge. A read-only member sees why the room drops their posts, instead
of a compose line. A room does not answer a wrong password. Thus, when a login gets no
answer, MeshTerm says what it knows and offers one next step: try by flood, try again, or
add the room as a contact first. ^L logs in again (F6 on the handhelds). The new
preferenceroom_relogin_minutes(30 by default) sets how long a room can be quiet before
MeshTerm logs in again by itself. On the command line, usemeshterm rooms list,
rooms join, androoms forget.chat send --toposts to a room, andchat history
names the author of each post. To try it with no radio,meshterm --mockhas a room,
Lakeside BBS, with the passwordhello.
(#24) - You can export your channels to a file, and import them on another device. A new
device has only Public. On the Channels page, the new section "Export and import" has two
rows. Export channels writes each channel to one file, with its key, its send scope,
and its mute. Import channels reads the file on the new device. It shows its plan
first, then it adds the channels in the order of the file. It never removes a channel.
The file holds the keys of your private channels, so keep it private. A file from
config backupalso imports. On the command line, usemeshterm channels export FILEand
meshterm channels import --file FILE.
(#25) - The channel guide lists the public channels that MeshTerm heard, and adds one with
Enter. It is the first row of "Add a channel" on the Channels page. The channels that are
not on your device come first. Each row shows the number of messages heard, the age of the
last one, and seven days of activity. A packet gives its channel only as a hash, so
MeshTerm tries names: the channels of your device, each#namein a stored message, and
each region that it knows. A guessed name must match two messages or more. A private
channel never shows. On the command line, usemeshterm channels guide.
(#25) - You can hold Esc to quit. Where MeshTerm can see that the Esc key is held, a hold of one
second shows a dialog, and a hold of three seconds quits. This works in a Windows terminal,
on a Linux console where MeshTerm can read the keyboard (the PicoCalc and the uConsole), in
the emulator, and on the Cardputer Zero. A tap of Esc still goes back one screen. On macOS
and over SSH, Esc does not change. MeshTerm also quits cleanly when the system sends it
SIGTERM, for example at shutdown. meshterm emulateshows the display of a handheld in a window on your desktop.
meshterm emulate picocalc-lyra --mockandmeshterm emulate cardputer-zero --mockdraw
MeshTerm as that handheld draws it, with its font, its colours, and its F-key lane. Run
meshterm emulate --fetch-fontsone time first. It copies the limits of the display and
of the keyboard. It does not run the processor or the system of the handheld.- On the PicoCalc, each link in a chat message has a QR code under the message. Point a
phone at the code to open the link. On the desktop and on the Cardputer Zero, select a
message and press ^U to show its links as QR codes, one at a time. ←→ go to the next code. - A link with no
https://is a link too.meshterm.net/mapandwww.example.orgnow
open and get a QR code, butfile.txtstays text. MeshTerm knows the real top-level
domains from the list of IANA. - On a page that is taller than the screen, the arrows reach its top and its bottom. With
the highlight on the first row, ↑ scrolls the page up one line. With the highlight on the
last row, ↓ scrolls it down. Thus the text above the first row and below the last row is
always available. Home and End go to the ends of the page. This applies to each screen
with a highlight. On the trace screen, ↓ now goes on into the results. - MeshTerm runs on the M5Stack Cardputer Zero, but it is not supported yet. It draws on
the display itself, opens from the app launcher of the device, and reads its battery. The
Cap LoRa-1262 works with--spiand no setup. When you set the custom variablegpsto
1, the GPS of the Cap moves your node. For now, you must install MeshTerm from the source
code. Read the Cardputer Zero page
before you try it.
Changed
- A path chip shows the colour of its node on a darker ground of the same colour. Before,
a chip had dark text on the colour of the node. Thus the colour moved from the name to the
ground. Now a node has one colour in a list, in an arrow path, and in a chip. - The PicoCalc and the Cardputer Zero draw paths as chips. Before, they drew arrows. On
the PicoCalc, run the console font script again to get the two new glyphs (refer to
the PicoCalc page). - On the PicoCalc and the Cardputer Zero, each QR code is drawn in braille. A code is half
the size, so a contact card and its link fit on one screen. On the handhelds, the braille
dots now fill their cell, so the charts and the map draw solid lines. - The handhelds have new platform names:
picocalc-lyraandcardputer-zero. If you use
--platform picocalcorMESHTERM_PLATFORM=picocalc, change it topicocalc-lyra.
MeshTerm refuses the old name. MeshTerm finds the PicoCalc by itself, so most users have
nothing to change. - ^Y finds your own node on the map and in the mesh walk. It was ^U, which now shows the
QR codes of a chat message. - The trace screen draws the link of each hop as a path line. A long name no longer
pushes the table past the edge of the screen. - The device screen shows each field whole. A long address no longer cuts the name. The
address is last, and ←→ scroll a wide row. - The documents are in ASD-STE100 Simplified Technical English, with Canadian spelling.
Short sentences and one word for each concept make them easier to read, also when English
is not your first language. The documents are now in folders:docs/guide,docs/cli,
docs/devices, anddocs/development. - Section headings are dark grey, not the colour of the frame.
- The chat list reads CONVERSATION, NEW, LAST, and MESSAGE. The Channels list reads NEW over
the unread count. - On the desktop, the map uses the full width between the side borders.
- The legend of the node types says "room" instead of "room server". Thus it fits on one
line on a handheld. - On the PicoCalc, F3 in the quit dialog quits, because F3 on the main menu opened it.
- On the F-key lane, the scope chip and the window chip show only the name, so a region name
gets all six cells. - A chart keeps a fixed width for its axis labels. Thus it no longer moves sideways when the
peak grows. - The Support page sends bug reports to the Discord server.
- On the uConsole, the radio of the AIO shows as "uConsole AIO".
Fixed
- A full battery shows 100% on Linux and macOS. A full T1000-E showed 9 or 10%. The
battery was correct, but MeshTerm drew one column pa...
MeshTerm 0.10.2
Install
One file, no Python needed.
macOS — paste these into Terminal. Use curl, not your browser: a browser
flags the download and macOS then refuses to open it at all, and on Sequoia and
later right-click → Open no longer gets you past it. curl flags nothing, so it
simply runs.
curl -fL -o meshterm https://github.com/jpmartineau/MeshTerm/releases/download/v0.10.2/meshterm-0.10.2-macos-arm64
chmod +x meshterm
./meshtermThat is the build for Apple silicon Macs (M1 and later). On an Intel Mac, swap
arm64 for x64.
Linux — the same three lines with linux-x64, or linux-arm64 on a uConsole
or another 64-bit ARM handheld.
curl -fL -o meshterm https://github.com/jpmartineau/MeshTerm/releases/download/v0.10.2/meshterm-0.10.2-linux-x64
chmod +x meshterm
./meshtermWindows — download meshterm-0.10.2-windows-x64.exe, then run it from Windows
Terminal or PowerShell rather than by double-clicking, so you can read anything it
says on the way up.
.\meshterm-0.10.2-windows-x64.exeEvery binary below is listed in SHA256SUMS. The version-less copies —
meshterm-macos-arm64 and its four siblings — are the same binaries under a name
that never changes, for anything that wants whichever release is newest without
being told its number. Installing with pip or pipx, and the rest of the
detail.
What changed
Harder to leave by accident, a scope picker on the dashboard and the Time Machine, and
T-Deck Bluetooth pairing. Esc no longer walks you into the quit dialog, ^Q asks before it
quits, both traffic screens can narrow to one region, and a T-Deck on MeshOS or wadamesh
pairs like any other companion.
Added
- The dashboard and the Time Machine can show one scope at a time. Press
s(F3 on the
dashboard, F2 on the Time Machine, on the PicoCalc) to step through all traffic, unscoped
floods, each region heard, and floods of an unknown scope. The charts, counts, and signal
figures narrow to that scope, and the title says which one you are looking at. A direct
packet has no scope, so it only counts under all. - The Channels list leads with each channel's slot number.
- The Contacts title counts archived contacts too, and shortens itself on a narrow screen.
Changed
- Esc at the main menu no longer opens the quit dialog. Pressing Esc again and again is
the natural way back to the menu, and the presses that landed after you got there used to
ask whether you wanted to quit. Now Esc stops at the menu (it still clears a typed
filter), and you leave through the Quit row or ^Q. - ^Q asks before it quits, from any screen. It sits right next to ^W, which goes back to
the menu, so one slip used to close the app, along with any capture or queued message.
Now it opens the same dialog as the Quit row, whatever you were doing keeps running
behind it, and Esc puts you back. Pressing ^Q a second time quits straight away. The main
menu names it:^Q quit?on the hint line, or, on the PicoCalc, in the title bar, with
Quit? on F3 and Quit! (no question) on Shift+F3. - The dashboard counts each packet once. Its traffic list used to count an advert twice,
once as the device reported it and once as the frame it arrived in. It now counts frames
heard on the air, under the same names and colours as the live feed. - The splash screen has new art, and its white letters no longer come out grey.
- The Support page's Patreon link is shorter, and so is its QR code.
Fixed
- A T-Deck running MeshOS or wadamesh pairs over Bluetooth. Those firmwares refuse the
first message until the device is paired, and MeshTerm read the silence as "this isn't a
MeshCore companion", so the PIN prompt never came. It now recognises the refusal and
pairs the way it does with any other companion. On Windows, a mistyped PIN also no longer
leaves behind a half-made pairing that made the next, correct attempt fail. - Rebooting from Device config shows the reconnect dialog straight away. A board behind
a USB serial adapter could restart without MeshTerm noticing, and it kept sending
commands to a board that was mid-restart. Over Bluetooth, the reboot also no longer waits
a second or more for a reply the restarting board never sends.
If MeshTerm is useful to you, please give the repository a ⭐. It helps other MeshCore users find it, because GitHub ranks projects by stars in its search and topic pages.
MeshTerm 0.10.1
Install
One file, no Python needed.
macOS — paste these into Terminal. Use curl, not your browser: a browser
flags the download and macOS then refuses to open it at all, and on Sequoia and
later right-click → Open no longer gets you past it. curl flags nothing, so it
simply runs.
curl -fL -o meshterm https://github.com/jpmartineau/MeshTerm/releases/download/v0.10.1/meshterm-0.10.1-macos-arm64
chmod +x meshterm
./meshtermThat is the build for Apple silicon Macs (M1 and later). On an Intel Mac, swap
arm64 for x64.
Linux — the same three lines with linux-x64, or linux-arm64 on a uConsole
or another 64-bit ARM handheld.
curl -fL -o meshterm https://github.com/jpmartineau/MeshTerm/releases/download/v0.10.1/meshterm-0.10.1-linux-x64
chmod +x meshterm
./meshtermWindows — download meshterm-0.10.1-windows-x64.exe, then run it from Windows
Terminal or PowerShell rather than by double-clicking, so you can read anything it
says on the way up.
.\meshterm-0.10.1-windows-x64.exeEvery binary below is listed in SHA256SUMS. The version-less copies —
meshterm-macos-arm64 and its four siblings — are the same binaries under a name
that never changes, for anything that wants whichever release is newest without
being told its number. Installing with pip or pipx, and the rest of the
detail.
What changed
Three small fixes to the command line. A mistyped records --width now says so instead
of looking like an empty result, the simulator's row in devices loses a stray (), and
two help pages read like the rest.
Fixed
meshterm records --widthrefuses a width that doesn't exist. Hash widths are 1, 2,
or 4. Any other number used to look like an empty result, so a typo and an empty
database gave the same answer, and--width 0was ignored and listed every width. Now
it's a usage error that names the three choices, like--categoryalready was.- The simulator's row in
meshterm --mock devicesno longer ends in an empty().
The brackets hold a serial port, and the simulator doesn't have one. meshterm platform --helpandmeshterm specimen --helpread like the others. They
used to print notes meant for someone reading the source code, markup and all, and cut
their summaries short inmeshterm --help. Now each has one plain line.
If MeshTerm is useful to you, please give the repository a ⭐. It helps other MeshCore users find it, because GitHub ranks projects by stars in its search and topic pages.
MeshTerm 0.10.0
Install
One file, no Python needed.
macOS — paste these into Terminal. Use curl, not your browser: a browser
flags the download and macOS then refuses to open it at all, and on Sequoia and
later right-click → Open no longer gets you past it. curl flags nothing, so it
simply runs.
curl -fL -o meshterm https://github.com/jpmartineau/MeshTerm/releases/download/v0.10.0/meshterm-0.10.0-macos-arm64
chmod +x meshterm
./meshtermThat is the build for Apple silicon Macs (M1 and later). On an Intel Mac, swap
arm64 for x64.
Linux — the same three lines with linux-x64, or linux-arm64 on a uConsole
or another 64-bit ARM handheld.
curl -fL -o meshterm https://github.com/jpmartineau/MeshTerm/releases/download/v0.10.0/meshterm-0.10.0-linux-x64
chmod +x meshterm
./meshtermWindows — download meshterm-0.10.0-windows-x64.exe, then run it from Windows
Terminal or PowerShell rather than by double-clicking, so you can read anything it
says on the way up.
.\meshterm-0.10.0-windows-x64.exeEvery binary below is listed in SHA256SUMS. The version-less copies —
meshterm-macos-arm64 and its four siblings — are the same binaries under a name
that never changes, for anything that wants whichever release is newest without
being told its number. Installing with pip or pipx, and the rest of the
detail.
What changed
Regions, a uConsole with no bridge, and Bluetooth that works on Linux. MeshTerm now
speaks MeshCore's regions: it reads and edits them on a repeater, keeps a channel's messages
inside one, and tells you which region any flood it hears was sent into. It drives the
uConsole's LoRa radio itself. And connecting is far less of a mystery: a PIN-protected
companion pairs on Linux, and a connection that fails says which step failed and what to do.
Added
- MeshTerm drives the uConsole's LoRa radio itself, without the bridge service. A radio
on this machine's own SPI bus is now a connection like USB, Bluetooth, or TCP: pick
SPI radio on the device screen, or runmeshterm --spi, andmeshterm deviceslists
it beside everything else. MeshTerm starts the node when it connects and stops it when it
quits, so the radio is free for other programs whenever MeshTerm is closed — even after a
crash. The node keeps its identity, name, radio settings, channels, and contacts in
~/.meshterm/radio/, and the first time it runs it takes over the bridge's identity and
contacts, so it stays the node everyone already knows. It needs the radio library
(pipx inject mesh-term 'openhop-core[hardware]'), and a board wired differently from
the AIO v1 states its pins in a profile'sspitable. The bridge is still there for a
node that should stay on the mesh while MeshTerm is closed.
(#21) - A repeater's regions, read and edited. A repeater's node page shows the regions it
relays floods for, and whether it relays unscoped floods too; Ask which regions it
carries asks it once (a repeater answers only a neighbour, or over a known route).
Repeater admin gains a Regions page for the whole tree: allow or deny floods per region
and for unscoped traffic, set the home and default scope, add and remove regions, and save.
Every edit takes effect at once on the repeater, and a reboot undoes whatever was not
saved, so the page counts your unsaved edits and asks before you leave with any. A tree
too big for one reply is said to be cut, and the rest is recovered from the repeater's own
lists. On the command line,meshterm regions NODEasks the same question. - A channel can be kept to one region. Give a channel a Send scope on its page, and
its messages are flooded into that region alone — only repeaters that carry it relay them.
The chat's title names the scope, and ^R resends the message you picked (or your last
one) unscoped when the region is getting it nowhere. A radio that can't send under the
scope refuses before anything goes out, rather than quietly sending it everywhere. On the
command line,channels scope INDEX [REGION]reads or sets it,channels listgains a
SCOPEcolumn, andchat send --channel N --scope REGION(or--scope '*'for unscoped)
overrides it for one message. Scoped sending needs firmware 1.10, and*needs 1.16. - Every flood says which region it was sent into. The packet viewer has a
scoperow,
the live feed aSCOPElane, and a received channel message's card names its region too.
Where no region known here matches, the code is shown instead, and it turns into a name
as soon as a repeater or a channel teaches it one.monitorgains the sameSCOPEcolumn
and ascopefield under--json. Packets recorded before this version have no scope. - A message you sent says what it was sent under. Its message paths dialog names the
scope, and when nothing relayed it and no repeater known here carries that region, it
says so — which is usually the answer to "why did nobody hear that?"
Changed
- MeshTerm sends at most one automatic advert a week, and none unless you ask. A
MeshCore companion never advertises by itself, so the hourly zero-hop and daily flood
adverts MeshTerm sent by default were the only automatic adverts on the air — more than
a companion needs, on a shared channel. They are gone from Device config, along with
config advert-cadence. In their place is one preference, Weekly advert, off by
default: once a device has gone a week without a flood advert, MeshTerm floods one, after
it has heard the mesh and then waited for Advert quiet seconds of silence (5, 15, 30,
or 60; 30 by default) plus a random 0–5 s, so two waiting radios do not collide. A line
under the setting says where the week stands. Switching it on starts the week rather than
sending; a flood advert sent by hand restarts it; each device keeps its own week, and one
that falls due while MeshTerm is closed goes out the next time that device connects. The
two old cadence preferences are dropped frompreferences.tomlthe next time it is saved. - The live feed's packet classes take shorter names in a narrower column that never cuts
them off, and the SNR and RSSI labels line up with their lanes. On the PicoCalc the class
drops its icon to make room. - The Channels list reads LAST before MSGS, and shows a SCOPE column only when a
channel has one.
Fixed
- Bluetooth on Linux works with a PIN-protected companion. The PIN never reached the
radio: pairing fell back to a no-PIN ceremony the firmware refuses, so a correct PIN was
reported as rejected, again and again. MeshTerm now runs the pairing itself and answers
with the PIN, so it works over SSH and on machines with no desktop, and a companion that
was paired before it had a PIN is paired again properly. An unpaired companion with no PIN
given is now reported in seconds rather than after 30. Unpair & quit works on Linux
too. - A Bluetooth connect on Linux no longer loses its own link. When the radio needed a few
tries to open a link — routine on a Raspberry Pi — MeshTerm lost track of the one that
finally opened. The companion, still connected, stopped advertising, so the retry could
not find it and MeshTerm reported it out of range. - A connection that fails says which step failed. Bluetooth now tells a link that never
opened from a stale saved pairing, a wrong PIN, a companion that refused to pair, and a
connect that timed out, and the PIN dialog shows the reason instead of calling every
refusal a wrong PIN. A USB port says whether it is missing, in use by another program
(ModemManager, on Linux), or not yours to open (thedialoutgroup). Every message, and
what to do about it, is in
When a companion won't connect. - Clock sync explains a radio whose clock is ahead, instead of calling it malformed.
MeshCore firmware never sets its clock back, so once a radio's clock ran ahead of the
computer's — a GPS fix, another app, drift — every sync was refused and logged as "the
device rejected the request as malformed". MeshTerm now reads the radio's clock first: a
few seconds ahead counts as in sync, and further ahead says by how much and that rebooting
the radio resets it. - The Channels page no longer loses channels at connect. When the radio refused another
command while MeshTerm was reading its channel slots, the refusal was taken for "no such
slot", and every channel after it was missing for the rest of the session. - The uConsole's radio hears the whole mesh. Its SPI node, and the bridge, listened for a
shorter preamble than MeshCore sends, so the chip gave up on most packets part-way through
and decoded one only when it happened to catch the end. It now expects the preamble the
mesh uses for the spreading factor in force. - The default flood scope is stored the way the firmware and the MeshCore app store it.
MeshTerm saved it as#namewhere they savename, refused a 30-character name the
firmware accepts, and mis-framed a name with an accent. Device config now also refuses a
name no repeater could list back (spaces, commas, or a private$region). - The SPI bridge remembers its channels across restarts. It kept them only in memory, so
after every reboot the Channels page came up empty. For this fix and the preamble one,
run the bridge's setup menu again and choose 2) Install as a service.
If MeshTerm is useful to you, please give the repository a ⭐. It helps other MeshCore users find it, because GitHub ranks projects by s...