Add codec2 avif meshcore details

This commit is contained in:
Janez T
2026-03-04 13:25:54 +01:00
parent 9854dd2034
commit 3036ba620c
6 changed files with 41 additions and 19 deletions

View File

@@ -34,8 +34,9 @@ DAILY_BUILD := $(shell \
# Version format: YYYY.MMDD.DAILY+BUILD
# DAILY resets each day (for readability), BUILD always increments (for Android)
NEW_VERSION := $(YEAR).$(MMDD).$(DAILY_BUILD)+$(NEW_BUILD_NUMBER)
NEW_BUILD_NAME := $(shell echo $(NEW_VERSION) | cut -d'+' -f1)
.PHONY: help version bump build release release-android release-ios clean deps analyze test icon bundle bundle-no-bump
.PHONY: help version bump make-bump sync-ios-version build release release-android release-ios clean deps analyze test icon bundle bundle-no-bump
help: ## Show this help
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-15s\033[0m %s\n", $$1, $$2}'
@@ -49,8 +50,19 @@ version: ## Show current and next version
bump: ## Bump version in pubspec.yaml
@echo "Bumping version to $(NEW_VERSION)..."
@sed -i '' 's/^version: .*/version: $(NEW_VERSION)/' $(PUBSPEC)
@$(MAKE) sync-ios-version BUILD_NAME=$(NEW_BUILD_NAME) BUILD_NUMBER=$(NEW_BUILD_NUMBER)
@echo "Version bumped to $(NEW_VERSION)"
make-bump: bump ## Alias for bump
sync-ios-version: ## Sync iOS FLUTTER_BUILD_NAME/NUMBER from pubspec or provided BUILD_NAME/BUILD_NUMBER
@$(eval IOS_VERSION := $(shell grep '^version:' $(PUBSPEC) | sed 's/version: //'))
@$(eval IOS_BUILD_NAME := $(if $(BUILD_NAME),$(BUILD_NAME),$(shell echo $(IOS_VERSION) | cut -d'+' -f1)))
@$(eval IOS_BUILD_NUMBER := $(if $(BUILD_NUMBER),$(BUILD_NUMBER),$(shell echo $(IOS_VERSION) | cut -d'+' -f2)))
@echo "Syncing iOS version to $(IOS_BUILD_NAME)+$(IOS_BUILD_NUMBER)..."
@flutter build ios --config-only --build-name "$(IOS_BUILD_NAME)" --build-number "$(IOS_BUILD_NUMBER)" > /dev/null
@echo "iOS version synced"
deps: ## Install dependencies
flutter pub get
@@ -115,6 +127,7 @@ release-android: build ## Build APK and create GitHub release (Android only)
release-ios: ## Build iOS and upload to TestFlight
@echo "Building iOS and uploading to TestFlight..."
@$(MAKE) sync-ios-version
cd ios && fastlane release
@echo "iOS release uploaded!"

View File

@@ -15,20 +15,25 @@
</p>
MeshCore SAR helps teams coordinate in low-connectivity or no-connectivity environments with messaging, voice, images, maps, and live location context in one app.
It uses the MeshCore protocol over LoRa for long-range, infrastructure-free communication.
## Highlights
- Fast mesh messaging for direct and group coordination
- On-demand voice and image transfer optimized for constrained links
- Offline-first mapping with tactical overlays and SAR markers
- Live team tracking, trails, and shareable map drawings
- Rapid mesh chat for both 1:1 and group coordination
- On-demand voice (Codec2) and image (AVIF) transfer tuned for low-bandwidth links
- Offline-first mapping with tactical overlays and SAR incident markers
- Live team location, movement trails, and shareable tactical drawings
## Demo Video
<<<<<<< Updated upstream
[<img width="1280" height="720" alt="image" src="https://github.com/user-attachments/assets/13ccacee-7306-4976-a408-f31f3336828a" />](https://youtu.be/rLsKeLJBpFg)
Watch on YouTube: https://youtu.be/rLsKeLJBpFg
=======
[Watch the MeshCore SAR demo on YouTube](https://youtu.be/rLsKeLJBpFg)
>>>>>>> Stashed changes
## Screenshots
@@ -45,8 +50,8 @@ Watch on YouTube: https://youtu.be/rLsKeLJBpFg
| Area | What you get |
|---|---|
| Messaging | Direct and group chat over mesh, with contact/room awareness from live telemetry |
| Voice | Push-to-talk voice clips, fetched on demand when play is pressed, auto-play on completion |
| Images | Camera/gallery image sending, auto-compression, tap-to-load receiving, full-screen viewer |
| Voice | Push-to-talk voice clips (Codec2), fetched on demand when play is pressed, auto-play on completion |
| Images | Camera/gallery image sending (AVIF), auto-compression, tap-to-load receiving, full-screen viewer |
| Maps | Street/topo/satellite/terrain layers, offline tile downloads, optional MBTiles import |
| SAR Operations | Team markers with freshness indicators, SAR markers for incidents and staging points |
| Tracking | Continuous GPS updates, personal trails, distance/duration trail stats |

View File

@@ -489,7 +489,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = 68;
CURRENT_PROJECT_VERSION = 69;
DEVELOPMENT_TEAM = JND55328G8;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
@@ -511,7 +511,7 @@
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 68;
CURRENT_PROJECT_VERSION = 69;
DEVELOPMENT_TEAM = JND55328G8;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
@@ -530,7 +530,7 @@
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 68;
CURRENT_PROJECT_VERSION = 69;
DEVELOPMENT_TEAM = JND55328G8;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
@@ -547,7 +547,7 @@
buildSettings = {
BUNDLE_LOADER = "$(TEST_HOST)";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 68;
CURRENT_PROJECT_VERSION = 69;
DEVELOPMENT_TEAM = JND55328G8;
GENERATE_INFOPLIST_FILE = YES;
MARKETING_VERSION = 1.0;
@@ -679,7 +679,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = 68;
CURRENT_PROJECT_VERSION = 69;
DEVELOPMENT_TEAM = JND55328G8;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;
@@ -702,7 +702,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CURRENT_PROJECT_VERSION = 68;
CURRENT_PROJECT_VERSION = 69;
DEVELOPMENT_TEAM = JND55328G8;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Runner/Info.plist;

View File

@@ -43,7 +43,7 @@
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>68</string>
<string>69</string>
<key>LSRequiresIPhoneOS</key>
<true/>
<key>NSBluetoothAlwaysUsageDescription</key>
@@ -68,8 +68,12 @@
<string>MeshCore SAR needs access to the compass to show your heading direction on the map</string>
<key>NSMicrophoneUsageDescription</key>
<string>MeshCore SAR needs microphone access to send voice messages over the mesh radio network during SAR operations</string>
<key>NSCameraUsageDescription</key>
<string>MeshCore SAR needs camera access to take photos and attach them to SAR messages</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>MeshCore SAR may need access to your photo library to attach images to messages or save map screenshots for documentation during SAR operations</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>MeshCore SAR needs permission to save exported screenshots and SAR documentation images to your photo library</string>
<key>UIApplicationSceneManifest</key>
<dict>
<key>UIApplicationSupportsMultipleScenes</key>

View File

@@ -5,22 +5,22 @@
<testcase classname="fastlane.lanes" name="0: default_platform" time="0.000238">
<testcase classname="fastlane.lanes" name="0: default_platform" time="0.000232">
</testcase>
<testcase classname="fastlane.lanes" name="1: increment_build_number" time="0.34961">
<testcase classname="fastlane.lanes" name="1: increment_build_number" time="0.399906">
</testcase>
<testcase classname="fastlane.lanes" name="2: build_app" time="83.968525">
<testcase classname="fastlane.lanes" name="2: build_app" time="108.168347">
</testcase>
<testcase classname="fastlane.lanes" name="3: upload_to_app_store" time="186.029813">
<testcase classname="fastlane.lanes" name="3: upload_to_app_store" time="152.519184">
</testcase>

View File

@@ -16,7 +16,7 @@ publish_to: 'none' # Remove this line if you wish to publish to pub.dev
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
# In Windows, build-name is used as the major, minor, and patch parts
# of the product and file versions while build-number is used as the build suffix.
version: 2026.0302.1+4
version: 2026.0303.1+5
environment:
sdk: ^3.9.2