Skip to content

Releases: KeyboardKit/KeyboardKit

8.7-rc1

05 Jun 20:55
Compare
Choose a tag to compare

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 Fonts, 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 new autocorrectDictionary value.
  • AutocompleteContext has a new isAutoLearnEnabled property.
  • AutocompleteContext has a new preferredSuggestionCount property.
  • AutocompleteProvider has new ignoreWords(_:) and suggestion functions.
  • KeyboardBehavior and its implementations have a new endSentenceText property.
  • KeyboardAction.StandardProvider can now automatically learn unknown suggestions.
  • KeyboardContext has a new syncKeyboardType(with:) to sync type with the proxy.
  • KeyboardController has a new endSentence(withText:) function to end sentences.
  • KeyboardInputViewController has a new settings property for setting instances.
  • KeyboardInputViewController has a new viewWillSetupInitialKeyboardType 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 checks KeyboardContext.prefersAutocomplete.
  • KeyboardLayout.iPhoneProvider now handles more keyboard types in a better way.
  • KeyboardSettings have been converted from a namespace to being a part of Keyboard.
  • 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 implements Identifiable and has a new name property.
  • KeyboardHostApplication now defines even more applications and has a url 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

18 May 13:54
Compare
Choose a tag to compare

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 new insertDiacritic(_:) function.
  • KeyboardLayout and its Item has much new functionality.
  • KeyboardLocale has new locale-based initializers and matching functions.
  • UITextDocumentProxy has a new insertDiacritic(_:) function.

💡 Adjustments

  • KeyboardInputViewController autocompleteText now uses the pre-cursor part of the current word, instead of the full word.
  • KeyboardInputViewController hostBundleId has been renamed to hostApplicationBundleId.

🌐 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 standard AnyView.

  • Keyboard.ToggleToolbarToggle is a new, customizable toolbar toggle.

  • KeyboardContext has a new hostApplication property.

  • KeyboardHostApplication is a new enum with known applications.

  • KeyboardInputViewController has a new hostApplication property.

  • KeyboardInputViewController setupPro no longer creates a new callout provider.

  • KeyboardInputViewController setupPro no longer creates a new layout provider.

  • KeyboardLayout has a new LatinLayoutType 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 matches keyboardLocale on language code as well, to work around system bug.

8.6-rc1

15 May 18:22
Compare
Choose a tag to compare

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 new insertDiacritic(_:) function.
  • KeyboardLayout and its Item has much new functionality.
  • KeyboardLocale has new locale-based initializers and matching functions.
  • UITextDocumentProxy has a new insertDiacritic(_:) function.

💡 Adjustments

  • KeyboardInputViewController autocompleteText now uses the pre-cursor part of the current word, instead of the full word.
  • KeyboardInputViewController hostBundleId has been renamed to hostApplicationBundleId.

🌐 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 standard AnyView.

  • Keyboard.ToggleToolbarToggle is a new, customizable toolbar toggle.

  • KeyboardContext has a new hostApplication property.

  • KeyboardHostApplication is a new enum with known applications.

  • KeyboardInputViewController has a new hostApplication property.

  • KeyboardInputViewController setupPro no longer creates a new callout provider.

  • KeyboardInputViewController setupPro no longer creates a new layout provider.

  • KeyboardLayout has a new LatinLayoutType 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 matches keyboardLocale on language code as well, to work around system bug.

8.5.7

14 May 08:31
Compare
Choose a tag to compare

This version updates Pro licenses.

8.5.6

08 May 08:59
Compare
Choose a tag to compare

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

08 May 08:21
Compare
Choose a tag to compare

This version adjusts Pro licenses.

8.5.4

06 May 11:09
Compare
Choose a tag to compare

This version adjusts Pro licenses.

8.5.3

01 May 20:51
Compare
Choose a tag to compare

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

24 Apr 14:33
Compare
Choose a tag to compare

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

17 Apr 22:38
Compare
Choose a tag to compare

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.