Releases
v2.73.0
Compare
Sorry, something went wrong.
No results found
2.73.0 (2026-09-27)
Features
a full-screen radio firmware install screen (8a33501 )
a status dot and traffic arrows on the footer's link line (2399e20 )
add a heard MeshCore node as a contact (60596e3 )
add a MeshCore contact from the signed card the MeshCore app shares (004705b )
app: ask a serial or network link which protocol it speaks (51c5ca6 )
app: connect to MeshCore companion radios (40d7d08 )
ask a MeshCore contact for its readings (b2c2207 )
ask a MeshCore repeater or room server for its status (7ed7049 )
check and install a MeshCore radio's firmware from MeshCore's own releases (948827a )
core: a session model another protocol can fill (1cdffbe )
core: MeshCore settings - read, write, refresh and reboot (934384a )
core: MeshCore's companion conversation (15af741 )
edit MeshCore channels - a name, a 16-byte key, and clearing a slot (fcf45bf ), closes #name
install a MeshCore nRF52 over USB by the 1200-baud touch (d9de84c )
log in to a MeshCore repeater or room server (33974b3 )
MeshCore contacts - remove one, and advertise this radio (1ac3542 )
MeshCore's other parameters - location in adverts, who may request readings, auto-add, multi-acks (d7954c4 )
messages: ring the focused bubble (b29a8d0 )
pin a MeshCore contact as the radio's favourite (481c2a2 )
proto: MeshCore's companion framing and BLE profile (5839b7a )
settings: set the client's own section apart from the radio's (d5d57ab )
share and add MeshCore contacts by the MeshCore app's link (b9323d6 )
share and join MeshCore channels by the MeshCore app's link (8c752a1 )
switch a board between Meshtastic and MeshCore over USB (8056ae3 )
the 1200-baud touch on the Brick, through usbfs (037aa65 )
trace the route to a MeshCore contact with its path discovery (759f9dd )
ui: add a text size setting to About (cfed5a7 )
ui: B held goes back to the top of the tab (8685f07 ), closes mcereal/inkcell#59
ui: connect from the empty Messages tab (1e8c646 )
ui: dim the LoRa rows the preset setting makes the radio ignore (4ac2684 )
ui: Find on the Nodes list, and a header a line shorter (6cb8b7f )
ui: gate Meshtastic-only verbs on the protocol's features (287b707 )
ui: guard one-press sends and disconnects, keep notices, page flat lists (9384503 )
ui: jump to the first unread message and the newest with L2/R2 in a thread (155a1fe )
ui: keep a draft as a quick reply from the compose sheet (879e42f )
ui: MeshCore's settings on the Settings and Radio tabs (425b657 )
ui: rule the charts at round values and wash under a node's line (0b94c75 )
ui: set the compose sheet as a grouped list with a quick-replies heading (b930704 )
ui: size the desktop window for its display (380f54d )
ui: the keyboard's triggers move the caret (4db32d9 ), closes mcereal/inkcell#59
ui: type a node search into the heading, with a live match count (b8ba1be )
update an ESP32 over a USB cable through its ROM bootloader (3843a48 )
Bug Fixes
a cancelled ROM write pulses a reset out on the way (555a17e )
a dispatched action is wiped once handled, and a masked caret at the start stays there (6c7a359 )
a failed ROM write resets the chip back into its app before closing (28a400c )
a masked MeshCore password's counter counts the bytes it really is (1aea446 )
a MeshCore add's OK does not write over another key heard meanwhile under the same number (22fef00 )
a MeshCore answer is its build's; the handover holds a radio to its name; any known ESP chip (3ef3851 )
a MeshCore answer that came straight back is drawn as a way back (ad7b8fe )
a MeshCore channel is editable only once this handshake read it, and a chosen zero key is a key (37de8be )
a MeshCore contact brought back by the radio's OK is heard as of the OK (5399e53 )
a MeshCore contact brought back without network time is stamped by the radio's clock (b2eb408 )
a MeshCore contact leaves the list when the radio agrees, and only a contact offers Remove (df88648 )
a MeshCore contact link is checked against adds still waiting, not only the roster (d16412d )
a MeshCore contact link whose key starts as another node's is refused, not stored over it (ddeb245 )
a MeshCore contact the radio accepted is stored from the record sent, even if the roster let it go meanwhile (7d4324c )
a MeshCore contact the radio dropped is no longer pinned, and Pin is not named over this radio itself (bca9e8e )
a MeshCore favourite's write runs where its lookup stood, and the list names Pin only over a pinnable row (ace11d1 )
a MeshCore node heard again is the newest kept advert, not the next evicted (3281ec4 )
a MeshCore password is masked as it is typed and wiped when the keyboard closes (4ab49b3 )
a MeshCore password is published masked, so no snapshot holds it (3c95748 )
a MeshCore request answered by anything but a readable SENT ends as not sent (9586415 )
a MeshCore request ends when its write fails or the link drops, and a login's password leaves the queue (c4d6dae )
a MeshCore request queued behind a reboot stays open through the handshake's restart (2e18561 )
a MeshCore telemetry answer ahead of its SENT does not leave the radio locked (7ab983a )
a MeshCore telemetry answer marks its node heard (670e776 )
a named port that is gone falls back only to finish a write; a retry keeps earlier damage (0d37dee )
a prompt the radio raises over a MeshCore login closes it rather than parking the password (c62f98f )
a serial update cancelled after its erase stays a radio to recover (da85de2 )
a switch's recovery press is the switch's, and it is drawn (7078776 )
a whole-flash image's bootloader slot must hold a bootloader, not an app (86a61c4 )
Add from a link waits for the MeshCore handshake, and a heard node added by link stays heard (9f2d637 )
an added MeshCore contact carries the sender's advert stamp and its whole 32-byte name (23d0527 )
an early MeshCore telemetry answer counts only for a request already written (3017dfd )
any MeshCore add checks the adds still waiting under its number, whether or not the key has a row (021b780 )
app: clear a MeshCore advert location, and refuse a frequency finer than a kHz (d9cdfe0 )
app: MeshCore max power is the radio's maximum, and a cleared location clears the fix (72012bd )
app: pass over a muted host before the network retry is due (1839b37 )
bound a whole image by its app partition; a resumed switch keeps its destination (98fa6df )
cli: speak the app's conversation in --status and --send-text (b2b3ea5 )
core: a MeshCore command the link refuses on the spot is the caller's answer (1881654 )
core: a MeshCore save refused on the spot is the call's answer; OK moves the baseline (38ad60e )
core: a post-reboot MeshCore handshake the link refuses drops the link (06ae083 )
core: MeshCore stamps, room authors and an unreadable SENT (a2d60b3 )
core: no MeshCore save queued behind a reboot (3baafd1 )
core: no MeshCore save while a SELF_INFO read is queued (6d6a010 )
core: one MeshCore reboot at a time, and a refused one says so (6b80bb0 )
core: settle a MeshCore settings command the link refuses (ca508ed )
core: show an accepted MeshCore write without its read-back; refuse a Set that rounds to 0,0 (c324c58 )
drop a firmware answer the moment the link speaks the other protocol (b859e8a )
each MeshCore favourite lookup carries its own answer, and its write takes the slot the lookup leaves (44494cd )
every copy of a MeshCore login's password is wiped, with a store the compiler keeps (fe9d780 ), closes mcereal/inkwell#49
every row of a repeater's status fits its row, in every language (ae9f8cb )
give link traffic its own update flag (6c550aa )
give the crash report's real path on the Brick (8b70d64 )
help: describe the Nodes list's default order as it is (579bf23 )
latch an erase where it is sent; a resume falls back to the only bridge (e38e221 )
MeshCore adverts kept for adding are cleared when a connection begins (a9da322 )
MeshCore current and voltage are signed, each answer replaces the environment, a queued request holds the lock (b080c1a )
MeshCore current in mA, GPS off the globe refused, one telemetry request at a time (0bffbbd )
nodes: make node detail read less like a protocol dump (b25a95d )
nodes: round coordinates for every stated precision, not only the table's (3564cb6 )
nodes: shorten the empty Waypoints row (3266565 )
offer a firmware switch only where it erases, which is an ESP32 (411a3e7 )
only a MeshCore contact the roster let go is re-stamped as heard on the OK (a1c008e )
only the asked MeshCore node's answer frees the telemetry lock, and a 0,0 fix is a position (635a7db )
put the submodule pointers back where main has them (9a77350 )
read a flasher device's builds once its name and type are known, in any key order (3ca53de )
refuse a whole-flash table declaring past the largest ESP32 flash (704f508 )
refuse the 1200-baud touch on a generic-driver port it cannot reach (3c99b36 )
refuse USB to an ESP32 on its own USB before the install; reset out after a port failure too (a89cdb3 )
remove a MeshCore contact only once the radio is named, and word the advert as asked (71f506c )
resume a direct-image install; refuse a partition overlapping the image (f400f1a )
the install screen keeps its release and title through the result (096ae50 )
the keyboard holds the longest MeshCore contact card whole (1974503 )
the MeshCore channel import walks its slots with a counter as wide as its bound (398486d )
the Spanish add-contact row fits its label (cfbd9e9 )
the write's progress is not full until the trailing erases verify (9187dc7 )
transport: bound notified frames by the profile, list every profile in full (b16f753 )
transport: list a Nordic UART device only when it is named like MeshCore (c8e2fc6 )
ui: a list heading counts only what the list is not showing (70b12a6 )
ui: a security prompt over the Find keyboard is drawn, not the search (9a228cb )
ui: arm a disconnect against its radio; page with a map left on Nodes (a6cf715 )
ui: colour a device's disc only when the colour means something (268831c )
ui: count conversations, not rows, and say when one is empty (8e13fe2 )
ui: gate the Nodes pin shortcut on the protocol's node flags (e50ceba )
ui: hold a MeshCore draft to what the radio will send whole (1abcfc6 )
ui: keep an unsent draft with the conversation it was written for (6d193f6 )
ui: label our own bubbles "You" rather than "sent" (4df2034 )
ui: list MeshCore's channel slots as facts, not rows that open the editor (30c16d6 )
ui: MeshCore power in literal signed dBm, and its frequency to the exact kHz (0dc865a )
ui: MeshCore's full bandwidth and spread ranges; round coordinates; a lost link is no reply (638f3d5 )
ui: name no keycap an empty thread or a one-row picker cannot use (7063d5f )
ui: name only the presses that work, and give the empty Nodes tab a way out (4b911f0 )
ui: name the answer A gives in a confirm dialog (d91b0b6 )
ui: offer X delete only on a conversation row (929fc7b )
ui: refuse the Waypoints row out loud on a protocol without waypoints (8fcd147 )
ui: say it in the reader's terms on the node detail and three other screens (77233cf ), closes #Trail
ui: say when a dimmed LoRa row's edit will count (56529f6 )
ui: step the text size from a window's display-sized scale (d316df5 )
ui: stop MeshCore's power row at the radio's own maximum (fcddd06 )
ui: the Waypoints heading says how many places the book evicted (4888a89 )
whether a re-added MeshCore contact was heard comes from where the add came from, not its stamp (a029e80 )
Documentation
cli: the window's scale and size are the display's (6a86bb9 )
mark the macOS and Windows builds as experimental (2cfd7a7 )
MeshCore as it is spoken, and MESHCLIENT_PROTOCOL (a54409c )
refresh the listing screenshots (603ba50 )
Code Refactoring
size a contact link's id for either app's spelling, asserted (1e5e9a3 )
transport: BLE link speaks the protocol's GATT profile (1e0b31f )
transport: links talk to a protocol, not to mesh_session (e4fe7f6 )
You can’t perform that action at this time.