Skip to content

Releases: KeyboardKit/KeyboardKit

10.8.1

Choose a tag to compare

@danielsaidi danielsaidi released this 20 Aug 12:27

This version fixes some locale and casing bugs.

The input controller will now make set up App Group syncing before accessing any settings. This fixes a bug where locales set in the main app didn't sync properly to the keyboard.

The input controller will also clean up its keyboard case logic, which caused some initial flickering and sometimes some flaky behavior. This also makes the keyboard honor the preferred autocapitalization of a text field, which wasn't always the case before.

🐛 Bug Fixes

  • KeyboardInputViewController moves SDK initialization earlier to avoid stale locale settings.
  • KeyboardInputViewController cleans up its initial case logic to make it correct and avoid flickering.

10.8.0

Choose a tag to compare

@danielsaidi danielsaidi released this 17 Aug 21:11

This version converts the various settings types to observable object classes, that are added to KeyboardState and injected into the various context and into the SwiftUI view environment.

This means that you can now get a settings instance from the environment instead of having to go through the context. This makes view binding more correct, and decouples the two types more.

This version extends AutocompleteSettings to handle user-based autocompletions, autocorrections, and ignored words, and adds new autocomplete settings screens for managing these settings.

This version also updates the dictation keyboard overlay to allow more customizations and styling options.

🌱 Essentials

  • Keyboard has a new LocaleSections struct.
  • Keyboard has a new LearnedWordsDictionary struct.
  • Keyboard has new styling types for uniform styling.
  • KeyboardState has new properties for settings types.
  • Keyboard.LocaleDictionary adds more conditional conformances.
  • Keyboard.LocaleWordDictionary is a new localized word dictionary.
  • Keyboard.TextReplacementDictionary has new and renamed functions.
  • Keyboard.TextReplacementDictionary now conforms to KeyboardModel.
  • String.autocompleteWordDelimiters now contains additional characters.

📱 App

  • KeyboardAppView no longer observes the keyboard state.

💡 Autocomplete

  • AutocompleteSettings has a new autocorrectDictionary.
  • AutocompleteSettings has a new autocompleteDictionary.
  • AutocompleteSettings has a new ignoredWordsDictionary.
  • AutocompleteSettingsScreen links to new settings screens.
  • AutocompleteIgnoredWordsScreen is a brand new setting screen.
  • AutocompleteTextReplacementsScreen is a brand new setting screen.
  • StandardAutocompleteService resolves its emojiColonSearch lazily.
  • StandardAutocompleteService now regards text replacements and ignored words.

🎤 Dictation

  • DictationContext no longer auto-resets itself.
  • DictationContext.reset no longer uses async resets.
  • DictationContext.setIsDictating no longer animates.
  • DictationIndicatorBadge is now rendered as a circle.
  • DictationIndicatorBadgeStyle has new styling options.
  • DictationKeyboardOverlayStyle has new styling options.

😀 Emojis

  • Emoji and EmojiVersion have been optimized for performance.

👁️ Previews

  • There are new context and settings preview builders.

⚙️ Settings

  • All settings types are converted to ObservableObject classes.
  • KeyboardSettingsScreen now links to the new text replacements.

🍭 Themes

  • KeyboardThemeSettings has new functions for handling the theme.

🐛 Bug Fixes

  • String.autocompleteWordDelimiters updates fixes URL autocomplete bugs.

🗑️ Deprecations

  • The various context initializers now require a settings instance.
  • KeyboardThemeContext theme logic has been moved to the settings.
  • Locale.Dictionary has been renamed to Keyboard.LocaleDictionary.

10.7.3

Choose a tag to compare

@danielsaidi danielsaidi released this 19 Jul 10:01

This version tweaks the standard emoji action button style.

10.7.2

Choose a tag to compare

@danielsaidi danielsaidi released this 09 Jul 05:42

This patch adds some action picker values.

⚙️ Settings

  • KeyboardAction.PickerValue has a new openMainApp case.
  • KeyboardAction.PickerValue has a new undo case.

10.7.1

Choose a tag to compare

