12 Commits

Author SHA1 Message Date
Bernhard M 28f9a842cb Update MeshCore flasher URL in README 2026-04-25 19:04:54 +02:00
Bernhard M f516a2d83f Update README.md 2026-04-20 00:31:36 +02:00
Bernhard M 8be9e097da Update README.md 2026-04-14 07:38:50 +02:00
Bernhard M 86d8f3923e Update funding sources in FUNDING.yml 2026-04-09 08:00:24 +02:00
Bernhard M 2d6ef74f30 Add GitHub Sponsors funding option
Updated funding information to include GitHub Sponsors.
2026-04-09 07:59:38 +02:00
Bernhard M 2f0a523862 Update funding model format in FUNDING.yml 2026-04-08 21:03:14 +02:00
Bernhard M 02e823f731 Add funding options for GitHub and Buy Me a Coffee
Updated funding options to include GitHub Sponsors and Buy Me a Coffee.
2026-04-08 21:02:10 +02:00
Bernhard M 2c9c46d93a Revise CHANGELOG for v0.9.12 updates
Updated changelog with new features, improvements, and fixes for v0.9.12.
2026-04-04 01:01:54 +02:00
Bernhard M b0e286185f Update CHANGELOG for v0.9.11 release
Updated changelog for version 0.9.11 with new features, improvements, and fixes.
2026-03-15 22:28:29 +01:00
Bernhard M 0be6b97639 Update Elecrow display entry with URL
Added link for Elecrow with 3.5 Display in the README.
2026-03-15 02:37:15 +01:00
Bernhard M ca1fdf5709 Update README with upcoming device support
Added upcoming device support information to README.
2026-03-15 02:35:08 +01:00
Bernhard M 02132aaa55 Update CHANGELOG.md 2026-03-10 09:56:04 +02:00
3 changed files with 196 additions and 1 deletions
+3
View File
@@ -0,0 +1,3 @@
# These are supported funding model platforms
[GitHub Sponsors](https://github.com/sponsors) | `github: dabeani`
[Kaufen Sie mir einen Kaffee](https://www.buymeacoffee.com/) | `buy_me_a_coffee: bmks`
+178
View File
@@ -2,6 +2,184 @@
All notable changes to this project.
## [v0.9.12] (unreleased)
## implemented Elecrow CrowPanel 7" companion radio support!
### unfinished
- MAP is still WIP!
### Added
- **GUI: contact list reachability badges condensed**
- Reachability badges shortened: direct-link badge is now "D" (green), flood-route badge is now "F" (blue)
- Last-heard time badge background changed from blue to dark/neutral so blue is unambiguously associated with flood-route only
- **GUI: status-bar clock quick access**
- Added a live time display in the status bar so current clock state/time is visible at a glance
- Tapping the status-bar clock now opens Mgmt → Date/Time directly for quick adjustment
- **GUI: contact list badge reordering and new device-byte badge**
- Right-side badge order is now: `[1b/2b/3b]` `[TYPE]` `[ROUTE]` `[LAST_HEARD]` `[FAV]` `[GPS]` `[MAIL]`
- New "device-byte" badge (`1b`, `2b`, `3b`) shows the address hash width used in the contact's last advert — dark background, visible when advert path data is available
- **GUI: unread mail indicators moved to Msgs tab button**
- Top status-bar unread envelope indicator (near WiFi/BLE badges) was removed to reduce clutter and improve signal-badge clarity
- `Msgs` tab now shows a white envelope directly left of the label when channel messages are unread, and a red envelope directly right of the label when DMs are unread
- Indicator sizes are scaled to tab text height so they stay readable without overpowering the button text
### Changed / Improved
- **Companion radio UI maintenance and cleanup**
- UI codebase reorganized for easier long-term maintenance and safer follow-up changes
- Core companion radio targets were revalidated to keep builds stable after the cleanup work
- **Management log readability improved**
- Long sender, destination, and packet text now wrap to the available screen width instead of being cut off early
- Log detail view shows richer packet content before shortening is needed on very large payloads
- Log scrolling and entry layout were optimized so the log page remains responsive even with larger entries
- **More consistent device colors across the interface**
- Device colors are now applied more broadly in the management log and detail views
- Device identity colors are now deterministic and non-repeating across the global UI rules
- **Channel and DM views stay more responsive while browsing larger histories**
- Transcript rows, detail views, and touch hit-testing now reuse prepared message text instead of rebuilding the same sender/body data repeatedly
- Scrolling, selection, and hashtag handling were tightened without reducing live refresh behavior for ongoing stats and message updates
- **Documentation and build config follow-up completed**
- Companion GUI guide wording and behavioral notes were aligned with current log capacity, wrapping behavior, identity-color usage, and clipboard path
- Elecrow CrowPanel 7 GUI build now pins the tested Espressif platform release explicitly for reproducible builds
- **CrowPanel 7 list readability and alignment improved**
- Contacts, DMs, and Channels overview rows now use larger list text on the 7-inch panel profile
- Row text, discovered-item labels, and related row actions are vertically centered using row-height-aware placement to avoid off-center rendering
- **CrowPanel 7 global text readability uplift**
- Baseline GUI text sizing was raised for the 7-inch panel profile so message views, detail pages, contacts detail, management screens, and related UI text paths render larger by default
- Applied as an environment-specific profile only, keeping other device layouts unchanged
- **CrowPanel 7 layout balancing pass for larger text**
- Statusbar activity indicator, unread-message symbols, and WiFi/BLE badges were resized and re-centered to match the larger text profile
- Message/detail and management line spacing were increased to reduce cramped wrapped text
- Management header/action buttons were scaled up for better readability and touch comfort on the 7-inch display
- **CrowPanel 7 header and button polish**
- Chat transcript (Back/Custom/Send) and message-detail (Back/Reply/Del) button labels are now vertically centered in their row instead of being anchored to a fixed pixel offset
- Management "Back" button label in sub-page headers uses dynamic text-height centering so it remains vertically centered at the larger CrowPanel 7 text size
- Management header blue pager/back buttons (< >) gained more height for easier tapping
- Management action buttons (Edit, Enable/Disable, Add, Del, etc.) are wider to accommodate longer labels without crowding
- Status-bar battery icon and text are now vertically centered within the expanded CrowPanel 7 status-bar height instead of being pinned to a fixed y offset
- **CrowPanel 7 comprehensive alignment pass across companion GUI**
- Contact badges, contact detail header actions, RPT admin rows, map folder rows, confirm dialogs, room/RPT login actions, and telemetry/clock request controls now use row/button-height-aware vertical centering instead of fixed y offsets
- Standalone action buttons now share a board-aware minimum height rule so CrowPanel 7 keeps readable text spacing while smaller targets preserve the previous compact sizing
- Management advert two-line buttons now place text using text-size-aware offsets, keeping both lines centered as display text size changes
- Management-style buttons now always render their label text (fixes blank button captions on Global/ACL/clock-sync/request/scan style actions)
- **GUI regression build stability follow-up**
- Removed stale per-variant Arduino framework package overrides from SenseCap Indicator TFT and Elecrow CrowPanel 7 configs to align with their active platform package set
### Fixed
- **GUI: Date/Time set dialog timezone mismatch**
- Management overview and "Set Time" editor now both use the configured timezone consistently instead of mixing local display with UTC-oriented edit semantics
- Manual Date/Time entry is interpreted as local wall-clock time for the active timezone (including DST rules), so users can enter exactly what is shown in the overview
- Set-Time input prefill now uses local timezone time to match the visible Date/Time row
- **GUI: contacts could become garbled/corrupted after malformed contact updates or persisted non-terminated names**
- Contact update command parsing now enforces the full minimum frame length before decoding, rejecting truncated payloads instead of ingesting garbage bytes
- Contact names loaded from frames and storage are now explicitly null-terminated to prevent string overrun into adjacent contact fields
- Discovered-contact cache updates now use bounded copy for names, preventing overflow that could corrupt contact row state and right-side badges/actions
- Persisted contact route lengths are sanitized on load so invalid values no longer destabilize contact rendering/state
- **GUI: long-tap copy in message detail could paste only a truncated wrapped fragment**
- Long-tap copy without drag-selection now copies the full message body instead of a single wrapped line fragment
- Detail line-hit indexing now matches render indexing when sender prefix wraps to its own line, preventing off-by-one selection/copy mismatches
- Clipboard persistence now receives the intended full copied message text for subsequent paste operations
- **Management log truncation and readability regressions**
- Long log entries no longer lose important sender/destination information when the text exceeds one line
- Packet details now wrap across lines based on display size instead of stopping at early ellipsis in common cases
---
## [v0.9.11]
### Upstream base upgraded: MeshCore v1.13 → v1.14
### Implemented device support for Heltec V4 with TFT +GPS
### Implemented device support for Elecrow CrowPanel 3.5 TFT +SDCard
### unfinished
- MAP is still WIP!
### Added
- Radio activity LED: a small round dot in the top status bar (left of the device name) that flashes green for 250 ms on LoRa RX activity (including CRC-error receptions) and flashes red for 250 ms on LoRa TX activity. The dot shows an idle ring outline when quiet.
- Map last-known-position auto-save: when GPS gets a valid fix, coordinates are persisted to flash immediately so the map restores the true latest position after reboot. Ongoing writes are still throttled (max once every 5 minutes) and only occur when coordinates change.
- Map contact markers now show the node 1-byte ID prefix (2-digit hex, e.g. `1E`) instead of plain squares, using the same existing marker background coloring (hop color / selected highlight) with automatic black-or-white foreground contrast for readability. (still under construction)
### Changed / Improved
- Mgmt → WiFi now supports saved WiFi Profiles: you can create multiple named profiles, keep separate SSID/password pairs per profile, switch the active profile from a dedicated saved-profile picker, delete saved profiles directly in that picker.
- Mgmt → Global is leaner: compile-time rows for `MAX_GROUP_CHANNELS` and `OFFLINE_QUEUE_SIZE` are gone, `MAX_CONTACTS` moved to Mgmt → Contacts as `ACT/MAX Contacts`, and the Global `Reboot` / `Update & Upgrade` actions now use the compact side-by-side button style.
- Mgmt → Contacts now includes `Manual add contact`, using the existing edit overlay for a two-step `Public Key` then `Name` flow with clipboard paste support in both fields.
- MAP tile cache handling is quieter and more efficient: missing SD tiles are negatively cached briefly, repeated open attempts are avoided while offline, and tiles are retried automatically once Wi-Fi connectivity returns.
- MAP marker tap behavior: tapping a ByteID marker now keeps selection on the map and shows a left-bottom info box with `Name`, `Age`, and `Distance` (km), without a separate floating name box.
- MAP marker double-tap behavior: double-tapping the same ByteID marker opens that contact directly in Contact Detail.
- Mgmt → Advert → Scan Neighbor Repeaters now shows an Add button only for repeaters not yet in Contacts, and tapping a repeater row opens Contact Detail instead of adding on name/row tap.
- Mgmt → Advert now includes `Path Hash Mode`, and Mgmt → Contacts now includes `AutoAdd Max Hops`, matching the MeshCore v1.14 companion settings on-device. (be careful other repeaters/companions need minumum MeshCore v1.14+ to avoid compatibility issues when these settings are changed)
- Mgmt → Contacts → `AutoAdd Max Hops` now opens an Edit field for manual numeric entry with validation across the full MeshCore v1.14 range `0..64`: `0 = No Limit`, `1 = Direct (0 hops)`, and `N = up to N-1 hops`.
- DM message detail now shows delivery state for sent messages (Pending / Delivered / Not delivered), including ACK-based delivered updates.
- Mgmt → Channels now treats the built-in `Public` channel like any other joined channel, including Share/Delete actions.
- If the default `Public` channel was deleted, Mgmt → Channels → Join now shows a `Public` button that recreates it automatically only when it is currently missing.
- T-Deck Text editor now scrolls with the cursor when moving left into long input, so the beginning of the text remains visible while editing.
- Text edit overlay uses smaller message-input text with wrapped visible lines for easier long-message editing.
- Touch text-edit overlays now use a tighter full-screen keyboard layout with larger key labels, smaller action-bar labels, and consistent title/field sizing across Wi-Fi, BLE, repeater, and other edit targets.
- The on-screen keyboard now supports two symbol pages (`SYM1` / `SYM2`) and horizontal swipe gestures across the key area to switch symbol pages faster on touch-only devices.
### Fixed
- Elecrow CrowPanel 3.5 SD card initialization now uses the dedicated TF SPI wiring and shared mount helper, so `/MCTerm` prefs, clipboard storage, and map tile cache writes work on the board.
- Companion-sent messages no longer appear twice.
- GUI-origin channel messages now populate message-detail metadata consistently (route/path hint + timestamp/RSSI baseline), so detail fields are no longer empty compared to companion-origin sends.
- DM detail delivery status now correctly updates for zero-hop/direct sends (no false "Not delivered" when ACK was received), and sent-message hops/RSSI/repeats metadata updates more reliably.
- T-Deck display wake behavior is now consistent: whether the screen turned off automatically or manually, it wakes via knob press only and no longer wakes on knob movement.
- Online AutoUpgrader manifest validation is now more robust (schema compatibility + target-key fallback), reducing false "manifest" errors.
- T-Deck keyboard backlight timeout now reliably turns the keyboard light off even after manual Alt+B keyboard-light activation.
- MAP now starts downloading and caching online tiles even when the SD card tiles folder is initially empty, as long as network tiles are enabled, Wi-Fi is connected, and the SD card is writable.
- Mgmt/Advert: Auto Advert Direct interval setting is now persisted correctly across reboots; values 4 h and 72 h were silently reset to Disabled on load due to a mismatch between the UI option list and the prefs sanitizer.
- Contact/DM/channel sender name colours are now clearly readable on dark backgrounds and far more distinct: the fixed 12-entry palette has been replaced with a full HSV colour-wheel generator (360 distinct hues at full brightness), so up to ~250 contacts each receive a unique, high-contrast colour.
- DM "Del(ete)" (Back long-press in DM view) no longer silently fails for contacts with names ending in "?" due to a parsing error in the delete confirmation dialog.
- AutoLock lock screen clock now counts automatically while the screen is on: the HH:MM:SS display updates once per second when idle (no touch). Clock pauses automatically when the screen turns off (display timeout or hardware button) and resumes on next wake. Display timeout continues to work normally while locked.
- Adding a repeater from Mgmt → Advert → Scan Neighbor Repeaters (and from Contacts → Discovered) now preserves the original seen time instead of resetting `Last heard` to `now`.
- Mgmt → Advert → Scan Neighbor Repeaters and the Repeater Admin `Neighbours` view now show only zero-hop/direct repeaters, excluding flooded ones.
- Msgs list scrolling is now visually consistent with Contacts: partially visible rows at the top edge of the Channels and DMs lists are rendered instead of popping in only once fully visible.
- Room-server `SVR` badges now use a distinct purple informational style instead of looking like blue action buttons.
- Nickname colours are now applied consistently across Contacts, MAP labels/info, discovered/repeater neighbour lists, and contact detail headers so the same name keeps the same colour throughout the UI.
- Mgmt → Contacts → `Purge w/o favs` works again; the final row is now reachable and tappable.
- Heltec V4 TFT modern GPS bring-up now handles Quectel L76K modules correctly.
- UI-modern companion radios with onboard GPS now keep the fast boot path while restoring full module-specific GPS init: Heltec V4 TFT preserves persistent L76K warm-start state and RTC sync, and LilyGo T-Deck Plus again applies the richer u-blox UBX runtime configuration even with GPS detect skipped.
- Scroll gestures are now confined to the actual scrollable viewport across Msgs, DMs, contact detail, room console, repeater admin, and Mgmt pages with fixed headers or action rows, and top-edge list drag now clamps immediately so screens cannot be pulled into blank overscroll from buttons, title bars, or the first row.
- Mgmt → Advert action buttons (Advert Direct / Advert Flood / Scan Rpts) are now rendered as three large side-by-side tiles matching the Mgmt overview style — no white border, easier to tap on touch screens.
- Every button press across the entire GUI now shows an instant yellow ring at the touch point for 200 ms, giving clear visual confirmation that (where) the tap was registered.
- Mgmt → GPS now includes a yellow Tracking section with flood-advert movement tracking, a persisted meter threshold, a lock-screen Tracking badge, and an orange tracking icon in the top status bar while active.
---
## [v0.9.10]
### Changed / Improved
- Smoothed battery voltage display using averaging to reduce rapid value jumps in the status area.
- Battery/Duty-cycle toggle now reliably shows percentage mode (including while charging) instead of repeating volts.
- Mgmt/GPS now includes an AutoBaud toggle (enabled by default); Baud editing is blocked while AutoBaud is enabled.
- Mgmt/GPS now shows progress popups while switching AutoBaud and while restarting GPS, so long-running actions no longer look stuck.
- In timeout-only mode (autolock disabled), keyboard keys no longer wake the display; wake remains on recessed trackball press/click to reduce accidental pocket wake-ups.
- Internal clipboard is now mirrored to SD at `/clipboard.txt` (where SD is available), allowing out-of-band import/export and clipboard persistence across reboot.
- Text edit fields now support press-and-hold paste in addition to double-tap paste.
- Copy popups now specify what was copied (for example: channel secret, selection, word, PubKey) instead of only showing a generic "Copied" message.
- In chat views, press-and-hold now copies text directly from the touched message/detail line (broader "copy any text" behavior in transcripts/details).
- Press-and-hold copy is also available in Contacts rows and selected Mgmt text rows (RxRaw log + telemetry rows).
- Mgmt/Global rows now support press-and-hold copy as well (name/device ID/public key/constants/admin info/storage).
- Press-and-hold copy now also covers Mgmt/WiFi, Mgmt/BLE, and Mgmt/GPS rows.
- Manual display-off (single recessed trackball/button click) now wakes only on another recessed trackball/button click when autolock is disabled; with autolock enabled, existing wake behavior remains unchanged.
- On T-Deck navigation, trackball movement is now ignored while the display is off/soft-off or while the lockscreen is active.
### Fixed
- Transport switch confirm no longer freezes the UI/device when enabling BLE from transport-off mode; live BLE re-enable from OFF is now handled safely.
- Transport switching no longer freezes on BLE -> WiFi -> BLE round-trips; BLE is kept initialized during live transport toggles.
- Message rendering now respects embedded line breaks (`\n`) from incoming text (for example bot messages), showing each break on a new line.
- Room server session transcript no longer draws the topmost message through the message-window top boundary when scrolled.
- Channel messages now synchronize both ways between device GUI and companion app over WiFi (app->device and device->app).
- BLE PIN edit now accepts valid 6-digit values that start with zero (for example, 012345).
- Mgmt/GPS button row rendering and touch hitboxes are aligned again (including Defaults and Restart GPS rows).
- Mgmt/GPS AutoBaud now keeps scanning past noisy false-positive baud hits, and the displayed Baud value now reflects the detected runtime baud after AutoBaud evaluation.
- Mgmt/Advert touch mapping is corrected: Advert-Direct and Advert-Flood buttons now trigger the intended send mode consistently.
- DM detail "Del" button hit area is corrected; deletion now triggers when tapping inside the visible button.
- Screen timeout now turns the display fully off on touch devices (instead of only dimming to zero brightness).
- Mgmt/UI scrolling now clamps correctly at the bottom and no longer scrolls into empty space.
---
## [v0.9.9]
### Changed / Improved
+15 -1
View File
@@ -4,6 +4,17 @@ Would be nice if you support me: https://buymeacoffee.com/bmks — thank you ver
# Firmware "MC Term"
Finally there is a name, "MC Term", M(esh)C(ore) Term(inal). We like Retro, you like Retro, we stay retro :-).
# v0.9.12 released for TDECK & HeltecV4 (no online update!)
- bugfixes!
- save messages on SDCard if available!
- adaptions in the GUI (mail symbol now in the Msgs Button).
- DuryCycle can now be configured.
- GPS tracker based on distance with advert flooding
- new two customizeable QuickReply Buttons with dynamic variables support!
- integrated webserver with a powerful WebBrowser UI
- new device support -> Elecrow CrowPanel7
and more...
# MeshCore / additional GUIs for embedded mesh radios
MeshCore is a lightweight hybrid routing mesh protocol for packet radios... this Repo is mainly about the companion firmware for user-friendly UIs and (actually) support for devices such as the LilyGO T-Deck Plus and Seeed Studio SenseCap Indicator-TFT AND you can connect via BLE or WiFi with the typical APPs (WebUI, iOS,...).
@@ -44,12 +55,15 @@ This firmware includes companion UIs and support for several devices; notable ex
- LilyGO T-Deck / T-Deck Plus — more details: https://lilygo.cc/en-us/products/t-deck-plus-1
- Seeed Studio SenseCap Indicator (TFT / D1Pro) — more details: https://www.seeedstudio.com/
# SOON
- Heltec V4 with Display! (v0.9.11) (WIP)
- Elecrow with 3.5 Display! (v0.9.11) (WIP) -> https://www.elecrow.com/pub/wiki/CrowPanel_Advance_3.5-HMI_ESP32_AI_Display.html
## Installation
Flash using the MeshCore web flasher:
1. Open https://flasher.meshcore.co.uk/ and choose "Custom Firmware".
1. Open https://flasher.meshcore.io/ and choose "Custom Firmware".
2. For first-time installation (use the *-merged version), perform a full flash erase (this removes all settings). *take care*, if you upgrade the version to a newer one, use the non-merged version!
3. Upload the built firmware image and flash to your device.