Repository navigation
PAM Native 1.22.5
·
43 commits
to main
since this release
PAM Native 1.22.5
Source commit: 6a333fd4122adb9598c69ef9fe3f852ebf70ba04 ([skip ci]).
Changes
- Android virtual lists retain mounted cells and decoded images when keyed rows
move within the same list. Loading headers and page prepends no longer clear
visible messages before RecyclerView applies its position changes. Cross-list
moves keep their existing removal and materialization lifecycle. - Native pinch and pan take over the currently displayed transform when they
interrupt a zoom animation. Independent opacity animation continues and the
image remains mounted. - Adjacent native pan/pinch detectors share their content surface. An intervening
View or Drag preserves separate targets. The iOS implementation follows the
same shared-target and component-preserving transform contract. - Optional
GestureEvent::nativeScale,nativeTranslationXand
nativeTranslationYreport the applied transform for committing interrupted
gestures. Translations use dp on Android and view points on iOS. Existing
relative deltas and positional constructor arguments remain compatible;
older runtimes and gestures without native transforms leave these fields null.
Validation
- Android instrumentation: 27/27 tests on API26 and 27/27 on API36, including
view/bitmap continuity, pagination, delayed HTTP images, native zoom and
off-center gesture takeover. The same-list continuity regression fails on
published 1.22.4 and passes with this fix. Image completion alone passes both
versions; the confirmed teardown was caused by same-list row moves. - 214 JVM tests, the PHP SDK suite, 545 PHP source parses, protocol parity,
Rust formatting and 207 Rust workspace tests passed. - Fresh
nativeandnative-uiprojects passed installation, first launch,
edit/reload/restore, stable runtime PID and counter increment on API36/API26.
Both produced two reload events without runtime errors; screenshots were
inspected. - Renderer, PHP package, plugin API AAR and Linux CLI checksums were verified.
Reproducibility and package budgets passed for Android and PHP artifacts. - Galaxy S10 chat continuity: ten matching history swipes changed fully empty
timeline samples from 7/827 to 0/834 after the first three seconds. - On the same test photo, the original zoom recording contained three empty
photo frames among nine recorded frames. The corrected recording had zero
empty photo frames among 123 recorded frames and 95 distinct measured image
coverage values. A further two-finger/pan/rapid-double-tap recording had zero
empty photo frames among 199 recorded frames; returning to 1× was confirmed.
Recordings establish visual continuity, not frame rate. A separate debug
frame sample reported 8 janky frames of 345 and p95 19 ms; this does not
establish sustained 60 FPS or complete application parity.
Upgrade and limits
Rebuild the Android host after updating. No numeric protocol identifiers or
third-party dependency requirements change. See
the migration guide.
Validation used direct local commands without GitHub Actions. Three UIKit
regression tests are included, but Swift/UIKit execution was unavailable on the
Linux host. The iOS handoff covers CSS/program transforms on the shared photo
surface; a TapEffect owned by an ancestor and animating a child is outside this
coverage. End-to-end APNs/FCM delivery was not tested. Initial text/background
batching and rejected drawing experiments are not included in this release.