{
  "id": "meshos",
  "name": "MeshOS",
  "kind": "client",
  "status": "active",
  "maturity": "beta",
  "description": "Official MeshCore app providing a mobile interface for MeshCore mesh networking. Distributed as APK releases for Android.",
  "maintainers": [
    {
      "name": "andymux",
      "url": "https://github.com/andymux"
    }
  ],
  "repository": "https://github.com/andymux/meshos-releases",
  "license": "MIT",
  "platforms": [
    "android"
  ],
  "interfaces": [
    "mobile"
  ],
  "connections": [
    "ble"
  ],
  "node_roles": [
    "companion"
  ],
  "capabilities": [
    "messaging",
    "contacts",
    "channels",
    "monitoring",
    "mapping"
  ],
  "install": [
    {
      "type": "github-release",
      "url": "https://github.com/andymux/meshos-releases/releases"
    }
  ],
  "popularity": {
    "githubStars": 37,
    "githubForks": 2,
    "githubWatchers": 3,
    "githubOpenIssues": 20,
    "githubContributors": 2,
    "lastChecked": "2026-07-21",
    "releaseDownloads": 10374,
    "latestReleaseDownloads": 42
  },
  "verification": {
    "sourceAvailable": true,
    "releasesAvailable": true,
    "signedReleases": false,
    "ciBuilds": false,
    "hasDocumentation": false,
    "lastChecked": "2026-07-21",
    "notes": [
      "Official MeshCore app; distributed as APK releases only.",
      "Source code not in this repo; releases repository only."
    ]
  },
  "tags": [
    "android",
    "official"
  ],
  "last_reviewed": "2026-07-03",
  "source": {
    "path": "data/software/meshos/software.yaml",
    "updatedAt": "2026-07-21T08:04:18Z"
  },
  "latest_version": "1.5.9",
  "released": "2026-07-16",
  "releases": [
    {
      "version": "fw-v1.5.9",
      "name": "MeshOS firmware v1.5.9",
      "datetime": "2026-07-16T15:09:53Z",
      "url": "https://github.com/andymux/meshos-releases/releases/tag/fw-v1.5.9",
      "prerelease": false,
      "notes": "Smoother UI on busy meshes, chat input box fixes, WiFi and GPS toggles now respected everywhere\n\nDevice firmware for LilyGo T-Deck and ThinkNode M9.\nInstall via SD card (firmware.bin) or the in-firmware updater.\n\nSHA-256:\n- TDeck: 2f9f587f41fc751e8f91900772f000c2aa1ef68eefd585bd604d407b2341a9d2\n- M9: a58f9a8b5cf2516022c26c8075d52ed97896c245945da519eeca40cd3c6420e7",
      "notesHtml": "<p>Smoother UI on busy meshes, chat input box fixes, WiFi and GPS toggles now respected everywhere</p>\n<p>Device firmware for LilyGo T-Deck and ThinkNode M9.\nInstall via SD card (firmware.bin) or the in-firmware updater.</p>\n<p>SHA-256:</p>\n<ul>\n<li>TDeck: 2f9f587f41fc751e8f91900772f000c2aa1ef68eefd585bd604d407b2341a9d2</li>\n<li>M9: a58f9a8b5cf2516022c26c8075d52ed97896c245945da519eeca40cd3c6420e7</li>\n</ul>\n"
    },
    {
      "version": "fw-v1.5.8",
      "name": "MeshOS firmware v1.5.8",
      "datetime": "2026-07-13T16:07:20Z",
      "url": "https://github.com/andymux/meshos-releases/releases/tag/fw-v1.5.8",
      "prerelease": false,
      "notes": "New Control Centre: quick-settings panel with WiFi, Sound, Bluetooth and GPS toggles plus brightness and volume sliders. Persistent WiFi switch. Software updater reliability fixes.\n\nDevice firmware for LilyGo T-Deck and ThinkNode M9.\nInstall via SD card (firmware.bin) or the in-firmware updater.\n\nSHA-256:\n- TDeck: 5a7da903153d2ba4790585b1a692ad443021f85c47798afe18015ac3a7115622\n- M9: b44357a68874adc43e9b0d3a579006d8a5d7e726b61df39ce81510878dfe003b",
      "notesHtml": "<p>New Control Centre: quick-settings panel with WiFi, Sound, Bluetooth and GPS toggles plus brightness and volume sliders. Persistent WiFi switch. Software updater reliability fixes.</p>\n<p>Device firmware for LilyGo T-Deck and ThinkNode M9.\nInstall via SD card (firmware.bin) or the in-firmware updater.</p>\n<p>SHA-256:</p>\n<ul>\n<li>TDeck: 5a7da903153d2ba4790585b1a692ad443021f85c47798afe18015ac3a7115622</li>\n<li>M9: b44357a68874adc43e9b0d3a579006d8a5d7e726b61df39ce81510878dfe003b</li>\n</ul>\n"
    },
    {
      "version": "fw-v1.5.7",
      "name": "MeshOS firmware v1.5.7",
      "datetime": "2026-07-12T17:40:58Z",
      "url": "https://github.com/andymux/meshos-releases/releases/tag/fw-v1.5.7",
      "prerelease": false,
      "notes": "WiFi cold-scan reliability fix and connect-dialog improvements. New map tools: drop a pin to navigate back to a saved spot, and show where the last mesh signal came from. JPG wallpaper support with large images and faster boot. Room server bug fixes.\n\nDevice firmware for LilyGo T-Deck and ThinkNode M9.\nInstall via SD card (firmware.bin) or the in-firmware updater.\n\nSHA-256:\n- TDeck: a96356b479cce107d6359546592a49e88a61782e0407e42ade909513fb47c25a\n- M9: 576925cf23254c60fa877a664116742302b4ca6d8f8474669124e1a3d5413a2d",
      "notesHtml": "<p>WiFi cold-scan reliability fix and connect-dialog improvements. New map tools: drop a pin to navigate back to a saved spot, and show where the last mesh signal came from. JPG wallpaper support with large images and faster boot. Room server bug fixes.</p>\n<p>Device firmware for LilyGo T-Deck and ThinkNode M9.\nInstall via SD card (firmware.bin) or the in-firmware updater.</p>\n<p>SHA-256:</p>\n<ul>\n<li>TDeck: a96356b479cce107d6359546592a49e88a61782e0407e42ade909513fb47c25a</li>\n<li>M9: 576925cf23254c60fa877a664116742302b4ca6d8f8474669124e1a3d5413a2d</li>\n</ul>\n"
    },
    {
      "version": "fw-v1.5.6",
      "name": "MeshOS firmware v1.5.6",
      "datetime": "2026-07-11T12:03:47Z",
      "url": "https://github.com/andymux/meshos-releases/releases/tag/fw-v1.5.6",
      "prerelease": false,
      "notes": "License key now backed up to SD and auto-restored after flash erase. WiFi scanner and connect dialog fixes. Bluetooth-off persists across reboots.\n\nDevice firmware for LilyGo T-Deck and ThinkNode M9.\nInstall via SD card (firmware.bin) or the in-firmware updater.\n\nSHA-256:\n- TDeck: af26586a4d6f7c991c5390827d7d80d0b3479f1b86e02d6054a180a2fec7d78a\n- M9: 6f80d53b4d7b7743096a40331aedd261a6efeff8887921b540cdb00778553876",
      "notesHtml": "<p>License key now backed up to SD and auto-restored after flash erase. WiFi scanner and connect dialog fixes. Bluetooth-off persists across reboots.</p>\n<p>Device firmware for LilyGo T-Deck and ThinkNode M9.\nInstall via SD card (firmware.bin) or the in-firmware updater.</p>\n<p>SHA-256:</p>\n<ul>\n<li>TDeck: af26586a4d6f7c991c5390827d7d80d0b3479f1b86e02d6054a180a2fec7d78a</li>\n<li>M9: 6f80d53b4d7b7743096a40331aedd261a6efeff8887921b540cdb00778553876</li>\n</ul>\n"
    },
    {
      "version": "fw-v1.5.5",
      "name": "MeshOS firmware v1.5.5",
      "datetime": "2026-07-10T17:57:26Z",
      "url": "https://github.com/andymux/meshos-releases/releases/tag/fw-v1.5.5",
      "prerelease": false,
      "notes": "CoreBrowser: smooth touch scrolling with momentum, trackball scrolls long pages (links still step when visible), pages can always be cancelled while loading. Plus the 1.5.4 map and heard-list overhaul for anyone updating from 1.5.3.\n\nDevice firmware for LilyGo T-Deck and ThinkNode M9.\nInstall via SD card (firmware.bin) or the in-firmware updater.\n\nSHA-256:\n- TDeck: 1e62805253cb8f87ad8c71ff9da90a8a3d04196aef619afcf270f130fbbcbade\n- M9: e4232ca0b570b3966e4f3d219455bac4a8118b3215919092f6768b47d210c6a6",
      "notesHtml": "<p>CoreBrowser: smooth touch scrolling with momentum, trackball scrolls long pages (links still step when visible), pages can always be cancelled while loading. Plus the 1.5.4 map and heard-list overhaul for anyone updating from 1.5.3.</p>\n<p>Device firmware for LilyGo T-Deck and ThinkNode M9.\nInstall via SD card (firmware.bin) or the in-firmware updater.</p>\n<p>SHA-256:</p>\n<ul>\n<li>TDeck: 1e62805253cb8f87ad8c71ff9da90a8a3d04196aef619afcf270f130fbbcbade</li>\n<li>M9: e4232ca0b570b3966e4f3d219455bac4a8118b3215919092f6768b47d210c6a6</li>\n</ul>\n"
    },
    {
      "version": "fw-v1.5.4",
      "name": "MeshOS firmware v1.5.4",
      "datetime": "2026-07-10T17:42:59Z",
      "url": "https://github.com/andymux/meshos-releases/releases/tag/fw-v1.5.4",
      "prerelease": false,
      "notes": "Map overhaul: full-screen tiles, translucent header, on-screen zoom and locate buttons, avatar node markers (tap for details), add heard nodes to contacts, compass position arrow. New chat input box with inline buttons and live cursor. Scrolling emoji picker. Chat scroll bar with jump-to-newest. Heard list: avatar rows, pub-key column, search and Map button. Fixes: compass calibration self-heals, font alignment, trackball coverage everywhere, CoreBrowser loading can be cancelled.\n\nDevice firmware for LilyGo T-Deck and ThinkNode M9.\nInstall via SD card (firmware.bin) or the in-firmware updater.\n\nSHA-256:\n- TDeck: e34e8b4aeb2670be84c8038e1f730536bb63315e0f19794f696b0c1a32762d15\n- M9: 8e8b276e8ed1ffb4ea3000bf8294562c68273180ca3479984b9ec482c15bf717",
      "notesHtml": "<p>Map overhaul: full-screen tiles, translucent header, on-screen zoom and locate buttons, avatar node markers (tap for details), add heard nodes to contacts, compass position arrow. New chat input box with inline buttons and live cursor. Scrolling emoji picker. Chat scroll bar with jump-to-newest. Heard list: avatar rows, pub-key column, search and Map button. Fixes: compass calibration self-heals, font alignment, trackball coverage everywhere, CoreBrowser loading can be cancelled.</p>\n<p>Device firmware for LilyGo T-Deck and ThinkNode M9.\nInstall via SD card (firmware.bin) or the in-firmware updater.</p>\n<p>SHA-256:</p>\n<ul>\n<li>TDeck: e34e8b4aeb2670be84c8038e1f730536bb63315e0f19794f696b0c1a32762d15</li>\n<li>M9: 8e8b276e8ed1ffb4ea3000bf8294562c68273180ca3479984b9ec482c15bf717</li>\n</ul>\n"
    },
    {
      "version": "fw-v1.5.3",
      "name": "MeshOS firmware v1.5.3",
      "datetime": "2026-07-09T16:07:28Z",
      "url": "https://github.com/andymux/meshos-releases/releases/tag/fw-v1.5.3",
      "prerelease": false,
      "notes": "MeshOS 1.5.3 - New onboarding experience, MeshOS look out of the box, online update checker in the firmware updater, cleaner Display settings\n\nDevice firmware for LilyGo T-Deck and ThinkNode M9.\nInstall via SD card (firmware.bin) or the in-firmware updater.\n\nSHA-256:\n- TDeck: f2a671200a71e2ab0ce5111c52ca34aed9a248ff0e6519822d120672df954a17\n- M9: 7ddcde8cf94076ec6f81a5bc6c9e7f5b522d70d9a9a9fb3f4776fcbef2917ea6",
      "notesHtml": "<p>MeshOS 1.5.3 - New onboarding experience, MeshOS look out of the box, online update checker in the firmware updater, cleaner Display settings</p>\n<p>Device firmware for LilyGo T-Deck and ThinkNode M9.\nInstall via SD card (firmware.bin) or the in-firmware updater.</p>\n<p>SHA-256:</p>\n<ul>\n<li>TDeck: f2a671200a71e2ab0ce5111c52ca34aed9a248ff0e6519822d120672df954a17</li>\n<li>M9: 7ddcde8cf94076ec6f81a5bc6c9e7f5b522d70d9a9a9fb3f4776fcbef2917ea6</li>\n</ul>\n"
    },
    {
      "version": "fw-v1.5.1",
      "name": "MeshOS firmware v1.5.1",
      "datetime": "2026-07-09T12:46:27Z",
      "url": "https://github.com/andymux/meshos-releases/releases/tag/fw-v1.5.1",
      "prerelease": true,
      "notes": "MeshOS 1.5.1 - Over-the-air updates: in-firmware update checks, download and install from GitHub releases\n\nDevice firmware for LilyGo T-Deck and ThinkNode M9.\nInstall via SD card (firmware.bin) or the in-firmware updater.\n\nSHA-256:\n- TDeck: 9422f5835f0d2a0e2cac0eb3623e31a9303b48dd34a4f3db2b4729668878777f\n- M9: e41a5361e1d0841676502b54085e20d3a8628bc9ee137a91c4a85e0b03bb3b21",
      "notesHtml": "<p>MeshOS 1.5.1 - Over-the-air updates: in-firmware update checks, download and install from GitHub releases</p>\n<p>Device firmware for LilyGo T-Deck and ThinkNode M9.\nInstall via SD card (firmware.bin) or the in-firmware updater.</p>\n<p>SHA-256:</p>\n<ul>\n<li>TDeck: 9422f5835f0d2a0e2cac0eb3623e31a9303b48dd34a4f3db2b4729668878777f</li>\n<li>M9: e41a5361e1d0841676502b54085e20d3a8628bc9ee137a91c4a85e0b03bb3b21</li>\n</ul>\n"
    },
    {
      "version": "fw-v1.5.0",
      "name": "MeshOS firmware v1.5.0",
      "datetime": "2026-07-09T11:45:40Z",
      "url": "https://github.com/andymux/meshos-releases/releases/tag/fw-v1.5.0",
      "prerelease": true,
      "notes": "MeshOS 1.5.0 - Modern UI overhaul: overlay font scaling, emoji picker v2, home notification band, browser image save/wallpaper, momentum scrolling, charge sensing\n\nDevice firmware for LilyGo T-Deck and ThinkNode M9.\nInstall via SD card (firmware.bin) or the in-firmware updater.\n\nSHA-256:\n- TDeck: 33df19a56529e5f39df692d379238403d91071ef756e1c098a7d34bd4e4482db\n- M9: 414aef61ce870bca2340b93e5af6529418de2c2abcac2e4072d2ae850bfe9705",
      "notesHtml": "<p>MeshOS 1.5.0 - Modern UI overhaul: overlay font scaling, emoji picker v2, home notification band, browser image save/wallpaper, momentum scrolling, charge sensing</p>\n<p>Device firmware for LilyGo T-Deck and ThinkNode M9.\nInstall via SD card (firmware.bin) or the in-firmware updater.</p>\n<p>SHA-256:</p>\n<ul>\n<li>TDeck: 33df19a56529e5f39df692d379238403d91071ef756e1c098a7d34bd4e4482db</li>\n<li>M9: 414aef61ce870bca2340b93e5af6529418de2c2abcac2e4072d2ae850bfe9705</li>\n</ul>\n"
    },
    {
      "version": "v1.0.9",
      "name": "MeshOS v1.0.9",
      "datetime": "2026-06-25T14:00:26Z",
      "url": "https://github.com/andymux/meshos-releases/releases/tag/v1.0.9",
      "prerelease": false,
      "notes": "## MeshOS Companion v1.0.9\n\nPairs with the new **MeshOS 2.0 — \"Unified Companion + Repeater\"** firmware.\n\n### Repeater & mesh control\n- **Configurable repeater** — turn your radio into a repeater and choose what it relays: everything, selected regions, or nothing — with hop limits and loop detection, all from the app.\n- **Spam control** — block noisy channels by `#hashtag` or hash, view live per-channel mesh statistics to spot rogue channels, and toggle whether the public channel is repeated.\n- **Stronger user blocking** — blocked users are no longer repeated on channels you hold the key for, enforced on the device even while your phone is disconnected.\n\n### Firmware updates\n- **Wi-Fi (OTA) firmware updates** straight from the app — no cable required (Wi-Fi-capable radios).\n\n### Chat & UI\n- **Clear All Messages** from a channel's menu.\n- **Colourful map** option (layers button on the map screen).\n- Tidied sent-message popup — clearer LoRa vs AirLink repeat labels.\n- Settings reorganised under a **Repeater** section.\n\n---\nDownload **MeshOS-v1.0.9.apk** and open it to install. Existing users upgrade in place — your contacts, chats and licence are preserved.",
      "notesHtml": "<h2>MeshOS Companion v1.0.9</h2>\n<p>Pairs with the new <strong>MeshOS 2.0 — \"Unified Companion + Repeater\"</strong> firmware.</p>\n<h3>Repeater &amp; mesh control</h3>\n<ul>\n<li><strong>Configurable repeater</strong> — turn your radio into a repeater and choose what it relays: everything, selected regions, or nothing — with hop limits and loop detection, all from the app.</li>\n<li><strong>Spam control</strong> — block noisy channels by <code>#hashtag</code> or hash, view live per-channel mesh statistics to spot rogue channels, and toggle whether the public channel is repeated.</li>\n<li><strong>Stronger user blocking</strong> — blocked users are no longer repeated on channels you hold the key for, enforced on the device even while your phone is disconnected.</li>\n</ul>\n<h3>Firmware updates</h3>\n<ul>\n<li><strong>Wi-Fi (OTA) firmware updates</strong> straight from the app — no cable required (Wi-Fi-capable radios).</li>\n</ul>\n<h3>Chat &amp; UI</h3>\n<ul>\n<li><strong>Clear All Messages</strong> from a channel's menu.</li>\n<li><strong>Colourful map</strong> option (layers button on the map screen).</li>\n<li>Tidied sent-message popup — clearer LoRa vs AirLink repeat labels.</li>\n<li>Settings reorganised under a <strong>Repeater</strong> section.</li>\n</ul>\n<hr />\n<p>Download <strong>MeshOS-v1.0.9.apk</strong> and open it to install. Existing users upgrade in place — your contacts, chats and licence are preserved.</p>\n"
    },
    {
      "version": "v1.0.8",
      "name": "MeshOS v1.0.8",
      "datetime": "2026-06-13T12:44:10Z",
      "url": "https://github.com/andymux/meshos-releases/releases/tag/v1.0.8",
      "prerelease": false,
      "notes": "## MeshOS v1.0.8\n\n### Block users by name — now with wildcards\n- New **Blocked Users** screen (Settings → Messaging) — block an exact username, or use a **wildcard pattern** to catch several at once:\n  - `*` matches any text · `?` matches a single character\n  - e.g. `*bot`   `spam*`   `*casino*`\n- Great for spammers who append changing text (like a timestamp) to their name — one pattern such as `*meshcore*spammer*` blocks every variant.\n- Blocking is now **complete** — a blocked sender is hidden from:\n  - the channel conversation,\n  - the chat-list preview (no more last-message leak),\n  - the unread badge, and\n  - notifications.\n\n  Their messages are still stored, so unblocking brings them straight back.\n\n---\n**Verify your download** (SHA-256):\n`37318e42adbb411daf31aa0fc09bf710c5782f988eb6ca9f3d8496f9cb08477a`",
      "notesHtml": "<h2>MeshOS v1.0.8</h2>\n<h3>Block users by name — now with wildcards</h3>\n<ul>\n<li><p>New <strong>Blocked Users</strong> screen (Settings → Messaging) — block an exact username, or use a <strong>wildcard pattern</strong> to catch several at once:</p>\n<ul>\n<li><code>*</code> matches any text · <code>?</code> matches a single character</li>\n<li>e.g. <code>*bot</code>   <code>spam*</code>   <code>*casino*</code></li>\n</ul>\n</li>\n<li><p>Great for spammers who append changing text (like a timestamp) to their name — one pattern such as <code>*meshcore*spammer*</code> blocks every variant.</p>\n</li>\n<li><p>Blocking is now <strong>complete</strong> — a blocked sender is hidden from:</p>\n<ul>\n<li>the channel conversation,</li>\n<li>the chat-list preview (no more last-message leak),</li>\n<li>the unread badge, and</li>\n<li>notifications.</li>\n</ul>\n<p>Their messages are still stored, so unblocking brings them straight back.</p>\n</li>\n</ul>\n<hr />\n<p><strong>Verify your download</strong> (SHA-256):\n<code>37318e42adbb411daf31aa0fc09bf710c5782f988eb6ca9f3d8496f9cb08477a</code></p>\n"
    },
    {
      "version": "v1.0.7",
      "name": "MeshOS v1.0.7",
      "datetime": "2026-06-08T11:18:37Z",
      "url": "https://github.com/andymux/meshos-releases/releases/tag/v1.0.7",
      "prerelease": false,
      "notes": "## MeshOS v1.0.7\n\n### AirLink ↔ LoRa Bridge\n- Bridge your local Bluetooth **AirLink** mesh to the **LoRa (MeshCore)** network — messages now relay both ways automatically.\n- **Direct messages** bridge across AirLink and LoRa too, not just channel chat.\n- When your phone is acting as the bridge, your **own** messages go out on **both** transports.\n- New **\"Bridged\" indicators**: actively-bridged channels show green icons in the chat list and a green badge in the conversation header.\n- Each message now shows which network it travelled on (**AirLink / LoRa** tags), and on the MeshCore side you'll see the **LoRa repeat count** (✓ x1) as repeaters carry it.\n- **Store-and-forward** now replays missed **DMs** as well as channel messages when you walk back into range.\n\n### MeshOS Unified Companion Firmware Support\n- One firmware now runs **BLE, Wi-Fi and USB** companions — no more flashing a different variant for each connection type.\n- **Configure Wi-Fi companions right in the MeshOS app** — pick the network and connect over Wi-Fi.\n- Download the MeshCore unified firmware to your device from https://www.meshcore.co.uk/configurator\n\n### Fixes\n- Fixed AirLink occasionally needing a manual **off/on toggle to start** after a fresh install.\n- Fixed **duplicate messages** appearing when returning to AirLink range.\n- Fixed old channel history showing after deleting a channel and re-adding one by QR.\n- An AirLink channel and a LoRa channel sharing the same key now always appear as **one chat**.\n\n### Other\n- Add a contact by **QR code now works on macOS**.\n- **\"Start on boot\"** option for always-on nodes (Android).\n- Settings tidy-up.\n\n---\n**T-Deck / T-Pager owners:** MeshOS firmware **1.3.7+** is AirLink-enabled, so those devices can act as an AirLink ↔ MeshCore bridge with this app.\n\n**Verify your download** (SHA-256):\n`aedccc2bbec4d7c82374390a93ed114cd81d2310c479981046a4bf9b2cdc0cf0`",
      "notesHtml": "<h2>MeshOS v1.0.7</h2>\n<h3>AirLink ↔ LoRa Bridge</h3>\n<ul>\n<li>Bridge your local Bluetooth <strong>AirLink</strong> mesh to the <strong>LoRa (MeshCore)</strong> network — messages now relay both ways automatically.</li>\n<li><strong>Direct messages</strong> bridge across AirLink and LoRa too, not just channel chat.</li>\n<li>When your phone is acting as the bridge, your <strong>own</strong> messages go out on <strong>both</strong> transports.</li>\n<li>New <strong>\"Bridged\" indicators</strong>: actively-bridged channels show green icons in the chat list and a green badge in the conversation header.</li>\n<li>Each message now shows which network it travelled on (<strong>AirLink / LoRa</strong> tags), and on the MeshCore side you'll see the <strong>LoRa repeat count</strong> (✓ x1) as repeaters carry it.</li>\n<li><strong>Store-and-forward</strong> now replays missed <strong>DMs</strong> as well as channel messages when you walk back into range.</li>\n</ul>\n<h3>MeshOS Unified Companion Firmware Support</h3>\n<ul>\n<li>One firmware now runs <strong>BLE, Wi-Fi and USB</strong> companions — no more flashing a different variant for each connection type.</li>\n<li><strong>Configure Wi-Fi companions right in the MeshOS app</strong> — pick the network and connect over Wi-Fi.</li>\n<li>Download the MeshCore unified firmware to your device from <a href=\"https://www.meshcore.co.uk/configurator\" target=\"_blank\" rel=\"noopener noreferrer\">https://www.meshcore.co.uk/configurator</a></li>\n</ul>\n<h3>Fixes</h3>\n<ul>\n<li>Fixed AirLink occasionally needing a manual <strong>off/on toggle to start</strong> after a fresh install.</li>\n<li>Fixed <strong>duplicate messages</strong> appearing when returning to AirLink range.</li>\n<li>Fixed old channel history showing after deleting a channel and re-adding one by QR.</li>\n<li>An AirLink channel and a LoRa channel sharing the same key now always appear as <strong>one chat</strong>.</li>\n</ul>\n<h3>Other</h3>\n<ul>\n<li>Add a contact by <strong>QR code now works on macOS</strong>.</li>\n<li><strong>\"Start on boot\"</strong> option for always-on nodes (Android).</li>\n<li>Settings tidy-up.</li>\n</ul>\n<hr />\n<p><strong>T-Deck / T-Pager owners:</strong> MeshOS firmware <strong>1.3.7+</strong> is AirLink-enabled, so those devices can act as an AirLink ↔ MeshCore bridge with this app.</p>\n<p><strong>Verify your download</strong> (SHA-256):\n<code>aedccc2bbec4d7c82374390a93ed114cd81d2310c479981046a4bf9b2cdc0cf0</code></p>\n"
    },
    {
      "version": "v1.0.4",
      "name": "MeshOS v1.0.4",
      "datetime": "2026-05-12T14:14:09Z",
      "url": "https://github.com/andymux/meshos-releases/releases/tag/v1.0.4",
      "prerelease": false,
      "notes": "**What's new**\n\n- Bug fixes\n- Map path markers and message-path legend now readable in light mode (text colour fixed, chip borders removed)\n- Set Path / Reset Path GUI improvements\n- DM Improvements\n\n**Install**\n\nSideload the APK below over your existing install — contacts, messages, and license are preserved.",
      "notesHtml": "<p><strong>What's new</strong></p>\n<ul>\n<li>Bug fixes</li>\n<li>Map path markers and message-path legend now readable in light mode (text colour fixed, chip borders removed)</li>\n<li>Set Path / Reset Path GUI improvements</li>\n<li>DM Improvements</li>\n</ul>\n<p><strong>Install</strong></p>\n<p>Sideload the APK below over your existing install — contacts, messages, and license are preserved.</p>\n"
    },
    {
      "version": "v1.0.3",
      "name": "MeshOS v1.0.3",
      "datetime": "2026-05-10T19:05:22Z",
      "url": "https://github.com/andymux/meshos-releases/releases/tag/v1.0.3",
      "prerelease": false,
      "notes": "**What's new**\n\n- Signal Info dialog (tap the signal bars on the home screen) now shows when the last signal was heard — \"12s ago\" / \"5m ago\" for recent signals, time-of-day or date for older ones\n- Repeater Login improvements\n- New region settings in repeater admin\n\n**Install**\n\nSideload the APK below over your existing install — contacts, messages, and license are preserved.",
      "notesHtml": "<p><strong>What's new</strong></p>\n<ul>\n<li>Signal Info dialog (tap the signal bars on the home screen) now shows when the last signal was heard — \"12s ago\" / \"5m ago\" for recent signals, time-of-day or date for older ones</li>\n<li>Repeater Login improvements</li>\n<li>New region settings in repeater admin</li>\n</ul>\n<p><strong>Install</strong></p>\n<p>Sideload the APK below over your existing install — contacts, messages, and license are preserved.</p>\n"
    },
    {
      "version": "v1.0.2",
      "name": "MeshOS v1.0.2",
      "datetime": "2026-05-01T10:47:52Z",
      "url": "https://github.com/andymux/meshos-releases/releases/tag/v1.0.2",
      "prerelease": false,
      "notes": "v1.0.2 - Patch release\n\n- Fix: BLE mesh received messages now persist channelIdx (so they survive app restarts and reinstalls)\n- Fix: WiFi network scan on Android (was blocked by cleartext traffic restrictions)\n- Fix: Channel name double-hashtag in participants screen\n- Fix: Discord-app dispose crash (ref.read after widget disposed)\n- Fix: Tablet map crashes (LateInitializationError on pinch-zoom)\n- Fix: License panel hidden on iOS (App Store handles licensing)\n- New: Channel hash shown in participants screen (e.g. 'Channel Hash: 1B')\n- New: Block (from map) menu option in heard list\n- Improved: Region Scope rename (was 'Scope'), 'Set Region Scope' dialog\n- Improved: Voice message bubble layout (wider, better progress bar, padding)\n- Improved: Tactical mode color coverage across the app\n- Improved: Light mode metadata legibility on sent/received bubbles\n- Hidden: BLE trace hash size selector (hardcoded to 1B for now)",
      "notesHtml": "<p>v1.0.2 - Patch release</p>\n<ul>\n<li>Fix: BLE mesh received messages now persist channelIdx (so they survive app restarts and reinstalls)</li>\n<li>Fix: WiFi network scan on Android (was blocked by cleartext traffic restrictions)</li>\n<li>Fix: Channel name double-hashtag in participants screen</li>\n<li>Fix: Discord-app dispose crash (ref.read after widget disposed)</li>\n<li>Fix: Tablet map crashes (LateInitializationError on pinch-zoom)</li>\n<li>Fix: License panel hidden on iOS (App Store handles licensing)</li>\n<li>New: Channel hash shown in participants screen (e.g. 'Channel Hash: 1B')</li>\n<li>New: Block (from map) menu option in heard list</li>\n<li>Improved: Region Scope rename (was 'Scope'), 'Set Region Scope' dialog</li>\n<li>Improved: Voice message bubble layout (wider, better progress bar, padding)</li>\n<li>Improved: Tactical mode color coverage across the app</li>\n<li>Improved: Light mode metadata legibility on sent/received bubbles</li>\n<li>Hidden: BLE trace hash size selector (hardcoded to 1B for now)</li>\n</ul>\n"
    },
    {
      "version": "v1.0.1",
      "name": "MeshOS v1.0.1",
      "datetime": "2026-04-29T15:39:42Z",
      "url": "https://github.com/andymux/meshos-releases/releases/tag/v1.0.1",
      "prerelease": false,
      "notes": "General bug fixes and stability improvements\nImprovements to licensing and platform consistency\nAdded copy to BLE messaging for easier device-to-device clipboard use",
      "notesHtml": "<p>General bug fixes and stability improvements\nImprovements to licensing and platform consistency\nAdded copy to BLE messaging for easier device-to-device clipboard use</p>\n"
    },
    {
      "version": "v1.0.0",
      "name": "MeshOS v1.0.0",
      "datetime": "2026-04-12T16:17:15Z",
      "url": "https://github.com/andymux/meshos-releases/releases/tag/v1.0.0",
      "prerelease": false,
      "notes": "v1.0.0 - Major release\n\n- Phone-to-phone BLE mesh messaging\n- What's New screen on app updates\n- Redesigned license screen with in-app purchase flow\n- Tactical mode color fixes\n- Voice message UI improvements\n- Timestamp sanitization for corrupted packets\n- Message preview toggle now functional\n- LoRa setup hints trigger on first node connect only",
      "notesHtml": "<p>v1.0.0 - Major release</p>\n<ul>\n<li>Phone-to-phone BLE mesh messaging</li>\n<li>What's New screen on app updates</li>\n<li>Redesigned license screen with in-app purchase flow</li>\n<li>Tactical mode color fixes</li>\n<li>Voice message UI improvements</li>\n<li>Timestamp sanitization for corrupted packets</li>\n<li>Message preview toggle now functional</li>\n<li>LoRa setup hints trigger on first node connect only</li>\n</ul>\n"
    },
    {
      "version": "v0.4.5",
      "name": "MeshOS v0.4.5",
      "datetime": "2026-03-29T20:04:19Z",
      "url": "https://github.com/andymux/meshos-releases/releases/tag/v0.4.5",
      "prerelease": false,
      "notes": "## What's New\r\n\r\n- **Wide-Screen Map Overlay** — Floating channel/contacts panel over the map on tablets and desktops (toggleable)\r\n- **Resizable Panel** — Drag handle to resize the overlay panel\r\n- **Temporal Node Fade** — Map markers fade by age (today=bright, 7d=invisible), toggleable in settings\r\n- **Map Auto-Center** — Map centers to node activity area, adjusts for panel in overlay mode\r\n- **Desktop Zoom** — +/- zoom buttons and Magic Mouse scroll-to-zoom on macOS (coming soon)\r\n- **Path Analysis on Map** — View path analysis on the background map while keeping chat overlay open\r\n- **Heard List Persistence** — Deletions now persist correctly across app restarts\r\n- **Node Info** — Last heard time shown in map marker popups\r\n- **Cross-Platform Refactor** — Conditional imports for web/native compatibility",
      "notesHtml": "<h2>What's New</h2>\n<ul>\n<li><strong>Wide-Screen Map Overlay</strong> — Floating channel/contacts panel over the map on tablets and desktops (toggleable)</li>\n<li><strong>Resizable Panel</strong> — Drag handle to resize the overlay panel</li>\n<li><strong>Temporal Node Fade</strong> — Map markers fade by age (today=bright, 7d=invisible), toggleable in settings</li>\n<li><strong>Map Auto-Center</strong> — Map centers to node activity area, adjusts for panel in overlay mode</li>\n<li><strong>Desktop Zoom</strong> — +/- zoom buttons and Magic Mouse scroll-to-zoom on macOS (coming soon)</li>\n<li><strong>Path Analysis on Map</strong> — View path analysis on the background map while keeping chat overlay open</li>\n<li><strong>Heard List Persistence</strong> — Deletions now persist correctly across app restarts</li>\n<li><strong>Node Info</strong> — Last heard time shown in map marker popups</li>\n<li><strong>Cross-Platform Refactor</strong> — Conditional imports for web/native compatibility</li>\n</ul>\n"
    },
    {
      "version": "v0.4.3",
      "name": "MeshOS v0.4.3",
      "datetime": "2026-03-27T11:39:54Z",
      "url": "https://github.com/andymux/meshos-releases/releases/tag/v0.4.3",
      "prerelease": false,
      "notes": "## What's New\n- **Multi-Transport Support** — Connect via Bluetooth, WiFi TCP, or USB Serial\n- **WiFi Network Scanner** — Auto-discover MeshCore devices on your network with protocol verification\n- **USB Serial** — Connect to companion USB firmware at 115200 baud (Android)\n- **Transport-Aware UI** — Connection icon changes to Bluetooth/WiFi/USB based on active transport\n- **Disconnect Confirmation** — Prevents accidental disconnects with a confirmation dialog\n- **WiFi Settings Persistence** — IP and port remembered across sessions\n- **Room Chat Controls** — Set path, reset path, and logout via popup menu\n- **iOS Update Handling** — Software update prompts removed on iOS (handled by App Store)",
      "notesHtml": "<h2>What's New</h2>\n<ul>\n<li><strong>Multi-Transport Support</strong> — Connect via Bluetooth, WiFi TCP, or USB Serial</li>\n<li><strong>WiFi Network Scanner</strong> — Auto-discover MeshCore devices on your network with protocol verification</li>\n<li><strong>USB Serial</strong> — Connect to companion USB firmware at 115200 baud (Android)</li>\n<li><strong>Transport-Aware UI</strong> — Connection icon changes to Bluetooth/WiFi/USB based on active transport</li>\n<li><strong>Disconnect Confirmation</strong> — Prevents accidental disconnects with a confirmation dialog</li>\n<li><strong>WiFi Settings Persistence</strong> — IP and port remembered across sessions</li>\n<li><strong>Room Chat Controls</strong> — Set path, reset path, and logout via popup menu</li>\n<li><strong>iOS Update Handling</strong> — Software update prompts removed on iOS (handled by App Store)</li>\n</ul>\n"
    },
    {
      "version": "v0.4.2",
      "name": "MeshOS v0.4.2",
      "datetime": "2026-03-26T10:03:27Z",
      "url": "https://github.com/andymux/meshos-releases/releases/tag/v0.4.2",
      "prerelease": false,
      "notes": "## What's New\n- **Scope System** — Create and manage scopes, set per-channel scope, scope indicator on messages and app bar\n- **Repeater Names in Resend Dialog** — Shows repeater names alongside IDs with signal bars and SNR\n- **Notification Navigation** — Tap a notification to jump directly to the relevant channel or DM\n- **Community Radio Presets** — Choose from predefined radio presets, with manual override tracking\n- **Room Path Controls** — Set path / reset path menu added to room chat screen\n- **GPS Detection Improvements** — Better distinction between no-fix and no-hardware, toggle reset support\n- **Light Mode Map Fix** — Repeater finder signal info now visible in light mode",
      "notesHtml": "<h2>What's New</h2>\n<ul>\n<li><strong>Scope System</strong> — Create and manage scopes, set per-channel scope, scope indicator on messages and app bar</li>\n<li><strong>Repeater Names in Resend Dialog</strong> — Shows repeater names alongside IDs with signal bars and SNR</li>\n<li><strong>Notification Navigation</strong> — Tap a notification to jump directly to the relevant channel or DM</li>\n<li><strong>Community Radio Presets</strong> — Choose from predefined radio presets, with manual override tracking</li>\n<li><strong>Room Path Controls</strong> — Set path / reset path menu added to room chat screen</li>\n<li><strong>GPS Detection Improvements</strong> — Better distinction between no-fix and no-hardware, toggle reset support</li>\n<li><strong>Light Mode Map Fix</strong> — Repeater finder signal info now visible in light mode</li>\n</ul>\n"
    }
  ],
  "changelogSource": "github",
  "changelogUpdatedAt": "2026-07-16T15:43:15.370Z"
}
