Releases: zjs81/meshcore-open
Alpha9
What's Changed
- add byte counted text input by @446564 in #388
- #401 make multi ack a toggle by @zjs81 in #405
- Improve work with unread messages by @Diadlo in #414
- Improve SharedMarker handling by @ericszimmermann in #413
- add selectable LOS obstruction pinning for repeater placement Enhancement #411 by @just-stuff-tm in #412
- Ukrainian translation polished + localized hardcoded strings by @pioneer in #404
- bump app protocol version as we support v4+ features by @446564 in #398
- latin languages heuristics by @ericszimmermann in #417
- Add desktop map controls by @wel97459 in #416
- fix issues with contact sync by @446564 in #399
- increase CR for off grid by @446564 in #423
- fix: lat/lon double-write in buildUpdateContactPathFrame by @kingult in #429
- Gps toggle in settings by @zjs81 in #433
- Remove channel subtitles from UI by @sethoscope in #428
- rename ble debug log by @446564 in #426
- reword tcp host by @446564 in #425
- basic repeater chan util by @446564 in #424
- Feature Request: alternative compression by replace some 2-byte symbols by 1-byte latin analogs (named Cyr2Lat) by @HDDen in #400
- merge dev into main by @zjs81 in #435
New Contributors
- @Diadlo made their first contribution in #414
- @pioneer made their first contribution in #404
- @kingult made their first contribution in #429
- @sethoscope made their first contribution in #428
- @HDDen made their first contribution in #400
Full Changelog: Alpha8...Alpha9
Alpha8
What's Changed
- Add more explicit platform support table by @stphnrdmr in #302
- fix: provide AppSettingsService in tcp_flow_test by @just-stuff-tm in #301
- Update Polish localization strings for clarity by @thesebas in #29
- Unified packet parsing to use BufferReader by @wel97459 in #309
- merge dev by @zjs81 in #310
- location aware channel_message_path by @ericszimmermann in #307
- Merge pull request #310 from zjs81/main by @zjs81 in #311
- Show overlaps in public keys of repeaters by @wel97459 in #218
- Fix/linux ble pairing flow by @just-stuff-tm in #270
- Refactor contact handling and other improvments by @wel97459 in #317
- Update Dutch translations by @dennis1248 in #329
- Better french translations by @spfmoby in #326
- new labels fixed polish translations by @thesebas in #313
- Make unread badge max out at 9999+ instead of 99+ by @n-kam in #316
- Local llm translator by @zjs81 in #334
- Support receiving more formats of GIF message by @interfect in #342
- Add LowMesh prefix and explain how to add more by @interfect in #337
- Preserve Coordinates with contact.copyWith() function by @ericszimmermann in #339
- Add additional device name prefixes to MeshCoreUuids by @just-stuff-tm in #321
- init contributing.md by @446564 in #347
- add tooltip to send message buttons by @446564 in #353
- add fvm directory and rc file to gitignore by @446564 in #355
- add jni to generated plugins by @446564 in #356
- reimplement location aware snr-indikator after alpha7 by @ericszimmermann in #299
- use l10n strings for discovered menu item by @446564 in #357
- Enhancement/preset offgrid repeat toggle by @just-stuff-tm in #275
- small clean up from PR #275 by @446564 in #358
- fix dev by @446564 in #362
- add auto clock synchronization setting after repeater login by @just-stuff-tm in #369
- clear toast on tap by @446564 in #384
- enh: make repeater admin guest aware by @446564 in #365
- fix: settings dialog lists by @446564 in #372
- remove unused macos path_provider_foundation by @446564 in #361
- merge dev to main by @zjs81 in #385
- Dev translations by @zjs81 in #386
- translations by @zjs81 in #387
New Contributors
- @stphnrdmr made their first contribution in #302
- @thesebas made their first contribution in #29
- @n-kam made their first contribution in #316
- @interfect made their first contribution in #342
Full Changelog: Alpha7...Alpha8
Alpha7
What's Changed
- chore: update version to alpha 6 by @446564 in #143
- Still better french translations by @spfmoby in #148
- add support for whipseros by @446564 in #144
- translations to german updated. by @ericszimmermann in #150
- Update .gitignore to exclude .gradle/ by @ChaoticLeah in #158
- remove wakelock by @446564 in #152
- Add flake.nix for development environment by @ChaoticLeah in #159
- Fix battery chemistry dropdown layout overflow by @just-stuff-tm in #162
- Refine device info layout and add collapsible map legend by @just-stuff-tm in #164
- Add path tracing functionality to map screen by @wel97459 in #165
- Add warning when bluetooth is off by @ChaoticLeah in #161
- Refactor radio settings and localization updates by @zjs81 in #180
- Handle RESP_CODE_ERR frames explicitly in connector by @Specter242 in #182
- add rbenv support by @benallfree in #195
- Add a signal readout for the nearest repeater. With improvements to app bar and other UI polish. by @wel97459 in #200
- Added Line Of Sight Feature for repeater placement, Added app wide Units Setting by @just-stuff-tm in #198
- Refactor map screen by @wel97459 in #203
- Refactor marker label display on map screens by @wel97459 in #204
- Fix repeater battery % inconsistency and add configurable repeater battery chemistry by @just-stuff-tm in #199
- Changed all map lables to look the same across all map ui by @wel97459 in #206
- fix(appbar): prevent title overflow on narrow widths by @just-stuff-tm in #205
- Mark pending channel messages sent on RESP_CODE_SENT by @Specter242 in #186
- Swipe to reply by @ChaoticLeah in #160
- Added mute channel functionality by @kkazakov in #209
- docs: add chrome support notice by @benallfree in #211
- Better french translations by @spfmoby in #210
- clear app db of channel messages on delete by @446564 in #196
- Align Android app module to Java 17 and bump wakelock_plus by @Specter242 in #208
- feat: hide message tracing by @benallfree in #216
- Pr combined #228 #220 #219 #201 by @just-stuff-tm in #232
- fix(channels): make edit/delete actions use parent context after bottom sheet closes Supports Windows Animations Off In Android by @just-stuff-tm in #201
- enh to send giphy by @benallfree in #215
- enh: return cursor focus to message window after send by @benallfree in #214
- favorites handling only by @ericszimmermann in #234
- Correct Chinese translation by @MGJ520 in #179
- Add localized search functionality for contacts by @wel97459 in #244
- Show name of connected companion by @ericszimmermann in #240
- enh: Chrome compatibility by @benallfree in #217
- Unify signal indicator UI across RSSI and SNR by @Specter242 in #246
- Allow search for prefix as Displayed in contact list by @ericszimmermann in #253
- Enhance message parsing and error handling in MeshCoreConnector by @wel97459 in #260
- Contact discovery by @wel97459 in #251
- Implements a debounced notification listener in MeshCoreConnector by @wel97459 in #239
- Dev guessed locations by @zjs81 in #264
- Fix formatting of cryptocurrency addresses in README by @zjs81 in #266
- Shorten lastSeen for en,de,es,fr by @ericszimmermann in #259
- Refactor data handling of contacts by @wel97459 in #267
- Enhance contact handling logic in MeshCoreConnector. by @wel97459 in #268
- Feature/usb by @just-stuff-tm in #252
- Changed contacts latitude and longitude fields to be null until parsed and set by @wel97459 in #269
- Refactor storage classes to include companion's public key by @wel97459 in #277
- Migrate legacy storage keys to scoped keys in various store classes by @wel97459 in #289
- Dev discovery by @wel97459 in #291
- feat: Add TCP connection support and UI integration by @just-stuff-tm in #272
- feat: add set-as-my-location from map long-press, connector and UI by @zjs81 in #293
- feat: add ML-based adaptive timeout prediction using LinearRegressor by @zjs81 in #296
- squashed PR for Dropdown Group Menu by @ericszimmermann in #295
- Improvements to path tracing and location handling by @wel97459 in #297
New Contributors
- @ChaoticLeah made their first contribution in #158
- @just-stuff-tm made their first contribution in #162
- @Specter242 made their first contribution in #182
- @benallfree made their first contribution in #195
- @kkazakov made their first contribution in #209
- @MGJ520 made their first contribution in #179
Full Changelog: Alpha6...Alpha7
Alpha6
What's Changed
- Updated Slovenian lang by @erikklavora in #105
- Added disconnection handling, and fixed state changing of navigation on connection. by @wel97459 in #111
- Path tracing. This adds support to ping and trace route repeaters and room server. by @wel97459 in #108
- Further translation fixes for german by @ericszimmermann in #106
- Add obtainium badge by @446564 in #114
- Prevent disconnection handling when already disconnected by @wel97459 in #117
- Adds contact sharing by @wel97459 in #118
- Allow disabling repeater adverts by @446564 in #115
- Add community name to community hashtag channel name by @446564 in #59
- Dart format by @446564 in #123
- Reduce actions on pull requests by @446564 in #125
- Refactor unread message tracking and implement channel caching by @zjs81 in #126
- Remove direct msg notification prefix by @446564 in #129
- Add flutter test to actions by @446564 in #132
- Implement PathTraceMapScreen and refactor path tracing functionality by @wel97459 in #141
- Added a export to a GPX by @wel97459 in #134
- Remove rotation in path map by @446564 in #130
- Reduce map marker size by @446564 in #131
- Notification rate limiting by @rsp2k in #110
New Contributors
- @erikklavora made their first contribution in #105
- @rsp2k made their first contribution in #110
Full Changelog: Alpha5...Alpha6
Alpha5
What's Changed
- remove msg notify prefix when preview avail by @446564 in #61
- fix: add safety margin to text message overhead calculations by @zjs81 in #65
- update tooltips by @446564 in #60
- Anupoh/main by @zjs81 in #101
- Pr 94 by @zjs81 in #102
- Ukrainian localization files by @megadimich in #94
- More french translation updates by @spfmoby in #69
New Contributors
- @446564 made their first contribution in #61
- @megadimich made their first contribution in #94
Full Changelog: Alpha4...Alpha5
You can join the test flight once its approved here https://testflight.apple.com/join/QzUGKJ65
Alpha4
What's Changed
- Update Dutch translations by @dennis1248 in #30
- Replace Publicité by Annonce in the french translations by @spfmoby in #28
- Fix map centering by @wel97459 in #37
- Added public key in contacts list and in the repeater hub by @wel97459 in #38
- Show repeater login error in login dialog by @mtlynch in #41
- German translation V2 by @ericszimmermann in #46
- Fix issues flagged by flutter analyze by @mtlynch in #45
- Add a Github Action to build code in CI by @mtlynch in #44
- Disable Map rotation by @ericszimmermann in #47
- Added room server management by @wel97459 in #51
- Added GPS enable and GPS interval settings. by @wel97459 in #48
- Added Neighbors to the repeater hub and a screen to display the Neighbors by @wel97459 in #42
New Contributors
- @dennis1248 made their first contribution in #30
- @spfmoby made their first contribution in #28
- @mtlynch made their first contribution in #41
- @ericszimmermann made their first contribution in #46
Full Changelog: Alpha3...Alpha4
Major Features: Added Communities
You can join the test flight once its approved here https://testflight.apple.com/join/QzUGKJ65
Alpha 3 release
What's Changed
- Fixed icons not being visible in Dark mode by @wel97459 in #17
- Dev map manage repeater by @zjs81 in #26
- Dev roomserver fixes by @zjs81 in #27
- Added support for room server chat by @wel97459 in #24
- Added telemetry to repeater management by @wel97459 in #16
- Added multilingual UI support with 13 locales: English, Chinese, German, Slovak, Portuguese, Bulgarian, Dutch, Spanish, Slovenian, French, Polish, Italian, and Swedish. @zjs81
New Contributors
Full Changelog: Alpha2...Alpha3
Special thanks to Winston Lowe for his contributions.
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.
Alpha 0.2.0
MeshCore Open - Release Notes
New Features and Fixes
🎉 New Features
1. App Debug Logging System
Files: app_debug_log_service.dart, app_logger.dart, app_debug_log_screen.dart
- In-app debug log viewer with 3 levels (info, warning, error)
- Copy and clear functionality
- Configurable enable/disable via settings
- Max 1000 entries with automatic rotation
- Global
appLoggersingleton for easy use throughout codebase
2. Battery Indicator Widget
File: battery_indicator.dart
- Tappable battery display that toggles between percentage and voltage
- Color-coded battery status (red/orange/amber/green based on charge level)
- Material Design battery icons that change based on charge level
- Integrated into device/status screens
3. Advanced Path Management UI
Files: path_management_dialog.dart, path_selection_dialog.dart
- Visual path history with success rates and trip times
- Tap to select from recently successful paths
- Long-press to view full path details
- Remove individual path entries from history
- Custom path builder with contact selection
- Path validation (max 64 hops, hex format checking)
- Visual indicators for flood vs. routed paths
- Clear path / Force flood mode options
4. List Filtering & Sorting Widget
File: list_filter_widget.dart
- Reusable filter/sort menu component
- Multi-section support with dividers
- Checkbox menu items for filters
- Radio-style selection for sort options
- Used in contacts and channels screens
5. Contacts Screen Enhancements
- Sort options: Latest messages, Heard recently, A-Z
- Type filters: All, Users, Repeaters, Room servers
- "Unread only" filter
- "New group" action in filter menu
- Visual indicators for contact types
- Improved contact refresh logic
6. Channels Screen Improvements
- Channel sync progress indicator
- Better loading states during channel refresh
- Filter and sort options for channels
- Improved channel ordering persistence
7. Repeater Command ACK Tracking
- Track acknowledgments for CLI commands sent through repeaters
- Integrates with path history to record command delivery success
- Timeout handling for commands that don't get ACKed
- Path result recording (success/failure with trip time)
8. Path Override API Enhancements
preparePathForContactSend()- Prepares path selection before sendingverifyContactPathOnDevice()- Verifies path was set correctly on devicetrackRepeaterAck()- Track ACKs for repeater commandsrecordRepeaterPathResult()- Record path success/failure- Better separation of concerns between connector and services
9. App Settings Additions
appDebugLogEnabledsetting- Battery chemistry per-device configuration
- Theme mode persistence (system/light/dark)
- Auto route rotation toggle
10. Repeater Features
- Enhanced repeater login dialog with better error handling
- Repeater CLI screen improvements
- Repeater status screen with more details
- Repeater settings screen enhancements
🐛 Fixes
1. Channel Sync Race Conditions ⭐ Critical Fix
Issue: Parallel channel requests caused timeouts and missing channels
Fix:
- Switched to sequential channel syncing with retry logic
- Per-channel timeout (2 seconds) instead of bulk timeout
- Retry up to 3 times per channel before falling back to cache
- Progress tracking for better UX
- Proper cleanup on disconnection
2. Path Override Persistence
Issue: User path overrides could be lost when device sends contact updates
Fix:
- Explicitly preserve
pathOverrideandpathOverrideBytesduring contact merge - Added defensive logging to track path override state changes
3. Contact Path Bytes Handling
- Added
_pathsEqual()helper for proper path comparison - Fixed path resolution logic when both override and device path exist
- Better handling of empty path bytes vs. null paths
4. Protocol Attempt Field
Fix:
- Clamp attempt counter to 0-3 range in
buildSendCliCommandFrame - Prevents overflow in protocol's 2-bit attempt field
- Added optional
timestampSecondsparameter for deterministic testing
5. ACK Hash Computation for SMAZ
Issue: ACK hashes didn't match when SMAZ compression was applied
Fix:
- Exposed
prepareContactOutboundText()method to consistently apply SMAZ before hashing - Both message retry service and repeater command service now use same text transformation
6. Queue Sync State Management
- Fixed cleanup of queue sync state on disconnect
- Removed duplicate state reset code
- Proper timeout cancellation
7. Channel Info Handling During Sync
- Fixed handling of unsolicited channel updates during sync
- Prevent UI jumping during channel load
- Only notify listeners after sync completes
8. Message Retry Service Integration
- Added callbacks for better integration:
getSelfPublicKeyCallback,prepareContactOutboundTextCallback - Pass
AppDebugLogServiceto retry service for better logging - More robust error handling in retry logic
9. Background Service Cleanup
- Proper cleanup of pending repeater ACKs on disconnect
- Cancel all ACK timeouts when connection is lost
- Fixed potential memory leaks
10. iOS/macOS Build Configuration
- Removed codec2 pod dependency from iOS
- Added network client entitlement for macOS
- Updated Info.plist for macOS
11. Contact Settings Store
- Better handling of contact-specific settings
- Proper merge of last message timestamps
12. Map Screen Improvements
- Better error handling
- Improved tile caching
13. Chat Screen Refactoring
- Simplified chat screen logic (448 lines removed, cleaner code)
- Better separation of concerns
- Improved message display
📈 Statistics
| Metric | Value |
|---|---|
| Total files changed | 25 |
| New files added | 7 |
| Lines added | 1,721 |
| Lines removed | 846 |
| Net change | +875 lines |
Major Refactors:
- chat_screen.dart: -448 lines (simplified)
- meshcore_connector.dart: +410 lines (new features)
- channels_screen.dart: +346 lines (enhanced UI)
- contacts_screen.dart: -212 lines (cleaner code)
- app_settings_screen.dart: +205 lines (new options)
🎯 Impact Summary
User-Facing:
✅ Better debugging tools
✅ Improved path management and visualization
✅ More reliable channel syncing
✅ Battery info display
✅ Better contact filtering and sorting
✅ Enhanced repeater management
Developer-Facing:
✅ Comprehensive logging system
✅ Better API for path management
✅ Cleaner separation of concerns
✅ More maintainable state management
✅ Improved error handling patterns
Bug Fixes:
✅ Channel sync reliability
✅ Path override persistence
✅ ACK tracking accuracy
✅ Memory leak prevention
✅ State cleanup on disconnect
Alpha v0.1.0
First Alpha Release of Android App. IOS is not available at this time.