Commit Graph

6087 Commits

Author SHA1 Message Date
niccellular dae4369149 feat(lockdown): add unlock dialog, Lock Now button, region gating
- LockdownUnlockDialog: passphrase entry with boots / hours TTL inputs.
  Shows lock_reason on LOCKED, a backoff countdown on UNLOCK_FAILED with
  backoff_seconds > 0 (Submit disabled while in backoff), and switches
  the title to "Set Passphrase" on NEEDS_PROVISION.
- Main: collect lockdownState/lockdownTokenInfo, show the dialog,
  auto-clear on LockNowAcknowledged so the connection drops without
  a dialog flash.
- ConnectionsScreen: gate the "must set region" banner on
  isLockdownAuthorized so an unauthorized client isn't told to fix a
  region it can't see.
- SecurityConfigItemList: "Lock Now" button under Administration,
  labelled with the active session token's boots remaining and (if set)
  the wall-clock expiry.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 09:01:12 -04:00
niccellular 0c8e5302e4 feat(lockdown): wire AIDL, RadioController, and ViewModels
- IMeshService: sendLockdownUnlock(passphrase, bootTtl, hourTtl) and
  sendLockNow() AIDL methods.
- MeshService: AIDL stubs forwarding to MeshActionHandler.
- AndroidRadioControllerImpl: forward to meshService over AIDL.
- DirectRadioControllerImpl: forward directly to actionHandler (in-process
  non-Android targets).
- FakeIMeshService: test stubs.
- UIViewModel: lockdownState/lockdownTokenInfo flows, sendLockdownUnlock,
  sendLockNow, clearLockdownState. Routed through radioController so the
  commonMain code does not depend on the AIDL service directly.
- ConnectionsViewModel: expose lockdownState.
- RadioConfigViewModel: lockdownTokenInfo + sendLockNow for the Lock Now
  button in security settings.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 09:01:03 -04:00
niccellular f6e97d7ff7 feat(lockdown): implement coordinator and typed status dispatch
- CommandSenderImpl: build AdminMessage.lockdown_auth = LockdownAuth(...)
  for provision/unlock and lock_now=true for the lock command.
- FromRadioPacketHandlerImpl: route the new FromRadio.lockdown_status
  variant to the coordinator; also notify the coordinator on
  config_complete_id.
- MeshActionHandlerImpl: forward handleSendLockdownUnlock/handleSendLockNow
  to the coordinator.
- MeshConnectionManagerImpl: call coordinator.onConnect/onDisconnect; add
  clearRadioConfig to purge cached config after a lock-now ACK.
- ServiceRepositoryImpl: back the lockdownState/lockdownTokenInfo/
  sessionAuthorized flows.
- LockdownHandlerImpl: orchestration. Switches on LockdownStatus.State
  (NEEDS_PROVISION / LOCKED / UNLOCKED / UNLOCK_FAILED), auto-replays
  stored passphrase on LOCKED, clears stored passphrase on a fresh
  UNLOCK_FAILED, surfaces backoff_seconds on rate-limit. Tracks a
  wasLockNow flag locally so the next LOCKED status after a lock-now
  command is translated to LockdownState.LockNowAcknowledged for an
  immediate UI disconnect (the new schema has no explicit ACK type).
- LockdownPassphraseStore: per-device EncryptedSharedPreferences store
  for auto-unlock. Not biometric-gated by design.
- Add androidx.security:security-crypto dependency.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 09:00:53 -04:00
niccellular 913c3c2ad1 feat(lockdown): add LockdownState model and coordinator interfaces
Introduce the TAK passphrase lockdown abstractions:

- LockdownState sealed class + LockdownTokenInfo for UI to observe.
- LockdownCoordinator interface for the authentication lifecycle
  (onConnect/onDisconnect/onConfigComplete/handleLockdownStatus,
  plus submitPassphrase/lockNow).
- Add sendLockdownPassphrase/sendLockNow to CommandSender, RadioController.
- Add handleSendLockdownUnlock/handleSendLockNow to MeshActionHandler.
- Add clearRadioConfig to MeshConnectionManager (used during lock-now).
- Add lockdownState/lockdownTokenInfo/sessionAuthorized flows to
  ServiceRepository.