@danielsaidi danielsaidi released this 05 Jul 15:12

This version adds some missing parts to the various pickers.

⚙️ Settings

  • Keyboard.InputToolbarTypePicker has a new values property.
  • KeyboardActionPicker has a new isTextFieldFocused binding.
  • KeyboardActionPicker has a new values property.
  • KeyboardSettingsDisclosurePicker is a new picker view.

10.7.0

Choose a tag to compare

@danielsaidi danielsaidi released this 04 Jul 08:43

This version adds undo functionality to the keyboard engine, which makes it possible to undo text insertions, deletions, and autocompletions in chunks. This is currently opt-in. Enable the undoManager experiment to try it out.

This version also adds many more pickers and settings for various keyboard models, including a brand new KeyboardActionPicker. This will let us harmonize the settings tools, and avoid having to write separate code for each model.

This version also flattens the remaining namespaces, to complete the extensive namespace transition earlier than initially planned, to give us all time to migrate before KeyboardKit 11.

🌱 Essentials

  • Keyboard.DockEdge has a new .none case.
  • Keyboard.DockEdge now implements KeyboardSettingsPickerValue.
  • Keyboard.InputToolbarType now implements KeyboardSettingsPickerValue.
  • Keyboard.InputType now implements KeyboardSettingsPickerValue.
  • Keyboard.KeyboardCase now implements KeyboardSettingsPickerValue.
  • Keyboard.KeyboardType now implements KeyboardSettingsPickerValue.
  • Keyboard.LayoutType now implements KeyboardSettingsPickerValue.
  • Keyboard.ReturnKeyType now implements KeyboardSettingsPickerValue.
  • Keyboard.SpacebarLongPressBehavior now implements KeyboardSettingsPickerValue.
  • Keyboard.SpacebarMenuType has a new .none case.
  • Keyboard.SpacebarMenuType now implements KeyboardSettingsPickerValue.
  • KeyboardController has a new undoLastRecordedDocumentChange function.
  • KeyboardController has a new openMainApp and openMainAppDeepLink functions.

⚡️ Actions

  • KeyboardAction .openMainApp and .undo are new actions.
  • KeyboardAction.PickerValue is a new KeyboardSettingsPickerValue.
  • StandardKeyboardActionHandler has a new undoLastRecordedDocumentChange function.

🧪 Experiments

  • Experiment.undoManager is a new experiment that lets you enable the new undo feature.

📜 Licenses

  • LicenseErrorAlert has been redesigned to be more informative.

📄 Proxy

  • TextDocumentUndoChange is a new type to describe a text document change.
  • TextDocumentUndoManager is a new class for undoing text document changes.

⚙️ Settings

  • Keyboard.DockEdgePicker is a new picker component.
  • Keyboard.InputToolbarTypePicker is a new picker component.
  • Keyboard.InputTypePicker is a new picker component.
  • Keyboard.KeyboardCasePicker is a new picker component.
  • Keyboard.KeyboardTypePicker is a new picker component.
  • Keyboard.LayoutTypePicker is a new picker component.
  • Keyboard.ReturnKeyTypePicker is a new picker component.
  • Keyboard.SpacebarLongPressBehaviorPicker is a new picker component.
  • Keyboard.SpacebarMenuTypePicker is a new picker component.
  • KeyboardActionPicker is a new picker component.

🎨 Styling

  • Image.keyboardArrowBackward is a new image.
  • Image.keyboardArrowForward is a new image.
  • Image.keyboardCase is a new image builder.
  • Image.keyboardEscape is a new image.
  • Image.keyboardFunction is a new image.
  • Image.keyboardInputType is a new image builder.
  • Image.keyboardSpace is a new image.
  • Image.keyboardSystemSettings is a new image.
  • Image.keyboardType is a new image builder.
  • Image.keyboardUrlDomain is a new image.

🐛 Bug fixes

  • KeyboardLocaleSettingsScreen now applies the correct layout type.

