Releases: sspanak/tt9
v56.0
Small bug fixes and optimizations
v56.0 fixes several non-critical bugs, introduces optimizations for faster startup and reduced typing lag on low-end devices, and adds a couple of user-requested features.
Note: Due to technical problems, this version will not be published on F-droid. It is unclear whether releasing there will be possible in the near future.
What's Changed
- Languages
- Virtual Numpad: Asian Space now replaces the Shift key instead of the Add Word key
- Bugs
- Fixed the crashing caused by background tasks
- Fixed the special character suggestions not being displayed on every other 0-key press, when the preferred char is Space (#848)
- Fixed the light color theme number key ripple color on Android 12 and higher
- Fixed the Recalculate Bottom Padding setting appearing on Android 14 and earlier, when it shouldn't
- Fixed a crash on the Punctuation Order screen
- Prevented crashing when AppHacks is misused with a NULL text field or input type
- Fixed the selection of emoji by tapping the suggestion list, which did not work in WhatsApp (#884)
- Fixed the keyboard covering long forms in the Settings, for example, on the Punctuation Order screen, as well as other scrolling issues (#884)
- Fixed quick-scrolling on the Punctuation screen, sometimes causing text to 'jump' between the form inputs (#871
- Fixed the issue where holding number keys to activate a command was not working
- Prevented unnecessary text analysis while typing a word
- Prevented hang-ups while typing, caused by the foreground application being too slow or being frozen itself.
- Features
- Removed
- Removed the possibility of adding emojis to the custom word dictionary
- Technical
- Code cleanup and improvements
- Small optimizations for faster startup
- Enhanced transcribed language scripts (#722)
- Increased the maximum word frequency from 255 to 9999
Full Changelog: v55.0...v56.0
v55.0
Critical Bugs
- Fixed the β± key not working (a regression from v54.0)
- Fixed not possible to type words such as "peut-Γͺtre", "bien-Γͺtre", etc, in French
- Fixed inaccuracies when calculating the MainView size that caused unnecessary blank space below the keys
- Fixed a misspelled menu item in French
- When reordering the punctuation and the special characters, it is now possible to add any Unicode character, including emojis.
Full Changelog: v54.0...v55.0
Note: Due to technical problems, this version will not be published on F-droid.
v54.0
Annoying Bugs Fixed
This version addresses several annoying bugs, including issues with adding words, voice input failures when multiple languages are enabled, and problems with typing names like "O'Donnell" in English, among others.
Note: Due to technical problems, this version will not be published on F-droid.
What's Changed
- Languages
- English
- Removed some words with apostrophes that could make typing names like "O'Donnell" difficult;
- Added "Manowar"
- French
- Added missing number words,
- Corrected the text case of 'ans'
- Added 'Dumas'
- English
- Features
- On the screen for deleting added words, the language name is displayed next to each word, for clarity.
- Bugs
- Fixed voice input not working on some devices with Android 12 or higher.
- Fixed adding words not working correctly with Thai and Indic languages. (#864)
- Fixed typing after filtering, when |...+a|...+b|...+c| suggestions are displayed, sometimes producing a word using the second or the third letter, when the first letter is pre-selected and the user has not manually selected another one. (#854)
- Fixed the suggestion list becoming cropped when the font size is bigger than 100% (#862)
- Fixed custom word deletion not working when the same word has been added to more than one language.
- Improved special character detection when importing words from a file. It is now possible to import words that contain letters on the 1-key.
- Fixed Backspace breaking complex graphemes (e.g. emojis, Indic letters, etc), instead of deleting them
- Fixed the Auto-Space function, which was incorrectly adding spaces after emojis
- Fixed the virtual spacebar key sometimes incorrectly appearing long when it should be short or vice versa
- When a function panel is open or when voice input is active, Star key now always navigates back, and Pound does nothing, to prevent accidental activation of hotkey functions, which may lead to potential confusion
- Fixed the virtual 0-key label becoming either oversized or tiny sometimes.
- Fixed dictionary loading getting stuck at 88% when restoring a large number of custom words
- Fixed the custom word importing status not updating
- Fixed a rare case of crashing on some devices when saving word pairs
- Technical
- Upgraded com.android.application 8.12.1 -> 8.13.0
- Code cleanup and optimization
- Readme updates
Full Changelog: v53.0...v54.0
v53.0
Serious Bug Fixes
v53.0 fixes several severe bugs, brings usability enhancements, and language improvements, including removing more English slurs, adding missing two-letter Vietnamese words, and adding new Japanese words for counting time, and adding new Italian words.
Note: Due to technical problems, this version will not be published on F-droid.
What's Changed
- Languages
- Vietnamese: added missing one-letter words (#844)
- English: removed more swear words (#834), and added new brand and product names
- Japanese: added day-period words: δΈζ₯ι, δΊζ₯ι, ..., and week-period words: δΈι±ι, δΈι±ι, ...
- Italian: new proper names, brand names and other words (#805)
- Bugs
- fixed: words popping out of nowhere when typing in the Reddit app search field
- fixed: not possible to select and type emojis in WhatsApp (#850)
- fixed: pressing '1' for an emoji right after a word, producing multiple emojis, instead of cycling the emoji groups
- fixed: switching the language when there is selected text, causing deletion of the selected text (#848)
- fixed: the Edit Text hotkey only shows but does not hide the Text Editing Palette (#848)
- fixed: the hotkey labels not being updated correctly when reassigning keys (#848)
- fixed: moving the cursor back unexpectedly erases newlines and spaces in the middle of the text (#848)
- prevented unnecessary resource-intensive text analysis and IPC when moving the cursor back
- Features
- all hotkeys now work when the Command Palette is shown (#848)
- improved the grouping and the wording in the Settings, on Appearance, and Keypad screens
- when the virtual keys are disabled, all related settings are now hidden
- Technical and documentation
- renamed the 'Edit Text' hotkey to 'Clipboard Tools'
- fixed spelling and factual mistakes in the Help
- code restructuring to add support for separate source sets from different repos
- no more error messages about failing database migrations on startup
- the Shift function now uses no memory when the UI is hidden (#853)
- now using a single thread for all optimization tasks that run in the background, instead of one thread for each task (#853)
- upgraded com.android.application 8.11.1 -> 8.12.1
Full Changelog: v52.0...v53.0
v52.0
Stabilization and Language Improvements
This release is mostly focused on fixing bugs. Besides that, it brings official support for Android 16, and small dictionary improvements.
What's Changed
- Languages
- Bulgarian: added new words
- English: removed swear words
- Italian: corrected a spelling mistake
- Fixed the issue where it was not possible to type some words with apostrophes in Dutch, Italian, Portuguese, and Romanian (#805) (thanks to @Crash9999 for reporting)
- Bugs
- fixed custom words not being erased when they are added to the factory dictionary, but the text case is different (#805)
- fixed unexpected text appearing when backspace is pressed after pasting something while typing a word (#839)
- fixed not possible to use Shift when the composing text contains special characters and the status icons are disabled (#805)
- fixed not possible to type custom-added emoji, because them being added with the wrong digit sequence
- fixed double letters when erasing legacy Mac newline following a word (#839) (thanks to @maverick74 for reporting) and testing
- Technical (added support for Android 16)
- Readme: added more detailed instructions on how to set up and troubleshoot voice input
- Upgraded com.android.application 8.10.1 -> 8.11.1
- Changed the compileSdk and targetSdk 35 -> 36
- Significantly simplified the back navigation logic in the Settings
- When logging is set to 'debug' level, the custom words on the Delete Words screen are displayed together with some extra info
Full Changelog: v51.0...v52.0
v51.0
Massive Language Updates
v51.0 adds two new languages: Serbian and Slovak. It also adds new words to Bulgarian, Dutch, English, French, German, Indonesian Japanese, Polish, and Turkish, and it fixes misspellings in Italian. Apart from that, it enhances the behavior of the Shift key and resolves several minor bugs.
Note: Due to technical problems, this version will not be published on F-droid.
What's Changed
- Languages
- Bulgarian: added 41 new words, and removed 4 nonsense words
- Dutch: added 28k new words
- English: added 'Termux' and 'passthrough'
- French: added 100k new words
- German: added 1.28 million new words
- Indonesian: added 18k new words
- Italian (made possible thanks to @Crash9999)
- fixed missing accents of many past tense verbs
- fixed other misspelled words
- added small town names and manually collected words
- added 9000 proper names
- added new contractions
- Japanese: added a couple of new words, new counters, and missing conjugations for: ζ₯γ, γ , γγ, δΈγγ
- Polish: added 1 million new words
- Turkish: added 590k new words
- Added Serbian (Cyrillic)
- Added Slovak
- Features
- added options to show/hide the Newline and the Tab characters in the 0-key char list
- dictionary loading status is now displayed on the Status Bar
- disabled word recomposition when the cursor is in the middle of a word
- replaced on-screen RF3 scissors icon with a material scissors icon
- do not ask to show notifications in our own text fields
- Bugs
- added a hack for Facebook Messenger to prevent keyboard hiding when trying to reply to a message and the Main View is set to 'Function Keys'
- fixed not possible to type the word 'Tab' with a capital letter
- fixed a NullPointerException when loading a dictionary from an update notification
- fixed a rare NullPointerException when changing the text case right when the suggestion list becomes empty
- fixed double letters when recomposing a word that had exactly two new lines after it
- fixed the Shift key and the status icons sometimes indicating an incorrect text case (thanks to @maverick74 for testing and for his patience)
- fixed not possible to change the text case of words that start with apostrophes, like: 's, 're, 'll
- fixed the UI appearing in 3rd-party calculators, when it should remain invisible
- fixed notification permissions being requested when they are already granted
- attempted to fix the crashes caused by language lists and dropdowns
- 10th attempt to fix the privileged options problem: InputConnection is no longer cached within the app (failed immediately)
- 11th attempt to fix the Priviliged options crash: constant heartbeat checks while we are visible
- Technical
- upgraded com.android.application 8.10.0 -> 8.10.1
- upgraded gradle 8.11.1 -> 8.14-2
- reverted the lazy loading hack for initializing Voice Input because it causes ANRs on multiple devices
Full Changelog: v50.0...v51.0
v50.0
v50.0 is a big upgrade bringing a ton of new features and bugfixes. Here are the highlights:
- Undo/redo functions
- Ability to reorder and hide the on-screen function keys
- Improved possibilities for reordering and grouping the special characters on 0- and 1-key.
- A language selection popup
- Status icons to indicate the current typing mode and language.
- The on-screen Left F4 key now also indicates the language.
- Fixed the compatibility issue with MS Teams on Android 11 or higher
- New words for English, French, and Bulgarian and fixes for Japanese
... and many more
NOTE: If you have downloaded v50.0 before 5 June, please download and install it again. The initial APKs from 2 June had too many problems and were replaced with new ones.
NOTE 2: Upgrading to v50.0 will reset your punctuation order preferences to defaults.
Thanks so much to @maverick74 and @Crash9999 for the ideas, for testing and everything! This release would not have been possible without you.
What's Changed
- Languages.
- A couple of new words for English, French, Bulgarian and other languages.
- Extended support for typing with all keys, including 0 and 1, which will make it possible to include methods like Bopomofo in the future.
- Fixed Hiragana and Katakana being incorrectly enabled in numeric fields
- Fixed some Katakana words not being displayed correctly when filtering is on
- Fixed 1+X combinations typing random Katakana when in Kanji mode
- Features
- Undo/Redo operations
- It is now possible to reorder or hide the on-screen Fn keys, even the entire columns on the left or right.
- Added status icons for indicating the current input mode and language.
- The on-screen Left F4 key now indicates the language too.
- Added a language selection popup. It is useful for directly selecting the desired language when multiple languages are enabled.
- Improved ability for reordering and grouping the special characters on the 1-key and the 0-key. This also improves the access to the currency symbols.
- Shift is Shift, it no longer serves for hacks to type special characters
- Virtual Shift is now disabled for languages without uppercase
- Enabled word re-composing in Japanese and Chinese (not always possible, but better than nothing)
- Added an option to adjust the suggestion text size
- Improved automatic space rules
- Consistent handling and typing of the language-specific Space character (for example, Asian full-width space is used when typing in Chinese)
- Smooth language change is now possible to/from East Asian languages too
- New icons for virtual Shift, Filter and Voice keys
- If a hardware Space key is available it will be assigned to the Space hotkey on the initial startup
- Initial dictionary load is now immediately retried on failure instead of waiting 20 minutes
- now asking for notification permission on the very first start
- Bugs
- Fixed the compatibility issue with MS Teams on Android 11 or higher, which prevented starting up (actually, hacked it)
- Fixed crashing when scrolling the suggestions in ABC mode (caused by modifying the RecyclerView from different threads)
- Fixed auto-space being incorrectly added after a newline and not added before a newline
- Fixed the quick delete feature not to erase whole paragraphs of text in languages without spaces
- Fixed the word pair predictions not working when one of the words contains an apostrophe. The fix will result in significantly more accurate suggestions in Ukrainian and Hebrew, and slightly better in French, Italian, and other languages that use apostrophes extensively.
- Fixed special characters missing in email fields when an East Asian language is selected
- Fixed fast-delete deleting too much text in languages without spaces, when there is composing text
- Fixed confusing Backspace behavior when deleting selected or composed text
- Fixed Clear Filter hotkey not accepting the current suggestion in ABC mode
- Consistent language codes for ABC mode
- Fixed Toast messages not appearing when being displayed from an async context
- Fixed ClassNotFoundException: Didn't find class "android.speech.RecognitionSupportCallback" on Sonim XP3800 and possibly other old devices
- Fixed typing emojis not possible right after typing a space in Japanese
- Fixed the dictionary loading progress notification not disappearing or showing -0.0 seconds, when loading is cancelled
- Fixed pressing Backspace when the Text Editing Palette is shown, causing the current clipboard preview to disappear
- Technical
- Added the Privacy Policy document to the app
- Non-YML files in the definitions folder are now ignored during build time
- Major code cleanup
- Upgraded com.android.application 8.9.1 -> 8.10.0
- Enforced Unix-style newlines in .editorconfig
- Removed the specific color scheme for Android 15 or higher, as it seems to be unnecessary
- Prevented an unnecessary call to getTextBeforeCursor() when Backspace is pressed
- During build time the dictionary freshness is determined using 'sha256sum' shell command instead of Groovy's digest('SHA-256') to hopefully prevent build crashing on F-droid
- Fixed memory leaks due to several async operation listeners assigned to static objects, not being cleared after the end of the operation
- 9th attempt to fix the privileged options problem: removed onDestroy debugging code and explicitly destroying LanguageCollection and DataStore on shutdown
Full Changelog: v49.0...v50.0
Contributors
Thanks so much to @maverick74 and @Crash9999 for the ideas, for testing and everything! This release would not have been possible without you.
v49.0
Chinese and Japanese
This release finally adds the long-awaited East Asian input methods: Chinese (Pinyin to Simplified) and Japanese (Romaji to Hiragana, Katakana, or Kanji). It fixes several bugs and crashes and optimizes the Suggestion Bar to display the word list faster for even lower typing latency.
What's Changed
- Languages
- Added Simplified Chinese (Pinyin method). Thanks to @Liquid-Aristocracy, @Vkiki2233, @jc-e-lang, and everyone else who taught me how Chinese works, provided examples, helped with compiling the word list and finally tested the language. I couldn't have done it myself.
- Added Japanese (Romaji method), including a regular predictive mode, as well as Hiragana and Katakana modes which allow typing single Kana one by one.
- Removed the hard limit of 20 displayed words and now display all exact digit sequence matches + fuzzy matches when the total < 20. This enables missing words in Hindi, Gujarati, and possibly others
- Bugs
- Fixed double-click resizing not working when drag resizing is disabled
- Prevented a crash when trying to display a voice input error when the MainView is hidden
- Fixed several more NullPointerExceptions related to the MainView
- Localized special characters are no longer displayed in 123 mode to ensure compatibility with all number fields in all apps and websites
- Features
- Added an option to disable the Predictive Mode
- Suggestion Bar optimizations
- Disabled the suggestion scrolling animation when there are too many words, for better performance
- Too many suggestions will now be hidden behind an ellipsis (...) suggestion until the user clicks on it.
- Fixed suggestion-list flashing when typing fast or holding backspace (rendering is now debounced)
- Added an option to disable the suggestion-list scrolling animations
- Added a better visible error message and text field highlighting when saving the punctuation order fails
- Improved the wording of the Re-Composition setting description
- Nicer number format on the language selection screen
- Technical
textField.getWordBeforeCursor()is no longer called when recomposing is not supported or on every keypress (when searching for word pairs)- Disabled all automatic assistance in our text fields and prevented some unnecessary text operations in input fields where automatic aid is impossible.
- upgraded com.android.application 8.9.0 -> 8.9.1
Full Changelog: https://github.com/sspanak/tt9/compare/v48.0..v49.0
v48.0
Stabilization
This release fixes the problems with using Voice Input on Android 12 (and higher), the occasional crashing when changing the text case, and other bugs.
What's Changed
- Languages
- Fixed ZWJ and ZWNJ sometimes being displayed incorrectly
- Fixed hold-to-type-number not working in Korean after a restart
- New Features
- Drag resizing can now be disabled from the Settings (#763)
- Bugs
- Voice input on Android 12+ is much more reliable. TT9 will now choose dynamically between offline and online modes and download the necessary files automatically instead of just failing (#761)
- Fixed a crash when changing the text case while typing an unknown word
- Technical
- Upgraded com.android.application 8.8.2 -> 8.9.0
- Upgraded Gradle 8.10.2 -> 8.11.1
- Simplified the version generation during build time and got rid of the deprecated
exec{} - Switched the donation platform from buymeacoffee.com to paypal.com
- Improved error logs
Full Changelog: v47.0...v48.0
v47.0
Full Hardware Key Support + Language Updates
This release adds support for (almost) all hardware keys on keyboards, keypads, and remote controls, allowing complete freedom when configuring the hotkeys. It improves Vietnamese and also adds Slovenian, Irish, and Farsi. Finally, it fixes several bugs, most notably the unnecessary blank space on Samsung S25.
What's Changed
- Languages
- Vietnamese: removed the accented letters and added the accents as separate suggestions which should result in faster typing and a more Nokia-like experience (#746, #585). Thanks to @NTT-2k5 and @rice-lover for the suggestions.
- Added Slovenian language (#653). Thanks to @mfin for providing a word list.
- Added Irish (#751)
- Adde Persian (#747). Thanks to @AmirShaeiri
- Arabic letters on virtual keys are now always displayed isolated for better readability
- Fixed ZWJ, ZWNJ being displayed incorrectly when trying to combine them with a letter
- Combining characters are now displayed with an empty-circle base for better readability
- Fixed combining diacritics not available as suggestions when filtering is on
- New Features
- Added full support for all keys on all input devices, such as keyboards, numeric keypads, remote controls, etc.
- Added a compatibility option that makes it possible to type in apps like Deezer and Smouldering Durtles (#391, #714)
- the Hotkeys screen is now fully translated to all languages (hopefully, I got everything correctly)
- Added a more clear error message when the language for voice input is missing
- Bugs
- fixed a rare SecurityException when trying to display dictionary loading progress on the lock screen of some devices
- When shutting down, the MainView is now destroyed last to prevent crashes
- Fixed the last typed word coming back after sending an SMS
- Fixed unnecessary blank space below the keyboard on Samsung S25 AKA more edge-to-edge problems (#755)
- Technical
- Slightly faster device hacks by detecting the device make and model only once
- upgraded com.android.application 8.8.1 -> 8.8.2
Full Changelog: v46.0...v47.0