handleLockdownStatus consumes the typed firmware LockdownStatus message
from FromRadio (protobufs#911) instead of parsing string-prefixed
ClientNotification messages.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-13 09:00:41 -04:00
James Rich dcbbc0823b feat: Integrate Mokkery and Turbine into KMP testing framework (#4845) 2026-03-18 18:33:37 -05:00
James Rich df3a094430 chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4843) 2026-03-18 21:25:06 +00:00
renovate[bot] 5158d6c9d6 chore(deps): update static analysis to v8.4.0 (#4842)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-18 21:24:59 +00:00
renovate[bot] 04a71c2743 chore(deps): update datadog to v3.8.0 (#4839)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-18 19:00:41 +00:00
James Rich 54b07d41de chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4840) 2026-03-18 18:54:03 +00:00
James Rich d314ee2d8a feat: mqtt (#4841) 2026-03-18 18:39:20 +00:00
Victorio Berra eae5a6bdac Add "Exclude MQTT" filter to Nodes view. (#4825)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: James Rich <james.a.rich@gmail.com>
2026-03-18 15:39:59 +00:00
James Rich 1e9e838025 build: switch Java distribution from Zulu to JetBrains in GitHub Actions (#4838) 2026-03-18 14:36:50 +00:00
renovate[bot] 3263b0614f chore(deps): update com.fazecast:jserialcomm to v2.11.4 (#4837)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-18 08:28:25 -05:00
James Rich 59408ef46e feat: Desktop USB serial transport (#4836)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-18 12:42:24 +00:00
renovate[bot] 06c990026f chore(deps): update google maps compose to v8.2.2 (#4834)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-18 03:18:02 +00:00
James Rich 49a6a1d4a9 chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4833) 2026-03-18 03:17:50 +00:00
James Rich cb95cace25 chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4832) 2026-03-17 16:51:09 -05:00
James Rich 3bbb8a65ba chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4831) 2026-03-17 20:39:48 +00:00
renovate[bot] afa7552141 chore(deps): update koin.plugin to v0.4.1 (#4763)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-17 20:39:05 +00:00
James Rich 7d63f8b824 feat: build logic (#4829)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-17 20:35:39 +00:00
James Rich 807db83f53 feat: service extraction (#4828) 2026-03-17 14:06:01 -05:00
renovate[bot] 0d0bdf9172 chore(deps): update core/proto/src/main/proto digest to eba2d94 (#4830)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-17 14:05:21 -05:00
renovate[bot] 0c3a841a80 chore(deps): update koin to v4.2.0 (#4827)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-17 18:07:36 +00:00
renovate[bot] 190e62ce68 chore(deps): update datadog to v1.24.0 (#4826)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-17 18:07:18 +00:00
James Rich 5eb6e501c0 chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4822) 2026-03-17 14:25:38 +00:00
renovate[bot] 212acaecac chore(deps): update core/proto/src/main/proto digest to bc8e638 (#4823)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-17 14:25:30 +00:00
James Rich a10fe61d0f fix: resolve crashes and debug filter issues in Metrics and MapView (#4824)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-17 14:04:41 +00:00
James Rich 9ad28e924f build: fix license generation and analytics build tasks (#4820)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-17 01:21:29 +00:00
James Rich 8c964a15ca feat: Integrate notification management and preferences across platforms (#4819)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-17 01:17:34 +00:00
James Rich 0b2e89c46f refactor: Replace Nordic, use Kable backend for Desktop and Android with BLE support (#4818)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-16 23:06:43 +00:00
James Rich 0e5f94579f chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4816) 2026-03-16 20:06:05 +00:00
James Rich 6e81ceec91 feat: Complete ViewModel extraction and update documentation (#4817) 2026-03-16 20:05:50 +00:00
Alexey Skobkin 80cae8e620 fix: fix wrong getChannelUrl() call causing loss of "add" flag and un… (#4809) 2026-03-16 09:03:17 -05:00
James Rich 5edb8abd05 feat: enhance map navigation and waypoint handling (#4814)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-16 13:48:00 +00:00
James Rich 802aa09aab chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4815) 2026-03-16 13:47:48 +00:00
renovate[bot] 2c52977683 chore(deps): update kotlin ecosystem to v2.3.20 (#4813)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2026-03-16 13:07:41 +00:00
James Rich 4e64182afd chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4805) 2026-03-16 13:06:21 +00:00
James Rich 513dcc2f78 Revert "ci: Integrate Conveyor for cross-platform desktop packaging and simplify build" (#4804) 2026-03-14 13:25:28 -05:00
James Rich e29fd596b6 ci: Integrate Conveyor for cross-platform desktop packaging and simplify build (#4802) 2026-03-14 12:44:55 -05:00
James Rich fae6f83968 ci: Update Linux desktop distribution packaging and CI workflow (#4799) 2026-03-14 10:26:47 -05:00
James Rich 5610cc3924 ci(github-actions): install libfuse2t64 for Linux AppImage packaging (#4798) 2026-03-14 10:13:00 -05:00
James Rich ac8119b086 ci(github): add Release environment to desktop release workflow (#4797) 2026-03-14 09:43:40 -05:00
James Rich 609d24a9e4 build(desktop): dynamically configure target formats based on host OS (#4796) 2026-03-14 09:38:34 -05:00
James Rich b63192dccc chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4795) 2026-03-14 09:11:33 -05:00
James Rich a8044a2402 build(desktop): refactor native distribution target formats (#4794) 2026-03-14 09:11:18 -05:00
James Rich acf7aea098 feat(desktop): add enter-to-send functionality in messaging (#4793) 2026-03-14 08:43:25 -05:00
James Rich bff87daaa7 ci(github-actions): include architecture in desktop artifact names (#4792) 2026-03-14 08:17:13 -05:00
James Rich 365e278335 ci(desktop): add ubuntu-24.04-arm to native distribution build 2026-03-14 07:32:54 -05:00
James Rich 8c6892a4da chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4791) 2026-03-14 06:44:36 -05:00
James Rich 832e785785 ci(release): update artifact glob pattern to be recursive
This commit updates the release workflow to ensure all files within the artifacts directory are correctly captured, regardless of nesting depth.

Specific changes include:
- Updated the `files` path in both draft and final release steps from `./artifacts/*/*` to `./artifacts/**/*` to support recursive file matching.

Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-03-14 06:44:03 -05:00