From 42c9b6d7e2acbdfec193f1d1654404883409d605 Mon Sep 17 00:00:00 2001 From: Scott Olcott Date: Fri, 11 Sep 2026 16:37:37 -0600 Subject: [PATCH 1/2] Pin SQLDelight in Renovate to what the Apollo cache requires The `sqldelight` version.ref is deliberately held at whatever com.apollographql.cache:normalized-cache-sqlite depends on (2.1.0 for cache 1.0.7), not the latest: the web-worker-driver and the hand-written SQL.js worker's message protocol must agree with it. Renovate can't see that transitive pin, so it keeps opening PRs that float SQLDelight ahead of Apollo's cache. Disable app.cash.sqldelight:* so it's bumped by hand alongside the cache, mirroring the dataresult rule. Co-Authored-By: Claude Opus 4.8 --- .github/renovate.json5 | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 4bcfb8e..d53aa82 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -10,5 +10,16 @@ matchPackageNames: ["io.github.solcott:dataresult*", "io.github.solcott:uistate*"], enabled: false, }, + { + // The `sqldelight` version.ref is deliberately pinned to whatever + // com.apollographql.cache:normalized-cache-sqlite depends on (2.1.0 for cache 1.0.7), not to + // the latest -- the web-worker-driver and the hand-written SQL.js worker's message protocol + // must agree with it. Renovate can't see that transitive pin, so it keeps proposing bumps + // that float SQLDelight ahead of Apollo's cache. Bump this by hand when apollo-normalized-cache + // moves. See the network-apollo skill. + description: "SQLDelight is pinned to what apollo-normalized-cache-sqlite requires. Bump it by hand alongside the cache.", + matchPackageNames: ["app.cash.sqldelight:*"], + enabled: false, + }, ], } From 9f7a305718549c7ac16e351ac542e2e6ab61edbb Mon Sep 17 00:00:00 2001 From: Scott Olcott Date: Fri, 11 Sep 2026 17:11:01 -0600 Subject: [PATCH 2/2] Also pin sql.js in Renovate: it is declared in two places sql.js's version lives in two spots that must agree: the npm("sql.js") call in network/build.gradle.kts (which supplies the copied sql-wasm.wasm) and the worker's package.json (its JS glue). Renovate only sees the package.json half, so its bump (PR #28) left the glue at 1.14.2 against a 1.8.0 wasm -- initSqlJs() then hangs forever and the web app shows a permanent spinner. Disable sql.js so it is bumped by hand, in both places, with a web smoke test. Co-Authored-By: Claude Opus 4.8 --- .github/renovate.json5 | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/.github/renovate.json5 b/.github/renovate.json5 index d53aa82..ea695a3 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -21,5 +21,16 @@ matchPackageNames: ["app.cash.sqldelight:*"], enabled: false, }, + { + // sql.js is declared TWICE: `npm("sql.js", ...)` in network/build.gradle.kts (the copied + // sql-wasm.wasm) and network/npm/countries-sqljs-idb-worker/package.json (the worker's JS + // glue). Both must be the same version or the Emscripten glue loads a mismatched .wasm and + // initSqlJs() hangs forever -- a silent spinner on the web app. Renovate only sees the + // package.json half, so an automated bump breaks the build. Bump both by hand and verify on + // web. See network/build.gradle.kts and the network-apollo skill. + description: "sql.js is version-declared in two places (a Gradle npm() call and the worker package.json) that must match; Renovate sees only one. Bump both by hand.", + matchPackageNames: ["sql.js"], + enabled: false, + }, ], }