📦 Namespace Changes

  • Autocomplete.AutocorrectionDisabledToContextModifer has been renamed to KeyboardKit.AutocorrectionDisabledModifer.
  • Autocomplete.DisabledAutocompleteService has been renamed to KeyboardKit.DisabledAutocompleteService.
  • Autocomplete.NextWordPredictionMethod has been renamed to AutocompleteMethod.
  • Autocomplete.NextWordPredictionRequestType has been renamed to AutocompleteMethod.
  • Autocomplete.NextWordPredictionTypePicker has been renamed to AutocompleteMethodPicker.
  • Autocomplete.Result has been renamed to AutocompleteResult.
  • Autocomplete.RemotePredictionRequest has been renamed to RemoteAutocompleteRequest.
  • Autocomplete.SettingsScreen has been renamed to AutocompleteSettingsScreen.
  • Autocomplete.SettingsScreenLocalization has been renamed to AutocompleteSettingsScreenLocalization.
  • Autocomplete.SettingsScreenSections has been renamed to AutocompleteSettingsScreenSections.
  • Autocomplete.SettingsScreenVisibility has been renamed to AutocompleteSettingsScreenVisibility.
  • Autocomplete.StandardAutocompleteService has been renamed to KeyboardKit.StandardAutocompleteService.
  • Autocomplete.Suggestion has been renamed to AutocompleteSuggestion.
  • Autocomplete.SuggestionType has been renamed to AutocompleteSuggestionType.
  • Autocomplete.TextReplacementDictionary has been renamed to AutocompleteReplacementDictionary.
  • Autocomplete.Toolbar has been renamed to AutocompleteToolbar.
  • Autocomplete.ToolbarScrollMode has been renamed to AutocompleteToolbarScrollMode.
  • Autocomplete.ToolbarStyle has been renamed to AutocompleteToolbarStyle.
  • Autocomplete.ToolbarItem has been renamed to AutocompleteToolbarItem.
  • Autocomplete.ToolbarItemStyle has been renamed to AutocompleteToolbarItemStyle.
  • Autocomplete.ToolbarSeparator has been renamed to AutocompleteToolbarSeparator.
  • Autocomplete.ToolbarSeparatorStyle has been renamed to AutocompleteToolbarSeparatorStyle.
  • Callouts.Actions has been renamed to KeyboardCalloutActions
  • Callouts.ActionsBuilder has been renamed to KeyboardCalloutActions.Builder
  • Callouts.ActionsBuilderParams has been renamed to KeyboardCalloutActions.BuilderParams
  • Callouts.ActionCallout has been renamed to KeyboardActionCallout
  • Callouts.CalloutStyle has been renamed to KeyboardCalloutStyle
  • Callouts.InputCallout has been renamed to KeyboardInputCallout
  • Dictation.AuthorizationStatus has been renamed to DictationAuthorizationStatus
  • Dictation.BarVisualizer has been renamed to DictationBarVisualizer
  • Dictation.BarVisualizerStyle has been renamed to DictationBarVisualizerStyle
  • Dictation.DictationMethod has been renamed to DictationMethod
  • Dictation.DictationState has been renamed to DictationState
  • Dictation.DisabledDictationEngine has been renamed to DisabledDictationEngine
  • Dictation.DisabledDictationService has been renamed to DisabledDictationService
  • Dictation.DisabledSpeechRecognizer has been renamed to DisabledDictationSpeechRecognizer
  • Dictation.Indicator has been renamed to DictationIndicatorBadge
  • Dictation.IndicatorStyle has been renamed to DictationIndicatorBadgeStyle
  • Dictation.ProgressView has been renamed to DictationKeyboardOverlay
  • Dictation.ProgressViewLocalization has been renamed to DictationKeyboardOverlayLocalization
  • Dictation.ProgressViewStyle has been renamed to DictationKeyboardOverlayStyle
  • Dictation.ServiceError has been renamed to DictationServiceError
  • Dictation.SettingsScreen has been renamed to DictationSettingsScreen
  • Dictation.SettingsScreenLocalization has been renamed to DictationSettingsScreenLocalization
  • Dictation.SettingsScreenSections has been renamed to DictationSettingsScreenSections
  • Dictation.SpeechRecognizerResult has been renamed to DictationSpeechResult
  • Dictation.StandardDictationEngine has been renamed to StandardDictationEngine
  • Dictation.StandardDictationService has been renamed to StandardDictationService
  • Dictation.StandardVolumeRecorder has been renamed to StandardDictationVolumeRecorder
  • Dictation.VolumeRecorder has been renamed to DictationVolumeRecorder
  • Dictation.VolumeResult has been renamed to DictationVolumeResult
  • Dictation.VolumeVisualizer has been renamed to DictationVolumeVisualizer
  • Dictation.VolumeVisualizerStyle has been renamed to DictationVolumeVisualizerStyle
  • Emoji.ColonSearch has been renamed to EmojiColonSearch.
  • Emoji.KeyboardSearchField has been renamed to EmojiSearchField
  • EmojiKeyboard.Configuration has been renamed to EmojiKeyboardConfiguration
  • EmojiKeyboard.Sizes has been renamed to EmojiKeyboardSizes
  • EmojiKeyboard.State has been renamed to EmojiKeyboardState
  • EmojiKeyboard.Style has been renamed to EmojiKeyboardStyle
  • Experiment has been renamed to KeyboardExperiment.
  • Experiment.SettingsScreen has been renamed to KeyboardExperimentSettingsScreen.
  • Experiment.SettingsScreenLocalization has been renamed to KeyboardExperimentSettingsScreenLocalization.
  • Experiments has been renamed to KeyboardExperimentSettings.
  • ExperimentContext has been renamed to KeyboardExperimentContext.
  • Feedback.Audio has been renamed to KeyboardAudioFeedback.
  • Feedback.AudioConfiguration has been renamed to KeyboardAudioFeedbackConfiguration.
  • Feedback.AudioEngine has been renamed to KeyboardAudioFeedbackEngine.
  • Feedback.DisabledFeedbackService has been renamed to DisabledKeyboardFeedbackService.
  • Feedback.Haptic has been renamed to KeyboardHapticFeedback.
  • Feedback.HapticConfiguration has been renamed to KeyboardHapticFeedbackConfiguration.
  • Feedback.HapticEngine has been renamed to KeyboardHapticFeedbackEngine.
  • Feedback.StandardFeedbackService has been renamed to StandardKeyboardFeedbackService.
  • Feedback.Toggle has been renamed to KeyboardFeedbackToggle.
  • FeedbackContext has been renamed to KeyboardFeedbackContext.
  • FeedbackService has been renamed to KeyboardFeedbackService.
  • FeedbackSettings has been renamed to KeyboardFeedbackSettings.
  • FontContext has been renamed to KeyboardFontContext.
  • FontSettings has been renamed to KeyboardFontSettings.
  • Fonts.UnicodeFont has been renamed to KeyboardUnicodeFont.
  • Fonts.UnicodeFontOption has been renamed to KeyboardUnicodeFontOption.
  • `Ke...
Read more

10.6.1

Choose a tag to compare

@danielsaidi danielsaidi released this 02 Jul 08:48

This version reverts the hard disabling of the hostApplicationBundleId property, and restores it with a soft deprecated version that explains that the function will be removed in KeyboardKit 11.

Note that the ID will still be nil on all iOS versions before 26.4, so please see the Host feature article in the online docs for a discussion on how to best handle integrating with the host app.

💡 Changes

  • UIInputViewController.hostApplicationBundleId now resolves the bundle ID on iOS versions before 26.4.

10.7.0-beta.1

Choose a tag to compare

@danielsaidi danielsaidi released this 26 Jun 09:07

This version adds undo functionality to the keyboard engine, which makes it possible to undo text insertions, deletions, and autocompletions in chunks. This is currently opt-in. Enable the undoManager experiment to try it out.

This version also adds many more pickers and settings for various keyboard models, including a brand new KeyboardActionPicker. This will let us harmonize the settings tools, and avoid having to write separate code for each model.

This version also flattens the remaining namespaces, to complete the extensive namespace transition earlier than initially planned, to give us all time to migrate before KeyboardKit 11.

🌱 Essentials

  • Keyboard.DockEdge has a new .none case.
  • Keyboard.DockEdge now implements KeyboardSettingsPickerValue.
  • Keyboard.InputToolbarType now implements KeyboardSettingsPickerValue.
  • Keyboard.InputType now implements KeyboardSettingsPickerValue.
  • Keyboard.KeyboardCase now implements KeyboardSettingsPickerValue.
  • Keyboard.KeyboardType now implements KeyboardSettingsPickerValue.
  • Keyboard.LayoutType now implements KeyboardSettingsPickerValue.
  • Keyboard.ReturnKeyType now implements KeyboardSettingsPickerValue.
  • Keyboard.SpacebarLongPressBehavior now implements KeyboardSettingsPickerValue.
  • Keyboard.SpacebarMenuType has a new .none case.
  • Keyboard.SpacebarMenuType now implements KeyboardSettingsPickerValue.
  • KeyboardController has a new undoLastRecordedDocumentChange function.
  • KeyboardController has a new openMainApp and openMainAppDeepLink functions.

⚡️ Actions

  • KeyboardAction .openMainApp and .undo are new actions.
  • KeyboardAction.PickerValue is a new KeyboardSettingsPickerValue.
  • StandardKeyboardActionHandler has a new undoLastRecordedDocumentChange function.

🧪 Experiments

  • Experiment.undoManager is a new experiment that lets you enable the new undo feature.

📜 Licenses

  • LicenseErrorAlert has been redesigned to be more informative.

📄 Proxy

  • TextDocumentUndoChange is a new type to describe a text document change.
  • TextDocumentUndoManager is a new class for undoing text document changes.

⚙️ Settings

  • Keyboard.DockEdgePicker is a new picker component.
  • Keyboard.InputToolbarTypePicker is a new picker component.
  • Keyboard.InputTypePicker is a new picker component.
  • Keyboard.KeyboardCasePicker is a new picker component.
  • Keyboard.KeyboardTypePicker is a new picker component.
  • Keyboard.LayoutTypePicker is a new picker component.
  • Keyboard.ReturnKeyTypePicker is a new picker component.
  • Keyboard.SpacebarLongPressBehaviorPicker is a new picker component.
  • Keyboard.SpacebarMenuTypePicker is a new picker component.
  • KeyboardActionPicker is a new picker component.

🎨 Styling

  • Image.keyboardArrowBackward is a new image.
  • Image.keyboardArrowForward is a new image.
  • Image.keyboardCase is a new image builder.
  • Image.keyboardEscape is a new image.
  • Image.keyboardFunction is a new image.
  • Image.keyboardInputType is a new image builder.
  • Image.keyboardSpace is a new image.
  • Image.keyboardSystemSettings is a new image.
  • Image.keyboardType is a new image builder.
  • Image.keyboardUrlDomain is a new image.

🐛 Bug fixes

  • KeyboardLocaleSettingsScreen now applies the correct layout type.

📦 Namespace Changes

  • Autocomplete.AutocorrectionDisabledToContextModifer has been renamed to KeyboardKit.AutocorrectionDisabledModifer.
  • Autocomplete.DisabledAutocompleteService has been renamed to KeyboardKit.DisabledAutocompleteService.
  • Autocomplete.NextWordPredictionMethod has been renamed to AutocompleteMethod.
  • Autocomplete.NextWordPredictionRequestType has been renamed to AutocompleteMethod.
  • Autocomplete.NextWordPredictionTypePicker has been renamed to AutocompleteMethodPicker.
  • Autocomplete.Result has been renamed to AutocompleteResult.
  • Autocomplete.RemotePredictionRequest has been renamed to RemoteAutocompleteRequest.
  • Autocomplete.SettingsScreen has been renamed to AutocompleteSettingsScreen.
  • Autocomplete.SettingsScreenLocalization has been renamed to AutocompleteSettingsScreenLocalization.
  • Autocomplete.SettingsScreenSections has been renamed to AutocompleteSettingsScreenSections.
  • Autocomplete.SettingsScreenVisibility has been renamed to AutocompleteSettingsScreenVisibility.
  • Autocomplete.StandardAutocompleteService has been renamed to KeyboardKit.StandardAutocompleteService.
  • Autocomplete.Suggestion has been renamed to AutocompleteSuggestion.
  • Autocomplete.SuggestionType has been renamed to AutocompleteSuggestionType.
  • Autocomplete.TextReplacementDictionary has been renamed to AutocompleteReplacementDictionary.
  • Autocomplete.Toolbar has been renamed to AutocompleteToolbar.
  • Autocomplete.ToolbarScrollMode has been renamed to AutocompleteToolbarScrollMode.
  • Autocomplete.ToolbarStyle has been renamed to AutocompleteToolbarStyle.
  • Autocomplete.ToolbarItem has been renamed to AutocompleteToolbarItem.
  • Autocomplete.ToolbarItemStyle has been renamed to AutocompleteToolbarItemStyle.
  • Autocomplete.ToolbarSeparator has been renamed to AutocompleteToolbarSeparator.
  • Autocomplete.ToolbarSeparatorStyle has been renamed to AutocompleteToolbarSeparatorStyle.
  • Callouts.Actions has been renamed to KeyboardCalloutActions
  • Callouts.ActionsBuilder has been renamed to KeyboardCalloutActions.Builder
  • Callouts.ActionsBuilderParams has been renamed to KeyboardCalloutActions.BuilderParams
  • Callouts.ActionCallout has been renamed to KeyboardActionCallout
  • Callouts.CalloutStyle has been renamed to KeyboardCalloutStyle
  • Callouts.InputCallout has been renamed to KeyboardInputCallout
  • Dictation.AuthorizationStatus has been renamed to DictationAuthorizationStatus
  • Dictation.BarVisualizer has been renamed to DictationBarVisualizer
  • Dictation.BarVisualizerStyle has been renamed to DictationBarVisualizerStyle
  • Dictation.DictationMethod has been renamed to DictationMethod
  • Dictation.DictationState has been renamed to DictationState
  • Dictation.DisabledDictationEngine has been renamed to DisabledDictationEngine
  • Dictation.DisabledDictationService has been renamed to DisabledDictationService
  • Dictation.DisabledSpeechRecognizer has been renamed to DisabledDictationSpeechRecognizer
  • Dictation.Indicator has been renamed to DictationIndicatorBadge
  • Dictation.IndicatorStyle has been renamed to DictationIndicatorBadgeStyle
  • Dictation.ProgressView has been renamed to DictationKeyboardOverlay
  • Dictation.ProgressViewLocalization has been renamed to DictationKeyboardOverlayLocalization
  • Dictation.ProgressViewStyle has been renamed to DictationKeyboardOverlayStyle
  • Dictation.ServiceError has been renamed to DictationServiceError
  • Dictation.SettingsScreen has been renamed to DictationSettingsScreen
  • Dictation.SettingsScreenLocalization has been renamed to DictationSettingsScreenLocalization
  • Dictation.SettingsScreenSections has been renamed to DictationSettingsScreenSections
  • Dictation.SpeechRecognizerResult has been renamed to DictationSpeechResult
  • Dictation.StandardDictationEngine has been renamed to StandardDictationEngine
  • Dictation.StandardDictationService has been renamed to StandardDictationService
  • Dictation.StandardVolumeRecorder has been renamed to StandardDictationVolumeRecorder
  • Dictation.VolumeRecorder has been renamed to DictationVolumeRecorder
  • Dictation.VolumeResult has been renamed to DictationVolumeResult
  • Dictation.VolumeVisualizer has been renamed to DictationVolumeVisualizer
  • Dictation.VolumeVisualizerStyle has been renamed to DictationVolumeVisualizerStyle
  • Emoji.ColonSearch has been renamed to EmojiColonSearch.
  • Emoji.KeyboardSearchField has been renamed to EmojiSearchField
  • EmojiKeyboard.Configuration has been renamed to EmojiKeyboardConfiguration
  • EmojiKeyboard.Sizes has been renamed to EmojiKeyboardSizes
  • EmojiKeyboard.State has been renamed to EmojiKeyboardState
  • EmojiKeyboard.Style has been renamed to EmojiKeyboardStyle
  • Experiment has been renamed to KeyboardExperiment.
  • Experiment.SettingsScreen has been renamed to KeyboardExperimentSettingsScreen.
  • Experiment.SettingsScreenLocalization has been renamed to KeyboardExperimentSettingsScreenLocalization.
  • Experiments has been renamed to KeyboardExperimentSettings.
  • ExperimentContext has been renamed to KeyboardExperimentContext.
  • Feedback.Audio has been renamed to KeyboardAudioFeedback.
  • Feedback.AudioConfiguration has been renamed to KeyboardAudioFeedbackConfiguration.
  • Feedback.AudioEngine has been renamed to KeyboardAudioFeedbackEngine.
  • Feedback.DisabledFeedbackService has been renamed to DisabledKeyboardFeedbackService.
  • Feedback.Haptic has been renamed to KeyboardHapticFeedback.
  • Feedback.HapticConfiguration has been renamed to KeyboardHapticFeedbackConfiguration.
  • Feedback.HapticEngine has been renamed to KeyboardHapticFeedbackEngine.
  • Feedback.StandardFeedbackService has been renamed to StandardKeyboardFeedbackService.
  • Feedback.Toggle has been renamed to KeyboardFeedbackToggle.
  • FeedbackContext has been renamed to KeyboardFeedbackContext.
  • FeedbackService has been renamed to KeyboardFeedbackService.
  • FeedbackSettings has been renamed to KeyboardFeedbackSettings.
  • FontContext has been renamed to KeyboardFontContext.
  • FontSettings has been renamed to KeyboardFontSettings.
  • Fonts.UnicodeFont has been renamed to KeyboardUnicodeFont.
  • Fonts.UnicodeFontOption has been renamed to KeyboardUnicodeFontOption.
  • `Ke...
