Meshtastic-Android/core
James Rich 406a632a0e feat(mqtt): adopt mqttastic 0.2.0 — sealed ConnectionState + Test Connection probe
Bumps `org.meshtastic:mqtt-client` to 0.2.0 and absorbs the breaking shape change
of the library's `ConnectionState` (enum → sealed class with disconnect/reconnect
context). Surfaces the new context to users and wires up the new probe API.

What changed
- `MqttConnectionState` (core/model): enum → sealed class with `Inactive`,
  `Connecting`, `Connected`, `Reconnecting(attempt, lastError)`,
  `Disconnected(reason)` (+ `Idle` companion). Stays decoupled from the MQTT
  library — carries `String?` reasons rather than `MqttException`.
- `MqttProbeStatus` (core/model): new sealed type mirroring the library's
  `ProbeResult` shape so feature modules don't need a direct mqtt-client dep.
- `MqttManager.probe(...)`: new suspend method. `MqttManagerImpl` calls
  `MqttClient.probe()` and translates `ProbeResult` → `MqttProbeStatus`.
- `MqttManagerImpl.toAppState()`: rewritten as a sealed-class `when` that
  propagates disconnect reason / reconnect attempt + last error through to UI.
- `MQTTRepositoryImpl`: extracts `resolveEndpoint(rawAddress, tlsEnabled)` as
  a top-level `internal` function so it's directly testable; replaces the
  (removed) `ConnectionState.DISCONNECTED` initial value with
  `Disconnected.Idle`.
- `MQTTConfigItemList`: new "Test Connection" button beneath the address row
  that fires `viewModel.probeMqttConnection(...)` and renders the structured
  `MqttProbeStatus` outcome inline (Probing / Success(+server info) /
  Rejected / DnsFailure / TcpFailure / TlsFailure / Timeout / Other).
  `MqttStatusRow` now surfaces the disconnect reason and reconnect attempt
  context when present.
- `RadioConfigViewModel`: adds `mqttProbeStatus` flow, `probeMqttConnection()`,
  `clearMqttProbeStatus()`. Editing the address clears the last probe result.
- `MQTTRepositoryImplTest`: replaces the trivial inlined-parsing tests with
  real coverage of every `resolveEndpoint` branch (bare host ws/wss,
  explicit port, ws://, wss://, mqtt://, mqtts://).

Notes
- This branch will not compile until 0.2.0 lands on Maven Central (deliberate;
  per the chosen "branch_now_wait" strategy).
- Strings added to core/resources for the new probe/status messages.
- `MqttConnectionState.INACTIVE` callsite in `RadioConfigViewModelTest`
  updated to the new sealed-class form.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-04-17 21:14:38 -05:00
..
api fix(build): resolve all actionable compile-time warnings (#5058) 2026-04-10 22:42:30 +00:00
barcode fix(build): align AndroidX Compose versions with CMP and migrate to runComposeUiTest (#5096) 2026-04-13 02:49:11 +00:00
ble chore: KMP audit — commonize code, centralize utilities, eliminate dead abstractions (#5133) 2026-04-15 02:17:50 +00:00
common refactor: consolidate metric formatting through MetricFormatter (#5169) 2026-04-17 17:13:01 +00:00
data feat(mqtt): adopt mqttastic 0.2.0 — sealed ConnectionState + Test Connection probe 2026-04-17 21:14:38 -05:00
database test: migrate MigrationTest to runTest and add missing repository fakes (#5171) 2026-04-17 16:35:41 +00:00
datastore refactor: modern APIs — Koin 4.2, CMP 1.11, Ktor resilience, Room @Upsert, injected dispatchers (#5119) 2026-04-14 11:41:01 +00:00
di refactor: BLE transport and UI for Kotlin Multiplatform unification (#4911) 2026-03-25 02:15:51 +00:00
domain feat: add high-contrast theme with accessible message bubbles (#5135) 2026-04-15 01:14:20 +00:00
model feat(mqtt): adopt mqttastic 0.2.0 — sealed ConnectionState + Test Connection probe 2026-04-17 21:14:38 -05:00
navigation chore: review-cleanup fleet (audit + fix + hardening) (#5158) 2026-04-17 00:02:59 +00:00
network feat(mqtt): adopt mqttastic 0.2.0 — sealed ConnectionState + Test Connection probe 2026-04-17 21:14:38 -05:00
nfc fix: harden reliability, clean up KMP compliance, and improve code quality (#5023) 2026-04-09 18:21:46 +00:00
prefs chore: review-cleanup fleet (audit + fix + hardening) (#5158) 2026-04-17 00:02:59 +00:00
proto chore(r8): remove redundant keep rules covered by consumer rules (#5172) 2026-04-17 17:13:26 +00:00
repository feat(mqtt): adopt mqttastic 0.2.0 — sealed ConnectionState + Test Connection probe 2026-04-17 21:14:38 -05:00
resources feat(mqtt): adopt mqttastic 0.2.0 — sealed ConnectionState + Test Connection probe 2026-04-17 21:14:38 -05:00
service chore: review-cleanup fleet (audit + fix + hardening) (#5158) 2026-04-17 00:02:59 +00:00
takserver chore: review-cleanup fleet (audit + fix + hardening) (#5158) 2026-04-17 00:02:59 +00:00
testing test: migrate MigrationTest to runTest and add missing repository fakes (#5171) 2026-04-17 16:35:41 +00:00
ui fix(ui): stable LazyColumn keys, semantic roles, and content descriptions (#5168) 2026-04-17 16:24:18 +00:00