You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Reopening a finished word now respects an editor that rejects setComposingRegion, and ordinary
editor mutations update Slide's composing, learning, and autocorrect state only after the
corresponding InputConnection operation succeeds. Raw TYPE_NULL editors receive key events
for typing, Backspace, and Enter.
Swipe and dictation spacing now use shared, code-point-aware context for Unicode punctuation,
paired quotes, brackets, ellipsis, and emoji. Sentence and word context recognises smart
apostrophes and Unicode sentence/paragraph boundaries instead of learning across them.
The emoji grid exposes accessibility scroll actions and preserves virtual focus as it scrolls;
tone selection can be cancelled vertically, and taps or drags in distant padding no longer
commit the nearest key.
Native Whisper transcripts cross JNI as ordinary UTF-8 bytes, so supplementary Unicode such as
emoji is decoded correctly instead of being handed to JNI's incompatible Modified UTF-8 API.
Leaving or cancelling an update download now cancels the process-owned job and prevents Package
Installer from appearing over another app. Certificate rotation history is accepted without
accepting an unrelated signer.
Clearing learned words, phrases, and touch calibration now fsyncs every affected directory before
removing its fail-closed deletion marker. Personal touch offsets and residues are excluded from
backup and transfer, while ordinary settings migrate to a backup-eligible, privacy-filtered store.
Lexicon and n-gram loaders reject noncanonical, unsorted, out-of-range, truncated, trailing, or
otherwise malformed assets instead of silently mis-scoring corrupt data.
The patched ExecuTorch runtime no longer contributes a test instrumentation declaration to the
release manifest, and native builds identify the tracked whisper.cpp snapshot rather than an
ambient or stale Slide Git revision.
Slide now honours Android's IME-switching contract with a working globe key, and hides voice input
on devices without microphone hardware.
Neural swipe ranking now applies the model's calibrated language weight to the lexicon's raw 0..255 frequency value. The previous extra logarithm almost erased the language prior; this
removes a concrete scoring cause of everyday contractions losing to much less common names.
One Backspace immediately after a swipe now removes the complete committed word as a unit,
including Slide's automatic leading space and the word's casing. The deletion is verified
against the editor's actual text and also rolls back the provisional learned phrase.
The packaged-runtime emulator runner now defaults to Lavapipe and an 8 GiB data partition. This
avoids emulator 37.1.11's SwiftShader initialization crash and Android 37's first-boot storage
exhaustion. Headless runs disable SurfaceFlinger's unrelated luma sampling to avoid a current mapper.ranchu readback assertion, and the runner requires stable package, activity, and settings
services before tests.
Changed
The app now targets Android API 37 as version 0.3.2 (versionCode 11). Fresh builds prepare all
speech, swipe, and ExecuTorch assets through one checked entry point.
CI and release workflows require packaged speech/swipe instrumentation on API 26 and API 37.
Tagged builds also require an independent source-export rebuild, exact runtime-asset and native
provenance checks, a CycloneDX SBOM, checksum, R8 mapping, native symbols, and signed GitHub
provenance/SBOM attestations.
Unicode, CLDR, and AOSP language inputs are now locked to immutable releases/commits and exact
hashes. The exact Tatoeba snapshot is preserved in-tree because its official URL rotates, and
the complete emoji/lexicon/context rebuild fails closed unless all inputs and outputs match.
Finger-up decoding runs away from the IME thread. Completed swipes and immediately following
keys, cursor gestures, panel requests, or second swipes are applied in release order, while
field and gesture-setting invalidation cancels the sequence. A live preview still in native
inference can no longer freeze key rendering while the final decode waits for it.
The starting key no longer remains visually pressed throughout a swipe. The trail has a clearer
fingertip head, fades briefly after lift, starts previews only after meaningful travel, and
identical preview candidates no longer redraw the suggestion strip.
Verification
Full JVM suites for all five modules pass, together with module lint, the minified release build,
the strict release-APK verifier, release-script contracts, and CycloneDX schema validation.
Packaged runtime instrumentation passes on API 26: Engine 2/2 and ASR 5/5, including the
bundled models and a regression for digitally silent PCM input.
The deterministic fallback was measured on 20,000 donated real-finger QWERTY traces as a
diagnostic. Its 50.23% top-1 result confirms it must remain failover rather than broadly
overriding neural output.
Final tagged packaged-runtime instrumentation passes on API 37: Engine 2/2 and ASR 5/5,
including the bundled models. The hardened emulator runner resolves the earlier preview-image
graphics failure. The reported contraction trace has not yet been replayed through the packaged
neural model, and physical-phone validation remains pending.