All notable changes to LeanTypeDual are documented here.
The format is based on Keep a Changelog, and this project uses Semantic Versioning.
Lineage & provenance. LeanTypeDual is a fork of LeanBitLab/LeanType (the AI layer), which is itself a fork of Helium314/HeliBoard (the keyboard engine), based on AOSP/OpenBoard. Rather than re-list every inherited HeliBoard/LeanType version, this changelog records LeanTypeDual's own releases. Points where upstream code was merged in are noted as
Upstreammarkers; everything else is original to this fork.
- Source-key action targets — slide from the Enter/action key into a temporary action target
panel for existing actions like
JOIN_NEXT,FORCE_NEXT_SPACE, andUNDO_WORD. (#37)
- Erratic capitalization in two-thumb grace mode. After the grace timer auto-committed a word, the shift/auto-caps state wasn't refreshed, so the next word's capitalization came out wrong (dropped sentence caps, or mid-word capitals). (#14)
- Tapped words no longer auto-finish by default in two-thumb grace mode — the new "Only auto-finish swiped words" option defaults on, so a word you tap out stays open until you press space or pick a suggestion (fixes tapped shortcuts/corrections firing early). Only swiped words auto-commit on a pause. (#14)
- Reworded the two easily-confused spacing toggles: "Only auto-space after swipes" (the trailing space) vs "Only auto-finish swiped words" (whether the word commits at all). (#14)
- Experimental: defer grace-mode space (
PREF_SPACING_DEFER_GRACE_SPACE, default off) — routes the two-thumb grace auto-commit space through the same deferred mechanism as the default swipe path. (#23)
- HCESAR keyboard layout for Latin-script subtypes. (#74)
- Touchpad edge-scroll — holding a finger near the touchpad edge auto-repeats cursor movement with acceleration. (#74)
- Toolbar: swipe down to hide the keyboard. (#74)
- Toolbar: show only the toolbar when a hardware keyboard is connected. (#74)
- Undo-word toolbar key — reverts the last committed word back to its suggestion alternatives. (#35)
- Pointer-trace recorder (opt-in) — captures gesture traces + keyboard geometry to JSON for debugging/recognition work. (#20)
- Graduated trust for newly-learned words — a just-learned word is held below real-dictionary suggestions until you've used it a few times, reducing premature autocorrect to half-typed words. (#39)
- Two-thumb down-swipe shortcut popup now tiles its icons proportionally across the usable row. (#36)
- README status badges switched to live shields.io badges (auto-updating; no CI). (#76)
- Backspace bookkeeping consolidated into a single, unit-tested
BackspaceUnitStack(internal refactor, behaviour-preserving). (#31)
- Native C++ engine tests now run in CI. A standalone host build (
app/src/main/jni/CMakeLists.txt) compiles and runs the dictionary/suggest/geometry gtest suite on every change to the native engine — coverage the JVM/Robolectric tests cannot reach. (#78) - Added a golden-master backspace regression corpus to the JVM suite, and the unit-test gate is now blocking on every PR. (#21, #12)
- Flag learned/typed words that aren't in a dictionary; long-press to Add or Block them, plus a new Blocklist settings screen.
- Two-thumb: the down-swipe shortcut popup now aligns to the letter row (swiping down on a key selects the icon above it).
- Two-thumb ghost-merge: a deleted or cancelled gesture trail no longer fuses into the next swipe.
- Enable or disable individual dictionaries (built-in and custom) in settings.
- Toolbar key customization toggles not persisting.
- Emoji-search keyboard not splitting in landscape when split keyboard is enabled.
- Double-tap touchpad gesture to delete selected words.
- Clipboard screenshot compression toggle; duplicate screenshots prevented.
- Text Expander: backspace-to-revert, and
%cursor%/%greeting%/%tomorrow%/ list placeholders (with optional custom count, e.g.%list_5%).
- Gboard dictionary import performance; settings/editor performance, stability and memory.
- Missing words on import; corrupted imports (ZIP signatures pre-verified, streams closed).
- Custom "Clear clipboard" toolbar key icon styles (bin, sweep, slanted, legacy).
- Custom drawable picker highlights in the Customize Icons grid; instant icon updates without restart; quick clipboard-item clear on long-press.
- Swipe-to-delete clipboard crash; pinned-section styling.
- Double-space-period countdown cancellation on Korean & combiner layouts.
- Text Expander with placeholders (
%clipboard%,%day%,%time12%, …) and a guide. - Customizable tags for Custom AI Keys (themed capsules).
- Option to fold pinned clipboard items by default.
- Redesigned Sponsor dialog.
- F-Droid reproducible-build packaging discrepancy.
- Large clipboard-text truncation (native paste); clipboard suggestion in split-toolbar mode.
- Fine-grained vibration strength (amplitude) control for keypress haptics.
- "Clear All" + confirmation in the personal-dictionary settings screen.
Resources$NotFoundExceptioncrash from obsolete custom-icon overrides.- Spacebar cursor-move and delete swipe in the emoji-search input field.
- Center-crop scaling for custom keyboard background images (no more squishing).
Upstream — Forked from LeanBitLab/LeanType (AI proofreading/translation, floating keyboard,
custom AI keys) on top of HeliBoard 3.8.x (the keyboard engine: dictionaries, layouts,
multilingual typing, glide typing, clipboard history, themes). LeanTypeDual ships as a distinct app
(com.asafmah.leantypedual) and adds, on top of that base, two-thumb (dual-thumb) typing and
the per-release changes above. See the README for the full feature set.