- #3 keyboard (was B: chat didn't move, keyboard covered composer): native resize wasn't moving our
fixed layout, so drive it from JS — the Keyboard plugin reports its height, we expose --kb and lift the
composer to sit exactly on the keyboard; keyboard config -> resize:none so native won't double-adjust.
- #4: the left-edge back is now INTERACTIVE — the conversation follows the finger with the list revealed
underneath (parallax), commit past 1/3 width else spring back (like Teams). Falls back to release-based
bzcBack for popups/search.
- #8: the image now follows the finger sideways (and down) during the swipe, not just on release.
- #7: hold the thread hidden until its images load (max 700ms) then reveal at the bottom — no dance.
Build marker -> 2026-07-17-batch95.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>