github MarekZegare4/MeshCore-Solo v1.28

3 hours ago

MeshCore Solo Companion Firmware v1.28

What's new

  • The Clock/Lock dashboard gets a separate "Altitude (GPS)" field, alongside the existing barometric one (now labelled "Altitude (Baro)") — the original single Altitude field only ever read a barometric sensor's telemetry, showing -- on any board without one even with a perfectly good GPS fix.
  • Received messages now show how many hops they actually took to reach you, right in the message list — the same tiny digit-icon a sent message already uses for its repeater/echo count, now shown for incoming DMs and channel posts too, using the hop path the mesh already records for them.
  • Scope is now a shared, freely-definable list, not one device-wide text field. Settings › Radio › Scope manages a small named list (*/wildcard always first, plus a movable default) instead of a single free-typed name. Each channel picks exactly one scope of its own — a Scope: <name> row in the channel's context menu, matching the phone app's own per-channel region picker — and the channel's history title shows the tag when it's set to anything but *. Tools › Repeater's "Extra scopes" now multi-selects from the same list instead of comma-typing region names, capped at the same 4 active relay scopes as before. A channel set to * sends unscoped; DMs and the repeater's primary relay slot follow the list's default entry. Upgrading carries an existing single-scope setup over unchanged: the old Scope becomes the default entry and every channel you already had is seeded with it, so nothing changes on the air.
  • GAT562 30S reports and uses its real TX power. The board's always-on external PA is rated at 30 dBm, but the firmware wrote the request straight to the SX1262 register (max 22), so the reported power never matched the radiated one and couldn't ask for more. TX power now goes through the PA's measured gain curve (up to 30 dBm from the app/CLI), and every setter stores and reports the power actually applied. The other GAT562 boards and every non-PA build are unchanged.
  • Settings › Contacts can now clean out contacts you haven't heard from in a while. New "Expire" option (Off/7d/30d/90d) plus a "Prune now" action that shows exactly how many contacts would be removed before you confirm. Favourites are always kept regardless of age.

Fixes

  • Long messages no longer stretch their chat bubble across the whole row, which hid which side a message came from. A bubble now always leaves a gutter on the side away from its sender — on the left for your own messages, on the right for received ones — and long text wraps a little earlier to fit.
  • The same channel could be added twice from the device. "+ Add channel" happily saved a second copy of Public (or of any channel you already had), which is the same channel listed twice with split history and unread counts. Adding a channel whose key already exists is now refused ("Already added" / "Channel already exists"); renaming an existing channel still works. Duplicates you already have are left alone.
  • A message sent from the phone app could show "0s" on the device indefinitely. Its age was measured from the phone's timestamp, so a phone clock ahead of the device's (or on local time) made the age negative and pinned it at 0s until the device's clock caught up. Sent messages now age from the moment the device saw them, and a received message whose timestamp is unknown or ahead of the device clock ages from its receipt time.
  • Upgrading from a firmware older than v1.27 (one that predates several past settings-layout changes) no longer runs a chain of one-time migrations on first boot: the few settings they used to backfill now start at today's plain defaults, the same as a fresh device. Current-version upgrades are unaffected.
  • Heltec V3/V4 with a wired joystick: Enter felt laggy and unreliable. The Enter contact had no internal pull-up and buffered every click for ~280 ms waiting for a double/triple click that the joystick code ignores, so a quick double-tap was silently dropped. It's now wired like the direction and Back contacts. Boards without a joystick are unaffected.
  • Every altitude reading (baro + GPS, Clock and Lock screen) and the GPS home page's "alt" row now respect Settings › System › Units, same as every other distance in the UI — none of them checked metric/imperial before. Locator's Radius row had the same gap and is fixed the same way.
  • The Radio home page's noise floor showed "n/a" whenever Pwr save (RX duty-cycle) was on, on the assumption duty-cycle RX can't sample it. That's stale — the radio already recalibrates it periodically even under duty-cycle, which is why Diagnostics' own reading was already showing something real. Radio home page now matches.
  • "Msg wake" moved from Settings › Sound to Settings › Display — a more logical home for a display-wake toggle than notifications. Menu order only; the setting itself is unaffected.
  • Remote Bot's channel replies (trigger reply, channel command reply, !gps fix result) never showed which repeaters echoed them back, unlike every other way of posting to a channel. Bot-originated posts now arm the same relay tracking an app or on-device send already gets.
  • Creating a new message channel didn't refresh the channel list until leaving and re-entering the screen. Contributed by @3urobeat.
  • The DM and channel history lists didn't wrap at their ends like every other list in the UI. UP at the oldest message now wraps straight to the newest, and DOWN past the newest wraps to the compose row and back to the oldest, closing the loop both ways.
  • Unselected message bubbles had a stray light-filled header strip behind the sender name, the one place in the UI with a filled patch on an otherwise plain row. Unselected bubbles are now plain (matching every other unselected row); the selected fill is unchanged.
  • A received message could show no time at all — just the sender name and hop count — whenever its timestamp read slightly ahead of the device's own clock (sender/receiver clock skew, or the receiver's clock not synced yet) or was genuinely unknown. Both cases now show the receipt time instead of going blank.

Don't miss a new MeshCore-Solo release

NewReleases is sending notifications on new releases.