Read more

10.6.0

Choose a tag to compare

@danielsaidi danielsaidi released this 22 Jun 12:24

This version minimizes the number of on-launch redraws to minimize launch flickering, and makes it possible to swipe up and down on the spacebar to move the cursor in greater steps.

This also version starts reducing namespace nesting, as described in issue 1045. Expect less nesting and more surface-level types, with renaming guides to help you migrate.

Finally, since the host application bundle ID keeps returning nil in iOS 27, we have deprecated the KeyboardInputViewController hostApplicationBundleId property, and updated the documentation with alternate ways to handle this.

🌱 Essentials

  • Keyboard.SpacebarDragGestureHandler can now handle vertical movement.
  • Keyboard.SpacebarDragGestureOffset is a new enum for spacebar dragging.
  • Keyboard.SpacebarDragSensitivity now defines a horizontal and a vertical step value.
  • KeyboardInputViewController minimizes the number of on-launch redraws to minimize flickering.

🏠 Host

  • KeyboardHostApplicationPicker now specializes KeyboardSettingsPicker.

🔣 Layout

  • KeyboardLayout convert baseLayout builder to an initializer.
  • KeyboardLayout convert iPhoneLayout and iPadLayout builders to instance members.
  • KeyboardLayout updates the keyboard switcher placement on iPads running iOS 18 and earlier.
  • KeyboardLayout.DeviceConfiguration applies updated edge insets on iPads running iOS 18 and earlier.

