Skip to content

fix(build): restore theme switching by re-aligning the Compose stack (release 26.07.02)#98

Merged
ErikChevalier merged 1 commit into
mainfrom
fix/theme-compose-alignment
Jul 2, 2026
Merged

fix(build): restore theme switching by re-aligning the Compose stack (release 26.07.02)#98
ErikChevalier merged 1 commit into
mainfrom
fix/theme-compose-alignment

Conversation

@ErikChevalier

Copy link
Copy Markdown
Contributor

What & why

Fixes the theme-switching regression reported on 26.07.01: selecting a theme (or light/dark/system mode) in the app's Settings persisted but never repainted the app.

Root cause: the 26.07.01 dependency refresh bumped AndroidX Lifecycle 2.10 → 2.11, which transitively pulls a newer androidx.compose.ui/runtime than the pinned composeBom = 2024.12.01 provides — splitting the Compose stack across versions (evidence: compose-ui's new LocalContextGetResourceValueCall lint rule appeared while LocalResources didn't exist yet at compile time). Cross-version Compose artifacts break preference-driven recomposition, which is exactly the theme picker's plumbing (collectAsStateWithLifecycleSearchMobTheme). Nothing in the app's own theme code changed since 26.06.06.

Changes:

  • Pin lifecycleRuntimeKtx / lifecycleViewmodelCompose back to 2.10.0, the last version aligned with the BOM (the exact known-good matrix from 26.06.06), with a comment requiring the two to move only in lockstep with composeBom.
  • Add a Dependabot ignore for androidx.lifecycle:* so the weekly minor-patch group can't silently reintroduce the skew; lifecycle 2.11+ should land together with a deliberate Compose BOM bump (2026.05.01 is available — see closed build: bump androidx.compose:compose-bom from 2024.12.01 to 2026.05.01 #9) and an on-device test.
  • Bump to 26.07.02 with a CHANGELOG entry, ready to tag once merged.

Relates to OpenSpec change: n/a (dependency regression fix)

Checklist

  • Built on its own feat//fix/ branch off main
  • ./gradlew ktlintCheck lint test assembleDebug is green locally — verified by CI on this PR (this sandbox cannot run the Android toolchain)
  • Added/updated tests (unit and/or instrumentation) — n/a: version pins only; the failure mode (cross-version recomposition) is not reachable from JVM unit tests
  • No telemetry, trackers, or device identifiers added
  • No Google scraping introduced
  • Battery: no wake-lock held while idle
  • OpenSpec change validates (openspec validate <name> --strict) and tasks are checked off — n/a

🤖 Generated with Claude Code

https://claude.ai/code/session_016AYAgNYmBkxsEYcgzSAjgT


Generated by Claude Code

…(release 26.07.02)

Lifecycle 2.11.0 (from the 26.07.01 dependency refresh) transitively
pulls a newer androidx.compose.ui/runtime than composeBom 2024.12.01
pins, splitting the Compose stack across versions; preference-driven
recomposition broke and theme selections persisted without repainting
the app. Pin lifecycle back to 2.10.0 (the last BOM-aligned version),
teach dependabot to hold androidx.lifecycle until it moves together
with the Compose BOM, and cut 26.07.02.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016AYAgNYmBkxsEYcgzSAjgT
@ErikChevalier ErikChevalier merged commit c5105d5 into main Jul 2, 2026
3 checks passed
@ErikChevalier ErikChevalier deleted the fix/theme-compose-alignment branch July 2, 2026 21:03
@ErikChevalier ErikChevalier mentioned this pull request Jul 3, 2026
7 tasks
ErikChevalier added a commit that referenced this pull request Jul 3, 2026
Bump appVersionName (versionCode derives to 260702) and add the Material
You auto-disable fix to the 26.07.02 CHANGELOG section alongside the
Compose stack re-alignment from #98.

Co-authored-by: FlintWave <flintwave@tuta.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants