{
  "id": "meshcore-open",
  "name": "MeshCore Open",
  "kind": "client",
  "status": "active",
  "maturity": "alpha",
  "description": "Unofficial cross-platform Flutter client for MeshCore with encrypted messaging, contacts, channels, offline maps, node configuration and remote repeater administration over Bluetooth, USB or TCP.",
  "image": "meshcore-open.png",
  "screenshots": [
    {
      "file": "contacts.jpg",
      "caption": "Contacts and nearby mesh nodes"
    },
    {
      "file": "chat.jpg",
      "caption": "Encrypted direct messaging"
    },
    {
      "file": "map.jpg",
      "caption": "Live mesh map and route visualization"
    },
    {
      "file": "channels.jpg",
      "caption": "Public channel messaging"
    }
  ],
  "maintainers": [
    {
      "name": "zjs81",
      "url": "https://github.com/zjs81"
    }
  ],
  "repository": "https://github.com/zjs81/meshcore-open",
  "website": "https://meshcoreopen.org/",
  "documentation": "https://meshcoreopen.org/docs/getting-started/",
  "license": "MIT",
  "languages": [
    "dart"
  ],
  "platforms": [
    "android",
    "ios",
    "linux",
    "macos",
    "windows",
    "web"
  ],
  "interfaces": [
    "gui",
    "mobile",
    "web"
  ],
  "connections": [
    "ble",
    "serial",
    "usb",
    "tcp",
    "websocket"
  ],
  "node_roles": [
    "companion",
    "repeater",
    "room-server"
  ],
  "capabilities": [
    "messaging",
    "contacts",
    "channels",
    "node-configuration",
    "remote-administration",
    "monitoring",
    "telemetry",
    "mapping",
    "notifications",
    "key-management"
  ],
  "install": [
    {
      "type": "play-store",
      "package": "com.meshcore.meshcore_open",
      "url": "https://play.google.com/store/apps/details?id=com.meshcore.meshcore_open"
    },
    {
      "type": "app-store",
      "url": "https://testflight.apple.com/join/QzUGKJ65"
    },
    {
      "type": "github-release",
      "url": "https://github.com/zjs81/meshcore-open/releases"
    },
    {
      "type": "source",
      "url": "https://github.com/zjs81/meshcore-open"
    }
  ],
  "popularity": {
    "githubStars": 540,
    "githubForks": 91,
    "githubWatchers": 13,
    "githubOpenIssues": 102,
    "githubContributors": 31,
    "latestReleaseDownloads": 1717,
    "lastChecked": "2026-06-23"
  },
  "verification": {
    "sourceAvailable": true,
    "releasesAvailable": true,
    "signedReleases": false,
    "ciBuilds": true,
    "hasDocumentation": true,
    "lastChecked": "2026-06-23",
    "notes": [
      "iOS currently supports BLE; USB and TCP companion connections are still in progress.",
      "Browser node connections require Chromium with Web Bluetooth or Web Serial support.",
      "Over-the-air firmware updates are listed on the project roadmap and are not yet available."
    ]
  },
  "tags": [
    "flutter",
    "offline",
    "cross-platform"
  ],
  "last_reviewed": "2026-06-23",
  "source": {
    "path": "data/software/meshcore-open/software.yaml",
    "updatedAt": "2026-06-23T23:23:42+02:00"
  },
  "latest_version": "9.5",
  "released": "2026-06-13",
  "releases": [
    {
      "version": "PRE-BETA-9.5",
      "name": "PRE-BETA-9.5",
      "datetime": "2026-06-13T09:18:53Z",
      "url": "https://github.com/zjs81/meshcore-open/releases/tag/PRE-BETA-9.5",
      "prerelease": false,
      "notes": "## What's Changed\r\n* Add \"NRF52\" as a device name prefix by @Maxb0tbeep in https://github.com/zjs81/meshcore-open/pull/443\r\n* Unread badges for tabs by @pioneer in https://github.com/zjs81/meshcore-open/pull/145\r\n* Main by @zjs81 in https://github.com/zjs81/meshcore-open/pull/448\r\n* Use correct channel icons in channel chat screen by @sethoscope in https://github.com/zjs81/meshcore-open/pull/444\r\n* Add Russian regional presets by @Stempit in https://github.com/zjs81/meshcore-open/pull/449\r\n* Room-server: fixed first message letters trim by @HDDen in https://github.com/zjs81/meshcore-open/pull/453\r\n* Translate Notifications by @ericszimmermann in https://github.com/zjs81/meshcore-open/pull/438\r\n* Onstart syncronization progressbar by @HDDen in https://github.com/zjs81/meshcore-open/pull/462\r\n* Telemetry screen: now included map with received gps mark and autoupdate feature by @HDDen in https://github.com/zjs81/meshcore-open/pull/459\r\n* fix(l10n): correct ja repeater terminology by @jirogit in https://github.com/zjs81/meshcore-open/pull/470\r\n* Add shared UI components and refactor MeshCoreConnector by @zjs81 in https://github.com/zjs81/meshcore-open/pull/472\r\n* Merge Dev into main by @zjs81 in https://github.com/zjs81/meshcore-open/pull/473\r\n* Merge Dev into main by @zjs81 in https://github.com/zjs81/meshcore-open/pull/474\r\n\r\n## New Contributors\r\n* @Maxb0tbeep made their first contribution in https://github.com/zjs81/meshcore-open/pull/443\r\n* @Stempit made their first contribution in https://github.com/zjs81/meshcore-open/pull/449\r\n* @jirogit made their first contribution in https://github.com/zjs81/meshcore-open/pull/470\r\n\r\n**Full Changelog**: https://github.com/zjs81/meshcore-open/compare/Alpha9...PRE-BETA-9.5",
      "notesHtml": "<h2>What's Changed</h2>\n<ul>\n<li>Add \"NRF52\" as a device name prefix by @Maxb0tbeep in <a href=\"https://github.com/zjs81/meshcore-open/pull/443\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/443</a></li>\n<li>Unread badges for tabs by @pioneer in <a href=\"https://github.com/zjs81/meshcore-open/pull/145\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/145</a></li>\n<li>Main by @zjs81 in <a href=\"https://github.com/zjs81/meshcore-open/pull/448\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/448</a></li>\n<li>Use correct channel icons in channel chat screen by @sethoscope in <a href=\"https://github.com/zjs81/meshcore-open/pull/444\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/444</a></li>\n<li>Add Russian regional presets by @Stempit in <a href=\"https://github.com/zjs81/meshcore-open/pull/449\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/449</a></li>\n<li>Room-server: fixed first message letters trim by @HDDen in <a href=\"https://github.com/zjs81/meshcore-open/pull/453\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/453</a></li>\n<li>Translate Notifications by @ericszimmermann in <a href=\"https://github.com/zjs81/meshcore-open/pull/438\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/438</a></li>\n<li>Onstart syncronization progressbar by @HDDen in <a href=\"https://github.com/zjs81/meshcore-open/pull/462\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/462</a></li>\n<li>Telemetry screen: now included map with received gps mark and autoupdate feature by @HDDen in <a href=\"https://github.com/zjs81/meshcore-open/pull/459\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/459</a></li>\n<li>fix(l10n): correct ja repeater terminology by @jirogit in <a href=\"https://github.com/zjs81/meshcore-open/pull/470\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/470</a></li>\n<li>Add shared UI components and refactor MeshCoreConnector by @zjs81 in <a href=\"https://github.com/zjs81/meshcore-open/pull/472\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/472</a></li>\n<li>Merge Dev into main by @zjs81 in <a href=\"https://github.com/zjs81/meshcore-open/pull/473\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/473</a></li>\n<li>Merge Dev into main by @zjs81 in <a href=\"https://github.com/zjs81/meshcore-open/pull/474\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/474</a></li>\n</ul>\n<h2>New Contributors</h2>\n<ul>\n<li>@Maxb0tbeep made their first contribution in <a href=\"https://github.com/zjs81/meshcore-open/pull/443\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/443</a></li>\n<li>@Stempit made their first contribution in <a href=\"https://github.com/zjs81/meshcore-open/pull/449\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/449</a></li>\n<li>@jirogit made their first contribution in <a href=\"https://github.com/zjs81/meshcore-open/pull/470\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/470</a></li>\n</ul>\n<p><strong>Full Changelog</strong>: <a href=\"https://github.com/zjs81/meshcore-open/compare/Alpha9...PRE-BETA-9.5\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/compare/Alpha9...PRE-BETA-9.5</a></p>\n"
    },
    {
      "version": "Alpha9",
      "name": "Alpha9",
      "datetime": "2026-05-10T02:40:43Z",
      "url": "https://github.com/zjs81/meshcore-open/releases/tag/Alpha9",
      "prerelease": false,
      "notes": "## What's Changed\r\n* add byte counted text input by @446564 in https://github.com/zjs81/meshcore-open/pull/388\r\n* #401 make multi ack a toggle by @zjs81 in https://github.com/zjs81/meshcore-open/pull/405\r\n* Improve work with unread messages by @Diadlo in https://github.com/zjs81/meshcore-open/pull/414\r\n* Improve SharedMarker handling by @ericszimmermann in https://github.com/zjs81/meshcore-open/pull/413\r\n* add selectable LOS obstruction pinning for repeater placement Enhancement #411 by @just-stuff-tm in https://github.com/zjs81/meshcore-open/pull/412\r\n* Ukrainian translation polished + localized hardcoded strings by @pioneer in https://github.com/zjs81/meshcore-open/pull/404\r\n* bump app protocol version as we support v4+ features by @446564 in https://github.com/zjs81/meshcore-open/pull/398\r\n* latin languages heuristics by @ericszimmermann in https://github.com/zjs81/meshcore-open/pull/417\r\n* Add desktop map controls by @wel97459 in https://github.com/zjs81/meshcore-open/pull/416\r\n* fix issues with contact sync by @446564 in https://github.com/zjs81/meshcore-open/pull/399\r\n* increase CR for off grid by @446564 in https://github.com/zjs81/meshcore-open/pull/423\r\n* fix: lat/lon double-write in buildUpdateContactPathFrame by @kingult in https://github.com/zjs81/meshcore-open/pull/429\r\n* Gps toggle in settings by @zjs81 in https://github.com/zjs81/meshcore-open/pull/433\r\n* Remove channel subtitles from UI by @sethoscope in https://github.com/zjs81/meshcore-open/pull/428\r\n* rename ble debug log by @446564 in https://github.com/zjs81/meshcore-open/pull/426\r\n* reword tcp host by @446564 in https://github.com/zjs81/meshcore-open/pull/425\r\n* basic repeater chan util by @446564 in https://github.com/zjs81/meshcore-open/pull/424\r\n* Feature Request: alternative compression by replace some 2-byte symbols by 1-byte latin analogs (named Cyr2Lat) by @HDDen in https://github.com/zjs81/meshcore-open/pull/400\r\n* merge dev into main  by @zjs81 in https://github.com/zjs81/meshcore-open/pull/435\r\n\r\n## New Contributors\r\n* @Diadlo made their first contribution in https://github.com/zjs81/meshcore-open/pull/414\r\n* @pioneer made their first contribution in https://github.com/zjs81/meshcore-open/pull/404\r\n* @kingult made their first contribution in https://github.com/zjs81/meshcore-open/pull/429\r\n* @sethoscope made their first contribution in https://github.com/zjs81/meshcore-open/pull/428\r\n* @HDDen made their first contribution in https://github.com/zjs81/meshcore-open/pull/400\r\n\r\n**Full Changelog**: https://github.com/zjs81/meshcore-open/compare/Alpha8...Alpha9",
      "notesHtml": "<h2>What's Changed</h2>\n<ul>\n<li>add byte counted text input by @446564 in <a href=\"https://github.com/zjs81/meshcore-open/pull/388\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/388</a></li>\n<li>#401 make multi ack a toggle by @zjs81 in <a href=\"https://github.com/zjs81/meshcore-open/pull/405\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/405</a></li>\n<li>Improve work with unread messages by @Diadlo in <a href=\"https://github.com/zjs81/meshcore-open/pull/414\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/414</a></li>\n<li>Improve SharedMarker handling by @ericszimmermann in <a href=\"https://github.com/zjs81/meshcore-open/pull/413\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/413</a></li>\n<li>add selectable LOS obstruction pinning for repeater placement Enhancement #411 by @just-stuff-tm in <a href=\"https://github.com/zjs81/meshcore-open/pull/412\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/412</a></li>\n<li>Ukrainian translation polished + localized hardcoded strings by @pioneer in <a href=\"https://github.com/zjs81/meshcore-open/pull/404\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/404</a></li>\n<li>bump app protocol version as we support v4+ features by @446564 in <a href=\"https://github.com/zjs81/meshcore-open/pull/398\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/398</a></li>\n<li>latin languages heuristics by @ericszimmermann in <a href=\"https://github.com/zjs81/meshcore-open/pull/417\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/417</a></li>\n<li>Add desktop map controls by @wel97459 in <a href=\"https://github.com/zjs81/meshcore-open/pull/416\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/416</a></li>\n<li>fix issues with contact sync by @446564 in <a href=\"https://github.com/zjs81/meshcore-open/pull/399\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/399</a></li>\n<li>increase CR for off grid by @446564 in <a href=\"https://github.com/zjs81/meshcore-open/pull/423\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/423</a></li>\n<li>fix: lat/lon double-write in buildUpdateContactPathFrame by @kingult in <a href=\"https://github.com/zjs81/meshcore-open/pull/429\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/429</a></li>\n<li>Gps toggle in settings by @zjs81 in <a href=\"https://github.com/zjs81/meshcore-open/pull/433\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/433</a></li>\n<li>Remove channel subtitles from UI by @sethoscope in <a href=\"https://github.com/zjs81/meshcore-open/pull/428\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/428</a></li>\n<li>rename ble debug log by @446564 in <a href=\"https://github.com/zjs81/meshcore-open/pull/426\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/426</a></li>\n<li>reword tcp host by @446564 in <a href=\"https://github.com/zjs81/meshcore-open/pull/425\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/425</a></li>\n<li>basic repeater chan util by @446564 in <a href=\"https://github.com/zjs81/meshcore-open/pull/424\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/424</a></li>\n<li>Feature Request: alternative compression by replace some 2-byte symbols by 1-byte latin analogs (named Cyr2Lat) by @HDDen in <a href=\"https://github.com/zjs81/meshcore-open/pull/400\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/400</a></li>\n<li>merge dev into main  by @zjs81 in <a href=\"https://github.com/zjs81/meshcore-open/pull/435\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/435</a></li>\n</ul>\n<h2>New Contributors</h2>\n<ul>\n<li>@Diadlo made their first contribution in <a href=\"https://github.com/zjs81/meshcore-open/pull/414\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/414</a></li>\n<li>@pioneer made their first contribution in <a href=\"https://github.com/zjs81/meshcore-open/pull/404\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/404</a></li>\n<li>@kingult made their first contribution in <a href=\"https://github.com/zjs81/meshcore-open/pull/429\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/429</a></li>\n<li>@sethoscope made their first contribution in <a href=\"https://github.com/zjs81/meshcore-open/pull/428\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/428</a></li>\n<li>@HDDen made their first contribution in <a href=\"https://github.com/zjs81/meshcore-open/pull/400\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/400</a></li>\n</ul>\n<p><strong>Full Changelog</strong>: <a href=\"https://github.com/zjs81/meshcore-open/compare/Alpha8...Alpha9\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/compare/Alpha8...Alpha9</a></p>\n"
    },
    {
      "version": "Alpha8",
      "name": "Alpha8",
      "datetime": "2026-04-15T05:08:29Z",
      "url": "https://github.com/zjs81/meshcore-open/releases/tag/Alpha8",
      "prerelease": false,
      "notes": "## What's Changed\r\n* Add more explicit platform support table by @stphnrdmr in https://github.com/zjs81/meshcore-open/pull/302\r\n* fix: provide AppSettingsService in tcp_flow_test by @just-stuff-tm in https://github.com/zjs81/meshcore-open/pull/301\r\n* Update Polish localization strings for clarity by @thesebas in https://github.com/zjs81/meshcore-open/pull/29\r\n* Unified packet parsing to use BufferReader by @wel97459 in https://github.com/zjs81/meshcore-open/pull/309\r\n* merge dev by @zjs81 in https://github.com/zjs81/meshcore-open/pull/310\r\n* location aware channel_message_path by @ericszimmermann in https://github.com/zjs81/meshcore-open/pull/307\r\n* Merge pull request #310 from zjs81/main by @zjs81 in https://github.com/zjs81/meshcore-open/pull/311\r\n* Show overlaps in public keys of repeaters by @wel97459 in https://github.com/zjs81/meshcore-open/pull/218\r\n* Fix/linux ble pairing flow by @just-stuff-tm in https://github.com/zjs81/meshcore-open/pull/270\r\n* Refactor contact handling and other improvments by @wel97459 in https://github.com/zjs81/meshcore-open/pull/317\r\n* Update Dutch translations by @dennis1248 in https://github.com/zjs81/meshcore-open/pull/329\r\n* Better french translations by @spfmoby in https://github.com/zjs81/meshcore-open/pull/326\r\n* new labels fixed polish translations by @thesebas in https://github.com/zjs81/meshcore-open/pull/313\r\n* Make unread badge max out at 9999+ instead of 99+ by @n-kam in https://github.com/zjs81/meshcore-open/pull/316\r\n* Local llm translator by @zjs81 in https://github.com/zjs81/meshcore-open/pull/334\r\n* Support receiving more formats of GIF message by @interfect in https://github.com/zjs81/meshcore-open/pull/342\r\n* Add LowMesh prefix and explain how to add more by @interfect in https://github.com/zjs81/meshcore-open/pull/337\r\n* Preserve Coordinates with contact.copyWith() function by @ericszimmermann in https://github.com/zjs81/meshcore-open/pull/339\r\n* Add additional device name prefixes to MeshCoreUuids by @just-stuff-tm in https://github.com/zjs81/meshcore-open/pull/321\r\n* init contributing.md by @446564 in https://github.com/zjs81/meshcore-open/pull/347\r\n* add tooltip to send message buttons by @446564 in https://github.com/zjs81/meshcore-open/pull/353\r\n* add fvm directory and rc file to gitignore by @446564 in https://github.com/zjs81/meshcore-open/pull/355\r\n* add jni to generated plugins by @446564 in https://github.com/zjs81/meshcore-open/pull/356\r\n* reimplement location aware snr-indikator after alpha7 by @ericszimmermann in https://github.com/zjs81/meshcore-open/pull/299\r\n* use l10n strings for discovered menu item by @446564 in https://github.com/zjs81/meshcore-open/pull/357\r\n* Enhancement/preset offgrid repeat toggle by @just-stuff-tm in https://github.com/zjs81/meshcore-open/pull/275\r\n* small clean up from PR #275 by @446564 in https://github.com/zjs81/meshcore-open/pull/358\r\n* fix dev by @446564 in https://github.com/zjs81/meshcore-open/pull/362\r\n* add auto clock synchronization setting after repeater login by @just-stuff-tm in https://github.com/zjs81/meshcore-open/pull/369\r\n* clear toast on tap by @446564 in https://github.com/zjs81/meshcore-open/pull/384\r\n* enh: make repeater admin guest aware by @446564 in https://github.com/zjs81/meshcore-open/pull/365\r\n* fix: settings dialog lists by @446564 in https://github.com/zjs81/meshcore-open/pull/372\r\n* remove unused macos path_provider_foundation by @446564 in https://github.com/zjs81/meshcore-open/pull/361\r\n* merge dev to main by @zjs81 in https://github.com/zjs81/meshcore-open/pull/385\r\n* Dev translations by @zjs81 in https://github.com/zjs81/meshcore-open/pull/386\r\n* translations by @zjs81 in https://github.com/zjs81/meshcore-open/pull/387\r\n\r\n## New Contributors\r\n* @stphnrdmr made their first contribution in https://github.com/zjs81/meshcore-open/pull/302\r\n* @thesebas made their first contribution in https://github.com/zjs81/meshcore-open/pull/29\r\n* @n-kam made their first contribution in https://github.com/zjs81/mes\n…",
      "notesHtml": "<h2>What's Changed</h2>\n<ul>\n<li>Add more explicit platform support table by @stphnrdmr in <a href=\"https://github.com/zjs81/meshcore-open/pull/302\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/302</a></li>\n<li>fix: provide AppSettingsService in tcp_flow_test by @just-stuff-tm in <a href=\"https://github.com/zjs81/meshcore-open/pull/301\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/301</a></li>\n<li>Update Polish localization strings for clarity by @thesebas in <a href=\"https://github.com/zjs81/meshcore-open/pull/29\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/29</a></li>\n<li>Unified packet parsing to use BufferReader by @wel97459 in <a href=\"https://github.com/zjs81/meshcore-open/pull/309\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/309</a></li>\n<li>merge dev by @zjs81 in <a href=\"https://github.com/zjs81/meshcore-open/pull/310\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/310</a></li>\n<li>location aware channel_message_path by @ericszimmermann in <a href=\"https://github.com/zjs81/meshcore-open/pull/307\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/307</a></li>\n<li>Merge pull request #310 from zjs81/main by @zjs81 in <a href=\"https://github.com/zjs81/meshcore-open/pull/311\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/311</a></li>\n<li>Show overlaps in public keys of repeaters by @wel97459 in <a href=\"https://github.com/zjs81/meshcore-open/pull/218\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/218</a></li>\n<li>Fix/linux ble pairing flow by @just-stuff-tm in <a href=\"https://github.com/zjs81/meshcore-open/pull/270\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/270</a></li>\n<li>Refactor contact handling and other improvments by @wel97459 in <a href=\"https://github.com/zjs81/meshcore-open/pull/317\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/317</a></li>\n<li>Update Dutch translations by @dennis1248 in <a href=\"https://github.com/zjs81/meshcore-open/pull/329\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/329</a></li>\n<li>Better french translations by @spfmoby in <a href=\"https://github.com/zjs81/meshcore-open/pull/326\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/326</a></li>\n<li>new labels fixed polish translations by @thesebas in <a href=\"https://github.com/zjs81/meshcore-open/pull/313\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/313</a></li>\n<li>Make unread badge max out at 9999+ instead of 99+ by @n-kam in <a href=\"https://github.com/zjs81/meshcore-open/pull/316\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/316</a></li>\n<li>Local llm translator by @zjs81 in <a href=\"https://github.com/zjs81/meshcore-open/pull/334\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/334</a></li>\n<li>Support receiving more formats of GIF message by @interfect in <a href=\"https://github.com/zjs81/meshcore-open/pull/342\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/342</a></li>\n<li>Add LowMesh prefix and explain how to add more by @interfect in <a href=\"https://github.com/zjs81/meshcore-open/pull/337\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/337</a></li>\n<li>Preserve Coordinates with contact.copyWith() function by @ericszimmermann in <a href=\"https://github.com/zjs81/meshcore-open/pull/339\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/339</a></li>\n<li>Add additional device name prefixes to MeshCoreUuids by @just-stuff-tm in <a href=\"https://github.com/zjs81/meshcore-open/pull/321\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/321</a></li>\n<li>init contributing.md by @446564 in <a href=\"https://github.com/zjs81/meshcore-open/pull/347\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/347</a></li>\n<li>add tooltip to send message buttons by @446564 in <a href=\"https://github.com/zjs81/meshcore-open/pull/353\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/353</a></li>\n<li>add fvm directory and rc file to gitignore by @446564 in <a href=\"https://github.com/zjs81/meshcore-open/pull/355\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/355</a></li>\n<li>add jni to generated plugins by @446564 in <a href=\"https://github.com/zjs81/meshcore-open/pull/356\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/356</a></li>\n<li>reimplement location aware snr-indikator after alpha7 by @ericszimmermann in <a href=\"https://github.com/zjs81/meshcore-open/pull/299\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/299</a></li>\n<li>use l10n strings for discovered menu item by @446564 in <a href=\"https://github.com/zjs81/meshcore-open/pull/357\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/357</a></li>\n<li>Enhancement/preset offgrid repeat toggle by @just-stuff-tm in <a href=\"https://github.com/zjs81/meshcore-open/pull/275\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/275</a></li>\n<li>small clean up from PR #275 by @446564 in <a href=\"https://github.com/zjs81/meshcore-open/pull/358\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/358</a></li>\n<li>fix dev by @446564 in <a href=\"https://github.com/zjs81/meshcore-open/pull/362\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/362</a></li>\n<li>add auto clock synchronization setting after repeater login by @just-stuff-tm in <a href=\"https://github.com/zjs81/meshcore-open/pull/369\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/369</a></li>\n<li>clear toast on tap by @446564 in <a href=\"https://github.com/zjs81/meshcore-open/pull/384\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/384</a></li>\n<li>enh: make repeater admin guest aware by @446564 in <a href=\"https://github.com/zjs81/meshcore-open/pull/365\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/365</a></li>\n<li>fix: settings dialog lists by @446564 in <a href=\"https://github.com/zjs81/meshcore-open/pull/372\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/372</a></li>\n<li>remove unused macos path_provider_foundation by @446564 in <a href=\"https://github.com/zjs81/meshcore-open/pull/361\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/361</a></li>\n<li>merge dev to main by @zjs81 in <a href=\"https://github.com/zjs81/meshcore-open/pull/385\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/385</a></li>\n<li>Dev translations by @zjs81 in <a href=\"https://github.com/zjs81/meshcore-open/pull/386\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/386</a></li>\n<li>translations by @zjs81 in <a href=\"https://github.com/zjs81/meshcore-open/pull/387\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/387</a></li>\n</ul>\n<h2>New Contributors</h2>\n<ul>\n<li>@stphnrdmr made their first contribution in <a href=\"https://github.com/zjs81/meshcore-open/pull/302\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/302</a></li>\n<li>@thesebas made their first contribution in <a href=\"https://github.com/zjs81/meshcore-open/pull/29\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/29</a></li>\n<li>@n-kam made their first contribution in <a href=\"https://github.com/zjs81/mes\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/mes</a>\n…</li>\n</ul>\n"
    },
    {
      "version": "Alpha7",
      "name": "Alpha7",
      "datetime": "2026-03-15T02:02:36Z",
      "url": "https://github.com/zjs81/meshcore-open/releases/tag/Alpha7",
      "prerelease": false,
      "notes": "## What's Changed\r\n* chore: update version to alpha 6 by @446564 in https://github.com/zjs81/meshcore-open/pull/143\r\n* Still better french translations by @spfmoby in https://github.com/zjs81/meshcore-open/pull/148\r\n* add support for whipseros by @446564 in https://github.com/zjs81/meshcore-open/pull/144\r\n* translations to german updated. by @ericszimmermann in https://github.com/zjs81/meshcore-open/pull/150\r\n* Update .gitignore to exclude .gradle/ by @ChaoticLeah in https://github.com/zjs81/meshcore-open/pull/158\r\n* remove wakelock by @446564 in https://github.com/zjs81/meshcore-open/pull/152\r\n* Add flake.nix for development environment by @ChaoticLeah in https://github.com/zjs81/meshcore-open/pull/159\r\n* Fix battery chemistry dropdown layout overflow by @just-stuff-tm in https://github.com/zjs81/meshcore-open/pull/162\r\n* Refine device info layout and add collapsible map legend by @just-stuff-tm in https://github.com/zjs81/meshcore-open/pull/164\r\n* Add path tracing functionality to map screen by @wel97459 in https://github.com/zjs81/meshcore-open/pull/165\r\n* Add warning when bluetooth is off by @ChaoticLeah in https://github.com/zjs81/meshcore-open/pull/161\r\n* Refactor radio settings and localization updates by @zjs81 in https://github.com/zjs81/meshcore-open/pull/180\r\n* Handle RESP_CODE_ERR frames explicitly in connector by @Specter242 in https://github.com/zjs81/meshcore-open/pull/182\r\n* add rbenv support by @benallfree in https://github.com/zjs81/meshcore-open/pull/195\r\n* Add a signal readout for the nearest repeater. With improvements to app bar and other UI polish. by @wel97459 in https://github.com/zjs81/meshcore-open/pull/200\r\n* Added Line Of Sight Feature for repeater placement, Added app wide Units Setting by @just-stuff-tm in https://github.com/zjs81/meshcore-open/pull/198\r\n* Refactor map screen by @wel97459 in https://github.com/zjs81/meshcore-open/pull/203\r\n* Refactor marker label display on map screens by @wel97459 in https://github.com/zjs81/meshcore-open/pull/204\r\n* Fix repeater battery % inconsistency and add configurable repeater battery chemistry by @just-stuff-tm in https://github.com/zjs81/meshcore-open/pull/199\r\n* Changed all map lables to look the same across all map ui by @wel97459 in https://github.com/zjs81/meshcore-open/pull/206\r\n* fix(appbar): prevent title overflow on narrow widths by @just-stuff-tm in https://github.com/zjs81/meshcore-open/pull/205\r\n* Mark pending channel messages sent on RESP_CODE_SENT by @Specter242 in https://github.com/zjs81/meshcore-open/pull/186\r\n* Swipe to reply by @ChaoticLeah in https://github.com/zjs81/meshcore-open/pull/160\r\n* Added mute channel functionality by @kkazakov in https://github.com/zjs81/meshcore-open/pull/209\r\n* docs: add chrome support notice by @benallfree in https://github.com/zjs81/meshcore-open/pull/211\r\n* Better french translations by @spfmoby in https://github.com/zjs81/meshcore-open/pull/210\r\n* clear app db of channel messages on delete by @446564 in https://github.com/zjs81/meshcore-open/pull/196\r\n* Align Android app module to Java 17 and bump wakelock_plus by @Specter242 in https://github.com/zjs81/meshcore-open/pull/208\r\n* feat: hide message tracing by @benallfree in https://github.com/zjs81/meshcore-open/pull/216\r\n* Pr combined #228 #220 #219 #201 by @just-stuff-tm in https://github.com/zjs81/meshcore-open/pull/232\r\n* fix(channels): make edit/delete actions use parent context after bottom sheet closes Supports Windows Animations Off In Android by @just-stuff-tm in https://github.com/zjs81/meshcore-open/pull/201\r\n* enh <enter> to send giphy by @benallfree in https://github.com/zjs81/meshcore-open/pull/215\r\n* enh: return cursor focus to message window after send by @benallfree in https://github.com/zjs81/meshcore-open/pull/214\r\n* favorites handling only by @ericszimmermann in https://github.com/zjs81/meshcore-open/pull/234\r\n* Correct Chinese translation by @MGJ520 in https://github.com/zjs81/meshcore-open/pull/179\r\n* Add localized search functiona\n…",
      "notesHtml": "<h2>What's Changed</h2>\n<ul>\n<li>chore: update version to alpha 6 by @446564 in <a href=\"https://github.com/zjs81/meshcore-open/pull/143\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/143</a></li>\n<li>Still better french translations by @spfmoby in <a href=\"https://github.com/zjs81/meshcore-open/pull/148\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/148</a></li>\n<li>add support for whipseros by @446564 in <a href=\"https://github.com/zjs81/meshcore-open/pull/144\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/144</a></li>\n<li>translations to german updated. by @ericszimmermann in <a href=\"https://github.com/zjs81/meshcore-open/pull/150\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/150</a></li>\n<li>Update .gitignore to exclude .gradle/ by @ChaoticLeah in <a href=\"https://github.com/zjs81/meshcore-open/pull/158\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/158</a></li>\n<li>remove wakelock by @446564 in <a href=\"https://github.com/zjs81/meshcore-open/pull/152\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/152</a></li>\n<li>Add flake.nix for development environment by @ChaoticLeah in <a href=\"https://github.com/zjs81/meshcore-open/pull/159\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/159</a></li>\n<li>Fix battery chemistry dropdown layout overflow by @just-stuff-tm in <a href=\"https://github.com/zjs81/meshcore-open/pull/162\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/162</a></li>\n<li>Refine device info layout and add collapsible map legend by @just-stuff-tm in <a href=\"https://github.com/zjs81/meshcore-open/pull/164\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/164</a></li>\n<li>Add path tracing functionality to map screen by @wel97459 in <a href=\"https://github.com/zjs81/meshcore-open/pull/165\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/165</a></li>\n<li>Add warning when bluetooth is off by @ChaoticLeah in <a href=\"https://github.com/zjs81/meshcore-open/pull/161\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/161</a></li>\n<li>Refactor radio settings and localization updates by @zjs81 in <a href=\"https://github.com/zjs81/meshcore-open/pull/180\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/180</a></li>\n<li>Handle RESP_CODE_ERR frames explicitly in connector by @Specter242 in <a href=\"https://github.com/zjs81/meshcore-open/pull/182\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/182</a></li>\n<li>add rbenv support by @benallfree in <a href=\"https://github.com/zjs81/meshcore-open/pull/195\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/195</a></li>\n<li>Add a signal readout for the nearest repeater. With improvements to app bar and other UI polish. by @wel97459 in <a href=\"https://github.com/zjs81/meshcore-open/pull/200\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/200</a></li>\n<li>Added Line Of Sight Feature for repeater placement, Added app wide Units Setting by @just-stuff-tm in <a href=\"https://github.com/zjs81/meshcore-open/pull/198\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/198</a></li>\n<li>Refactor map screen by @wel97459 in <a href=\"https://github.com/zjs81/meshcore-open/pull/203\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/203</a></li>\n<li>Refactor marker label display on map screens by @wel97459 in <a href=\"https://github.com/zjs81/meshcore-open/pull/204\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/204</a></li>\n<li>Fix repeater battery % inconsistency and add configurable repeater battery chemistry by @just-stuff-tm in <a href=\"https://github.com/zjs81/meshcore-open/pull/199\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/199</a></li>\n<li>Changed all map lables to look the same across all map ui by @wel97459 in <a href=\"https://github.com/zjs81/meshcore-open/pull/206\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/206</a></li>\n<li>fix(appbar): prevent title overflow on narrow widths by @just-stuff-tm in <a href=\"https://github.com/zjs81/meshcore-open/pull/205\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/205</a></li>\n<li>Mark pending channel messages sent on RESP_CODE_SENT by @Specter242 in <a href=\"https://github.com/zjs81/meshcore-open/pull/186\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/186</a></li>\n<li>Swipe to reply by @ChaoticLeah in <a href=\"https://github.com/zjs81/meshcore-open/pull/160\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/160</a></li>\n<li>Added mute channel functionality by @kkazakov in <a href=\"https://github.com/zjs81/meshcore-open/pull/209\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/209</a></li>\n<li>docs: add chrome support notice by @benallfree in <a href=\"https://github.com/zjs81/meshcore-open/pull/211\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/211</a></li>\n<li>Better french translations by @spfmoby in <a href=\"https://github.com/zjs81/meshcore-open/pull/210\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/210</a></li>\n<li>clear app db of channel messages on delete by @446564 in <a href=\"https://github.com/zjs81/meshcore-open/pull/196\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/196</a></li>\n<li>Align Android app module to Java 17 and bump wakelock_plus by @Specter242 in <a href=\"https://github.com/zjs81/meshcore-open/pull/208\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/208</a></li>\n<li>feat: hide message tracing by @benallfree in <a href=\"https://github.com/zjs81/meshcore-open/pull/216\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/216</a></li>\n<li>Pr combined #228 #220 #219 #201 by @just-stuff-tm in <a href=\"https://github.com/zjs81/meshcore-open/pull/232\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/232</a></li>\n<li>fix(channels): make edit/delete actions use parent context after bottom sheet closes Supports Windows Animations Off In Android by @just-stuff-tm in <a href=\"https://github.com/zjs81/meshcore-open/pull/201\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/201</a></li>\n<li>enh  to send giphy by @benallfree in <a href=\"https://github.com/zjs81/meshcore-open/pull/215\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/215</a></li>\n<li>enh: return cursor focus to message window after send by @benallfree in <a href=\"https://github.com/zjs81/meshcore-open/pull/214\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/214</a></li>\n<li>favorites handling only by @ericszimmermann in <a href=\"https://github.com/zjs81/meshcore-open/pull/234\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/234</a></li>\n<li>Correct Chinese translation by @MGJ520 in <a href=\"https://github.com/zjs81/meshcore-open/pull/179\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/179</a></li>\n<li>Add localized search functiona\n…</li>\n</ul>\n"
    },
    {
      "version": "Alpha6",
      "name": "Alpha6",
      "datetime": "2026-02-09T03:13:56Z",
      "url": "https://github.com/zjs81/meshcore-open/releases/tag/Alpha6",
      "prerelease": false,
      "notes": "## What's Changed\r\n* Updated Slovenian lang by @erikklavora in https://github.com/zjs81/meshcore-open/pull/105\r\n* Added disconnection handling, and fixed state changing of navigation on connection. by @wel97459 in https://github.com/zjs81/meshcore-open/pull/111\r\n* Path tracing. This adds support to ping and trace route repeaters and room server. by @wel97459 in https://github.com/zjs81/meshcore-open/pull/108\r\n* Further translation fixes for german by @ericszimmermann in https://github.com/zjs81/meshcore-open/pull/106\r\n* Add obtainium badge by @446564 in https://github.com/zjs81/meshcore-open/pull/114\r\n* Prevent disconnection handling when already disconnected by @wel97459 in https://github.com/zjs81/meshcore-open/pull/117\r\n* Adds contact sharing by @wel97459 in https://github.com/zjs81/meshcore-open/pull/118\r\n* Allow disabling repeater adverts by @446564 in https://github.com/zjs81/meshcore-open/pull/115\r\n* Add community name to community hashtag channel name by @446564 in https://github.com/zjs81/meshcore-open/pull/59\r\n* Dart format by @446564 in https://github.com/zjs81/meshcore-open/pull/123\r\n* Reduce actions on pull requests by @446564 in https://github.com/zjs81/meshcore-open/pull/125\r\n* Refactor unread message tracking and implement channel caching by @zjs81 in https://github.com/zjs81/meshcore-open/pull/126\r\n* Remove direct msg notification prefix by @446564 in https://github.com/zjs81/meshcore-open/pull/129\r\n* Add flutter test to actions by @446564 in https://github.com/zjs81/meshcore-open/pull/132\r\n* Implement PathTraceMapScreen and refactor path tracing functionality by @wel97459 in https://github.com/zjs81/meshcore-open/pull/141\r\n* Added a export to a GPX by @wel97459 in https://github.com/zjs81/meshcore-open/pull/134\r\n* Remove rotation in path map by @446564 in https://github.com/zjs81/meshcore-open/pull/130\r\n* Reduce map marker size by @446564 in https://github.com/zjs81/meshcore-open/pull/131\r\n* Notification rate limiting by @rsp2k in https://github.com/zjs81/meshcore-open/pull/110\r\n\r\n## New Contributors\r\n* @erikklavora made their first contribution in https://github.com/zjs81/meshcore-open/pull/105\r\n* @rsp2k made their first contribution in https://github.com/zjs81/meshcore-open/pull/110\r\n\r\n**Full Changelog**: https://github.com/zjs81/meshcore-open/compare/Alpha5...Alpha6",
      "notesHtml": "<h2>What's Changed</h2>\n<ul>\n<li>Updated Slovenian lang by @erikklavora in <a href=\"https://github.com/zjs81/meshcore-open/pull/105\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/105</a></li>\n<li>Added disconnection handling, and fixed state changing of navigation on connection. by @wel97459 in <a href=\"https://github.com/zjs81/meshcore-open/pull/111\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/111</a></li>\n<li>Path tracing. This adds support to ping and trace route repeaters and room server. by @wel97459 in <a href=\"https://github.com/zjs81/meshcore-open/pull/108\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/108</a></li>\n<li>Further translation fixes for german by @ericszimmermann in <a href=\"https://github.com/zjs81/meshcore-open/pull/106\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/106</a></li>\n<li>Add obtainium badge by @446564 in <a href=\"https://github.com/zjs81/meshcore-open/pull/114\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/114</a></li>\n<li>Prevent disconnection handling when already disconnected by @wel97459 in <a href=\"https://github.com/zjs81/meshcore-open/pull/117\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/117</a></li>\n<li>Adds contact sharing by @wel97459 in <a href=\"https://github.com/zjs81/meshcore-open/pull/118\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/118</a></li>\n<li>Allow disabling repeater adverts by @446564 in <a href=\"https://github.com/zjs81/meshcore-open/pull/115\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/115</a></li>\n<li>Add community name to community hashtag channel name by @446564 in <a href=\"https://github.com/zjs81/meshcore-open/pull/59\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/59</a></li>\n<li>Dart format by @446564 in <a href=\"https://github.com/zjs81/meshcore-open/pull/123\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/123</a></li>\n<li>Reduce actions on pull requests by @446564 in <a href=\"https://github.com/zjs81/meshcore-open/pull/125\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/125</a></li>\n<li>Refactor unread message tracking and implement channel caching by @zjs81 in <a href=\"https://github.com/zjs81/meshcore-open/pull/126\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/126</a></li>\n<li>Remove direct msg notification prefix by @446564 in <a href=\"https://github.com/zjs81/meshcore-open/pull/129\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/129</a></li>\n<li>Add flutter test to actions by @446564 in <a href=\"https://github.com/zjs81/meshcore-open/pull/132\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/132</a></li>\n<li>Implement PathTraceMapScreen and refactor path tracing functionality by @wel97459 in <a href=\"https://github.com/zjs81/meshcore-open/pull/141\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/141</a></li>\n<li>Added a export to a GPX by @wel97459 in <a href=\"https://github.com/zjs81/meshcore-open/pull/134\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/134</a></li>\n<li>Remove rotation in path map by @446564 in <a href=\"https://github.com/zjs81/meshcore-open/pull/130\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/130</a></li>\n<li>Reduce map marker size by @446564 in <a href=\"https://github.com/zjs81/meshcore-open/pull/131\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/131</a></li>\n<li>Notification rate limiting by @rsp2k in <a href=\"https://github.com/zjs81/meshcore-open/pull/110\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/110</a></li>\n</ul>\n<h2>New Contributors</h2>\n<ul>\n<li>@erikklavora made their first contribution in <a href=\"https://github.com/zjs81/meshcore-open/pull/105\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/105</a></li>\n<li>@rsp2k made their first contribution in <a href=\"https://github.com/zjs81/meshcore-open/pull/110\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/110</a></li>\n</ul>\n<p><strong>Full Changelog</strong>: <a href=\"https://github.com/zjs81/meshcore-open/compare/Alpha5...Alpha6\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/compare/Alpha5...Alpha6</a></p>\n"
    },
    {
      "version": "Alpha5",
      "name": "Alpha5",
      "datetime": "2026-01-24T08:47:55Z",
      "url": "https://github.com/zjs81/meshcore-open/releases/tag/Alpha5",
      "prerelease": false,
      "notes": "## What's Changed\r\n* remove msg notify prefix when preview avail by @446564 in https://github.com/zjs81/meshcore-open/pull/61\r\n* fix: add safety margin to text message overhead calculations by @zjs81 in https://github.com/zjs81/meshcore-open/pull/65\r\n* update tooltips by @446564 in https://github.com/zjs81/meshcore-open/pull/60\r\n* Anupoh/main by @zjs81 in https://github.com/zjs81/meshcore-open/pull/101\r\n* Pr 94 by @zjs81 in https://github.com/zjs81/meshcore-open/pull/102\r\n* Ukrainian localization files by @megadimich in https://github.com/zjs81/meshcore-open/pull/94\r\n* More french translation updates by @spfmoby in https://github.com/zjs81/meshcore-open/pull/69\r\n\r\n## New Contributors\r\n* @446564 made their first contribution in https://github.com/zjs81/meshcore-open/pull/61\r\n* @megadimich made their first contribution in https://github.com/zjs81/meshcore-open/pull/94\r\n\r\n**Full Changelog**: https://github.com/zjs81/meshcore-open/compare/Alpha4...Alpha5\r\n\r\n\r\nYou can join the test flight once its approved here https://testflight.apple.com/join/QzUGKJ65",
      "notesHtml": "<h2>What's Changed</h2>\n<ul>\n<li>remove msg notify prefix when preview avail by @446564 in <a href=\"https://github.com/zjs81/meshcore-open/pull/61\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/61</a></li>\n<li>fix: add safety margin to text message overhead calculations by @zjs81 in <a href=\"https://github.com/zjs81/meshcore-open/pull/65\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/65</a></li>\n<li>update tooltips by @446564 in <a href=\"https://github.com/zjs81/meshcore-open/pull/60\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/60</a></li>\n<li>Anupoh/main by @zjs81 in <a href=\"https://github.com/zjs81/meshcore-open/pull/101\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/101</a></li>\n<li>Pr 94 by @zjs81 in <a href=\"https://github.com/zjs81/meshcore-open/pull/102\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/102</a></li>\n<li>Ukrainian localization files by @megadimich in <a href=\"https://github.com/zjs81/meshcore-open/pull/94\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/94</a></li>\n<li>More french translation updates by @spfmoby in <a href=\"https://github.com/zjs81/meshcore-open/pull/69\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/69</a></li>\n</ul>\n<h2>New Contributors</h2>\n<ul>\n<li>@446564 made their first contribution in <a href=\"https://github.com/zjs81/meshcore-open/pull/61\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/61</a></li>\n<li>@megadimich made their first contribution in <a href=\"https://github.com/zjs81/meshcore-open/pull/94\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/94</a></li>\n</ul>\n<p><strong>Full Changelog</strong>: <a href=\"https://github.com/zjs81/meshcore-open/compare/Alpha4...Alpha5\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/compare/Alpha4...Alpha5</a></p>\n<p>You can join the test flight once its approved here <a href=\"https://testflight.apple.com/join/QzUGKJ65\" target=\"_blank\" rel=\"noopener noreferrer\">https://testflight.apple.com/join/QzUGKJ65</a></p>\n"
    },
    {
      "version": "Alpha4",
      "name": "Alpha4",
      "datetime": "2026-01-20T05:04:49Z",
      "url": "https://github.com/zjs81/meshcore-open/releases/tag/Alpha4",
      "prerelease": false,
      "notes": "## What's Changed\r\n* Update Dutch translations by @dennis1248 in https://github.com/zjs81/meshcore-open/pull/30\r\n* Replace Publicité by Annonce in the french translations by @spfmoby in https://github.com/zjs81/meshcore-open/pull/28\r\n* Fix map centering by @wel97459 in https://github.com/zjs81/meshcore-open/pull/37\r\n* Added public key in contacts list and in the repeater hub by @wel97459 in https://github.com/zjs81/meshcore-open/pull/38\r\n* Show repeater login error in login dialog by @mtlynch in https://github.com/zjs81/meshcore-open/pull/41\r\n* German translation V2 by @ericszimmermann in https://github.com/zjs81/meshcore-open/pull/46\r\n* Fix issues flagged by flutter analyze by @mtlynch in https://github.com/zjs81/meshcore-open/pull/45\r\n* Add a Github Action to build code in CI by @mtlynch in https://github.com/zjs81/meshcore-open/pull/44\r\n* Disable Map rotation by @ericszimmermann in https://github.com/zjs81/meshcore-open/pull/47\r\n* Added room server management by @wel97459 in https://github.com/zjs81/meshcore-open/pull/51\r\n* Added GPS enable and GPS interval settings. by @wel97459 in https://github.com/zjs81/meshcore-open/pull/48\r\n* Added Neighbors to the repeater hub and a screen to display the Neighbors  by @wel97459 in https://github.com/zjs81/meshcore-open/pull/42\r\n\r\n## New Contributors\r\n* @dennis1248 made their first contribution in https://github.com/zjs81/meshcore-open/pull/30\r\n* @spfmoby made their first contribution in https://github.com/zjs81/meshcore-open/pull/28\r\n* @mtlynch made their first contribution in https://github.com/zjs81/meshcore-open/pull/41\r\n* @ericszimmermann made their first contribution in https://github.com/zjs81/meshcore-open/pull/46\r\n\r\n**Full Changelog**: https://github.com/zjs81/meshcore-open/compare/Alpha3...Alpha4\r\n\r\n\r\nMajor Features: Added Communities \r\n\r\nYou can join the test flight once its approved here https://testflight.apple.com/join/QzUGKJ65",
      "notesHtml": "<h2>What's Changed</h2>\n<ul>\n<li>Update Dutch translations by @dennis1248 in <a href=\"https://github.com/zjs81/meshcore-open/pull/30\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/30</a></li>\n<li>Replace Publicité by Annonce in the french translations by @spfmoby in <a href=\"https://github.com/zjs81/meshcore-open/pull/28\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/28</a></li>\n<li>Fix map centering by @wel97459 in <a href=\"https://github.com/zjs81/meshcore-open/pull/37\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/37</a></li>\n<li>Added public key in contacts list and in the repeater hub by @wel97459 in <a href=\"https://github.com/zjs81/meshcore-open/pull/38\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/38</a></li>\n<li>Show repeater login error in login dialog by @mtlynch in <a href=\"https://github.com/zjs81/meshcore-open/pull/41\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/41</a></li>\n<li>German translation V2 by @ericszimmermann in <a href=\"https://github.com/zjs81/meshcore-open/pull/46\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/46</a></li>\n<li>Fix issues flagged by flutter analyze by @mtlynch in <a href=\"https://github.com/zjs81/meshcore-open/pull/45\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/45</a></li>\n<li>Add a Github Action to build code in CI by @mtlynch in <a href=\"https://github.com/zjs81/meshcore-open/pull/44\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/44</a></li>\n<li>Disable Map rotation by @ericszimmermann in <a href=\"https://github.com/zjs81/meshcore-open/pull/47\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/47</a></li>\n<li>Added room server management by @wel97459 in <a href=\"https://github.com/zjs81/meshcore-open/pull/51\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/51</a></li>\n<li>Added GPS enable and GPS interval settings. by @wel97459 in <a href=\"https://github.com/zjs81/meshcore-open/pull/48\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/48</a></li>\n<li>Added Neighbors to the repeater hub and a screen to display the Neighbors  by @wel97459 in <a href=\"https://github.com/zjs81/meshcore-open/pull/42\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/42</a></li>\n</ul>\n<h2>New Contributors</h2>\n<ul>\n<li>@dennis1248 made their first contribution in <a href=\"https://github.com/zjs81/meshcore-open/pull/30\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/30</a></li>\n<li>@spfmoby made their first contribution in <a href=\"https://github.com/zjs81/meshcore-open/pull/28\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/28</a></li>\n<li>@mtlynch made their first contribution in <a href=\"https://github.com/zjs81/meshcore-open/pull/41\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/41</a></li>\n<li>@ericszimmermann made their first contribution in <a href=\"https://github.com/zjs81/meshcore-open/pull/46\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/46</a></li>\n</ul>\n<p><strong>Full Changelog</strong>: <a href=\"https://github.com/zjs81/meshcore-open/compare/Alpha3...Alpha4\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/compare/Alpha3...Alpha4</a></p>\n<p>Major Features: Added Communities </p>\n<p>You can join the test flight once its approved here <a href=\"https://testflight.apple.com/join/QzUGKJ65\" target=\"_blank\" rel=\"noopener noreferrer\">https://testflight.apple.com/join/QzUGKJ65</a></p>\n"
    },
    {
      "version": "Alpha3",
      "name": "Alpha 3 release ",
      "datetime": "2026-01-12T02:23:48Z",
      "url": "https://github.com/zjs81/meshcore-open/releases/tag/Alpha3",
      "prerelease": false,
      "notes": "## What's Changed\r\n* Fixed icons not being visible in Dark mode by @wel97459 in https://github.com/zjs81/meshcore-open/pull/17\r\n* Dev map manage repeater by @zjs81 in https://github.com/zjs81/meshcore-open/pull/26\r\n* Dev roomserver fixes by @zjs81 in https://github.com/zjs81/meshcore-open/pull/27\r\n* Added support for room server chat by @wel97459 in https://github.com/zjs81/meshcore-open/pull/24\r\n* Added telemetry to repeater management by @wel97459 in https://github.com/zjs81/meshcore-open/pull/16\r\n* Added multilingual UI support with 13 locales: English, Chinese, German, Slovak, Portuguese, Bulgarian, Dutch, Spanish, Slovenian, French, Polish, Italian, and Swedish. @zjs81 \r\n\r\n## New Contributors\r\n* @wel97459 made their first contribution in https://github.com/zjs81/meshcore-open/pull/17\r\n\r\n**Full Changelog**: https://github.com/zjs81/meshcore-open/compare/Alpha2...Alpha3\r\n\r\n Special thanks to Winston Lowe for his contributions.\r\n \r\n **We currently need testers for the IOS app store releases and Android Google Play Releases. Please email me at zsylvester@monitormx.com to sign-up.**",
      "notesHtml": "<h2>What's Changed</h2>\n<ul>\n<li>Fixed icons not being visible in Dark mode by @wel97459 in <a href=\"https://github.com/zjs81/meshcore-open/pull/17\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/17</a></li>\n<li>Dev map manage repeater by @zjs81 in <a href=\"https://github.com/zjs81/meshcore-open/pull/26\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/26</a></li>\n<li>Dev roomserver fixes by @zjs81 in <a href=\"https://github.com/zjs81/meshcore-open/pull/27\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/27</a></li>\n<li>Added support for room server chat by @wel97459 in <a href=\"https://github.com/zjs81/meshcore-open/pull/24\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/24</a></li>\n<li>Added telemetry to repeater management by @wel97459 in <a href=\"https://github.com/zjs81/meshcore-open/pull/16\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/16</a></li>\n<li>Added multilingual UI support with 13 locales: English, Chinese, German, Slovak, Portuguese, Bulgarian, Dutch, Spanish, Slovenian, French, Polish, Italian, and Swedish. @zjs81</li>\n</ul>\n<h2>New Contributors</h2>\n<ul>\n<li>@wel97459 made their first contribution in <a href=\"https://github.com/zjs81/meshcore-open/pull/17\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/pull/17</a></li>\n</ul>\n<p><strong>Full Changelog</strong>: <a href=\"https://github.com/zjs81/meshcore-open/compare/Alpha2...Alpha3\" target=\"_blank\" rel=\"noopener noreferrer\">https://github.com/zjs81/meshcore-open/compare/Alpha2...Alpha3</a></p>\n<p> Special thanks to Winston Lowe for his contributions.</p>\n<p> <strong>We currently need testers for the IOS app store releases and Android Google Play Releases. Please email me at <a href=\"mailto:zsylvester@monitormx.com\" target=\"_blank\" rel=\"noopener noreferrer\">zsylvester@monitormx.com</a> to sign-up.</strong></p>\n"
    },
    {
      "version": "Alpha2",
      "name": "Alpha 0.2.0",
      "datetime": "2026-01-02T21:53:31Z",
      "url": "https://github.com/zjs81/meshcore-open/releases/tag/Alpha2",
      "prerelease": false,
      "notes": "# MeshCore Open - Release Notes\r\n\r\n## New Features and Fixes\r\n\r\n### 🎉 New Features\r\n\r\n#### 1. App Debug Logging System\r\n**Files:** [app_debug_log_service.dart](lib/services/app_debug_log_service.dart), [app_logger.dart](lib/services/app_logger.dart), [app_debug_log_screen.dart](lib/screens/app_debug_log_screen.dart)\r\n\r\n- In-app debug log viewer with 3 levels (info, warning, error)\r\n- Copy and clear functionality\r\n- Configurable enable/disable via settings\r\n- Max 1000 entries with automatic rotation\r\n- Global `appLogger` singleton for easy use throughout codebase\r\n\r\n#### 2. Battery Indicator Widget\r\n**File:** [battery_indicator.dart](lib/widgets/battery_indicator.dart)\r\n\r\n- Tappable battery display that toggles between percentage and voltage\r\n- Color-coded battery status (red/orange/amber/green based on charge level)\r\n- Material Design battery icons that change based on charge level\r\n- Integrated into device/status screens\r\n\r\n#### 3. Advanced Path Management UI\r\n**Files:** [path_management_dialog.dart](lib/dialogs/path_management_dialog.dart), [path_selection_dialog.dart](lib/dialogs/path_selection_dialog.dart)\r\n\r\n- Visual path history with success rates and trip times\r\n- Tap to select from recently successful paths\r\n- Long-press to view full path details\r\n- Remove individual path entries from history\r\n- Custom path builder with contact selection\r\n- Path validation (max 64 hops, hex format checking)\r\n- Visual indicators for flood vs. routed paths\r\n- Clear path / Force flood mode options\r\n\r\n#### 4. List Filtering & Sorting Widget\r\n**File:** [list_filter_widget.dart](lib/widgets/list_filter_widget.dart)\r\n\r\n- Reusable filter/sort menu component\r\n- Multi-section support with dividers\r\n- Checkbox menu items for filters\r\n- Radio-style selection for sort options\r\n- Used in contacts and channels screens\r\n\r\n#### 5. Contacts Screen Enhancements\r\n- Sort options: Latest messages, Heard recently, A-Z\r\n- Type filters: All, Users, Repeaters, Room servers\r\n- \"Unread only\" filter\r\n- \"New group\" action in filter menu\r\n- Visual indicators for contact types\r\n- Improved contact refresh logic\r\n\r\n#### 6. Channels Screen Improvements\r\n- Channel sync progress indicator\r\n- Better loading states during channel refresh\r\n- Filter and sort options for channels\r\n- Improved channel ordering persistence\r\n\r\n#### 7. Repeater Command ACK Tracking\r\n- Track acknowledgments for CLI commands sent through repeaters\r\n- Integrates with path history to record command delivery success\r\n- Timeout handling for commands that don't get ACKed\r\n- Path result recording (success/failure with trip time)\r\n\r\n#### 8. Path Override API Enhancements\r\n- `preparePathForContactSend()` - Prepares path selection before sending\r\n- `verifyContactPathOnDevice()` - Verifies path was set correctly on device\r\n- `trackRepeaterAck()` - Track ACKs for repeater commands\r\n- `recordRepeaterPathResult()` - Record path success/failure\r\n- Better separation of concerns between connector and services\r\n\r\n#### 9. App Settings Additions\r\n- `appDebugLogEnabled` setting\r\n- Battery chemistry per-device configuration\r\n- Theme mode persistence (system/light/dark)\r\n- Auto route rotation toggle\r\n\r\n#### 10. Repeater Features\r\n- Enhanced repeater login dialog with better error handling\r\n- Repeater CLI screen improvements\r\n- Repeater status screen with more details\r\n- Repeater settings screen enhancements\r\n\r\n---\r\n\r\n### 🐛 Fixes\r\n\r\n#### 1. Channel Sync Race Conditions ⭐ **Critical Fix**\r\n**Issue:** Parallel channel requests caused timeouts and missing channels\r\n\r\n**Fix:**\r\n- Switched to sequential channel syncing with retry logic\r\n- Per-channel timeout (2 seconds) instead of bulk timeout\r\n- Retry up to 3 times per channel before falling back to cache\r\n- Progress tracking for better UX\r\n- Proper cleanup on disconnection\r\n\r\n#### 2. Path Override Persistence\r\n**Issue:** User path overrides could be lost when device sends contact updates\r\n\r\n**Fix:**\r\n- Explicitly preserve `pathOverride` and `pathOverrideBytes` during contac\n…",
      "notesHtml": "<h1>MeshCore Open - Release Notes</h1>\n<h2>New Features and Fixes</h2>\n<h3>🎉 New Features</h3>\n<h4>1. App Debug Logging System</h4>\n<p><strong>Files:</strong> <a href=\"https://github.com/zjs81/meshcore-open/blob/HEAD/lib/services/app_debug_log_service.dart\" target=\"_blank\" rel=\"noopener noreferrer\">app_debug_log_service.dart</a>, <a href=\"https://github.com/zjs81/meshcore-open/blob/HEAD/lib/services/app_logger.dart\" target=\"_blank\" rel=\"noopener noreferrer\">app_logger.dart</a>, <a href=\"https://github.com/zjs81/meshcore-open/blob/HEAD/lib/screens/app_debug_log_screen.dart\" target=\"_blank\" rel=\"noopener noreferrer\">app_debug_log_screen.dart</a></p>\n<ul>\n<li>In-app debug log viewer with 3 levels (info, warning, error)</li>\n<li>Copy and clear functionality</li>\n<li>Configurable enable/disable via settings</li>\n<li>Max 1000 entries with automatic rotation</li>\n<li>Global <code>appLogger</code> singleton for easy use throughout codebase</li>\n</ul>\n<h4>2. Battery Indicator Widget</h4>\n<p><strong>File:</strong> <a href=\"https://github.com/zjs81/meshcore-open/blob/HEAD/lib/widgets/battery_indicator.dart\" target=\"_blank\" rel=\"noopener noreferrer\">battery_indicator.dart</a></p>\n<ul>\n<li>Tappable battery display that toggles between percentage and voltage</li>\n<li>Color-coded battery status (red/orange/amber/green based on charge level)</li>\n<li>Material Design battery icons that change based on charge level</li>\n<li>Integrated into device/status screens</li>\n</ul>\n<h4>3. Advanced Path Management UI</h4>\n<p><strong>Files:</strong> <a href=\"https://github.com/zjs81/meshcore-open/blob/HEAD/lib/dialogs/path_management_dialog.dart\" target=\"_blank\" rel=\"noopener noreferrer\">path_management_dialog.dart</a>, <a href=\"https://github.com/zjs81/meshcore-open/blob/HEAD/lib/dialogs/path_selection_dialog.dart\" target=\"_blank\" rel=\"noopener noreferrer\">path_selection_dialog.dart</a></p>\n<ul>\n<li>Visual path history with success rates and trip times</li>\n<li>Tap to select from recently successful paths</li>\n<li>Long-press to view full path details</li>\n<li>Remove individual path entries from history</li>\n<li>Custom path builder with contact selection</li>\n<li>Path validation (max 64 hops, hex format checking)</li>\n<li>Visual indicators for flood vs. routed paths</li>\n<li>Clear path / Force flood mode options</li>\n</ul>\n<h4>4. List Filtering &amp; Sorting Widget</h4>\n<p><strong>File:</strong> <a href=\"https://github.com/zjs81/meshcore-open/blob/HEAD/lib/widgets/list_filter_widget.dart\" target=\"_blank\" rel=\"noopener noreferrer\">list_filter_widget.dart</a></p>\n<ul>\n<li>Reusable filter/sort menu component</li>\n<li>Multi-section support with dividers</li>\n<li>Checkbox menu items for filters</li>\n<li>Radio-style selection for sort options</li>\n<li>Used in contacts and channels screens</li>\n</ul>\n<h4>5. Contacts Screen Enhancements</h4>\n<ul>\n<li>Sort options: Latest messages, Heard recently, A-Z</li>\n<li>Type filters: All, Users, Repeaters, Room servers</li>\n<li>\"Unread only\" filter</li>\n<li>\"New group\" action in filter menu</li>\n<li>Visual indicators for contact types</li>\n<li>Improved contact refresh logic</li>\n</ul>\n<h4>6. Channels Screen Improvements</h4>\n<ul>\n<li>Channel sync progress indicator</li>\n<li>Better loading states during channel refresh</li>\n<li>Filter and sort options for channels</li>\n<li>Improved channel ordering persistence</li>\n</ul>\n<h4>7. Repeater Command ACK Tracking</h4>\n<ul>\n<li>Track acknowledgments for CLI commands sent through repeaters</li>\n<li>Integrates with path history to record command delivery success</li>\n<li>Timeout handling for commands that don't get ACKed</li>\n<li>Path result recording (success/failure with trip time)</li>\n</ul>\n<h4>8. Path Override API Enhancements</h4>\n<ul>\n<li><code>preparePathForContactSend()</code> - Prepares path selection before sending</li>\n<li><code>verifyContactPathOnDevice()</code> - Verifies path was set correctly on device</li>\n<li><code>trackRepeaterAck()</code> - Track ACKs for repeater commands</li>\n<li><code>recordRepeaterPathResult()</code> - Record path success/failure</li>\n<li>Better separation of concerns between connector and services</li>\n</ul>\n<h4>9. App Settings Additions</h4>\n<ul>\n<li><code>appDebugLogEnabled</code> setting</li>\n<li>Battery chemistry per-device configuration</li>\n<li>Theme mode persistence (system/light/dark)</li>\n<li>Auto route rotation toggle</li>\n</ul>\n<h4>10. Repeater Features</h4>\n<ul>\n<li>Enhanced repeater login dialog with better error handling</li>\n<li>Repeater CLI screen improvements</li>\n<li>Repeater status screen with more details</li>\n<li>Repeater settings screen enhancements</li>\n</ul>\n<hr />\n<h3>🐛 Fixes</h3>\n<h4>1. Channel Sync Race Conditions ⭐ <strong>Critical Fix</strong></h4>\n<p><strong>Issue:</strong> Parallel channel requests caused timeouts and missing channels</p>\n<p><strong>Fix:</strong></p>\n<ul>\n<li>Switched to sequential channel syncing with retry logic</li>\n<li>Per-channel timeout (2 seconds) instead of bulk timeout</li>\n<li>Retry up to 3 times per channel before falling back to cache</li>\n<li>Progress tracking for better UX</li>\n<li>Proper cleanup on disconnection</li>\n</ul>\n<h4>2. Path Override Persistence</h4>\n<p><strong>Issue:</strong> User path overrides could be lost when device sends contact updates</p>\n<p><strong>Fix:</strong></p>\n<ul>\n<li>Explicitly preserve <code>pathOverride</code> and <code>pathOverrideBytes</code> during contac\n…</li>\n</ul>\n"
    },
    {
      "version": "Alpha",
      "name": "Alpha v0.1.0",
      "datetime": "2026-01-01T05:42:49Z",
      "url": "https://github.com/zjs81/meshcore-open/releases/tag/Alpha",
      "prerelease": false,
      "notes": "First Alpha Release of Android App. IOS is not available at this time.",
      "notesHtml": "<p>First Alpha Release of Android App. IOS is not available at this time.</p>\n"
    }
  ],
  "changelogSource": "github",
  "changelogUpdatedAt": "2026-06-23T19:50:28.877Z"
}
