Sync upstream 2026-07-26: version catalog union, commit com.lightos serverPackage - #2
Merged
Merged
Conversation
fix: return list of location search results in weather tool
delete redundant icons, fix broken ones
feat: circleci config to build docker image for tool builder
fix: enforce semver for tool versionName
feat(sdk): add active-tool audio support
drag listener already catches tap events
Modals, Button Presses, Keyboard update, Progress Bar
…am-20260726 # Conflicts: # gradle/libs.versions.toml # tool/lighttool.toml # tool/src/main/kotlin/com/thelightphone/sample/HomeScreen.kt
The upstream sync bumped ext["minSdk"] from 33 to 34, so the generated manifest now declares android:minSdkVersion="34". LedgerDaoRoomTest pinned Robolectric to SDK 33, and Robolectric's PackageParser refuses to parse an APK that requires a newer SDK than the level it simulates: PackageParserException: (at Binary XML file line #7): Requires newer sdk version #34 (current version is #33) That failed all 8 tests in the Robolectric in-memory-Room DAO tier. The pin can't just be dropped: without it Robolectric follows targetSdk (36), which is outside Robolectric 4.14.1's supported range. So it stays pinned and must track minSdk -- recorded in a comment above the annotation so the next minSdk bump is a known one-line change. Co-Authored-By: Claude Opus 5 (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.
Brings
mainin sync withupstream/main(lightphone/light-sdk), absorbing 29 upstream commits — PR #114 (modals, key forwarding, progress bar), the new audio SDK, and an icon-system refactor.Merged with a real merge commit (
--merge, never squash/rebase) so upstream's commits stay inmain's ancestry and future syncs don't re-conflict forever.The three conflicts and how they were resolved
1.
gradle/libs.versions.toml— unionOnly the
[versions]block actually conflicted (robolectric/androidxTestCoreours vsmedia3upstream); every[libraries]addition auto-merged. Resolved by hand as a union:light-keyboardtakes upstream's0.0.16(was0.0.11), and upstream'smedia3version +androidx-media3-common/-exoplayer/-sessioncome in for the new audio SDK.robolectric,androidx-test-core,kotlinx-coroutines-testand their version refs.Verified additions-only:
git diff upstream/main -- gradle/libs.versions.tomlshows 5 added lines and zero deletions.2.
tool/lighttool.toml— keep oursKept the ledger identity (
dev.tyler.lightledger,Ledger,versionCode 1,versionName 0.1.0, permissionsINTERNET/ACCESS_NETWORK_STATE/CAMERA). Upstream's sample identity (com.thelightphone.app, "Light SDK Tool",1.0.0, INTERNET-only) was not taken.3.
tool/src/main/kotlin/com/thelightphone/sample/HomeScreen.kt— deletion keptModify/delete conflict resolved with
git rm. Upstream's sample screens stay absent; the ledger has its own tool surface.serverPackage convention
Light's builder compiles the committed value, so an emulator
serverPackageproduces an APK that cannot bind to LightOS on real hardware. Upstream's own four shippedexamples/*/lighttool.tomlall commitcom.lightos;submission-checknow fails if the committed value is anything else. Normalized to the canonical two-line form (matching light-tides) with the emulator value retained as a comment for local AVD work — flip it temporarily andgit checkout -- tool/lighttool.tomlbefore committing.Verified with CI's own extraction:
sed -n 's/^serverPackage *= *"\([^"]*\)".*/\1/p' tool/lighttool.toml→ exactly one line,com.lightos.One drift fix
./gradlew checkinitially failed 8 tests, all in the Robolectric Room DAO tier, all one cause: the merge brought an upstreamext["minSdk"]bump 33 → 34, so the generated manifest declaresminSdkVersion="34"whileLedgerDaoRoomTestpinned Robolectric to SDK 33 —PackageParserrefuses an APK "requiring newer sdk version #34 (current version is #33)".Fixed by pinning the test to SDK 34 to track
minSdk. The pin can't be dropped: Robolectric would otherwise followtargetSdk(36), outside Robolectric 4.14.1's range. A comment records the coupling.No compilation errors anywhere — despite PR #114, the audio SDK, and the icon refactor, no tool source file needed an API-drift fix.
./gradlew checkis green: 209 tool tests, 0 failures.Carried non-tool patches (unchanged, deliberately)
submission-checkflags build-affecting changes outsidetool/as a warning, not a failure. Still carried:plugin/.../LightSdkPlugin.kt—isUnitTestConfig, exempting unit-test configurations from the dependency substitution guard. Load-bearing: the tool declarestestImplementation(libs.robolectric)andlibs.androidx.test.core, and neither is onALLOWED_DEPENDENCIES. Scoped sotestFixtures*(published) andandroidTest*(instrumented) stay guarded. Verified this survived the auto-merge alongside upstream's newandroidx.media3allow-list entry.sdk/client/.../LightActivity.kt— routes system back through the current screen'sgoBack()so it consultsonBackPressed(), preserving in-progress input on multi-step screens.sdk/client/.../LightDb.kt—buildDatabasegainsdestructiveMigration: Boolean = false(source-compatible).Flagged for separate follow-up, not touched here:
lint-rules/build.gradle.ktshardcodes lint-api32.3.0, overriding the root project'sext["lintVersion"] = "31.12.3".🤖 Generated with Claude Code