v10.48.0
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 viaonError/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 asdiffV: 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
lzma2label (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 withhpatch error -4, breaking the diff channel for near-identical bundles. The decoder now gates oncompressedSize>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.sorebuilt 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 viaresetToPackagedBundle. 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