📦 Namespace Changes

  • KeyboardLayout.DeviceConfiguration has been renamed to KeyboardLayoutConfiguration.
  • KeyboardLayout.Item has been renamed to KeyboardLayoutItem.
  • KeyboardLocale.ContextMenu has been renamed to KeyboardLocaleContextMenuModifier.
  • KeyboardLocale.ListItem has been renamed to KeyboardLocaleListItem.
  • KeyboardLocale.SettingsScreen has been renamed to KeyboardLocaleSettingsSettingsScreen.
  • KeyboardLocale.SettingsScreenLocalization has been renamed to KeyboardLocaleSettingsScreenLocalization.
  • KeyboardLocale.SettingsScreenPickers has been renamed to KeyboardLocaleSettingsScreenPickers.
  • KeyboardLocale.SettingsScreenVisibility has been renamed to KeyboardLocaleSettingsScreenVisibility.
  • KeyboardSettings.SettingsScreen has been renamed to KeyboardSettingsScreen.
  • KeyboardSettings.SettingsScreenLocalization has been renamed to KeyboardSettingsScreenLocalization.
  • KeyboardSettings.SettingsScreenPickers has been renamed to KeyboardSettingsScreenPickers.
  • KeyboardSettings.SettingsScreenSections has been renamed to KeyboardSettingsScreenSections.
  • KeyboardSettings.SettingsScreenVisibility has been renamed to KeyboardSettingsScreenVisibility.
  • KeyboardSettings.Picker has been renamed to KeyboardSettingsPicker.
  • KeyboardSettings.PickerValue has been renamed to KeyboardSettingsPickerValue.
  • KeyboardStatus.Label has been renamed to KeyboardStatusLabel.
  • KeyboardStatus.LabelStyle has been renamed to KeyboardStatusLabelStyle.
  • KeyboardStatus.Section has been renamed to KeyboardStatusSection.
  • KeyboardStatus.SectionLocalization has been renamed to KeyboardStatusSectionLocalization.
  • KeyboardStatus.SectionStyle has been renamed to KeyboardStatusSectionStyle.
  • KeyboardTheme.Collection has been renamed to KeyboardThemeCollection.
  • KeyboardTheme.SettingsScreen has been renamed to KeyboardThemeSettingsScreen.
  • KeyboardTheme.SettingsScreenLocalization has been renamed to KeyboardThemeSettingsScreenLocalization.
  • KeyboardTheme.SettingsScreenStyle has been renamed to KeyboardThemeSettingsScreenStyle.
  • KeyboardTheme.SettingsScreenThemes has been renamed to KeyboardThemeSettingsScreenThemes.
  • Proxy.FullDocumentReaderConfiguration has been renamed to DocumentReaderConfiguration.
  • Proxy.FullDocumentReaderError has been renamed to DocumentReaderError.
  • Proxy.FullDocumentReaderResult has been renamed to DocumentReaderResult.
  • Proxy.SelectionEdge has been renamed to Keyboard.TextSelectionEdge.

