Releases: KeyboardKit/KeyboardKit
8.7-rc1
KeyboardKit 8.7 improves the overall autocomplete behavior, adds a brand new settings concept and has many other features & fixes.
The local autocomplete provider now returns proper unknown statuses for the leading quotation suggestion. The standard action handler will automatically ask the autocomplete provider to learn applied unknown suggestions, if isAutoLearnEnabled
is true
.
This way to learn unknown suggestions will hopefully solve many frustrations involved with autocomplete, where the provider will behave better over time. Please provide feedback if these adjustments don't behave properly, or as expected.
Another change is that the KeyboardInputViewController
will check more configurations before performing autocomplete. The keyboard context's prefersAutocomplete
property will now also be used to make this decision.
Another change worth knowing, is that the Autocomplete.ToolbarItem
view no longer adds quotations around unknown suggestions. That responsibility has been moved to the autocomplete provider. The view will just show the titles it receives.
Furthermore, this version adds brand new persistent settings types, adds a KeyboardLocaleInfo
protocol that makes KeyboardLocale
and Locale
share many properties, and makes it possible to define which text to use when ending the current sentence.
🚨 Important Information
KeyboardStyleProvider
and Keyboard.ButtonStyle
now supports defining native Font
s, to give you more freedom when designing custom keyboards. This may result in breaking changes, if you use have overridden the style provider font or access the style font, but these should be easy to fix.
🆕 New Settings Types
AutocompleteSettings
is a new observable settings type.DictationSettings
is a new observable settings type.FeedbackSettings
is a new observable settings type.Keyboard.Settings
is a new settings type container.
✨ Features
Autocomplete.Suggestion
has new functions.Autocomplete.TextReplacementDictionary
is new type.AutocompleteContext
has a newautocorrectDictionary
value.AutocompleteContext
has a newisAutoLearnEnabled
property.AutocompleteContext
has a newpreferredSuggestionCount
property.AutocompleteProvider
has newignoreWords(_:)
and suggestion functions.KeyboardBehavior
and its implementations have a newendSentenceText
property.KeyboardAction.StandardProvider
can now automatically learn unknown suggestions.KeyboardContext
has a newsyncKeyboardType(with:)
to sync type with the proxy.KeyboardController
has a newendSentence(withText:)
function to end sentences.KeyboardInputViewController
has a newsettings
property for setting instances.KeyboardInputViewController
has a newviewWillSetupInitialKeyboardType
method.KeyboardLocaleInfo
is a new protocol that is shared by KeyboardLocale and Locale.KeyboardSettings
has new ways to register a custom store and settings key prefix.KeyboardStyleProvioder
has new ways to register a custom store and settings key prefix.UserDefaults
has a new.keyboardSettings
value that can be used to persist data.
💡 Adjustments
Autocomplete.ToolbarItem
no longer adds quotations to unknown suggestions.KeyboardContex
prefersAutocomplete
is now computed and no longer synced.KeyboardInputViewController
now checksKeyboardContext.prefersAutocomplete
.KeyboardLayout.iPhoneProvider
now handles more keyboard types in a better way.KeyboardSettings
have been converted from a namespace to being a part ofKeyboard
.KeyboardStyle.StandardProvider
now sets a smaller font size for the.text
action type.
👑 KeyboardKit Pro
Autocomplete.LocalProvider
will now return proper unknown state for suggestions.Dictation.ProKeyboardService
uses an action handler to open app and navigate back.Emoji.KeyboardMenu
will now trigger haptic feedback when tapping an emoji category.KeyboardHostApplication
now implementsIdentifiable
and has a newname
property.KeyboardHostApplication
now defines even more applications and has aurl
property.KeyboardHostApplicationProvider
is a new protocol that is implemented by some types.
🐛 Bug fixes
KeyboardAction.text
now properly renders its texts.KeyboardInputViewController
now sets the initial keyboard type when the native type is ready.KeyboardLayout.iPhoneProvider
no longer inserts two . keys for email keyboards with a go key.UITextDocumentProxy
now proceeds inserting a word replacement even if there's no current word.
🗑️ Deprecations
Keyboard.ReturnKeyType
prefersAutocomplete
has been deprecated, since the keyboard type should determine this.
8.6.0
This version adds support for 5 new locales, support for diacritics, and makes it easier to identify the host application. It also improves many of the localized system keyboards that are provided by Pro.
This version also changes the default autocomplete behavior, by making KeyboardInputViewController
only use the pre-cursor part of the current word for autocomplete, which is how the native keyboard behaves.
This version also makes KeyboardKit Pro no longer overwrite custom services that are set before registering a license. This means that you can now apply custom services at any time, without it being overwritten.
This version also reduces load times and memory usage in KeyboardKit Pro, by lazily resolving localized callout action providers and layout providers, and makes all supported locales use the iPad Pro layout.
✨ Features
Keyboard.Accent
is a new typealias for diacritics.Keyboard.Diacritic
is a new type that lets you model diacritics.KeyboardAction.accent
is a new typealias for the.diacritic
action.KeyboardAction.diacritic
is a new action that lets you insert diacritics.KeyboardController
has a newinsertDiacritic(_:)
function.KeyboardLayout
and itsItem
has much new functionality.KeyboardLocale
has new locale-based initializers and matching functions.UITextDocumentProxy
has a newinsertDiacritic(_:)
function.
💡 Adjustments
KeyboardInputViewController
autocompleteText
now uses the pre-cursor part of the current word, instead of the full word.KeyboardInputViewController
hostBundleId
has been renamed tohostApplicationBundleId
.
🌐 New Locales
- French (Canada) - fr_CA
- Norwegian (Nynorsk) - nn
- Spanish (Latin America) - es_419
- Spanish (Mexico) - es_MX
- Welsh - cy
👑 KeyboardKit Pro
-
Callouts.StandardActionProvider
now allocates license services lazily, on demand. -
Keyboard.ToggleToolbar
can now use an external toggle binding. -
Keyboard.ToggleToolbar
no longer relies on a standardAnyView
. -
Keyboard.ToggleToolbarToggle
is a new, customizable toolbar toggle. -
KeyboardContext
has a newhostApplication
property. -
KeyboardHostApplication
is a new enum with known applications. -
KeyboardInputViewController
has a newhostApplication
property. -
KeyboardInputViewController
setupPro
no longer creates a new callout provider. -
KeyboardInputViewController
setupPro
no longer creates a new layout provider. -
KeyboardLayout
has a newLatinLayoutType
enum. -
KeyboardLayout.ProProvider.Czech
now uses proper diacritic keys on iPhone & iPad. -
KeyboardLayout.StandardProvider
now allocates license services lazily, on demand. -
KeyboardLocale.georgian
no longer uses regular font weight in alphabetic keyboard. -
KeyboardLocale.norwegian
has adjusted callout actions. -
These locales now use iPad Pro layout:
- Arabic
- Belarusian
- Bulgarian
- Catalan
- Cherokee
- Hebrew
- Kazakh
- Kurdish Sorani
- Kurdish Sorani - Arabic
- Kurdish Sorani - PC
- Persian
-
These locales have improved iPad Pro layouts:
- French (Switzerland)
- Greek
- Inari Sami
- Macedonian
- Mongolian
-
These locales have improved iPhone layouts:
- Arabic
🐛 Bug fixes
KeyboardAction.tab
now uses an LTR/RTL supporting icon.KeyboardContext
now matcheskeyboardLocale
on language code as well, to work around system bug.
8.6-rc1
This version adds support for 5 new locales, support for diacritics, and makes it easier to identify the host application. It also improves many of the localized system keyboards that are provided by Pro.
This version also changes the default autocomplete behavior, by making KeyboardInputViewController
only use the pre-cursor part of the current word for autocomplete, which is how the native keyboard behaves.
This version also makes KeyboardKit Pro no longer overwrite custom services that are set before registering a license. This means that you can now apply custom services at any time, without it being overwritten.
This version also reduces load times and memory usage in KeyboardKit Pro, by lazily resolving localized callout action providers and layout providers, and makes all supported locales use the iPad Pro layout.
✨ Features
Keyboard.Accent
is a new typealias for diacritics.Keyboard.Diacritic
is a new type that lets you model diacritics.KeyboardAction.accent
is a new typealias for the.diacritic
action.KeyboardAction.diacritic
is a new action that lets you insert diacritics.KeyboardController
has a newinsertDiacritic(_:)
function.KeyboardLayout
and itsItem
has much new functionality.KeyboardLocale
has new locale-based initializers and matching functions.UITextDocumentProxy
has a newinsertDiacritic(_:)
function.
💡 Adjustments
KeyboardInputViewController
autocompleteText
now uses the pre-cursor part of the current word, instead of the full word.KeyboardInputViewController
hostBundleId
has been renamed tohostApplicationBundleId
.
🌐 New Locales
- French (Canada) - fr_CA
- Norwegian (Nynorsk) - nn
- Spanish (Latin America) - es_419
- Spanish (Mexico) - es_MX
- Welsh - cy
👑 KeyboardKit Pro
-
Callouts.StandardActionProvider
now allocates license services lazily, on demand. -
Keyboard.ToggleToolbar
can now use an external toggle binding. -
Keyboard.ToggleToolbar
no longer relies on a standardAnyView
. -
Keyboard.ToggleToolbarToggle
is a new, customizable toolbar toggle. -
KeyboardContext
has a newhostApplication
property. -
KeyboardHostApplication
is a new enum with known applications. -
KeyboardInputViewController
has a newhostApplication
property. -
KeyboardInputViewController
setupPro
no longer creates a new callout provider. -
KeyboardInputViewController
setupPro
no longer creates a new layout provider. -
KeyboardLayout
has a newLatinLayoutType
enum. -
KeyboardLayout.ProProvider.Czech
now uses proper diacritic keys on iPhone & iPad. -
KeyboardLayout.StandardProvider
now allocates license services lazily, on demand. -
KeyboardLocale.georgian
no longer uses regular font weight in alphabetic keyboard. -
KeyboardLocale.norwegian
has adjusted callout actions. -
These locales now use iPad Pro layout:
- Arabic
- Belarusian
- Bulgarian
- Catalan
- Cherokee
- Hebrew
- Kazakh
- Kurdish Sorani
- Kurdish Sorani - Arabic
- Kurdish Sorani - PC
- Persian
-
These locales have improved iPad Pro layouts:
- French (Switzerland)
- Greek
- Inari Sami
- Macedonian
- Mongolian
-
These locales have improved iPhone layouts:
- Arabic
🐛 Bug fixes
KeyboardAction.tab
now uses an LTR/RTL supporting icon.KeyboardContext
now matcheskeyboardLocale
on language code as well, to work around system bug.
8.5.7
This version updates Pro licenses.
8.5.6
This version makes it easier to create a themed style provider, and adds a new .numberPad
keyboard type.
✨ Features
Keyboard.KeyboardType
has a new.numberPad
type.KeyboardStyleProvider.themed
has new convenience apis.
💡 Adjustments
KeyboardContext
will now get its initial keyboard type set to the document text proxy's keyboard type.
8.5.5
This version adjusts Pro licenses.
8.5.4
This version adjusts Pro licenses.
8.5.3
This version adds a licenseError
parameter to setupPro
in KeyboardKit Pro.
Due to this, the setupProError
in KeyboardInputViewController
is deprecated and no longer used.
8.5.2
This version adds a new SystemKeyboardBottomRow
component, adds some new actions and fixes a bug.
✨ Features
KeyboardAction
has a new.text
action to insert long text.KeyboardLayout
has a new.bottomRowSystemItemWidth
property.SystemKeyboardComponent
is a new protocol that defines shared typealiases.
💡 Adjustments
KeyboardAction.url
is now a system key.
👑 KeyboardKit Pro
SystemKeyboardBottomRow
is a new Pro component.
🐛 Bug fixes
SystemKeyboard
no longer shows the emoji key for insufficient KeyboardKit Pro licenses.
8.5.1
This version adjusts an autocomplete behavior.
💡 Adjustments
KeyboardInputViewController
no longer hard resets the autocomplet econtext when the text is empty.
🐛 Bug fixes
KeyboardGesture
has a new.end
gesture, which is used to fix a bug that could cause space drag to never end.
👑 KeyboardKit Pro
- KeyboardKit Pro has new ways to allow more flexible feature and tier validation.