Harden Android Cloud sync and release verification - #25
Merged
Conversation
The Obsidian-style gesture set, as one setting with three slots (Settings → Appearance → Swipe gestures): - Swipe left / swipe right over an open note each map to next/previous note (the shipped default), Browse, the note outline, or off. The existing flick recognizer stays the single arbiter of what counts as a swipe; only the dispatch consults the mapping, so a change in Settings applies to the very next swipe. - Pull down from the top of a note runs a quick action: the command palette by default (nothing lived on that gesture before), or search, or the new-note sheet, or off. Strict by design — the touch must start at scrollTop 0 and cross an 88px threshold, with a floating hint pill and a haptic tick at the arming point, so top-of-note over-scrolls don't fire it. - The left-edge swipe that opens Browse is untouched, as is the drawer's pull-to-refresh. Prefs live in localStorage (zn:gestures), mirrored to native storage by bootstrap like the layout and status-bar settings, normalized per-field so values from a newer version degrade gracefully (covered by node tests). Verified on the API 35 emulator: default flick incl. end-stop, all three remaps applied live, pull-down hint/arming, all four pull actions, persistence across force-stop, drawer + edge-swipe untouched.
A paperclip button in the formatting toolbar, right after Find: it opens Android's system document picker (the WebView routes <input type=file> through Capacitor's onShowFileChooser — no native plugin), and the picked files flow through the SAME import path as desktop drag-drop: importDroppedFile on the active vault (MobileVault and RemoteVault both already implement it — bytes in, unique name, change event), then app-core's own formatImportedAssetsForInsertion places the markdown at the cursor. Images insert as embeds, PDFs and other files as links, exactly what a desktop drop produces; multi-select supported. The picker element is module-level on purpose: opening it pauses the activity, the keyboard drops, and the focus-gated toolbar unmounts — a component-owned input would never deliver its change event. Insertion targets the store's editorViewRef and refocuses it, so the keyboard comes straight back. Verified on the API 35 emulator: picked a PNG (byte-exact copy into the vault, live-rendering embed) and a PDF (link) from Downloads via the system picker, keyboard restored after each, saved markdown matches desktop drop output.
Two consecutive CI failures on the same commit, zero of them in app code: the API 35 emulator on GitHub's nested-virt runners can report sys.boot_completed while system_server is still sick. Run one hit it as 'Failed to commit install session … Broken pipe' from the package service (0 tests ran); the rerun spammed "Can't find service: settings" from before the tests to the end. The emulator-runner action's own wait accepts that half-boot, and gradle charged into it both times. tooling/ci-wait-for-emulator.sh now gates the connected-test run: poll the settings and package services (device_provisioned + pm path, up to 5 min), one adb reboot rescue if they never register, and a loud early failure — instead of a misleading test failure — if the VM is beyond saving.
Source pin unchanged at 43994ff (app-core 2.38.0 + dependency-audit hardening) — the reproducible-build pin from 5a22b4d is the stamp.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Verification
npm testnpm run typechecknpm run upstreamnpm run syncDependency
Merge ZenNotes/zennotes#687 first; this app pins that audited source commit.