All software

MeshCorium

Client Beta

Self-hosted MeshCore client with a hybrid contact system and a local web interface for working with a MeshCore node through companion firmware. Includes systemd service integration, auto-update via GitHub releases, and Russian and English documentation.

Maintainer
PEG4TRON ↗
Kind
Clients
Maturity
Beta
Language
Python
Licensing
Open source
Latest version
0.9.0 · 2026-06-30
License
MIT
Platforms
Linux

Screenshots

MeshCorium web interface

Capabilities

Interfaces

  • Web

Connections

  • Serial
  • TCP
  • BLE

Capabilities

  • Messaging
  • Contacts
  • Channels
  • Node configuration

Node role

  • Companion

Install

Releases

from GitHub · updated 2026-07-05
  1. v0.9.0 # Latest 20 days ago · 2026-06-30 17:50 UTC

    v0.9.0 — UI/UX improvements & WIKI page + Android client (2026-06-30)

    Web: Settings Layout Overhaul

    • Maps page summary cards: centered text in mc-map-summary-card
    • Settings rows grid: minmax(220px, auto) for adaptive control column width
    • Native select and inline input: natural width (not forced 100%)
    • mc-settings-inline-controls: no max-width cap, sizes from content
    • mc-settings-row-control--stack: gap 8px between stacked controls
    • Background blur toggle and wallpaper dropdown swapped order

    Web: MeshCore Params Radio Section

    • Removed "Section status" and "Companion firmware limitation" info blocks
    • Split SF and CR into two separate rows with individual descriptions and sfHint/crHint i18n
    • Split TX power and Client repeat into separate rows with txPowerHint/clientRepeatHint
    • Client repeat unavailable hint: yellow (mc-settings-inline-hint--warning), moved to label column
    • Client repeat condition: shown only when constraints require allowed-range check AND current frequency is outside allowed ranges

    Web: MeshCore Params Routing Section

    • Multi-Acks: checkbox moved left of numeric input, duplicate label removed
    • Telemetry broadcast: extracted into separate card with 3 sub-rows (Base/Location/Environment) + card-body descriptions for each mode value
    • TX timing and airtime: extracted into separate card with RX delay base hint (0-20ms) and airtime factor hint (duty_cycle formula)
    • Path hash mode: separate card with hop constraints per mode (1-byte=64, 2-byte=32, 3-byte=21 hops) + autoaddMaxHopsHint
    • Auto-add contacts: extracted into separate card with 5 individual rows, each with title and description

    Web: MeshCore Params Identity Section

    • Latitude/Longitude row: title → "Node coordinates" / "Координаты ноды", description → "Latitude, Longitude" / "Широта, Долгота"
    • Removed read-only rows: Device model, Device time (UTC), Firmware
    • Removed Direct and Flood advert buttons

    Web: Wiki Page (NEW)

    • New /wiki route with lazy-loaded WikiView
    • ShellPageFrame layout matching settings structure: scroller + workspace
    • Phonebar in workspace-top (desktop) + mobile phonebar support
    • Scroller-footer with MessagesConversationSidebar (status as in Messages)
    • Empty scroller-body placeholder for future navigation
    • Workspace-header with dynamic title/subtitle from route params
    • i18n: wiki section in en.js and ru.js with 5 sections (getting-started, hardware, companion, repeater, faq)
    • Rail button with book icon (rotated open book SVG, gradient style matching existing icons)
    • Mobile dock Wiki button with router navigation
    • Wiki icon: /icons/wiki-icon.svg

    Web: Settings Control Width Adaptivity

    • All mc-settings-native-select and mc-settings-inline-input: width auto (fit content)
    • All mc-settings-inline-controls: no min/max width constraint
    • Controls align to flex-end within the column

    Wiki Content and Diagrams

    • Added file-driven wiki content and SVG attachments for English and Russian locales.
    • Docker image now includes wiki/ and web/attachments/ runtime content.
    • Fixed SVG text layout in wiki diagrams so Russian labels do not overflow their frames.

    Android Client

    • Android WebView client APK is provided as a separate downloadable GitHub Release asset.

    v0.9.0 — UI/UX improvements & WIKI page + Android client (2026-06-30) [RU]

    Web: переработка layout настроек

    • Карточки summary на странице карт: текст центрирован в mc-map-summary-card.
    • Сетка строк настроек получила адаптивную колонку управления minmax(220px, auto).
    • Native select и inline input используют естественную ширину, без принудительного 100%.
    • mc-settings-inline-controls больше не ограничивает ширину, размеры идут от содержимого.
    • Для stacked controls добавлен аккуратный gap 8px.
    • Переключатель background blur и dropdown wallpaper поменяны местами.

    Web: MeshCore Params

    • Радио-раздел очищен от лишних информационных блоков, SF/CR и TX power/Client repeat вынесены в отдельные строки с под …
  2. v0.8.3 # 22 days ago · 2026-06-29 02:36 UTC

    v0.8.3 — Fixes & Mobile App (2026-06-29)

    Android WebView Client (NEW)

    • Native bottom dock with 5 tabs: notifications, chats, contacts, map, settings
    • WebView ↔ native navigation via JavaScript bridge (no page reloads)
    • Native dock colors and styles matched to web mobile dock
    • Long-press Settings → native client settings → editable server connection URL
    • Server URL editing reuses UrlEntryActivity in two modes (initial/edit)
    • Connection change without app restart (cookie/cache cleanup + WebView reload)
    • FCM push notification registration integrated
    • WebView same-origin enforcement for security
    • Versioned APK in git: meshcorium-android-client.0.8.3.<hash>.apk

    Web: Native Shell Support

    • detectNativeShell() with MeshcoriumAndroid bridge + User-Agent fallback
    • Web mobile dock hidden in native-shell mode (v-if + CSS fallback)
    • installNativeActionBridge() — Android dispatches actions to Vue Router
    • Vue → native dock state sync: active tab, notification badge, connection status
    • Fixed spacer gaps on contacts, maps and settings pages in native-shell mode
    • Settings mobile nodebar repositioned to safe-area bottom (no overlapping)

    Fixes

    • Fixed long-press Settings gesture race (deferred launch via view.post)
    • Fixed icon/label overlap in native dock (height 84dp, itemPaddingBottom 12dp)
    • Fixed potential badge "0" visibility (zero-string guard)
    • Removed singleTask launchMode from UrlEntryActivity (Activity Result API conflict)

    Web: CSS & Layout

    • mc-native-shell overrides: dock suppression, spacer removal for all pages
    • Removed dead mc-page--global-mobile-dock CSS rule
    • Settings workspace and section-stack padding adjusted for native-shell

    v0.8.3 — Fixes & Mobile App (2026-06-29) [RU]

    Android WebView-клиент (НОВОЕ)

    • Нативный нижний dock с 5 вкладками: уведомления, чаты, контакты, карта, настройки
    • Навигация WebView ↔ native через JavaScript bridge (без перезагрузок страниц)
    • Цвета и стили нативного дока приведены к web-доку
    • Долгое нажатие Настройки → нативные настройки клиента → редактируемый URL сервера
    • Редактирование URL переиспользует UrlEntryActivity в двух режимах (первый запуск/редактирование)
    • Смена подключения без перезапуска приложения (очистка cookies/cache + перезагрузка WebView)
    • Интегрирована FCM push-регистрация
    • Ограничение WebView доверенным origin (same-origin проверка)
    • Версионированный APK в git: meshcorium-android-client.0.8.3.<hash>.apk

    Web: Поддержка Native Shell

    • detectNativeShell() через MeshcoriumAndroid bridge + User-Agent fallback
    • Web-док скрывается в native-shell режиме (v-if + CSS fallback)
    • installNativeActionBridge() — Android передаёт действия в Vue Router
    • Синхронизация Vue → native dock: активная вкладка, badge, статус подключения
    • Исправлены зазоры на страницах контактов, карт и настроек в native-shell режиме
    • Мобильный nodebar настроек прижат к safe-area снизу (без наложения)

    Исправления

    • Исправлена гонка жеста долгого нажатия Настроек (отложенный запуск через view.post)
    • Исправлено наложение иконок на подписи в нативном доке (высота 84dp, itemPaddingBottom 12dp)
    • Исправлен потенциальный бадж "0" (защита от нулевой строки)
    • Убран launchMode="singleTask" у UrlEntryActivity (конфликт с Activity Result API)

    Web: CSS & Layout

    • mc-native-shell overrides: скрытие дока, устранение зазоров для всех страниц
    • Убрано мёртвое CSS-правило mc-page--global-mobile-dock
    • Отступы Settings workspace и section-stack скорректированы для native-shell

    Dev / Unreleased (2026-06-19)

    Message Search in Dialogs (desktop) — GitHub issues #112-118

    • Backend (#112): New GET /api/messages/search endpoint — full-text search (lower(text) LIKE) with optional @sender filter (text LIKE 'partialname%:%'). Sorting by proximity to viewport center: ORDER BY ABS(id - viewport_center_id) ASC. Supports both channel and contact conversations. Files: meshcorium_web.py (+88 lines).
    • Frontend — search panel (#113): New …
  3. v0.8.2 # 1 month ago · 2026-06-18 17:28 UTC

    Changelog

    v0.8.2 — Auto-Update Fix (2026-06-18)

    Service & Deployment

    • CRITICAL FIX: Added missing --supervise flag to systemd service ExecStart line in meshcorium-launcher.sh. Without this flag, the launcher ran in default --run mode — starting the Python process directly without the supervisor loop that handles GitHub release checks and the self-update lifecycle. This prevented automatic update discovery from working in all previous releases that used systemd.

    • Impact: After this fix, meshcorium.service runs meshcorium-launcher.sh --supervise instead of meshcorium-launcher.sh (default --run). The supervisor now polls GitHub every 30 minutes for new releases, writes .meshcorium_update_available flag file, and manages the full install/rollback lifecycle via updater.sh.

    • Upgrade note: Existing installations can fix the systemd unit without reinstalling by running the provided fix script:

      cd /opt/MeshCorium && curl -sSL https://raw.githubusercontent.com/PEG4TRON/MeshCorium/main/fix-autoupdate.sh | bash
      

      The script detects the installation, creates a backup, patches ExecStart, validates with systemd-analyze verify, and restarts the service. Alternatively, run meshcorium-launcher.sh --install to recreate the unit from the corrected template.


    v0.8.1 — Mobile UX & Quality (2026-06-18)

    Map provider fallback

    • Unified MapLibre provider selection and fallback behavior across all secondary maps: message route maps, repeater geo picker, and contact route editor now honor the saved map_provider setting just like the main Maps page.
    • Extracted shared map provider constants, style builders, tile proxy rewriting, provider normalization, and raster fallback helpers into web/src/lib/mapLibre.js.
    • Added a 6-second map style boot timeout and error-triggered fallback from OpenFreeMap / OFM Liberty to OSM Raster for secondary map sheets, matching the main Maps page behavior.
    • Continued routing both OpenFreeMap and OSM raster tile requests through the local /api/tiles/proxy endpoint to avoid direct LAN/browser tile loading problems.

    Map settings and data filtering

    • Added a persisted map_max_distance_km client setting with a default of 400 km and a supported range of 1–20000 km.
    • Added desktop and mobile Maps UI controls for changing the maximum contact-rendering distance. Contacts outside the configured home-node radius are filtered from map display.

    Settings and update UX

    • Added a manual update-check button next to the displayed version in Settings → About.
    • Corrected the Settings/About fallback display version for this release.

    Docker and release packaging

    • Added .meshcorium_version to the Docker runtime image so containerized /api/update/check reports the same 0.8.1 version as the normal launcher build.
    • Updated Docker Compose image/release metadata to 0.8.1 / 0.8.1--map-fixes.
    • Added the previously omitted helper script download_meshcore_node_svgs.py to the Docker runtime copy list, keeping root Python files explicit in the Dockerfile.
    • Kept the cleaned release tree rules from v0.8.0: runtime data, logs, caches, virtual environments, and node modules are excluded from release artifacts.

    Messages

    Scroll-to-newest

    • Fixed broken scroll-to-bottom button in conversations: clicking "scroll to newest" now jumps directly to the last message in the database, loading a fresh batch of 50 latest messages and marking all previous messages as read.
    • Added latest=true query parameter to list_channel_messages and list_contact_messages — direct jump to the newest DB messages instead of iterative pagination.
    • Rewrote scrollToNewestMessage() in MessagesView.vue: single API call replaces old messages instead of merging, marks all messages up to the newest as read via POST /api/messages/read-up-to.
    • Fixed infinite loop in scrollToNewestMessage: added lastNewerLoadHadResults ref guard in `canLoadNewerM …
Show all 16 releases →

Project signals

popularity 2026-07-20 verification 2026-07-20
GitHub stars
11
Forks
1
Watchers
0
Open issues
47
Contributors
2
Release downloads
3
Latest downloads
3
Source available
Yes
Releases available
Yes
Signed releases
No
CI builds
No
Documentation
Yes
  • Self-hosted web client with hybrid contact system.
  • Includes systemd service and auto-update via GitHub releases.
  • Available in Russian and English.

Tags