mirror of
https://github.com/meshtastic/Meshtastic-Android.git
synced 2026-05-12 00:28:20 -04:00
8.3 KiB
8.3 KiB
Agent Session Context - Meshtastic Android
This is a dated, append-only handover log. Add new entries at the TOP.
Do NOT edit or remove previous entries — stale state claims cause agent confusion.
Format: ## YYYY-MM-DD —
2026-05-11 — Migrated feature/intro UI to commonMain
- Moved intro onboarding UI composables and nav graph from
feature/intro/src/androidMain/intofeature/intro/src/commonMain/, adding sharedIntroPermissionsandIntroSettingsNavigatorinterfaces plus a commonintroGraphNavigation 3 extension. - Refactored
AppIntroductionScreeninto a thin Android host that provides Android permission/settings adapters via composition locals, and addedAndroidIntroPermissions,AndroidIntroSettingsNavigator, and JVM desktop no-op stubs. - Verified with
./gradlew spotlessApply :feature:intro:compileKotlinJvm :feature:intro:compileAndroidMain.
2026-05-11 — Added Esp32OtaUpdateHandler common tests
- Created
feature/firmware/src/commonTest/kotlin/org/meshtastic/feature/firmware/ota/Esp32OtaUpdateHandlerTest.kt. - Covered WiFi OTA success flow, download/upload progress reporting, connection-drop error handling, hash rejection, verification timeout, and cancellation propagation.
- Validation note: per task instruction, no Gradle commands were run.
2026-05-11 — Added profile import/export round-trip coverage
- Created
feature/settings/src/commonTest/kotlin/org/meshtastic/feature/settings/radio/ProfileRoundTripTest.kt. - Covered
RadioConfigViewModel.exportProfile()→importProfile()round trips using the realExportProfileUseCaseandImportProfileUseCasewith an in-memoryFileServicetest double. - Added representative, empty, and partially populated
DeviceProfilecases, asserting message equality and stable protobuf bytes across re-export. - Validation note: per task instruction, no Gradle commands were run.
2026-05-11 — Added DirectRadioControllerImpl common tests
- Created
core/service/src/commonTest/kotlin/org/meshtastic/core/service/DirectRadioControllerImplTest.kt. - Covered service-repository flow delegation, send message/send shared contact behavior, remote config request delegation, location stop, and device address updates.
- Validation note:
./gradlew --no-configuration-cache :core:service:allTestsis currently blocked by pre-existing compile failures incore/network(MQTTRepositoryImplunresolvedKEEPALIVE_SECONDS) and downstreamcore/dataunresolvedorg.meshtastic.core.networksymbols.
2026-05-11 — Added DatabaseManager withDb retry host test
- Created
core/database/src/androidHostTest/kotlin/org/meshtastic/core/database/DatabaseManagerWithDbRetryTest.kt. - Covered the concurrent
withDb()retry path by pausing an in-flight query, switching to a new DB, closing the old pool, and asserting the retried query succeeds against the new DB. - Verified with
./gradlew --no-configuration-cache :core:database:spotlessApply :core:database:testAndroidHostTest --tests "org.meshtastic.core.database.DatabaseManagerWithDbRetryTest"and./gradlew --no-configuration-cache :core:database:spotlessCheck :core:database:testAndroidHostTest.
2026-05-11 — Expanded MQTT repository coverage
- Extended
core/network/src/commonTest/kotlin/org/meshtastic/core/network/repository/MQTTRepositoryImplTest.ktwith topic construction, JSON/protobuf decoding, reconnect retry, subscription retry, and connection-state coverage. - Added internal
MqttClientSession/MqttClientSetuptest hook plusupdateConnectionState()incore/network/src/commonMain/kotlin/org/meshtastic/core/network/repository/MQTTRepositoryImpl.ktto exercise repository behavior without a real broker. - Verified with
./gradlew --no-configuration-cache :core:network:allTests.
2026-05-11 — Added RadioConfigViewModel MQTT probe tests
- Extended
feature/settings/src/commonTest/kotlin/org/meshtastic/feature/settings/radio/RadioConfigViewModelTest.ktwith MQTT probe success, timeout, thrown-exception-to-Other, and clear/reset coverage. - Verified with
./gradlew --no-configuration-cache :feature:settings:jvmTest --tests "org.meshtastic.feature.settings.radio.RadioConfigViewModelTest".
2026-05-11 — Added MeshRouterImpl accessor routing tests
- Created
core/data/src/commonTest/kotlin/org/meshtastic/core/data/manager/MeshRouterImplTest.kt. - Covered lazy routing access for action-handler send/request/admin calls, traceroute handler access, and service-action passthrough.
- Verified with
./gradlew --no-configuration-cache :core:data:allTests.
2026-05-11 — Added SettingsViewModel saveDataCsv coverage
- Extended
feature/settings/src/commonTest/kotlin/org/meshtastic/feature/settings/SettingsViewModelTest.ktwithsaveDataCsv writes filtered export via file service. - The new test seeds
FakeNodeRepository+FakeMeshLogRepository, captures theFileService.write()sink with Mokkery, and verifies filtered CSV output from the realExportDataUseCase. - Verified with
./gradlew --no-configuration-cache :feature:settings:jvmTest --tests "org.meshtastic.feature.settings.SettingsViewModelTest"after running:feature:settings:spotlessApply.
2026-05-11 — Added CompassViewModel accuracy edge-case tests
- Extended
feature/node/src/commonTest/kotlin/org/meshtastic/feature/node/compass/CompassViewModelTest.ktwith PDOP-only, HDOP+VDOP, HDOP-only, precision-bits fallback, missing accuracy metadata, zero-distance angular error, and very-small-distance angular error coverage. - Validation note:
:feature:node:allTestsstill fails on the pre-existingMetricsViewModelTest.saveEnvironmentMetricsCSV writes correct dataTurbine timeout in JVM and Android host tests. The new CompassViewModel tests pass in the same run.
2026-05-11 — Added Node domain model tests
- Created
core/model/src/commonTest/kotlin/org/meshtastic/core/model/NodeTest.kt. - Covered
isOnline,distance,bearing,colors,createFallback,getRelayNode,isUnknownUser,validPosition,hasPKC, andmismatchKey. - Validation blockers:
:core:model:allTestscurrently fails on pre-existingDataPacketTestiOS compile errors, and directNodeTestexecution hits an existing class-version mismatch incore:commonhelpers.
2026-05-11 — Added HeartbeatSender transport tests
- Created
core/network/src/commonTest/kotlin/org/meshtastic/core/network/transport/HeartbeatSenderTest.kt. - Covered encoded heartbeat payloads, nonce sequencing, interval-driven scheduling, cancellation, zero-interval behavior, and restart semantics using coroutine virtual time.
- Verified with
./gradlew --console=plain --no-configuration-cache :core:network:allTests.
2026-05-11 — Added BaseMapViewModel waypoint expiration tests
- Extended
feature/map/src/commonTest/kotlin/org/meshtastic/feature/map/BaseMapViewModelTest.kt. - Added coverage for future, boundary (
expire == now), never-expiring (expire == 0), and mixed waypoint filtering. - Verified with
./gradlew --no-daemon --no-configuration-cache :feature:map:spotlessCheck :feature:map:allTests.
2026-05-03 — Switched Gradle GC to G1GC
- Replaced
-XX:+UseZGCwith-XX:+UseG1GCingradle.propertiesto resolve "not supported" error. - Added
-XX:+ParallelRefProcEnabledfor better build performance. - Verified with Gradle sync.
2026-05-02 — CI cost-control PR review fixes
- Applied PR review feedback: encoding fixes in sort-strings.py, NUL-delimited staged-files loop in ai-guardrail.sh, installation instructions added, typo fix in strings.xml, command order fixed in AGENTS.md, narrowed .aiexclude/.gitattributes patterns, allTests added to SKILL.md.
2026-04-XX — Token Mitigation (Phase 1-3)
.copilotignoreand.aiexcludeupdated with stricter ignore rules.AGENTS.mdmodularized to ~3KB base; detailed rules moved to.skills/.scripts/ai-guardrail.shadded to prevent binary/log leaks (installation: see script header).- CI Cost Control skill added at
.skills/ci-cost-control/SKILL.md.
Golden Context (stable across sessions)
- Always check
.skills/compose-ui/strings-index.txtbefore readingstrings.xml. - Run
python3 scripts/sort-strings.pyafter adding strings to keep the index organized. - Always check
gh run listbefore pushing. - Pre-commit hook
scripts/ai-guardrail.shprotects against binary leaks (see script for install).