Skip to content

Sync upstream 2026-07-26: version catalog union, commit com.lightos serverPackage - #2

Merged
tyleryancey merged 31 commits into
mainfrom
sync/resolve-upstream-20260726
Jul 26, 2026
Merged

Sync upstream 2026-07-26: version catalog union, commit com.lightos serverPackage#2
tyleryancey merged 31 commits into
mainfrom
sync/resolve-upstream-20260726

Conversation

@tyleryancey

Copy link
Copy Markdown
Owner

Brings main in sync with upstream/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 in main's ancestry and future syncs don't re-conflict forever.

The three conflicts and how they were resolved

1. gradle/libs.versions.toml — union

Only the [versions] block actually conflicted (robolectric/androidxTestCore ours vs media3 upstream); every [libraries] addition auto-merged. Resolved by hand as a union:

  • Upstream owns SDK dependency versions — shared entry light-keyboard takes upstream's 0.0.16 (was 0.0.11), and upstream's media3 version + androidx-media3-common / -exoplayer / -session come in for the new audio SDK.
  • Every ledger-specific addition preservedrobolectric, androidx-test-core, kotlinx-coroutines-test and their version refs.

Verified additions-only: git diff upstream/main -- gradle/libs.versions.toml shows 5 added lines and zero deletions.

2. tool/lighttool.toml — keep ours

Kept the ledger identity (dev.tyler.lightledger, Ledger, versionCode 1, versionName 0.1.0, permissions INTERNET / 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 kept

Modify/delete conflict resolved with git rm. Upstream's sample screens stay absent; the ledger has its own tool surface.

serverPackage convention

serverPackage = "com.lightos"
# serverPackage = "com.thelightphone.sdk.emulator"

Light's builder compiles the committed value, so an emulator serverPackage produces an APK that cannot bind to LightOS on real hardware. Upstream's own four shipped examples/*/lighttool.toml all commit com.lightos; submission-check now 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 and git checkout -- tool/lighttool.toml before 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 check initially failed 8 tests, all in the Robolectric Room DAO tier, all one cause: the merge brought an upstream ext["minSdk"] bump 33 → 34, so the generated manifest declares minSdkVersion="34" while LedgerDaoRoomTest pinned Robolectric to SDK 33 — PackageParser refuses 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 follow targetSdk (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 check is green: 209 tool tests, 0 failures.

Carried non-tool patches (unchanged, deliberately)

submission-check flags build-affecting changes outside tool/ as a warning, not a failure. Still carried:

  • plugin/.../LightSdkPlugin.ktisUnitTestConfig, exempting unit-test configurations from the dependency substitution guard. Load-bearing: the tool declares testImplementation(libs.robolectric) and libs.androidx.test.core, and neither is on ALLOWED_DEPENDENCIES. Scoped so testFixtures* (published) and androidTest* (instrumented) stay guarded. Verified this survived the auto-merge alongside upstream's new androidx.media3 allow-list entry.
  • sdk/client/.../LightActivity.kt — routes system back through the current screen's goBack() so it consults onBackPressed(), preserving in-progress input on multi-step screens.
  • sdk/client/.../LightDb.ktbuildDatabase gains destructiveMigration: Boolean = false (source-compatible).

Flagged for separate follow-up, not touched here: lint-rules/build.gradle.kts hardcodes lint-api 32.3.0, overriding the root project's ext["lintVersion"] = "31.12.3".

🤖 Generated with Claude Code

aconanlai and others added 30 commits July 17, 2026 10:32
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>
@tyleryancey
tyleryancey merged commit ea0c82b into main Jul 26, 2026
2 checks passed
@tyleryancey
tyleryancey deleted the sync/resolve-upstream-20260726 branch July 26, 2026 05:56
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.

4 participants