Commit Graph

7 Commits

Author SHA1 Message Date
James Rich
8ae937b063 refactor: Move RadioController interfaces to core:repository and split into focused sub-interfaces
Relocates RadioController, AdminController, MessagingController,
NodeController, and RequestController from core:model to core:repository
where they belong (alongside their consumers and the ServiceRepository
they mirror).

Splits the monolithic RadioController into 4 focused sub-interfaces
following the Interface Segregation Principle:
- AdminController: config, channels, device lifecycle
- MessagingController: send packets, reactions, contacts
- NodeController: favorite, ignore, mute, remove
- RequestController: traceroute, telemetry, position queries

RadioController remains as a composite extending all four for backward
compatibility. Feature modules can now inject the narrower interface
for better testability.

Also fixes ScannerViewModelTest by adding Dispatchers.setMain/resetMain
to match the pattern used by all other ViewModel tests.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-28 08:16:17 -05:00
James Rich
de665518a7 fix: Resolve lint errors and warnings
- Wrap StateFlow.value read in remember{} to satisfy composition lint
- Wrap derivedStateOf in remember{} (MapView PurgeTileSourceDialog)
- Use mutableIntStateOf to avoid autoboxing (MapStyleDialog)
- Use ResourcesCompat.getDrawable() instead of deprecated getDrawable()
- Fix mixed indentation in MarkerClusterer.java

Lint result: 0 errors, 10 warnings (down from 2 errors, 12 warnings)

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-28 06:37:32 -05:00
James Rich
7e3bd85847 cleanup: Remove legacy cruft and eliminate runBlocking from UI path
- Remove x86/x86_64 from ABI filters (armeabi-v7a/arm64-v8a only)
- Remove unused takpacket-sdk-jvm from version catalog
- Raise core/proto minSdk from 21 to 26 (ATAK compat no longer needed)
- Remove stale FIXME comment about foreground service in manifest
- Replace Executors.newSingleThreadExecutor with Dispatchers.Default.asExecutor
  in BarcodeScannerProvider (removes manual thread pool management)
- Convert formatAgo() to @Composable with stringResource(), eliminating
  runBlocking from the UI rendering path. Non-composable callers (map views,
  accessibility) use a 3-arg overload with pre-resolved strings.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-28 06:37:32 -05:00
James Rich
69883e9306 refactor: remove AIDL API and modernize radio architecture
Remove the deprecated AIDL/IPC API surface and perform deep architectural
modernization of the radio command pipeline, aligning with the meshtastic-sdk
AdminApiImpl pattern for future SDK migration.

Key changes:

1. AIDL Removal & Infrastructure Cleanup
   - Delete core:api module and all AIDL interfaces
   - Remove ServiceBroadcasts + CommonParcelable infrastructure
   - Remove core:api from CI workflow lint/publish steps

2. Model Modernization
   - Introduce NodeAddress sealed class with type-safe addressing
   - Remove deprecated DataPacket constants in favor of NodeAddress
   - Consolidate dual node maps into single source with getNodeById
   - Split large model files, deduplicate NodeEntity, flatten RadioController

3. Service Layer Refactoring (SDK-aligned)
   - Remove ServiceAction sealed class, use direct suspend calls
   - Convert CommandSender & MeshActionHandler to suspend APIs
   - Merge MeshActionHandler into DirectRadioControllerImpl
     (ViewModel → RadioController → CommandSender, no intermediate layer)
   - Build AdminMessage protos directly with typed protos end-to-end
   - Apply structured concurrency to NodeRequestActions/NodeManagementActions
   - Fix CancellationException handling throughout

Architecture (before → after):
  ViewModel → RadioController → Handler → CommandSender → PacketHandler
  ViewModel → RadioController → CommandSender → PacketHandler

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-28 06:37:32 -05:00
James Rich
fc0df1a79a feat(docs): In-app documentation browser with Jekyll site and Docusaurus sync (#5445)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-19 04:00:22 +00:00
James Rich
f5128798a8 feat: adopt Material 3 Expressive design system (M3-native APIs only) (#5479)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-19 01:10:47 +00:00
James Rich
f4b6b02ace refactor(build): rename entry modules and remove DESKTOP_ONLY mode (#5476)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-05-18 12:44:12 +00:00