Skip to content

v10.48.0

Choose a tag to compare

@sunnylqm sunnylqm released this 08 Jul 12:53
· 104 commits to master since this release
3b4ffb5

Features

  • resetToPackagedBundle() on all three platforms (iOS / Android / HarmonyOS): wipes every downloaded update and the native update state, so the app loads the binary's built-in bundle on next launch (or immediately with { restart: true }). Silent by default — returns a boolean, errors surface via onError/lastError. The client uuid is preserved. (e6bdf45, 5a571d1)
  • v2 diff track (HDIFF13 + HBC transform): the patch core now applies HDIFF13 stream-format bundle patches and HBC-transform-domain patches (T(origin) → hpatch → T⁻¹), and reports track capability to the server as diffV: 2. Servers can serve much smaller Hermes-aware diffs to capable clients while older clients stay on the single-format track. (633d15c, 8ff0e82, 9f271c3)

Fixes

  • Apply raw-stored single-format patches that keep a lzma2 label (be13a87): node-hdiffpatch 2.0.3–2.2.0 emits HDIFFSF20 patches that keep the lzma2 compressType label even when a tiny diff is stored raw (compressedSize==0); the decoder chose the decompress plugin from the label alone and failed with hpatch error -4, breaking the diff channel for near-identical bundles. The decoder now gates on compressedSize>0 (the format's actual raw/compressed switch). Generation side is fixed in node-hdiffpatch ≥ 2.2.1 — upgrade it wherever you generate diffs.
  • Android prebuilt librnupdate.so rebuilt for all ABIs with the HBC transform symbols (72a836d); the publish pipeline also rebuilds them from source.

E2E / CI (repo-internal)

  • The update flow e2e now covers the v2 track end-to-end on iOS, Android, and HarmonyOS (uniform v4 stage, capability-gated by diffV), runs real hdiff patches on Linux CI (closing the blind spot that hid the lzma2-label regression), and switches between cases via resetToPackagedBundle. iOS jobs got a structural speed pass: simulator pre-boot, headless mode, ccache, Metro cache persistence, and a native-input-keyed app cache with JS re-injection.

Full changelog: v10.47.0...v10.48.0