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
We are committed to making our apps as powerful and polished as possible. As an entirely community-funded project, we rely on your support to keep going, please consider becoming a sponsor. A huge thank you to all our current supporters!
🚀 What's New
👆 Gesture & Swipe Engine (Pure-Java)
OutOfMemoryError Fixes: Fixed OOM crashes during gesture index construction. Dictionary words are now streamed directly to avoid massive intermediate maps, and gesture path coordinates are packed into primitive variables to drastically reduce object allocations and GC pressure.
Blacklist/Blocked Words Isolation: Prevented blocked words from leaking into user history, next-word suggestions cache, and gesture recognition indexes. Settings changes/removals now trigger immediate cache and gesture index reloads.
Cursor Selection Fix: Fixed a bug where moving the cursor under automatic shift mode (such as auto-capitalization at the start of a sentence) would cause text to be unintentionally selected.
📝 Text Expander & Placeholders
Sequential Placeholders: Added support for sequential template placeholders in text expander macros.
Synchronous Placeholder Deletion: Rewrote placeholder navigation/deletion to execute synchronously via deleteSurroundingText and setSelection to prevent IPC selection desync.
Data Backup: Added text expander data backup and restore capabilities, linking preference keys directly to the database backup category.
🎨 Keyboards & Custom Layouts
Dynamic Layout Slots: Added support for up to five dynamic custom secondary layouts (custom1 to custom5) with a direct deletion option in layout settings.
Layout Compatibility: Resolved issues involving blocked words, custom fonts, and the symbols number row.
🛠️ Suggestions & Settings
Long-Press Suggestion Deletion: Enabled long-press on suggestions in MoreSuggestionsView to directly delete/block suggestions. This dialog is wrapped in the platform dialog theme and resolves the BadTokenException by binding to the correct window token.
Auto-Correction Triggers: Added a new settings preference to configure whether auto-correction is triggered by the Spacebar, Punctuation, or both.
We are committed to making our apps as powerful and polished as possible. As an entirely community-funded project, we rely on your support to keep going, please consider becoming a sponsor. A huge thank you to all our current supporters!
🚀 What's New
📖 Dictionary & Typing Predictions
Next-Word Predictions Fallback: Personal dictionary and user history words are now automatically queried and suggested as next-word predictions before you start typing, resolving empty suggestion slots.
Same-Language Variant Fallback: Added layout fallback dictionary loading (e.g., English India en_IN can now automatically fallback to use downloaded en_US or en_GB main dictionaries if installed).
👆 Gesture & Swipe Engine (Pure-Java)
Gesture Match Optimization: Precomputed string caches and log-frequency calculations, removing GC allocation pressure and speeding up matching loops.
Fly-over Segment Matching: Implemented segment-distance checks to accurately match keys crossed during fast, straight gestures.
🛠️ Toolbar & Layout Settings
Toolbar Download Button Toggle: Added a new settings toggle to show/hide the dictionary download shortcut button directly in the toolbar.
Dictionary Dialog Polish: Cleaned up the dictionary download prompt by removing redundant raw download links.
We are committed to making our apps as powerful and polished as possible. As an entirely community-funded project, we rely on your support to keep going, please consider becoming a sponsor. A huge thank you to all our current supporters!
🚀 What's New
👆 Gesture & Swipe Engine
Accuracy Fix (Hitbox Center): Updated mapping logic to use key hitbox center coordinates rather than visual bounds, resolving rightward touch offsets (misrecognitions like "just" registering as "jest").
Performance Optimization: Added dynamic threshold early-exit bounds to the L2 gesture matching loop, significantly reducing CPU usage by skipping poor candidates.
🛠️ Visual & Keyboard Settings
Accent-colored direct deletion: Added a direct delete button (trash bin icon) in the downloadable dictionary lists to allow quick deletion of other layout dictionaries.
Separate Experimental Dictionaries: Fixed a naming/path collision where installing a main dictionary caused the experimental version to show as installed.
Missing Dictionary Toolbar Redirect: Redirects missing dictionary button directly to settings rather than showing a placeholder.
Reset Prediction Context: Reset word prediction context to the beginning of the sentence on new lines.
Backspace Emoji Grouping: Prevented non-emoji symbols (e.g. mathematical operators, box drawings) from being grouped and deleted together under backspace.
Custom Translation Target: Added support for custom translation target language options.
📦 Build & Package Size
Exclude English Assets: Excluded all prepackaged English dictionary assets from the standard flavor APK builds to optimize package size.
We are committed to making our apps as powerful and polished as possible. As an entirely community-funded project, we rely on your support to keep going, please consider becoming a sponsor . A huge thank you to all our current supporters!
🚀 What's New
👆 Gesture & Swipe Engine
Pure-Java Fallback Engine (Experimental Alpha): Added an experimental, alpha-stage pure-Java fallback gesture typing engine (SwipeGestureEngine) so gesture typing works out of the box without requiring native libraries (ported from HeliBoard #2351).
Engine Selection Toggle: Added settings to toggle between native and fallback gesture typing, dynamically hiding unnecessary settings like native library loader.
Self-Learning: Enabled swipe gesture self-learning by indexing user history and personal dictionaries.
Index Building Optimizations: Sped up index building, pruned low-frequency entries, cached charToPos, and optimized memory allocations to avoid ANRs.
🛠️ Visual & Keyboard Settings
Space-Strip Punctuation Fix: Restored manual space handling! Spaces are no longer stripped before punctuation marks if they were entered manually (only auto-inserted spaces are stripped).
add toggle to disable long-press hint dots on toolbar keys by @mvanhorn in #224
Blocked Words Screen: Display total count of blocked words in the dictionary settings title.
Text Edit persistence: Added a toggle to persist text edit mode.
Setup Wizard Enhancements: Added language layout selection and gesture typing engine selection options to the welcome startup setup wizard. Full Changelog: v3.9.0...v3.9.1
We are committed to making our apps as powerful and polished as possible. As an entirely community-funded project, we rely on your support to keep going, please consider becoming a sponsor or supporting us on Ko-fi. A huge thank you to all our current supporters!
🚀 What's New
🖱️ Text Editing Layout & Navigation
JSON-Parsed Edit Layout: Transitioned text editing mode to a parsed JSON structure with a standard 5x4 grid.
Active Key Styling: Highlighted select mode, ABC, and backspace key states dynamically with custom colors, dark contrast shading, and text-aware styling.
Precise Controls: Added dedicated navigation, selection modifiers on word/page keys, and a dedicated undo action on the edit toolbar.
Custom Max Tokens & Colors: Added settings to configure custom max tokens and custom colors for editing layouts.
🎨 Visual & Theme Enhancements
Minimalist long-press indicators: Replaced blocky triangle indicators with clean dot icons scaling proportionally to active theme key hints.
Balanced toolbar alignment: Standardized uniform key padding and corrected dual-filtering rendering bugs for active toolbar icons.
Contrast & Legibility: Fixed contrast issues on other themes and key popups using WCAG contrast ratio legibility rules.
📋 Clipboard & Handwriting Mode
Robust Clipboard dismissed states: Fixed a bug where duplicate clipboard change events erroneously restored the dismissed suggestion strip view.
Handwriting Close gestures: Exit handwriting mode instantly via a long press on the bottom-row clear key or a tap on the top-row close button.
📚 Bug Fixes & General Refinement
Dictionary List & Toggles: Fixed dictionary list toggle state handling and rendering bugs.
Audited Cleanups: Optimized paint allocation overhead on critical rendering loops, removed obsolete SpacedTokens, and polished settings navigation.
We are committed to making our apps as powerful and polished as possible. As an entirely community-funded project, we rely on your support to keep going, please consider becoming a sponsor. A huge thank you to all our current supporters!
🚀 What's New
🖱️ Touchpad & Text Editing Mode
Gboard-style Text Editing Mode: Added a dedicated cursor navigation and editing overlay. Activated from the toolbar, it offers precise DPAD navigation, custom selection mode (Shift + arrows), clipboard actions (Select All, Copy, Cut, Paste), and editing utilities (Backspace, Forward Delete).
Dedicated Touchpad settings section: Extracted Touchpad configuration from Advanced Gestures into its own dedicated settings category page.
Full-screen Touchpad: Added a preference to automatically hide the suggestion strip and toolbar when Touchpad mode is active, maximizing the touchpad surface area.
Touchpad Close Button: Added an overlay close button at the bottom-right corner of the touchpad, styled dynamically according to the active keyboard theme, for quick exit.
📋 Clipboard & Screenshot Suggestions
Persistent Suggestions Dismissal: The keyboard now remembers if you dismissed a clipboard text or screenshot suggestion, preventing it from showing up again even across keyboard restarts. The dismissed state automatically resets when a new item is copied.
Reduced Suggestion Timeouts: Reduced clipboard and screenshot suggestion timeouts to 1 minute to keep suggestions fresh.
🔤 Text Expander Improvements
Shortcut Prefix Fix: Resolved a prefix matching bug where custom prefixes (e.g. * for shortcut g) were prepended twice (matching **g instead of *g), restoring instant and spacebar text expansion.
Improved Dialog Layout: Stacked the Prefix and Shortcut input fields vertically inside the Add/Edit Shortcut dialog for better legibility.
📚 Dictionary & Settings Refinement
Polished Dictionary Settings UI: Re-designed the layout using modern Material 3 Card components, colorful badges/chips for dictionary types, and uniform utility icon sizes.
Smart Language Fallback: Regional variants (e.g., ml-IN) will now fall back to the general parent language dictionary (e.g., ml) if country-specific files are missing, ensuring seamless next-word predictions.
Unified Dictionary Toggling: Grouped all dictionary subtypes (including downloaded emoji dictionaries) under a single master toggle per language card, and removed redundant buttons.
Aesthetic Filtering: Hidden non-enabled regional variant cards from the settings menu to reduce clutter, while keeping them configurable inside the active language dialog.
Download Path Collision Fix: Extracted specific locales from download URLs to prevent file collision and duplicate settings cards.
⚙️ Engine & Compatibility
Build Flavor Split: Split standard build into FOSS-compliant "standard" (no ML Kit, F-Droid ready) and "standardfull" (includes ML Kit/Handwriting).
ABI & Theme Fixes: Re-added armeabi-v7a support to ABI filters, fixed popup key contrast-aware colors on AMOLED black theme, and improved split mode suggestions.
We are committed to making our apps as powerful and polished as possible. As an entirely community-funded project, we rely on your support to keep going, please consider becoming a sponsor. A huge thank you to all our current supporters!
🚀 What's New
Exclude non-en-US dictionaries from standard flavor assets to reduce app size
Add dynamic dictionary downloader and uninstaller for standard flavor
Add download button on keyboard toolbar when layout dictionary is missing
Allow deleting downloaded handwriting models in settings
Tune double-tap shift timing and improve stability of handwriting gestures
Restore close/search icons on clipboard toolbar
Fix settings displaying disabled additional subtypes in dictionaries list
Keep number row digits when keyboard is shifted to uppercase
Fix WindowManager$BadTokenException crash on IME overlay dialogs
Fix recently used emojis getting stuck on split toolbar
Close emoji search automatically when dictionary download completes
Show emoji dictionary download button on split toolbar when missing
Show handwriting plugin download button on canvas when missing
fix: number row keeps digits when keyboard is shifted to uppercase by @mvanhorn in #199 Full Changelog: v3.8.7...v3.8.8
We are committed to making our apps as powerful and polished as possible. As an entirely community-funded project, we rely on your support to keep going, please consider becoming a sponsor. A huge thank you to all our current supporters!
We are committed to making our apps as powerful and polished as possible. As an entirely community-funded project, we rely on your support to keep going, please consider becoming a sponsor. A huge thank you to all our current supporters!
🚀 What's New
✍️ Handwriting Input (Plugin-based, standard only)
Dynamic Handwriting Support: Support handwriting input using an external plugin APK.
Background Model Verification: Moved handwriting model readiness checks to a background thread to prevent main-thread blocking exceptions.
Handwriting Canvas Overlay: Added a shortcut overlay on the handwriting canvas when the plugin is missing.
Theming & Layout Adjustments: Added action keys to the bottom row, and updated the toolbar icon color to white.
Safety & Cache Cleaning: Automatically clear the code cache directory on plugin import/removal, and added MD5 and size validation logging for loaded plugins.
🤖 Offline AI & llama.cpp Migration
llama.cpp Backend: Switched local/offline AI backend from ONNX Runtime to llama.cpp (GGUF).
Custom Settings: Added settings for custom sampling (temperature, top-p, etc.) and custom system prompts.
Improved Prompt Formatting & Stop Sequences: Refined prompt templates, output cleaning, and stop sequence handling for local translation and proofreading models.
Dynamic Translation Few-Shotting: Implemented target-language-specific few-shot examples for GGUF-based translation.
Performance Improvements: Optimized model load times and reduced proofreading/suggesting latency.
Custom Key Token Fix: Fixed JNI and formatting issues causing token loss and hallucination in local models using offline custom keys.
🖱️ Touchpad & Gestures
Rich Touchpad Gestures: Reorganized gestures using 1-finger and 2-finger inputs:
Double-tap: Select word.
Two-finger drag: Move cursor word-by-word.
Two-finger tap: Insert space.
Two-finger double-tap: Copy or paste.
Two-finger triple-tap: Cut or select all.
Two-finger swipe up/down: Undo or redo actions.
Two-finger hold: Backspace word or selection.
Touchpad Mode Auto-Exit: Fixed touchpad mode not exiting when opening the clipboard or emoji views.
📝 Text Expander & Blacklist
Regex Expansion Support: Added powerful regex expansion support to the Text Expander.
Blocked Words Screen: Added a Blocked Words screen under settings with case-insensitive and regex-based blacklist checks. Prevents user dictionary suggestion leaks.
⚙️ Input, Layout & General Improvements
Auto-OTP Suggestion: Added feature to auto-read and suggest OTP from incoming SMS messages.
Selective Backup & Restore: Added option to selectively backup and restore settings and dictionaries.
Punctuation Auto-Spacing: Automatically strip unnecessary spaces before punctuation marks.
Persian Keyboard Tweaks: Changed the default long-press popup key on the letter "ا" in the Persian language layout.
Individual Dictionary Toggles: Added support to turn individual dictionaries on or off in the settings. This allows users to enable specialized or job-specific dictionaries (e.g., medical terminology, programming) while disabling others to optimize prediction/suggestion behavior.
🛠️ Toolbar & Customization
Toolbar Settings Persistence: Fixed an issue where clicking certain toolbar buttons or clearing text input would cause customized toolbar settings/key visibility toggles to reset or fail to persist.
⌨️ Layouts & Split Mode
Split Emoji Search Keyboard: Fixed a bug where the emoji search bottom-row alphabet keyboard did not display in split layout when split keyboard was enabled in landscape mode.
💖 Support Our Work
We are committed to making our apps as powerful and polished as possible. As an entirely community-funded project, we rely on your support to keep going—please consider becoming a sponsor. A huge thank you to all our current supporters!