release: 2.8.0#5738
Merged
Merged
Conversation
Contributor
✅ Preview staleness check passedPreview and screenshot references are up to date. |
Contributor
✅ Docs staleness check passedThis PR includes updates to |
Contributor
✅ Screenshot reference staleness passedPreview and screenshot references are up to date. |
ea06782 to
0a4c22b
Compare
❌ 1 Tests Failed:
View the top 1 failed test(s) by shortest run time
To view more test analytics, go to the Test Analytics Dashboard |
jamesarich
added a commit
that referenced
this pull request
Jun 13, 2026
configureCommon() applied setMultipleConnectionPool(maxNumOfReaders = 4) to every database, including the in-memory ones used by tests. A read on a pooled reader connection can observe a snapshot older than the latest write on the writer connection, so a read immediately after a write may return stale rows. DeviceLinkRepositoryImplTest.reconcilePrunesShortCodesNoLongerInCatalog read [a, b] (the pre-prune state) instead of [a] after a deleteNotIn — passing locally but flaking on CI depending on connection-assignment timing (failed shard-core on #5738; the identical code passed on #5780). In-memory builders now pass multiConnection = false so reads serialize behind writes on one connection. Production/file databases keep the multi-reader pool. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
6761b47 to
8cffc9f
Compare
jamesarich
added a commit
that referenced
this pull request
Jun 16, 2026
configureCommon() applied setMultipleConnectionPool(maxNumOfReaders = 4) to every database, including the in-memory ones used by tests. A read on a pooled reader connection can observe a snapshot older than the latest write on the writer connection, so a read immediately after a write may return stale rows. DeviceLinkRepositoryImplTest.reconcilePrunesShortCodesNoLongerInCatalog read [a, b] (the pre-prune state) instead of [a] after a deleteNotIn — passing locally but flaking on CI depending on connection-assignment timing (failed shard-core on #5738; the identical code passed on #5780). In-memory builders now pass multiConnection = false so reads serialize behind writes on one connection. Production/file databases keep the multi-reader pool. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
d49670a to
69014e9
Compare
jamesarich
added a commit
that referenced
this pull request
Jun 16, 2026
configureCommon() applied setMultipleConnectionPool(maxNumOfReaders = 4) to every database, including the in-memory ones used by tests. A read on a pooled reader connection can observe a snapshot older than the latest write on the writer connection, so a read immediately after a write may return stale rows. DeviceLinkRepositoryImplTest.reconcilePrunesShortCodesNoLongerInCatalog read [a, b] (the pre-prune state) instead of [a] after a deleteNotIn — passing locally but flaking on CI depending on connection-assignment timing (failed shard-core on #5738; the identical code passed on #5780). In-memory builders now pass multiConnection = false so reads serialize behind writes on one connection. Production/file databases keep the multi-reader pool. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Opening commit for the release/2.8.0 stabilization branch. versionCode remains git-derived (offset 29314197 + commit count); only the base version name is bumped here. CI overrides this with the release tag. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Enables the full validate-and-build pipeline on PRs whose base is a release branch (e.g. release/2.8.0), not just main, so milestone PRs retargeted onto the release branch get per-PR CI before merge. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
…ings directory) (#5714) Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…cher (#5765) Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
#5275 created :feature:discovery with implementation(projects.core.proto), but main's #5675 replaced the :core:proto submodule with the org.meshtastic:protobufs Maven artifact. Rebasing left a stale module reference. Switched to implementation(libs.meshtastic.protobufs), matching the convention (cf. feature/node). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…eline for 2.8.0 (#5775) Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…AtStart The google-flavor AppFunctionsModule registered AppFunctionStateSync with createdAtStart = true. Eager creation needs the androidContext binding and immediately spawns the prefs-observing sync coroutine — so any Koin graph built outside a running app failed with NoDefinitionFoundException for android.content.Context. That broke KoinVerificationTest.verifyTypedBootstrapLoadsModuleGraph (the typed koinApplication<AndroidKoinApp>() bootstrap instantiates eager singletons), failing the shard-app CI job on this branch. The definition is now a plain @single (the graph stays lazily constructible) and GoogleMeshUtilApplication.onCreate resolves it once after startKoin has bound androidContext — same production behavior, explicit instead of implicit. It was the repo's only createdAtStart. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Signed-off-by: James Rich <james.a.rich@gmail.com>
configureCommon() applied setMultipleConnectionPool(maxNumOfReaders = 4) to every database, including the in-memory ones used by tests. A read on a pooled reader connection can observe a snapshot older than the latest write on the writer connection, so a read immediately after a write may return stale rows. DeviceLinkRepositoryImplTest.reconcilePrunesShortCodesNoLongerInCatalog read [a, b] (the pre-prune state) instead of [a] after a deleteNotIn — passing locally but flaking on CI depending on connection-assignment timing (failed shard-core on #5738; the identical code passed on #5780). In-memory builders now pass multiConnection = false so reads serialize behind writes on one connection. Production/file databases keep the multi-reader pool. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…uppression) (#5793) Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
… IDs, discovery abort, AQ zeros) (#5813) Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
69014e9 to
8874352
Compare
…5780) Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: James Rich <james.a.rich@gmail.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Co-authored-by: James Rich <2199651+jamesarich@users.noreply.github.com> Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: James Rich <james.a.rich@gmail.com>
…5818) Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Co-authored-by: James Rich <james.a.rich@gmail.com> Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release 2.8.0 — milestone integration onto
mainThis PR rolls up the entire 2.8.0 milestone onto
main. Every milestone PR was retargeted ontorelease/2.8.0and merged in dependency order, with conflicts and Room schema renumbering resolved per-PR (verified by per-PR CI plus local build/lint before each merge). This branch is the single, reviewed integration point for the release.Merge readiness:
mainis an ancestor of this branch (0 behind / 18 ahead); a fast-forward is clean —git merge-treereports no conflicts and the merged tree is byte-identical to the release tree. See Merge strategy below.🌟 New Features
msh.todevice hardware links: "I want one" section + Settings directory (Room v41).set_ham_modeHamParameters admin message.🛠️ Refactoring & Architecture — KMP Migration Milestone
RadioControllerseam incore.repository, moving business logic towardcommonMain. Downstream PRs were fixed up against the moved/renamed APIs (DataPacket.{ID_BROADCAST,…}→NodeAddress.*,getPacketId()→generatePacketId(),SendMessageUseCasenow returnsInt).org.meshtastic:protobufsMaven dependency (after Replace :core:proto with org.meshtastic:protobufs:2.7.25 #5675) instead of locally-generated protos (dfb414813).🐛 Bug Fixes
release/2.8.0branch-review findings: Car host-allowlist digests, AI node-ID formatting for high-bit node nums, discovery scan abort/restore ordering, and air-quality zero-suppression — plus added FTS-backfill and discovery-abort regression tests.0 µg/m³suppression).AppFunctionStateSyncfrom theApplicationrather thancreatedAtStart(b5dd6ff9e).613dee91b).🧹 Chores
:androidApp(cold-start AOT).VERSION_NAME_BASE→2.8.0(versionCode stays git-derived) (b40fa567d).release/**branches (9a0ed4ddf).Room schema serialization (resolved)
mainwas at Room v38. The four DB-touching PRs each originally claimed v39; they were serialized by merge order to v39 → v40 → v41 → v42 — each renumbered on its branch (bump version, re-chain@AutoMigration, regenerateNN.jsonvia Room export). Every migration is validated by Room codegen at build time.Deferred to a follow-up
LockdownAuth.max_session_seconds/disableandLockdownStatus.State.DISABLED, which are merged on protobufsdevelop(#916, #929) but not yet in a taggedorg.meshtastic:protobufsrelease. Re-port once a release carrying them is published. (Protos come from the pinned Maven dependency — there is no proto submodule.)Merge strategy
A clean fast-forward is available (verified non-mutating,
mainleft untouched):git push origin release/2.8.0:main) — preserves all 18 reviewed SHAs verbatim, linear, no merge commit; auto-closes this PR.Testing Performed
PacketFtsSearchTest(FTS search DAO): search match / non-match, conversation scoping, and a backfill regression (Kotlin-sideDataPacket.textdecode) — added in fix: resolve release/2.8.0 branch-review findings (car hosts, AI node IDs, discovery abort, AQ zeros) #5813.DiscoveryScanEngineTest: reconnect-timeout abort, manual stop, and normal completion each restore the home LoRa preset and finalize the session — added in fix: resolve release/2.8.0 branch-review findings (car hosts, AI node IDs, discovery abort, AQ zeros) #5813.AiFunctionProviderImplTest: high-bit node-num round-trip (num = -1→!ffffffff) — added in fix: resolve release/2.8.0 branch-review findings (car hosts, AI node IDs, discovery abort, AQ zeros) #5813../gradlew spotlessCheck detekt assembleDebug test allTests kmpSmokeCompile.🤖 Generated with Claude Code