👁️ Previews

  • KeyboardPreviews.ActionHandler is renamed to PreviewKeyboardActionHandler.
  • KeyboardPreviews.AutocompleteService is renamed to PreviewAutocompleteService.
  • KeyboardPreviews.InputViewController is renamed to PreviewKeyboardInputViewController.
  • KeyboardPreviews.TextDocumentProxy is renamed to PreviewTextDocumentProxy.

📄 Proxy

  • DocumentReader is a new protocol, informally implemented by UITextDocumentProxy.
  • UITextDocumentProxy has new sentence offset variables.

⚙️ Settings

  • KeyboardSettingsPicker now supports an optional selection binding.
  • .keyboardSettingsPickerTitle(for:_:) is a new KeyboardSettingsPicker view modifier.
  • .keyboardSettingsPickerValueTitle(for:_:) is a new KeyboardSettingsPicker view modifier.

🩺 Status

  • KeyboardStatusInspector is a new tool for inspecting the keyboard system status.

🗑️ Deprecations

  • The KeyboardInputViewController hostApplicationBundleId has been deprecated.
  • The KeyboardInput namespace is deprecated and will be removed in KeyboardKit 11.
  • The KeyboardLocale namespace is deprecated and will be removed in KeyboardKit 11.
  • The KeyboardPreviews namespace is deprecated and will be removed in KeyboardKit 11.
  • The KeyboardStatus namespace is deprecated and will be removed in KeyboardKit 11.
  • The KeyboardStyle namespace is deprecated and will be removed in KeyboardKit 11.
  • The Proxy namespace is deprecated and will be removed in KeyboardKit 11.

10.5.1

Choose a tag to compare

@danielsaidi danielsaidi released this 02 Jun 07:01

This version updates some license information.