Commit Graph

90 Commits

Author SHA1 Message Date
niccellular
1ea87dbbad Rename from Tak centric to "Lockdown" mode
3 files renamed (via git mv, history preserved):
  - TakLockHandler.kt → LockdownHandler.kt
  - TakPassphraseStore.kt → LockdownPassphraseStore.kt
  - TakUnlockDialog.kt → LockdownUnlockDialog.kt

  16 files updated with consistent renames across the entire codebase. No stray TAK-named symbols remain in any .kt or .aidl source file.

  What stayed the same (wire protocol / firmware-defined):
  - The firmware notification strings: "TAK_LOCKED", "TAK_NEEDS_PROVISION", "TAK_UNLOCKED", "TAK_UNLOCK_FAILED" — still matched as string literals in LockdownHandler.kt
  - Config.DeviceConfig.Role.TAK / TAK_TRACKER proto enum values
  - The SharedPrefs key changed from "tak_passphrase_store" → "lockdown_passphrase_store" (existing stored passphrases won't migrate automatically — users will need to re-enter on first launch of the updated app)
2026-03-03 17:17:24 -05:00
niccellular
e7ba8e8497 feature: Add TAK passphrase lock/unlock support
Implement the client-side TAK passphrase authentication flow for
  devices running TAK-locked firmware.

  Key components:
  - TakPassphraseStore: per-device passphrase persistence using
    EncryptedSharedPreferences (Android Keystore AES-256-GCM), with
    boot and hour TTL fields stored alongside the passphrase
  - TakLockHandler: orchestrates the full lock/unlock lifecycle —
    auto-unlock on reconnect using stored credentials, passphrase
    submission, token info parsing, and backoff/failure handling
  - MeshCommandSender: sendTakPassphrase() and sendTakLockNow() build
    plain local packets that bypass PKC signing and session_passkey;
    hour TTL is encoded as an absolute Unix epoch as required by firmware
  - ServiceRepository: TakLockState sealed class (None, Locked,
    NeedsProvision, Unlocked, LockNowAcknowledged, UnlockFailed,
    UnlockBackoff), TakTokenInfo (boots remaining + expiry epoch), and
    sessionAuthorized flag
  - TakUnlockDialog: Compose dialog for passphrase entry, shown on
    Locked and NeedsProvision states; onDismissRequest is a no-op to
    prevent race conditions with firmware response timing; cancel
    disconnects the user and navigates to the Connections tab
  - Lock Now (Security settings): immediately disconnects the client
    after informing firmware, purges cached config, navigates away
    without showing a passphrase dialog
  - ConnectionsScreen: suppress "region unset" prompt while the device
    is TAK-locked, since pre-auth config is zeroed/redacted and would
    lead the user to a blank LoRa settings screen
  - AIDL: sendTakUnlock() and sendTakLockNow() wired through
    MeshService → MeshActionHandler → TakLockHandler
  - Security settings: "Lock Now (TAK)" button and token info display
    showing boots remaining and expiry date
2026-02-27 08:31:05 -05:00
Pavel Vasiliev
4303bfaac4 Enhancement - optional transparent homoglyph encoding of a few characters in certain languages for more compact and efficient text messages (#4491) 2026-02-07 18:49:35 +00:00
James Rich
1e255a5120 feat: Check if NFC is enabled and prompt user to enable it (#4482) 2026-02-06 18:08:35 +00:00
James Rich
96551761c8 feat(sharing): Refactor QR/NFC scanning with ML Kit and CameraX (#4471)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-06 04:16:16 +00:00
James Rich
e055d22346 chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4438) 2026-02-04 02:41:48 +00:00
James Rich
25657e8f8f feat(wire): migrate from protobuf -> wire (#4401)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-04 00:01:12 +00:00
James Rich
37b2efa176 feat(settings): Add firmware capability checks for settings (#4403)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-02-02 15:35:20 +00:00
James Rich
f9cc7080f8 chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4363) 2026-01-29 22:36:33 +00:00
James Rich
15760da074 Refactor: Create core:api module and set up publishing (#4362) 2026-01-29 13:45:00 -06:00
James Rich
a28aa4d52e refactor(ui): Icon audit and node list item refactor (#4313)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-25 22:43:23 +00:00
James Rich
355d2260e8 feat: Add Status Message module support (#4163)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-25 14:15:47 +00:00
James Rich
71628cac84 Refactor: Only show advanced and app settings for local node (#4290)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-25 03:11:14 +00:00
James Rich
8eb349e794 chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4299) 2026-01-25 02:46:00 +00:00
Mac DeCourcy
c0f8ed3503 feat: word-based message filtering with quarantine approach (stored but hidden) (#4241) 2026-01-24 16:41:17 +00:00
James Rich
174228bc61 Fix(firmware): Disable serial/USB updates for ESP32 devices (#4283) 2026-01-21 19:17:57 +00:00
James Rich
fb6a4c96b8 fix: crashes (#4281)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-21 16:21:10 +00:00
James Rich
7f7d189958 refactor(service): Add destination node number to remote admin commands (#4276)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-21 08:27:20 -06:00
James Rich
cdfd0e3d5d fix(configs): Improve loading state feedback and dialog behavior (#4271)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-21 12:36:15 +00:00
James Rich
b73a304452 refactor(firmware): Simplify ESP32 firmware check (#4272)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-21 02:42:16 +00:00
James Rich
3b0dda4491 fix(node): Correct owner ID and local user detection (#4256)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-19 03:20:40 +00:00
James Rich
e470fa86eb chore: Scheduled updates (Firmware, Hardware, Translations, Graphs) (#4237) 2026-01-16 01:06:42 +00:00
James Rich
962137ae4d refactor: Enable test coverage and update CI (#4233)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-16 00:47:45 +00:00
James Rich
1f07486745 feat: Add Client Base role strings (#4227)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-15 16:40:21 +00:00
James Rich
2a60480bd9 feat: Add ESP32 Unified OTA update support (#4095)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
Co-authored-by: Ben Meadors <benmmeadors@gmail.com>
2026-01-15 03:22:30 +00:00
James Rich
a67b519abd feat: Add mute node functionality (#4181)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-10 21:35:01 +00:00
James Rich
399dce19a6 fix(meshlog): Change default retention to 30 days (#4177)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-09 22:38:36 +00:00
James Rich
731430d7d6 refactor(build): Centralize Dokka configuration into convention plugin (#4173)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-09 15:40:00 +00:00
James Rich
02cf1f1034 refactor(datetime): Standardize date/time formatting with DateUtils (#4164)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-08 18:43:50 +00:00
James Rich
8400ae854f feat: Add initial handling for Store and Forward PlusPlus packets (#4136)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-05 01:20:57 +00:00
James Rich
c03178406a fix: Update copyright year to 2026 (#4121) 2026-01-02 15:51:27 -06:00
renovate[bot]
3e57102526 chore(deps): update dagger & hilt to v1.3.0 (#4118)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2026-01-02 14:45:34 -06:00
Mac DeCourcy
6f338c4cde feat: add retention period to meshLog. Defaults to 7 days, with a settings dropdown to change (#4078) 2026-01-02 18:14:16 +00:00
James Rich
0776e029f3 feat(logging): Replace Timber with Kermit for multiplatform logging (#4083)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-28 14:30:15 +00:00
James Rich
9fd92691a9 refactor: Migrate to Android Gradle Plugin 9.0 (#4072)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-28 13:47:12 +00:00
James Rich
42bc85b6fc feat(build): add module dependency graph generation (#4042) 2025-12-18 17:30:36 -06:00
emp3r0r7
d8a1f88bda fix : avoid our node to be a relaynode candidate (#4037) 2025-12-18 14:25:18 +00:00
James Rich
9804c38fb8 feat(settings): add about screen with open source licenses (#4012)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-15 20:56:43 +00:00
James Rich
1d8ae61ac2 refactor(settings): Use string resources for update intervals (#3937)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-09 21:07:07 +00:00
James Rich
5e4128d45f Revert "block creation or sending of duplicate channels. " (#3921) 2025-12-06 16:14:23 +00:00
Dane Evans
7db7f61386 block creation or sending of duplicate channels. (#3913) 2025-12-06 12:47:33 +00:00
James Rich
499ed58311 feat(firmware): Implement USB DFU updates for supported devices (#3901)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-12-06 12:36:54 +00:00
Mac DeCourcy
e18f72dbf2 feat: add infrastructure shutdown safeguards and enhance shutdown dialog text (#3858) 2025-11-30 12:59:05 +00:00
Mac DeCourcy
1c3784235e fix: Multiple bugs - settings text fields, dropdowns, missing override duty cycle, and MQTT icon display (#3833) 2025-11-27 01:45:09 +00:00
James Rich
3efbcaab8b feat(settings): Add RTTTL ringtone playback in settings (#3799)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-24 19:48:52 +00:00
James Rich
4b93065c7e feat: Add firmware update module for Nordic nRF devices (#3782)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-24 19:02:53 +00:00
James Rich
73d933fe14 feat(connections): Connecting state refactor (#3722)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-17 21:15:22 +00:00
Dane Evans
12d96b76db fix #3509: MQTT reporting interval not being selected, and sent to node (#3717) 2025-11-16 15:37:44 +00:00
Dane Evans
a22513660a add back arrow to the channelConfig screen (#3713) 2025-11-16 04:29:00 +00:00
James Rich
6590ea0ef0 feat(ble): Add support for LogRadio characteristic, enhance logs (#3691)
Signed-off-by: James Rich <2199651+jamesarich@users.noreply.github.com>
2025-11-13 19:53:37 +00:00