Skip to content

Releases: jpmartineau/MeshTerm

MeshTerm 0.11.5

Choose a tag to compare

@github-actions github-actions released this 22 Oct 07:18

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
./meshterm

That 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
./meshterm

Windows — 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.exe

Cardputer 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, Send is on F3, with Delete
    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

Choose a tag to compare

@github-actions github-actions released this 20 Oct 04:34

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
./meshterm

That 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
./meshterm

Windows — 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.exe

Cardputer 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, Lock is on Shift+F3, behind Delete.
  • ^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, Lock is on Shift+F2 in a channel
    and in a direct chat. In a room, Shift+F2 is Log in, so there the page of the author
    (Shift+F3) has Lock contact or Unlock contact.
  • ^K on the Contacts list locks the highlighted contact or unlocks it. The padlock of
    the row changes at once. On the handhelds, Lock is on Shift+F2.
  • A locked sender has a padlock on its chip in a chat. The chip reads 🔒 Name
    (⚿ Name on 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 open on 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

Choose a tag to compare

@github-actions github-actions released this 18 Oct 20:16

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
./meshterm

That 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
./meshterm

Windows — 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.exe

Cardputer 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-anonymize shows it in full when the preference is on. On the
    Diagnostics page, press a (Shift+F3 on the PicoCalc) to change between the two forms,
    and s saves 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, and yul, each one inside the one before it. The #montreal channel sends
    in yul. 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 of config 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 remote password command, or secret= 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
    keeps password and set guest.password without 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

Choose a tag to compare

@github-actions github-actions released this 16 Oct 07:49

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
./meshterm

That 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
./meshterm

Windows — 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.exe

Cardputer 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 --demo runs 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's identity.key as 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

Choose a tag to compare

@github-actions github-actions released this 13 Oct 04:09

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
./meshterm

That 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
./meshterm

Windows — 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.exe

Cardputer 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, as export-key --out writes it, or
    as raw bytes, as the identity.key of 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-key always 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's identity.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 to config import-key was 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 --out and 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

Choose a tag to compare

@github-actions github-actions released this 12 Oct 14:52

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
./meshterm

That 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
./meshterm

Windows — 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.exe

Cardputer 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 is Map, 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 are Paths, URL→QR, and Map on the three screens. With Shift, these
    keys hold what only one screen has: Retry or Resend, and Log in on a room. The
    Day ↑ and Day ↓ 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

Choose a tag to compare

@github-actions github-actions released this 07 Oct 05:52

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
./meshterm

That 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
./meshterm

Windows — 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.exe

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 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
    preference room_relogin_minutes (30 by default) sets how long a room can be quiet before
    MeshTerm logs in again by itself. On the command line, use meshterm rooms list,
    rooms join, and rooms forget. chat send --to posts to a room, and chat history
    names the author of each post. To try it with no radio, meshterm --mock has a room,
    Lakeside BBS, with the password hello.
    (#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 backup also imports. On the command line, use meshterm channels export FILE and
    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 #name in 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, use meshterm 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 emulate shows the display of a handheld in a window on your desktop.
    meshterm emulate picocalc-lyra --mock and meshterm emulate cardputer-zero --mock draw
    MeshTerm as that handheld draws it, with its font, its colours, and its F-key lane. Run
    meshterm emulate --fetch-fonts one 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/map and www.example.org now
    open and get a QR code, but file.txt stays 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 --spi and no setup. When you set the custom variable gps to
    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-lyra and cardputer-zero. If you use
    --platform picocalc or MESHTERM_PLATFORM=picocalc, change it to picocalc-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, and docs/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...
Read more

MeshTerm 0.10.2

Choose a tag to compare

@github-actions github-actions released this 29 Sep 06:13

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
./meshterm

That 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
./meshterm

Windows — 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.exe

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

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

Choose a tag to compare

@github-actions github-actions released this 27 Sep 15:08

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
./meshterm

That 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
./meshterm

Windows — 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.exe

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

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 --width refuses 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 0 was ignored and listed every width. Now
    it's a usage error that names the three choices, like --category already was.
  • The simulator's row in meshterm --mock devices no longer ends in an empty ().
    The brackets hold a serial port, and the simulator doesn't have one.
  • meshterm platform --help and meshterm specimen --help read like the others. They
    used to print notes meant for someone reading the source code, markup and all, and cut
    their summaries short in meshterm --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

Choose a tag to compare

@github-actions github-actions released this 26 Sep 01:50

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
./meshterm

That 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
./meshterm

Windows — 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.exe

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

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 run meshterm --spi, and meshterm devices lists
    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's spi table. 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 NODE asks 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 list gains a
    SCOPE column, and chat 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 scope row,
    the live feed a SCOPE lane, 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. monitor gains the same SCOPE column
    and a scope field 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 from preferences.toml the 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 (the dialout group). 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 #name where they save name, 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...

Read more