crossbind 2.0.0-beta.50 → 2.0.0-beta.51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,16 @@
1
1
  # crossbind
2
2
 
3
+ ## 2.0.0-beta.51
4
+
5
+ ### Patch Changes
6
+
7
+ - **Android builds work on Apple Silicon again.** Google ships the linux NDK host tools for x86_64
8
+ only, so the android toolchain image is amd64-only and its multi-arch index carries no arm64 leaf.
9
+ Three call sites asked docker for that image by the leaf ref; the pull that runs before bridge
10
+ generation asked for the index instead, and on an arm64 host docker answered "no matching manifest
11
+ for linux/arm64/v8". Machines that already had the image cached never noticed, which is why this
12
+ reached beta.50 - a fresh install on an Apple Silicon Mac could not build for android at all.
13
+
3
14
  ## 2.0.0-beta.50
4
15
 
5
16
  ### Major Changes
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "crossbind",
3
- "version": "2.0.0-beta.50",
3
+ "version": "2.0.0-beta.51",
4
4
  "license": "MIT",
5
5
  "homepage": "https://crossbind.dev",
6
6
  "repository": {
@@ -91,7 +91,9 @@ export default function run(program, params = [], platformPrefix = null, target
91
91
  // wasi is host-run only with a locally configured wasi-sdk; otherwise docker carries it.
92
92
  const wasiHostSdk = target?.platform === 'wasi' ? resolveWasiSdkPath(state.config.system) : null;
93
93
  if ((target?.platform !== 'ios' && !(target?.platform === 'wasi' && wasiHostSdk)) || program !== null) {
94
- pullDockerImage(imageRoleFor(target));
94
+ // Google ships the linux NDK for x86_64 only, so the android index carries no arm64 leaf;
95
+ // pull its amd64 leaf by ref or an arm64 host finds no matching manifest.
96
+ pullDockerImage(imageRoleFor(target), target?.platform === 'android' ? 'linux/amd64' : undefined);
95
97
  }
96
98
 
97
99
  let dProgram = program;
package/vitest.config.js CHANGED
@@ -15,25 +15,31 @@ export default defineConfig({
15
15
  coverage: {
16
16
  provider: 'v8',
17
17
  reporter: ['text', 'html'],
18
- // The unit-testable surface: pure helpers, config/state derivation, and the JS
19
- // runtime that ships into consumer apps. src/actions/ stays out - it shells out to
20
- // docker/emcc/cargo, so a unit test there would pin the command line rather than
21
- // behaviour, and the e2e suites already cover that layer.
22
- include: ['src/utils/**/*.js', 'src/state/**/*.js', 'src/assets/**/*.js'],
18
+ // src/actions/ used to be excluded on the grounds that it only shells out to
19
+ // docker/emcc/cargo, so a test there would pin a command line rather than behaviour,
20
+ // and that the e2e suites already covered it. 2.0.0-beta.50 disproved the second half:
21
+ // one call site asked docker for an image ref that does not exist on arm64, no e2e
22
+ // exercised a machine without that image already cached, and android builds shipped
23
+ // broken to every Apple Silicon user. Which command line these actions build IS the
24
+ // behaviour, so the layer is measured.
25
+ include: ['src/utils/**/*.js', 'src/state/**/*.js', 'src/assets/**/*.js', 'src/actions/**/*.js'],
23
26
  all: true,
24
27
  // A floor with a one-point band, not a ratchet. Coverage is not identical across
25
28
  // environments - resolveEmbindRust walks the real node_modules layout, so which of its
26
29
  // catch branches run differs between a dev machine and a fresh CI install - and the
27
30
  // totals land a few hundredths apart. Auto-raising these locally while enforcing them
28
31
  // exactly on CI therefore fails on that difference rather than on a regression: CI
29
- // measured 81.67/76.66/84.31/82.72 against floors written from a local run. These are
30
- // the CI numbers minus about a point; raise them deliberately when a gain is worth
32
+ // measured 81.67/76.66/84.31/82.72 against floors written from a local run. The
33
+ // figures below are a local run of the widened surface (62.18/55.64/65.96/62.09) minus
34
+ // about a point. They read lower than the numbers they replace because they now count
35
+ // src/actions/, not because anything regressed - the old floors simply were not
36
+ // measuring the layer that broke. Raise them deliberately when a gain is worth
31
37
  // locking in.
32
38
  thresholds: {
33
- statements: 80.6,
34
- branches: 75.6,
35
- functions: 83.3,
36
- lines: 81.7,
39
+ statements: 61.2,
40
+ branches: 54.6,
41
+ functions: 65.0,
42
+ lines: 61.1,
37
43
  },
38
44
  },
39
45
  },