diff --git a/HISTORY.md b/HISTORY.md
index 829e8cc622..afa2a65bb2 100644
--- a/HISTORY.md
+++ b/HISTORY.md
@@ -26,6 +26,32 @@
* chore(common): remove `clearcontext`,`fix`,`switch`,`key` statements (#16726)
* chore: move to 20.0-alpha (#16739)
+## 19.0.305 beta 2026-10-09
+
+* docs: remove repeated clean up instructions (#16745)
+* fix(web): prevent crash adding log entry for keystroke with `inputBreadCrumb` (#16762)
+* maint(ios): new iOS certificate (beta-19.0) (#16772)
+* docs(developer): fix typo in whatsnew (#16774)
+* fix(web): fix crash applying suggestions (#16786)
+
+## 19.0.304 beta 2026-10-08
+
+* docs(common): add `sentry-cli` version and update documentation (#16752)
+* chore(linux): update changelog with Debian version (#16758)
+
+## 19.0.303 beta 2026-10-07
+
+* fix(resources): export KEYMAN_TIER so we get beta tagging on release build (#16751)
+
+## 19.0.302 beta 2026-10-07
+
+* fix(mac): lower case 'k' for .pkg.download_info (#16743)
+* docs: update v19 whats-new (#16748)
+
+## 19.0.300 beta 2026-10-06
+
+* chore: move to beta
+
## 19.0.299 alpha 2026-10-05
* chore(deps): bump ip-address from 10.5.0 to 10.7.2 in /developer/src/server/src/win32/trayicon/addon-src (#16698)
diff --git a/TIER.md b/TIER.md
index 4a58007052..65b2df87f7 100644
--- a/TIER.md
+++ b/TIER.md
@@ -1 +1 @@
-alpha
+beta
diff --git a/VERSION.md b/VERSION.md
index 4cbcaa5aa0..b09651c1d0 100644
--- a/VERSION.md
+++ b/VERSION.md
@@ -1 +1 @@
-20.0.5
\ No newline at end of file
+20.0.5
diff --git a/android/KMAPro/kMAPro/build.gradle b/android/KMAPro/kMAPro/build.gradle
index 7c6b966484..ef60799d5d 100644
--- a/android/KMAPro/kMAPro/build.gradle
+++ b/android/KMAPro/kMAPro/build.gradle
@@ -9,6 +9,7 @@ plugins {
ext.rootPath = '../../'
apply from: "$rootPath/version.gradle"
String tier = System.getenv("KEYMAN_TIER");
+println "Using tier $tier"
java {
toolchain {
diff --git a/android/docs/engine/whatsnew.md b/android/docs/engine/whatsnew.md
index 23979172d6..9e9256bd8e 100644
--- a/android/docs/engine/whatsnew.md
+++ b/android/docs/engine/whatsnew.md
@@ -2,7 +2,12 @@
title: What's New in Keyman Engine 20.0 for Android
---
-* Added API for broadcasting when Keyman system keyboard font changes (#15193)
+* **BREAKING** Apps that use the functionality of Keyman Engine for Android will have to add `androidx.webkit:webkit:1.14.0` as a dependency (#16146)
+* **KNOWN ISSUE** `sil_euro_latin` keyboard must be included in an app if `setDefaultKeyboard()` is not called during initialization (#16215)
+* Added [Intent `com.tavultesoft.kmapro.keyboard_changed`](KMAPro/) which is broadcast when Keyman system keyboard changes and includes font name (#15193)
+* Added [`KMManager.getKeyboardHeightMax()`](KMManager/getKeyboardHeightMax) API (#13663)
+* Added [`KMManager.getKeyboardHeightMin()`](KMManager/getKeyboardHeightMin) API (#13663)
+* Clarified font filename vs facename in various APIs (#16211)
## See Also
* [Keyman Engine for Android Documentation](index)
\ No newline at end of file
diff --git a/android/docs/help/about/whatsnew.md b/android/docs/help/about/whatsnew.md
index 63eb0cdbcc..dd5e40d78c 100644
--- a/android/docs/help/about/whatsnew.md
+++ b/android/docs/help/about/whatsnew.md
@@ -4,3 +4,9 @@ title: What's New in Keyman 20.0 for Android
Here are some of the new features we have added to Keyman 20.0 for Android:
+- Keyboard search is now localized for several languages (#15510)
+- Support for dark mode (#15827)
+- Refreshed and modernized settings user interface (#15827)
+- Automatic acceptance of corrections (#12893)
+- Improvements to interface for keyboard resizing (#15267)
+- About [220 other fixes and changes](https://keyman.com/go/app/whatsnew/android/19.0)
diff --git a/docs/build/linux-ubuntu.md b/docs/build/linux-ubuntu.md
index 82537b1b79..8f3e879801 100644
--- a/docs/build/linux-ubuntu.md
+++ b/docs/build/linux-ubuntu.md
@@ -245,6 +245,15 @@ from command line. But note that you do need to update your `JAVA_HOME` env
var to the associated version before opening Android Studio and loading any
Android projects. `JAVA_HOME_11` is mostly used by CI.
+## Optional Tools
+
+- sentry-cli (optional)
+ - Uploading symbols for Sentry-based error reporting
+
+ See for the installation, and
+ check [minimum-versions.md](../minimum-versions.md) for the required version of
+ `sentry-cli`.
+
## Docker Builder
The Docker builder allows you to perform a build from anywhere Docker is supported.
diff --git a/docs/build/macos.md b/docs/build/macos.md
index 92203ddb6d..b8030c7292 100644
--- a/docs/build/macos.md
+++ b/docs/build/macos.md
@@ -41,7 +41,7 @@ Rosetta 2 installed.
Many dependencies are only required for specific projects.
-* XCode (iOS, macOS) 26.2 or 26.3 (not higher at this time, see #16416)
+* XCode (iOS, macOS) 26.2 or 26.3 (not higher at this time, see #16416)
is needed only for Keyman for macOS and Keyman for iOS ().
* Install from App Store
@@ -206,8 +206,10 @@ components such as emulator images and SDK updates.
* node.js, emscripten
-```shell
-brew install node emscripten
+ ```shell
+ brew install node emscripten
+ ```
+
* node.js 20.0, emscripten 3.1.64
See section KeymanWeb Dependencies for installation
@@ -216,6 +218,6 @@ See section KeymanWeb Dependencies for installation
* sentry-cli: Uploading symbols for Sentry-based error reporting
- ```shell
- brew install getsentry/tools/sentry-cli
- ```
+ See for the installation, and
+ check [minimum-versions.md](../minimum-versions.md) for the required version of
+ `sentry-cli`.
diff --git a/docs/build/sentry-cli.md b/docs/build/sentry-cli.md
index 42095d38eb..e9955082e6 100644
--- a/docs/build/sentry-cli.md
+++ b/docs/build/sentry-cli.md
@@ -1,8 +1,11 @@
# Setting up sentry-cli
-Contact the Keyman team if you need access to sentry.keyman.com for development.
+Contact the Keyman team if you need access to keyman.sentry.io for development.
You will also need to install [sentry-cli](https://docs.sentry.io/cli/installation/) for uploading Debug symbols.
-After setting up your personal [Auth token](http://keyman.sentry.io/settings/account/api/auth-tokens/), add the following to **~/.bashrc**
+Check [minimum-versions.md](../minimum-versions.md) for the required version of `sentry-cli`.
+
+After setting up your personal [Auth token](http://keyman.sentry.io/settings/account/api/auth-tokens/),
+add the following to `~/.bashrc`:
```bash
export SENTRY_AUTH_TOKEN={your Sentry auth token}
diff --git a/docs/build/windows.md b/docs/build/windows.md
index edc756340f..180b099fc5 100644
--- a/docs/build/windows.md
+++ b/docs/build/windows.md
@@ -412,8 +412,6 @@ certificates for the build.
* sentry-cli (optional)
- Uploading symbols for Sentry-based error reporting
- bash:
- ```bash
- # bash
- curl -sL https://sentry.io/get-cli/ | bash
- ```
+ See for the installation, and
+ check [minimum-versions.md](../minimum-versions.md) for the required version of
+ `sentry-cli`.
diff --git a/docs/minimum-versions.md b/docs/minimum-versions.md
index 9065aed2ec..d778ae8959 100644
--- a/docs/minimum-versions.md
+++ b/docs/minimum-versions.md
@@ -74,6 +74,7 @@ https://help.keyman.com/developer/engine/android/latest-version/
| KEYMAN_VERSION_LANGTAGS | 2026-06-09 |
| KEYMAN_VERSION_LANGTAGS_API | 1.4 |
| KEYMAN_VERSION_LANGUAGE_SUBTAG_REGISTRY | 2026-08-08 |
+| KEYMAN_VERSION_SENTRY_CLI | 1.70.0 |
| KEYMAN_VERSION_UNICODE | 17.0.0 |
| KEYMAN_VERSION_XCODE | 26.2 |
diff --git a/docs/tests/acceptance/developer.md b/docs/tests/acceptance/developer.md
index b0a7c76213..f7cd8eb3d6 100644
--- a/docs/tests/acceptance/developer.md
+++ b/docs/tests/acceptance/developer.md
@@ -1,5 +1,20 @@
# Developer Acceptance Tests
+### Clean up instructions for manual tests
+For all these acceptance steps to perform a `cleanup` Uninstall Keyman and any third-party applications installed as part for the `Setup` steps.
+
+If an installation becomes corrupted and it is not possible to uninstall `Keyman Developer` through `Add or remove programs`, clean up the files in the following folders if they exist.
+
+- %ProgramFiles(x86)%\Keyman or %ProgramFiles%\Keyman
+- %CommonProgramFiles(x86)%\Keyman or %CommonProgramFiles%\Keyman
+- %ProgramData%\Keyman
+- %AppData%\Keyman
+- %LocalAppData%\Keyman
+
+If still having trouble remove the registry values at
+- HKCU\Software\Keyman
+- HKLM\Software\Wow6432Node\Keyman
+
**TEST_241**
Test case for Debugger_Starts ,
diff --git a/docs/tests/acceptance/gestures.md b/docs/tests/acceptance/gestures.md
index 8882113e12..3aba62a05e 100644
--- a/docs/tests/acceptance/gestures.md
+++ b/docs/tests/acceptance/gestures.md
@@ -53,21 +53,6 @@ Original TestLodge ID: TC188
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appeared in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appeared.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_288**
@@ -122,21 +107,6 @@ Original TestLodge ID: TC189
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appeared in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appeared.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_289**
@@ -190,21 +160,6 @@ Original TestLodge ID: TC190
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appeared in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appeared.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_290**
@@ -252,21 +207,6 @@ Original TestLodge ID: TC191
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appeared in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appeared.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_291**
@@ -320,20 +260,6 @@ Original TestLodge ID: TC192
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appeared in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appeared.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
**TEST_292**
Test case for BASIC_MODIPRESS_HOLD,
@@ -381,21 +307,6 @@ Original TestLodge ID: TC193
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appeared in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appeared.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_293**
@@ -454,21 +365,6 @@ Original TestLodge ID: TC194
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appeared in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appeared.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_294**
@@ -522,21 +418,6 @@ Original TestLodge ID: TC195
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appeared in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appeared.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_295**
@@ -586,21 +467,6 @@ Original TestLodge ID: TC196
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appeared in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appeared.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_297**
@@ -653,21 +519,6 @@ Original TestLodge ID: TC198
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appeared in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appeared.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_300**
@@ -733,21 +584,6 @@ Original TestLodge ID: TC201
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appeared in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appeared.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_302**
@@ -807,20 +643,5 @@ Original TestLodge ID: TC203
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appeared in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appeared.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
diff --git a/docs/tests/acceptance/mac.md b/docs/tests/acceptance/mac.md
index 6262f62111..57f8fd9431 100644
--- a/docs/tests/acceptance/mac.md
+++ b/docs/tests/acceptance/mac.md
@@ -1,5 +1,8 @@
# macOS Acceptance Tests
+### Clean up instructions for manual tests
+For all these acceptance steps to perform a `cleanup` Uninstall Keyman and any third-party applications installed as part for the `Setup` steps.
+
**TEST_173**
Test case for Chrome_Google_Docs with Amharic,
@@ -48,15 +51,6 @@ Original TestLodge ID: TC113
-
-Cleanup
-
-1. Uninstall Keyman build on the device.
-2. Uninstall the Amharic keyboard.
-3. Uninstall the Chrome browser.
-
-
-
---
**TEST_175**
@@ -106,15 +100,6 @@ Original TestLodge ID: TC115
-
-Cleanup
-
-1. Uninstall Keyman build on the device.
-2. Uninstall the Amharic keyboard.
-3. Uninstall Atom Editor.
-
-
-
---
**TEST_178**
@@ -165,15 +150,6 @@ Original TestLodge ID: TC118
-
-Cleanup
-
-1. Uninstall Keyman build on the device.
-2. Uninstall the Amharic keyboard.
-3. Uninstall Safari browser.
-
-
-
---
**TEST_180**
@@ -224,15 +200,6 @@ Original TestLodge ID: TC120
-
-Cleanup
-
-1. Uninstall Keyman build on the device.
-2. Uninstall the Amharic keyboard.
-3. Uninstall the Firefox browser.
-
-
-
---
**TEST_183**
@@ -283,15 +250,6 @@ Original TestLodge ID: TC123
-
-Cleanup
-
-1. Uninstall Keyman build on the device.
-2. Uninstall the Amharic keyboard.
-3. Uninstall the Firefox browser.
-
-
-
---
**TEST_185**
@@ -341,15 +299,6 @@ Original TestLodge ID: TC125
-
-Cleanup
-
-1. Uninstall Keyman build on the device.
-2. Uninstall the Amharic keyboard.
-3. Uninstall Notes App.
-
-
-
---
**TEST_188**
@@ -399,15 +348,6 @@ Original TestLodge ID: TC128
-
-Cleanup
-
-1. Uninstall Keyman build on the device.
-2. Uninstall the Amharic keyboard.
-3. Uninstall LibreOffice 7.0 app.
-
-
-
---
**TEST_190**
@@ -469,14 +409,6 @@ Original TestLodge ID: TC130
-
-Cleanup
-
-1. Uninstall Keyman build on the device.
-2. Uninstall Chrome browser.
-
-
-
---
**TEST_193**
@@ -539,14 +471,6 @@ Original TestLodge ID: TC133
-
-Cleanup
-
-1. Uninstall Keyman build on the device.
-2. Uninstall Chrome browser.
-
-
-
---
**TEST_195**
@@ -608,13 +532,6 @@ Original TestLodge ID: TC135
-
-Cleanup
-
-1. Uninstall Keyman build on the device.
-
-
-
---
**TEST_198**
@@ -676,13 +593,6 @@ Original TestLodge ID: TC138
-
-Cleanup
-
-1. Uninstall Keyman build on the device.
-
-
-
---
**TEST_200**
@@ -747,13 +657,6 @@ Original TestLodge ID: TC140
-
-Cleanup
-
-1. Uninstall Keyman build on the device.
-
-
-
---
**TEST_203**
@@ -815,13 +718,6 @@ Original TestLodge ID: TC143
-
-Cleanup
-
-1. Uninstall Keyman build on the device.
-
-
-
---
**TEST_205**
@@ -882,12 +778,6 @@ Original TestLodge ID: TC145
-
-Cleanup
-
-1. Uninstall Keyman build on the device.
-
-
**TEST_208**
Test case for MAIL app with Shortcuts,
@@ -946,13 +836,6 @@ Original TestLodge ID: TC148
-
-Cleanup
-
-1. Uninstall Keyman build on the device.
-
-
-
---
**TEST_210**
@@ -995,14 +878,6 @@ Original TestLodge ID: TC222
-
-Cleanup
-
-1. Uninstall Keyman build on the device.
-2. Uninstall Chrome browser.
-
-
-
---
**TEST_213**
@@ -1047,14 +922,6 @@ Original TestLodge ID: TC225
-
-Cleanup
-
-1. Uninstall Keyman build on the device.
-2. Uninstall Chrome browser.
-
-
-
---
**TEST_215**
@@ -1094,13 +961,6 @@ Original TestLodge ID: TC235
-
-Cleanup
-
-1. Uninstall Keyman build on the MAC
-
-
-
---
**TEST_218**
@@ -1142,14 +1002,6 @@ Original TestLodge ID: TC238
-
-Cleanup
-
-1. Uninstall Keyman build on the MAC
-SUITE_KMX_PROCESSOR_COMPLIANT_GROUP_LINUX:
-
-
-
---
**TEST_220**
@@ -1193,14 +1045,6 @@ Original TestLodge ID: TC250
-
-Cleanup
-
-1. Uninstall Keyman build on the device.
-2. Uninstall Chrome browser.
-
-
-
---
**TEST_223**
@@ -1245,14 +1089,6 @@ Original TestLodge ID: TC253
-
-Cleanup
-
-1. Uninstall Keyman build on the device.
-2. Uninstall Chrome browser.
-
-
-
---
**TEST_226**
@@ -1295,14 +1131,6 @@ Original TestLodge ID: TC266
-
-Cleanup
-
-1. Uninstall Keyman build on the macOS
-2. Uninstall the TextEdit app.
-
-
-
---
**TEST_228**
@@ -1345,14 +1173,6 @@ Original TestLodge ID: TC268
-
-Cleanup
-
-1. Uninstall Keyman build on the macOS
-2. Uninstall the TextEdit app.
-
-
-
---
**TEST_231**
@@ -1401,13 +1221,6 @@ Original TestLodge ID: TC286
-
-Cleanup
-
-1. Uninstall the Keyman build on the macOS.
-
-
-
---
**TEST_233**
@@ -1451,13 +1264,6 @@ Original TestLodge ID: TC288
-
-Cleanup
-
-1. Uninstall the Keyman build on the macOS.
-
-
-
---
**TEST_236**
@@ -1505,13 +1311,6 @@ Original TestLodge ID: TC291
-
-Cleanup
-
-1. Uninstall the Keyman build on the macOS.
-
-
-
---
**TEST_238**
@@ -1558,13 +1357,6 @@ Original TestLodge ID: TC293
-
-Cleanup
-
-1. Uninstall the Keyman build on the macOS.
-
-
-
---
**TEST_341**
@@ -1618,12 +1410,5 @@ TC - fix(mac): handle PackageInfo section in kmp.inf file #13876
-
-Cleanup
-
-1. Uninstall the Keyman build on macOS.
-
-
-
---
diff --git a/docs/tests/acceptance/web.md b/docs/tests/acceptance/web.md
index e8ca5f6b7d..c915c05517 100644
--- a/docs/tests/acceptance/web.md
+++ b/docs/tests/acceptance/web.md
@@ -36,7 +36,7 @@ Original TestLodge ID: TC162
1. Open Firefox browser in Windows OS.
2. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/433344:id/index.html' in the Search bar.
-3.Verify that the testing index page opens.
+3. Verify that the testing index page opens.
4. Click 'View Keymanweb use samples' link button.
5. Verify KeymanWeb Samples page opens.
6. Click 'Example1 - Toggle UI, all resources in same folder as page' link button.
@@ -45,7 +45,7 @@ Original TestLodge ID: TC162
9. Verify it produces ‘ŋ’
10. Open Chrome browser in Windows OS.
11. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/433344:id/index.html' in the Search bar.
-12.Verify that the testing index page opens.
+12. Verify that the testing index page opens.
13. Click 'View Keymanweb use samples' link button.
14. Verify KeymanWeb Samples page opens.
15. Click 'Example1 - Toggle UI, all resources in same folder as page' link button.
@@ -54,7 +54,7 @@ Original TestLodge ID: TC162
18. Verify it produces ‘ŋ’
19. Open Safari browser in macOS.
20. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/433344:id/index.html' in the Search bar.
-21.Verify that the testing index page opens.
+21. Verify that the testing index page opens.
22. Click 'View Keymanweb use samples' link button.
23. Verify KeymanWeb Samples page opens.
24. Click 'Example1 - Toggle UI, all resources in same folder as page' link button.
@@ -63,7 +63,7 @@ Original TestLodge ID: TC162
27. Verify it produces ‘ŋ’
28. Open Chrome browser in macOS.
29. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/433344:id/index.html' in the Search bar.
-30.Verify that the testing index page opens.
+30. Verify that the testing index page opens.
31. Click 'View Keymanweb use samples' link button.
32. Verify KeymanWeb Samples page opens.
33. Click 'Example1 - Toggle UI, all resources in same folder as page' link button.
@@ -72,7 +72,7 @@ Original TestLodge ID: TC162
36. Verify it produces ‘ŋ’
37. Open Firefox in macOS.
38. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/433344:id/index.html' in the Search bar.
-39.Verify that the testing index page opens.
+39. Verify that the testing index page opens.
40. Click 'View Keymanweb use samples' link button.
41. Verify KeymanWeb Samples page opens.
42. Click 'Example1 - Toggle UI, all resources in same folder as page' link button.
@@ -81,7 +81,7 @@ Original TestLodge ID: TC162
45. Verify it produces ‘ŋ’
46. Open Firefox in Linux OS.
47. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/433344:id/index.html' in the Search bar.
-48.Verify that the testing index page opens.
+48. Verify that the testing index page opens.
49. Click 'View Keymanweb use samples' link button.
50. Verify KeymanWeb Samples page opens.
51. Click 'Example1 - Toggle UI, all resources in same folder as page' link button.
@@ -141,7 +141,7 @@ Original TestLodge ID: TC163
1. Open Firefox browser in Windows OS.
2. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/433344:id/index.html' in the Search bar.
-3.Verify that the testing index page opens.
+3. Verify that the testing index page opens.
4. Click 'View Keymanweb use samples' link button.
5. Verify KeymanWeb Samples page opens.
6. Click 'Example1 - Toggle UI, all resources in same folder as page' link button.
@@ -151,7 +151,7 @@ Original TestLodge ID: TC163
10. Verify that the Khmer Angkor keyboard is added and displayed on the Screen.
11. Open Chrome browser in Windows OS.
12. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
-13.Verify that the testing index page opens.
+13. Verify that the testing index page opens.
14. Click 'View Keymanweb use samples' link button.
15. Verify KeymanWeb Samples page opens.
16. Click 'Example1 - Toggle UI, all resources in same folder as page' link button.
@@ -161,7 +161,7 @@ Original TestLodge ID: TC163
20. Verify that the Khmer Angkor keyboard is added and displayed on the Screen.
21. Open Safari browser in macOS.
22. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
-23.Verify that the testing index page opens.
+23. Verify that the testing index page opens.
24. Click 'View Keymanweb use samples' link button.
25. Verify KeymanWeb Samples page opens.
26. Click 'Example1 - Toggle UI, all resources in same folder as page' link button.
@@ -171,7 +171,7 @@ Original TestLodge ID: TC163
30. Verify that the Khmer Angkor keyboard is added and displayed on the Screen.
31. Open Chrome browser in macOS.
32. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
-33.Verify that the testing index page opens.
+33. Verify that the testing index page opens.
34. Click 'View Keymanweb use samples' link button.
35. Verify KeymanWeb Samples page opens.
36. Click 'Example1 - Toggle UI, all resources in same folder as page' link button.
@@ -181,7 +181,7 @@ Original TestLodge ID: TC163
40. Verify that the Khmer Angkor keyboard is added and displayed on the Screen.
41. Open Firefox browser in macOS.
42. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
-43.Verify that the testing index page opens.
+43. Verify that the testing index page opens.
44. Click 'View Keymanweb use samples' link button.
45. Verify KeymanWeb Samples page opens.
46. Click 'Example1 - Toggle UI, all resources in same folder as page' link button.
@@ -191,7 +191,7 @@ Original TestLodge ID: TC163
50. Verify that the Khmer Angkor keyboard is added and displayed on the Screen.
51. Open Firefox browser in Linux OS.
52. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
-53.Verify that the testing index page opens.
+53. Verify that the testing index page opens.
54. Click 'View Keymanweb use samples' link button.
55. Verify KeymanWeb Samples page opens.
56. Click 'Example1 - Toggle UI, all resources in same folder as page' link button.
@@ -252,7 +252,7 @@ Original TestLodge ID: TC164
1. Open Firefox browser in Windows OS.
2. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
-3.Verify that the testing index page opens.
+3. Verify that the testing index page opens.
4. Click 'View Keymanweb use samples' link button.
5. Verify KeymanWeb Samples page opens.
6. Click 'Example1 - Toggle UI, all resources in same folder as page' link button.
@@ -276,7 +276,7 @@ Original TestLodge ID: TC164
24. Verify it deletes the remaining letter on the screen.
25. Open Chrome browser in Windows OS.
22. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
-23.Verify that the testing index page opens.
+23. Verify that the testing index page opens.
24. Click 'View Keymanweb use samples' link button.
25. Verify KeymanWeb Samples page opens.
26. Click 'Example1 - Toggle UI, all resources in same folder as page' link button.
@@ -300,7 +300,7 @@ Original TestLodge ID: TC164
40. Verify it deletes the remaining letter on the screen.
41. Open Safari browser in macOS
42. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
-43.Verify that the testing index page opens.
+43. Verify that the testing index page opens.
44. Click 'View Keymanweb use samples' link button.
45. Verify KeymanWeb Samples page opens.
46. Click 'Example1 - Toggle UI, all resources in same folder as page' link button.
@@ -324,7 +324,7 @@ Original TestLodge ID: TC164
64. Verify it deletes the remaining letter on the screen.
61. Open Chrome browser in macOS.
62. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
-63.Verify that the testing index page opens.
+63. Verify that the testing index page opens.
64. Click 'View Keymanweb use samples' link button.
65. Verify KeymanWeb Samples page opens.
66. Click 'Example1 - Toggle UI, all resources in same folder as page' link button.
@@ -348,7 +348,7 @@ Original TestLodge ID: TC164
84. Verify it deletes the remaining letter on the screen.
85. Open Firefox browser in macOS.
86. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
-87.Verify that the testing index page opens.
+87. Verify that the testing index page opens.
88. Click 'View Keymanweb use samples' link button.
89. Verify KeymanWeb Samples page opens.
90. Click 'Example1 - Toggle UI, all resources in same folder as page' link button.
@@ -372,7 +372,7 @@ Original TestLodge ID: TC164
108. Verify it deletes the remaining letter on the screen.
101. Open Firefox browser in Linux OS.
102. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
-103.Verify that the testing index page opens.
+103. Verify that the testing index page opens.
104. Click 'View Keymanweb use samples' link button.
105. Verify KeymanWeb Samples page opens.
106. Click 'Example1 - Toggle UI, all resources in same folder as page' link button.
@@ -447,7 +447,7 @@ Original TestLodge ID: TC165
1. Open Firefox browser in Windows OS.
2. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
-3.Verify that the testing index page opens.
+3. Verify that the testing index page opens.
4. Click 'View Keymanweb use samples' link button.
5. Verify KeymanWeb Samples page opens.
6. Click 'Example1 - Toggle UI, all resources in same folder as page' link button.
@@ -458,7 +458,7 @@ Original TestLodge ID: TC165
11. Verify that a Spanish keyboard is added to the list.
12. Open Chrome browser in Windows OS.
13. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
-14.Verify that the testing index page opens.
+14. Verify that the testing index page opens.
15. Click 'View Keymanweb use samples' link button.
16. Verify KeymanWeb Samples page opens.
17. Click 'Example1 - Toggle UI, all resources in same folder as page' link button.
@@ -469,7 +469,7 @@ Original TestLodge ID: TC165
22. Verify that a Spanish keyboard is added to the list.
23. Open Safari browser in macOS.
24. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
-25.Verify that the testing index page opens.
+25. Verify that the testing index page opens.
26. Click 'View Keymanweb use samples' link button.
27. Verify KeymanWeb Samples page opens.
28. Click 'Example1 - Toggle UI, all resources in same folder as page' link button.
@@ -480,7 +480,7 @@ Original TestLodge ID: TC165
33. Verify that a Spanish keyboard is added to the list.
34. Open Chrome browser in macOS.
35. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
-36.Verify that the testing index page opens.
+36. Verify that the testing index page opens.
37. Click 'View Keymanweb use samples' link button.
38. Verify KeymanWeb Samples page opens.
39. Click 'Example1 - Toggle UI, all resources in same folder as page' link button.
@@ -491,7 +491,7 @@ Original TestLodge ID: TC165
44. Verify that a Spanish keyboard is added to the list.
45. Open Firefox browser in macOS.
46. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
-47.Verify that the testing index page opens.
+47. Verify that the testing index page opens.
48. Click 'View Keymanweb use samples' link button.
49. Verify KeymanWeb Samples page opens.
50. Click 'Example1 - Toggle UI, all resources in same folder as page' link button.
@@ -502,7 +502,7 @@ Original TestLodge ID: TC165
55. Verify that a Spanish keyboard is added to the list.
56. Open Firefox browser in Linux OS.
57. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
-58.Verify that the testing index page opens.
+58. Verify that the testing index page opens.
59. Click 'View Keymanweb use samples' link button.
60. Verify KeymanWeb Samples page opens.
61. Click 'Example1 - Toggle UI, all resources in same folder as page' link button.
@@ -564,7 +564,7 @@ Original TestLodge ID: TC166
1. Open Firefox browser in Windows OS.
2. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
-3.Verify that the testing index page opens.
+3. Verify that the testing index page opens.
4. Click 'View Keymanweb use samples' link button.
5. Verify KeymanWeb Samples page opens.
6. Click 'Example1 - Toggle UI, all resources in same folder as page' link button.
@@ -677,7 +677,7 @@ Original TestLodge ID: TC167
45. Type d.
46. Verify that the final letter should be xdx.
47. Open Chrome browser in Windows OS.
-48.Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
+48. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
49. Verify that the testing index page opens.
50. Click 'View Keymaweb website-oriented manual test pages' link button.
51. Verify KeymanWeb Samples page opens.
@@ -951,7 +951,7 @@ Original TestLodge ID: TC169
Action
1. Open Firefox browser in Linux OS.
-2.Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
+2. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
3. Verify that the testing index page opens.
4. Click 'View Keymaweb website-oriented manual test pages' link button.
5. Verify KeymanWeb Samples page opens.
@@ -1176,7 +1176,7 @@ Original TestLodge ID: TC171
11. Click / touch a blank area of the page.
12. Verify that the OSK should automatically hide.
13. Open Chrome in windows OS.
-14.Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
+14. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
15. Verify that the testing index page opens.
16. Click 'Tests the new Attachment/Enablement API functionality' link button.
17. Verify KeymanWeb Samples - Attachment API Testing page opens.
@@ -1293,8 +1293,8 @@ Original TestLodge ID: TC172
1. Open Firefox browser in Windows OS.
2. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
-3.Verify that the testing index page opens.
-4.Click 'Tests the new Attachment/Enablement API functionality' link button.
+3. Verify that the testing index page opens.
+4. Click 'Tests the new Attachment/Enablement API functionality' link button.
5. Verify KeymanWeb Samples - Attachment API Testing page opens.
6. Click the ‘Create Inputs’ button one time.
7. Click the ‘Create Textarea’ button one time.
@@ -1451,7 +1451,7 @@ Verify KeymanWeb Samples - Attachment API Testing page opens.
15. Click Dynamic area #2.
16. Verify that the Lao keyboard should be displayed.
17. Open Chrome browser in Windows OS.
-18.Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
+18. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
19. Verify that the testing index page opens.
20. Click 'Tests the new Attachment/Enablement API functionality' link button.
21. Verify KeymanWeb Samples - Attachment API Testing page opens.
@@ -1523,7 +1523,7 @@ Verify KeymanWeb Samples - Attachment API Testing page opens.
87. Click Dynamic area #2.
88. Verify that the Lao keyboard should be displayed.
89. Open Firefox browser in macOS.
-90.Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
+90. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
91. Verify that the testing index page opens.
92. Click 'Tests the new Attachment/Enablement API functionality' link button.
93. Verify KeymanWeb Samples - Attachment API Testing page opens.
@@ -1628,7 +1628,7 @@ Original TestLodge ID: TC174
15. Type 2.
16. Verify the second option should replace the context.
17. Open Chrome browser in Windows OS.
-18.Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
+18. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
19. Verify that the testing index page opens.
20. Click 'View Keymaweb website-oriented manual test pages' link button.
21. Verify KeymanWeb Samples page opens.
@@ -1644,7 +1644,7 @@ Original TestLodge ID: TC174
31. Type 2.
32. Verify the second option should replace the context.
33. Open Safari browser in macOS.
-34.Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
+34. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
35. Verify that the testing index page opens.
36. Click 'View Keymaweb website-oriented manual test pages' link button.
37. Verify KeymanWeb Samples page opens.
@@ -1692,7 +1692,7 @@ Original TestLodge ID: TC174
80. Type 2.
81. Verify the second option should replace the context.
82. Open Firefox in Linux OS.
-83.Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
+83. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
84. Verify that the testing index page opens.
85. Click 'View Keymaweb website-oriented manual test pages' link button.
86. Verify KeymanWeb Samples page opens.
@@ -1760,10 +1760,10 @@ Original TestLodge ID: TC175
1. Open Firefox browser in Windows OS.
2. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
-3.Verify that the testing index page opens.
+3. Verify that the testing index page opens.
4. Click 'View Keymaweb website-oriented manual test pages' link button.
5. Verify KeymanWeb Samples page opens.
-6.Click 'Test unminified Keymanweb' link button.
+6. Click 'Test unminified Keymanweb' link button.
7. Verify the corresponding KeymaWeb Sample page opens.
8. Type 'japanese' under "Add a keyboard by keyboard name" text box.
9. Click Add button.
@@ -1843,7 +1843,7 @@ Original TestLodge ID: TC175
83. Verify that the OSK should remain visible.
84. Verify the caret should move from the input control to the textarea control.
85. Open Chrome browser in macOS.
-86.Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
+86. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
87. Verify that the testing index page opens.
88. Click 'View Keymaweb website-oriented manual test pages' link button.
89. Verify KeymanWeb Samples page opens.
@@ -2028,7 +2028,7 @@ Original TestLodge ID: TC176
49. Verify that the letter ‘ŋ’ appears on the text input screen.
50. Click the Safari browser in iPad Tablet.
51. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
-52.Verify that the testing index page opens.
+52. Verify that the testing index page opens.
53. Click 'View Keymanweb use samples' link button.
54. Verify KeymanWeb Samples page opens.
55. Click 'Example1 - Toggle UI, all resources in same folder as page' link button.
@@ -2039,7 +2039,7 @@ Original TestLodge ID: TC176
60. Long-press ‘n’ key, while keeping the finger down, move on the long-press options ‘ŋ‘ so it's highlighted, and release.
61. Verify that the letter ‘ŋ’ appears on the text input screen.
62. Click the Safari browser in the iPad Tablet with a physical keyboard.
-63.Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
+63. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
64. Verify that the testing index page opens.
65. Click 'View Keymanweb use samples' link button.
66. Verify KeymanWeb Samples page opens.
@@ -2262,7 +2262,7 @@ Original TestLodge ID: TC178
48. Hit Backspace key.
49. Verify that it shows an empty text area.
50. Click the Safari browser in an iPhone Mobile.
-51.Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
+51. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
52. Verify that the testing index page opens.
53. Click 'View Keymanweb use samples' link button.
54. Verify KeymanWeb Samples page opens.
@@ -2432,7 +2432,7 @@ Original TestLodge ID: TC179
20. Click the Add button.
21. Verify that the Spanish keyboard is added to the list.
22. Click Safari browser in an iPhone Mobile.
-23.Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
+23. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
24. Verify that the testing index page opens.
25. Click 'View Keymanweb use samples' link button.
26. Verify KeymanWeb Samples page opens.
@@ -2807,7 +2807,7 @@ Original TestLodge ID: TC182
8. Verify that manual attachment mode results in a page with no KMW-activated controls.
9. Verify that the KeymanWeb is properly attached to and detaches from each relevant type of control with the page’s API-interface controls.
10. Click the Chrome browser icon in an Android Mobile device attached with a physical keyboard.
-11.Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
+11. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
12. Verify that the testing index page opens.
13. Click 'View Keymanweb website-oriented manual test pages' link button.
14. Verify KeymanWeb 17 Testing page opens.
@@ -3081,7 +3081,7 @@ Original TestLodge ID: TC184
16. Click / touch a blank area of the page.
17. Verify that the OSK should automatically hide.
18. Click the Chrome browser in Android mobile attached with physical keyboard
-19.Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
+19. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
20. Verify that the testing index page opens.
21. Click 'View Keymanweb website-oriented manual test pages' link button.
22. Verify KeymanWeb 17 Testing page opens.
@@ -3132,7 +3132,7 @@ Original TestLodge ID: TC184
73. Click / touch a blank area of the page.
74. Verify that the OSK should automatically hide.
75. Click the Safari browser icon on the iPad device.
-76.Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
+76. Enter ‘https://build.palaso.org/repository/download/Keymanweb_TestPullRequests/391530:id/index.html' in the Search bar.
77. Verify that the testing index page opens.
78. Click 'View Keymanweb website-oriented manual test pages' link button.
79. Verify KeymanWeb 17 Testing page opens.
diff --git a/docs/tests/acceptance/windows.md b/docs/tests/acceptance/windows.md
index b8edc32dc9..dce81ce2f9 100644
--- a/docs/tests/acceptance/windows.md
+++ b/docs/tests/acceptance/windows.md
@@ -1,5 +1,20 @@
# Windows Acceptance Tests
+### Clean up instructions for manual tests
+For all these acceptance steps to perform a `cleanup` Uninstall Keyman and any third-party applications installed as part for the `Setup` steps.
+
+If an installation becomes corrupted and it is not possible to uninstall `Keyman for Windows` through `Add or remove programs`, clean up the files in the following folders if they exist.
+
+- %ProgramFiles(x86)%\Keyman or %ProgramFiles%\Keyman
+- %CommonProgramFiles(x86)%\Keyman or %CommonProgramFiles%\Keyman
+- %ProgramData%\Keyman
+- %AppData%\Keyman
+- %LocalAppData%\Keyman
+
+If still having trouble remove the registry values at
+- HKCU\Software\Keyman
+- HKLM\Software\Wow6432Node\Keyman
+
**TEST_1**
Test case for INSTALL Keyman
@@ -56,21 +71,6 @@ Original TestLodge ID: TC01
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the Keyman Uninstallation completed successfully.
-
-
-
---
**TEST_2**
@@ -134,21 +134,6 @@ Original TestLodge ID: TC02
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_3**
@@ -203,21 +188,6 @@ Original TestLodge ID: TC03
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_4**
@@ -269,21 +239,6 @@ Original TestLodge ID: TC04
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_5**
@@ -328,21 +283,6 @@ Original TestLodge ID: TC05
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.yman 16.0’ from the list.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_6**
@@ -367,9 +307,9 @@ Original TestLodge ID: TC06
Setup
-1.Install Keyman latest Stable build from Keyman.com site.
-2.Install CapsLock Keyboard.
-3.CapsLock is currently on
+1. Install Keyman latest Stable build from Keyman.com site.
+2. Install CapsLock Keyboard.
+3. CapsLock is currently on
4. Currently active keyboard is the CapsLock Keyboard.
@@ -384,21 +324,6 @@ Original TestLodge ID: TC06
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_7**
@@ -423,10 +348,10 @@ Original TestLodge ID: TC07
Setup
-1.Install Keyman latest Stable build from Keyman.com Site.
-2.Install CapsLock Keyboard.
+1. Install Keyman latest Stable build from Keyman.com Site.
+2. Install CapsLock Keyboard.
3. CapsLock is currently on
-4.Currently active keyboard is the CapsLock Keyboard.
+4. Currently active keyboard is the CapsLock Keyboard.
@@ -440,21 +365,6 @@ Original TestLodge ID: TC07
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_8**
@@ -496,21 +406,6 @@ Original TestLodge ID: TC08
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_9**
@@ -552,21 +447,6 @@ Original TestLodge ID: TC09
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_10**
@@ -608,21 +488,6 @@ Original TestLodge ID: TC10
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_11**
@@ -667,21 +532,6 @@ Original TestLodge ID: TC11
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_12**
@@ -728,21 +578,6 @@ Original TestLodge ID: TC12
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_13**
@@ -789,21 +624,6 @@ Original TestLodge ID: TC13
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_14**
@@ -848,21 +668,6 @@ Original TestLodge ID: TC14
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_15**
@@ -908,21 +713,6 @@ Original TestLodge ID: TC15
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_16**
@@ -964,21 +754,6 @@ Original TestLodge ID: TC16
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_17**
@@ -1022,21 +797,6 @@ Original TestLodge ID: TC17
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_18**
@@ -1081,21 +841,6 @@ Original TestLodge ID: TC18
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_19**
@@ -1139,21 +884,6 @@ Original TestLodge ID: TC19
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_20**
@@ -1198,21 +928,6 @@ Original TestLodge ID: TC20
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_21**
@@ -1273,21 +988,6 @@ Original TestLodge ID: TC21
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_22**
@@ -1331,21 +1031,6 @@ Original TestLodge ID: TC22
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_23**
@@ -1389,21 +1074,6 @@ Original TestLodge ID: TC23
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_24**
@@ -1462,21 +1132,6 @@ Original TestLodge ID: TC24
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_25**
@@ -1535,21 +1190,6 @@ Original TestLodge ID: TC25
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_26**
@@ -1582,7 +1222,7 @@ Original TestLodge ID: TC26
6. Create New>DWORD(32-bit) key.
7. Rename ‘ShowIMWindowAlways’ to the new DWORD key.
8. Set the Key value to1
-9.This keyboard uses the letters aeom to allow IMX input. This time a IM window should display.
+9. This keyboard uses the letters aeom to allow IMX input. This time a IM window should display.
@@ -1607,21 +1247,6 @@ Original TestLodge ID: TC26
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_27**
@@ -1667,21 +1292,6 @@ Original TestLodge ID: TC27
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_28**
@@ -1727,21 +1337,6 @@ Original TestLodge ID: TC28
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_29**
@@ -1789,21 +1384,6 @@ Original TestLodge ID: TC29
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_30**
@@ -1851,21 +1431,6 @@ Original TestLodge ID: TC30
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_31**
@@ -1910,21 +1475,6 @@ Original TestLodge ID: TC31
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_32**
@@ -1969,21 +1519,6 @@ Original TestLodge ID: TC32
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_33**
@@ -2032,21 +1567,6 @@ Original TestLodge ID: TC33
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_34**
@@ -2091,21 +1611,6 @@ Original TestLodge ID: TC34
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_35**
@@ -2141,19 +1646,7 @@ Original TestLodge ID: TC186
2. Change the directory path to where we downloaded the Keyman Alpha Build.
3. Type the command : keyman latest version number.exe -o (say “17.0.210.exe -o”).
4. Verify that the self extract process happened without any errors.
-5.) Verify the build was installed successfully without showing any error messages.
-
-
-
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Click the Control Panel option.
-3. Click the ‘Uninstall a Program’ option.
-4. Select the installed Keyman version from the list.
-5. Click the Uninstall option.
-6. Verify that the keyman uninstallation was completed successfully.
+5. ) Verify the build was installed successfully without showing any error messages.
@@ -2213,21 +1706,6 @@ Original TestLodge ID: TC187
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Task bar)
-2. Verify that the ‘Control panel’ appears in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the the Keyman Uninstallation completed successfully
-
-
-
---
**TEST_38**
@@ -2270,21 +1748,6 @@ Original TestLodge ID: TC205
-
-Cleanup
-
-1. Type ‘Control panel’ in the Search bar (in Taskbar)
-2. Verify that the ‘Control panel’ appeared in the menu list.
-3. Click the Control panel option.
-4. Verify that the Control Panel dialog appeared.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the Keyman Uninstallation was completed successfully
-
-
-
---
**TEST_41**
@@ -2326,14 +1789,6 @@ Original TestLodge ID: TC218
-
-Cleanup
-
-1. Uninstall Keyman build on the Windows
-2. Uninstall the TextEdit app.
-
-
-
---
**TEST_43**
@@ -2376,14 +1831,6 @@ Original TestLodge ID: TC220
-
-Cleanup
-
-1. Uninstall Keyman build on the Windows
-2. Uninstall the TextEdit app.
-
-
-
---
**TEST_46**
@@ -2425,13 +1872,6 @@ Original TestLodge ID: TC232
-
-Cleanup
-
-1. Uninstall Keyman build on the Windows
-
-
-
---
**TEST_48**
@@ -2473,13 +1913,6 @@ Original TestLodge ID: TC234
-
-Cleanup
-
-1. Uninstall Keyman build on the Windows
-
-
-
---
**TEST_51**
@@ -2522,14 +1955,6 @@ Original TestLodge ID: TC246
-
-Cleanup
-
-1. Uninstall Keyman build on the Windows
-2. Uninstall the TextEdit app.
-
-
-
---
**TEST_53**
@@ -2572,14 +1997,6 @@ Original TestLodge ID: TC248
-
-Cleanup
-
-1. Uninstall Keyman build on the Windows
-2. Uninstall the TextEdit app.
-
-
-
---
**TEST_56**
@@ -2622,14 +2039,6 @@ Original TestLodge ID: TC261
-
-Cleanup
-
-1. Uninstall Keyman build on the Windows
-2. Uninstall the WordPad app.
-
-
-
---
**TEST_58**
@@ -2672,14 +2081,6 @@ Original TestLodge ID: TC263
-
-Cleanup
-
-1. Uninstall Keyman build on the Windows
-2. Uninstall the WordPad app.
-
-
-
---
**TEST_61**
@@ -2733,21 +2134,6 @@ Original TestLodge ID: TC295
-
-Cleanup
-
-1. Type ‘Control panel’ in the search bar (in the taskbar)
-2. Verify that the ‘Control Panel’ appears in the menu list.
-3. Click the Control Panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the Keyman Uninstallation was completed successfully.
-
-
-
---
**TEST_304**
@@ -2809,21 +2195,6 @@ TC - feat(windows): kmshell switch handling for the installing state_TEST_INSTAL
-
-Cleanup
-
-1. Type ‘Control panel’ in the search bar (in the task bar)
-2. Verify that the ‘Control Panel’ appears in the menu list.
-3. Click the Control Panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the Keyman Uninstallation was completed successfully.
-
-
-
---
**TEST_309**
@@ -2887,21 +2258,6 @@ TC - fix(windows): handle keyboard package not downloaded #12948
-
-Cleanup
-
-1. Type ‘Control panel’ in the search bar (in the task bar)
-2. Verify that the ‘Control Panel’ appears in the menu list.
-3. Click the Control Panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the Keyman Uninstallation was completed successfully.
-
-
-
---
**TEST_324**
@@ -2950,17 +2306,3 @@ TC - feat(windows): UI layout for update tab_TEST_UI_UPDATES_KBD #12840
-
-Cleanup
-
-1. Type ‘Control panel’ in the search bar (in the task bar)
-2. Verify that the ‘Control Panel’ appears in the menu list.
-3. Click the Control Panel option.
-4. Verify that the Control Panel dialog appears.
-5. Click the ‘Uninstall a Program’ option.
-6. Verify that the Programs and Features dialog box opens.
-7. Select the installed Keyman version from the list.
-8. Click the Uninstall option.
-9. Verify that the Keyman Uninstallation was completed successfully.
-
-
diff --git a/ios/tools/prepRelease.sh b/ios/tools/prepRelease.sh
index c54748b548..6c2c38e1af 100755
--- a/ios/tools/prepRelease.sh
+++ b/ios/tools/prepRelease.sh
@@ -25,9 +25,9 @@ if [ -d "upload" ]; then
rm -rf upload
fi
-#Include script dependency
-. $KEYMAN_ROOT/resources/build/history/history-utils.sh #includes the following
-#. ../resources/build/utils.inc.sh
+# Include script dependency
+. "$KEYMAN_ROOT/resources/build/utils.inc.sh"
+
BUILD_NUMBER="${KEYMAN_VERSION}"
@@ -36,8 +36,6 @@ CHANGELOG_PATH="upload/$BUILD_NUMBER/$KEYMAN_CHANGELOG"
WORK_DIR=`pwd`
-BUILD_COUNTER="$((${BUILD_NUMBER##*.}))"
-
UPLOAD_BASE="upload"
UPLOAD_FOLDER="${BUILD_NUMBER}"
UPLOAD_DIR="${UPLOAD_BASE}/${UPLOAD_FOLDER}"
@@ -47,8 +45,8 @@ mkdir -p "${UPLOAD_DIR}"
# First, we prep the files for publication: write changelog
echo "Writing changelog to $CHANGELOG_PATH"
-get_version_notes "ios" "${BUILD_NUMBER}" "$KEYMAN_TIER" > $CHANGELOG_PATH
-echo "* Minor fixes and performance improvements" >> $CHANGELOG_PATH
+echo "* Minor fixes and performance improvements" > $CHANGELOG_PATH
+echo "* See keyman.com/ios for full change history" >> $CHANGELOG_PATH
# Strip emoji as App Store does not allow emoji in changelogs
node "$KEYMAN_ROOT/resources/tools/strip-emoji" < "$CHANGELOG_PATH" > "$CHANGELOG_PATH.1"
diff --git a/linux/debian/changelog b/linux/debian/changelog
index e2e8f9afdd..971042b075 100644
--- a/linux/debian/changelog
+++ b/linux/debian/changelog
@@ -1,8 +1,17 @@
-keyman (18.0.249-1) UNRELEASED; urgency=medium
+keyman (18.0.253-1) UNRELEASED; urgency=medium
- * Add procps dependency (closes: 1136515)
+ * Add procps dependency (closes: #1136515)
- -- Eberhard Beilharz Mon, 18 May 2026 18:06:49 +0200
+ -- Eberhard Beilharz Tue, 06 Oct 2026 11:05:30 +0200
+
+keyman (18.0.248-2) unstable; urgency=medium
+
+ * Team upload.
+ * debian/patches/e77d2432ef91465e72460b32e5bc3e870b77fe9c.patch:
+ Backport upstream patch to fix FTBFS due to pkg_resources.
+ (Closes: #1149425)
+
+ -- Boyuan Yang Wed, 30 Sep 2026 10:39:04 -0400
keyman (18.0.248-1) unstable; urgency=medium
diff --git a/resources/build/builder-basic.inc.sh b/resources/build/builder-basic.inc.sh
index f016b3dc1e..ddb321a271 100644
--- a/resources/build/builder-basic.inc.sh
+++ b/resources/build/builder-basic.inc.sh
@@ -151,6 +151,9 @@ function _builder_basic_find_version() {
export KEYMAN_VERSION_ENVIRONMENT
export KEYMAN_VERSION_GIT_TAG
export KEYMAN_VERSION_FOR_FILENAME
+ export KEYMAN_TIER
+ export UPLOAD_SENTRY
+ export BUILDER_OS
}
function _builder_basic_find_tier() {
diff --git a/resources/build/history/history-utils.sh b/resources/build/history/history-utils.sh
deleted file mode 100755
index 9a1f8f6b5e..0000000000
--- a/resources/build/history/history-utils.sh
+++ /dev/null
@@ -1,199 +0,0 @@
-#!/usr/bin/env bash
-
-#set -x
-#DEBUG=1
-
-_hu_base_dir=$(dirname "$BASH_SOURCE")/../../..
-
-. $_hu_base_dir/resources/build/utils.inc.sh
-
-_hu_debug() {
- if [[ ! -z ${DEBUG+x} ]] && [[ $DEBUG == 1 ]]; then echo "$1"; fi
-}
-
-get_history_file_path() {
- history_file_path="$_hu_base_dir/HISTORY.md"
-}
-
-# Creates and initializes a variable called `history_file` that contains the raw content
-# of the specified project's `history.md` file.
-get_history_file() {
- get_history_file_path
-
- history_file=`cat $history_file_path`
-}
-
-### Parsing Utilities ###
-enum_line_types=("version-header", "title", "whitespace", "listitem", "other")
-
-# Title Match: # Keyman Version History
-# ${BASH_REMATCH[1]} - history.md's "Title" text.
-re_title="^#[^#](.+)"
-
-# Release Subtitle Match: ## version tier date
-# Example: ## 14.0.2 alpha 2020-02-02
-# ${BASH_REMATCH[1]} - version
-# ${BASH_REMATCH[2]} - tier
-# ${BASH_REMATCH[3]} - publishing date
-re_header="^##[[:space:]]*([0-9]+\.[0-9]+\.[0-9]+)[[:space:]]*(alpha|beta|stable)[[:space:]]*([0-9]{4}-[0-9]{2}-[0-9]{2})"
-
-# Entry in release log
-# ${BASH_REMATCH[1]} - the full line of text
-re_item="(.+)"
-
-# Checks that it's a simple line of whitespace.
-re_blank="^[[:space:]]*$"
-
-re_v_major="^([0-9]+)\.[0-9]+"
-re_v_alpha="^([0-9]+\.[0-9]+)"
-re_v_build="^[0-9]+\.[0-9]+\.([0-9]+)"
-
-### Core Parsing ###
-
-# $1 - should be the $line being processed.
-get_line_type() {
- line_type="other"
-
- if [[ "$1" =~ $re_title ]]; then
- line_type="title"
- elif [[ "$1" =~ $re_header ]]; then
- line_type="version-header"
- line_version="${BASH_REMATCH[1]}"
- line_tier="${BASH_REMATCH[2]}"
- line_date="${BASH_REMATCH[3]}"
- elif [[ "$1" =~ $re_blank ]]; then
- line_type="whitespace"
- elif [[ "$1" =~ $re_item ]]; then
- line_type="listitem"
- fi
-
- # This section is quite useful for debugging purposes.
- #if [[ $line_type != "other" ]]; then
- _hu_debug "$line_type: $1"
- #fi
-}
-
-# $1 - the markdown block to be processed. May be the subset of a file, rather than its full body.
-# $2 - a shell script command to be performed on the line. Shell script functors!
-# $3, $4 - external arguments provided to the shell script command.
-process_history_loop() {
- # Grabs one line from the specified file at a time.
- #printf "%s\n" "$1" | while IFS= read -r line || [[ -n "$line" ]]; do
- while IFS= read -r line || [[ -n "$line" ]]; do
- # Do things with the $line.
- # Like, what kind of $line is this?
- $2 "$line" "$3" "$4" "$5"
- done <<< "$1" # The triple <<< forces the loop to evaluate within the same script, preserving variable changes.
-}
-
-### Version Changelog Extraction ###
-
-# $1 - a full version string (likely in major.minor.build form)
-# Returns $v_alpha, containing only major.minor if it may be extracted. Returns $1 if not.
-get_alpha_version() {
- [[ $1 =~ $re_v_alpha ]]
- if [ ! -z ${BASH_REMATCH[1]} ]; then
- v_alpha=${BASH_REMATCH[1]}
- else
- v_alpha=$1
- fi
-}
-
-# $1 - a full version string
-# Returns $v_build, containing the final .build portion of a major.minor.build version number.
-# If missing, returns an empty string.
-get_build_number() {
- [[ "$1" =~ $re_v_build ]]
- if [ ! -z "${BASH_REMATCH[1]}" ]; then
- v_build="${BASH_REMATCH[1]}"
- else
- v_build=
- fi
-}
-
-# Used internally by get_version_notes, passed as a pseudo-functor to process_history_loop.
-get_version_helper() {
- local line="$1"
- local version="$2"
- local tier="$3"
- local product="$4"
- get_line_type "$line"
-
- if [ $in_block = true ]; then
- if [[ $line_type = "version-header" ]]; then
- in_block=false
- elif [[ $line_type = "listitem" ]]; then
- if [[ "$product" == "ios" ]]; then
- # We have to filter out other platforms to satisfy Apple
- if [[ "$line" =~ \(ios|web|common ]]; then
- echo "$line" | sed -e "s/Android/mobile platform/"
- fi
- else
- if [[ "$line" =~ "\($product|web|common" ]]; then
- echo "$line"
- fi
- fi
- elif [[ $line_type = "whitespace" ]]; then
- echo "";
- fi
- else
- v= # Must be cleared initially for the test to work correctly!
- t=
- d=
-
- if [[ $line_type = "version-header" ]]; then
- d="$line_date"
- v="$line_version"
- t="$line_tier"
- fi
-
- # Splits the version numbers into their components to facilitate finding
- # 1) the FIRST version in history.md
- # 2) with equal to or lesser version
- # 3) of the same tier.
- if [[ "$v" != "" && "$t" = "$tier" && $version_found = false ]]; then
- get_alpha_version "$v"
- get_build_number "$v"
-
- found_v="$v_alpha"
- found_b="$v_build"
-
- get_alpha_version "$version"
- get_build_number "$version"
-
- search_v="$v_alpha"
- search_b="$v_build"
-
- if [[ "$found_v" = "$search_v" && ( $found_b -le $search_b ) ]]; then
- in_block=true
- version_found=true
-
- if [[ -n $d ]]; then
- echo "Published on $d."
- fi
- fi
- fi
- fi
-}
-
-# $1 - the product whose version notes we wish to obtain
-# $2 - the version number to be obtained.
-# $3 - the tier of the product to be obtained (alpha, beta, stable)
-get_version_notes() {
- # State-tracking variable(s).
- in_block=false
- version_found=false
-
- local vn_product=$1
- local vn_version=$2
- local vn_tier=$3
-
- get_history_file
- process_history_loop "${history_file}" get_version_helper "$vn_version" "$vn_tier" "$vn_product"
-
- if [ $version_found = false ]; then
- builder_die "Could not find changelog information for $vn_product version $vn_version $vn_tier."
- fi
-}
-
-### End Version Changelog Extraction ###
\ No newline at end of file
diff --git a/resources/build/history/validate-all-history.sh b/resources/build/history/validate-all-history.sh
deleted file mode 100755
index 69b4b12c53..0000000000
--- a/resources/build/history/validate-all-history.sh
+++ /dev/null
@@ -1,15 +0,0 @@
-#!/usr/bin/env bash
-
-echo "**TODO** Update script to work with new history/versioning"
-exit 1
-
-FAIL=0
-./validateHistory.sh android || FAIL=$(($FAIL + 1))
-./validateHistory.sh desktop || FAIL=$(($FAIL + 2))
-./validateHistory.sh developer || FAIL=$(($FAIL + 4))
-./validateHistory.sh ios || FAIL=$(($FAIL + 8))
-./validateHistory.sh linux || FAIL=$(($FAIL + 16))
-./validateHistory.sh mac || FAIL=$(($FAIL + 32))
-./validateHistory.sh web || FAIL=$(($FAIL + 64))
-echo Final status = $FAIL
-exit $FAIL
diff --git a/resources/build/history/validate-history.sh b/resources/build/history/validate-history.sh
deleted file mode 100755
index 8242c13d32..0000000000
--- a/resources/build/history/validate-history.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-echo "**TODO** Update script to work with new history/versioning"
-exit 1
-
-_hu_base_dir=$(dirname "$BASH_SOURCE")/..
-
-. $_hu_base_dir/resources/historyUtils.sh
-
-# Insert the shorthand for a platform as the command-line argument.
-validate_history_file "$1"
\ No newline at end of file
diff --git a/resources/build/minimum-versions.inc.sh b/resources/build/minimum-versions.inc.sh
index aa6d9f4c18..27dd458233 100644
--- a/resources/build/minimum-versions.inc.sh
+++ b/resources/build/minimum-versions.inc.sh
@@ -32,6 +32,7 @@ KEYMAN_MIN_VERSION_EMSCRIPTEN=3.1.64 # Use KEYMAN_USE_EMSDK to automati
KEYMAN_MIN_VERSION_VISUAL_STUDIO=2022 # Visual Studio 2022, see /docs/build/windows.md for workloads and components
KEYMAN_MIN_VERSION_MESON=1.0.0 # TODO: rename meson_options.txt to meson.options when updating to >= 1.1, see #15127.
KEYMAN_VERSION_XCODE=26.2 # XCode 26.2 is the current supported version; download from https://developer.apple.com/download/all/
+KEYMAN_VERSION_SENTRY_CLI=1.70.0 # sentry-cli used to upload debug information to Sentry during CI
KEYMAN_VERSION_GRADLE=8.12 # See /android/KMEA/gradle/wrapper/gradle-wrapper.properties
@@ -52,4 +53,4 @@ KEYMAN_VERSION_ISO639_3=2026-08-17 # Date of last import
KEYMAN_VERSION_LANGTAGS=2026-06-09 # _version value
KEYMAN_VERSION_LANGTAGS_API=1.4 # Langtags API version supported
KEYMAN_VERSION_LANGUAGE_SUBTAG_REGISTRY=2026-08-08 # Date from first line of language-subtag-registry
-KEYMAN_VERSION_UNICODE=17.0.0 # UCD + related data
\ No newline at end of file
+KEYMAN_VERSION_UNICODE=17.0.0 # UCD + related data
diff --git a/web/docs/engine/whatsnew.md b/web/docs/engine/whatsnew.md
index ec1bed654d..0fc143f547 100644
--- a/web/docs/engine/whatsnew.md
+++ b/web/docs/engine/whatsnew.md
@@ -2,6 +2,42 @@
title: What's New in KeymanWeb 20.0
---
+* **BREAKING** `file:` protocol is no longer supported, as keyboards are loaded
+ with `fetch()` API (#12334)
+* Bug fix: the `keyboardloaded` event now fires only once per loaded keyboard.
+ Previously the event fired twice. (#16297)
+* Fixed `loaduserinterface` and `unloaduserinterface` events to fire
+ consistently (#16353)
+* Clarified use of asynchronous APIs (such as `addKeyboards()`) (#16064)
+* Cleanup of various examples (#16064)
+* Addressed several bugs with control of active keyboard (#16524)
+* Removed `keyman.FocusLastActiveElement()` (use
+ `keyman.focusLastActiveElement()`) (#16170)
+* Removed `keyman.GetLastActiveElement()` (use `keyman.getLastActiveElement()`)
+ (#16170)
+* Removed `keyman.HideHelp()` (use `keyman.osk.hide()`) (#16170)
+* Removed `keyman.ShowHelp()` (use `keyman.osk.show()`, `keyman.osk.setRect()`)
+ (#16170)
+* Removed `keyman.ShowPinnedHelp()` (use `keyman.osk.show()`,
+ `keyman.osk.setRect()`) (#16170)
+* Deprecated `keyman.build` and `keyman.version` (use `keyman.versionInfo`)
+ (#16351)
+* Deprecated `keyman.helpURL` (use Keyman Cloud APIs) (#16351)
+* Deprecated `keyman.moveToElement` (use `elem.focus()`) (#16661)
+* Deprecated `keyman.interface.FocusLastActiveElement()` (use
+ `keyman.interface.focusLastActiveTextStore()`) (#16170)
+* Deprecated `keyman.interface.GetLastActiveElement()` (use
+ `keyman.interface.getLastActiveTextStore()`) (#16170)
+* Deprecated `keyman.interface.HideHelp()` (use `keyman.osk.hide()`) (#16170)
+* Deprecated `keyman.interface.ShowHelp()` (use `keyman.osk.show()`) (#16170)
+* Deprecated `keyman.interface.ShowPinnedHelp()` (use `keyman.osk.show()`,
+ `keyman.osk.setRect()`) (#16170)
+* Deprecated `keyman.util.toFloat()` (#16351)
+* Deprecated `keyman.util.toNumber()` (#16351)
+* Deprecated `keyman.util.toNzString()` (#16351)
+* Removed deprecated `onunloaded` handler (#16351)
+* About [550 other fixes and changes](https://keyman.com/go/app/whatsnew/web/19.0)
+
## See also
* [Keyman Engine for Web Documentation](index)
diff --git a/web/src/engine/src/interfaces/prediction/predictionContext.ts b/web/src/engine/src/interfaces/prediction/predictionContext.ts
index 6ebcec0db9..38051b7e75 100644
--- a/web/src/engine/src/interfaces/prediction/predictionContext.ts
+++ b/web/src/engine/src/interfaces/prediction/predictionContext.ts
@@ -85,13 +85,14 @@ export class PredictionContext extends EventEmitter {
this.currentTextStore && langProcessor.state == 'configured';
this.suggestionApplier = (suggestion, processorAction) => {
- if(validSuggestionState()) {
+ if (validSuggestionState()) {
const results = langProcessor.applySuggestion(suggestion, this.currentTextStore, getLayerId, processorAction);
- results.reversion.then((reversion) => this._immediateReversion = reversion);
- return results.appendedProcessorAction;
- } else {
- return null;
+ if (results) {
+ results.reversion.then((reversion) => this._immediateReversion = reversion);
+ return results.appendedProcessorAction;
+ }
}
+ return null;
}
this.suggestionReverter = async (reversion) => {
@@ -316,4 +317,4 @@ export class PredictionContext extends EventEmitter {
this.resetContext();
}
}
-}
\ No newline at end of file
+}
diff --git a/web/src/engine/src/main/headless/transcriptionCache.ts b/web/src/engine/src/main/headless/transcriptionCache.ts
index 7ff3832b9b..5fcfd00b33 100644
--- a/web/src/engine/src/main/headless/transcriptionCache.ts
+++ b/web/src/engine/src/main/headless/transcriptionCache.ts
@@ -22,7 +22,7 @@ export class TranscriptionCache extends RewindableCache {
});
return entries
- .map(({key, entry}) => `Context state ${key}'s keystroke:\n${entry.keystroke.inputBreadcrumb ?? ''}`)
+ .map(({key, entry}) => `Context state ${key}'s keystroke:\n${entry?.keystroke?.inputBreadcrumb ?? ''}`)
.join('\n');
}
-}
\ No newline at end of file
+}
diff --git a/web/src/engine/src/osk/banner/suggestionBanner.ts b/web/src/engine/src/osk/banner/suggestionBanner.ts
index 843c0dd912..bab946769d 100644
--- a/web/src/engine/src/osk/banner/suggestionBanner.ts
+++ b/web/src/engine/src/osk/banner/suggestionBanner.ts
@@ -577,8 +577,10 @@ export class SuggestionBanner extends Banner {
return;
}
- const autoselection = this._predictionContext.selected;
- this._predictionContext.selected = null;
+ const autoselection = this.predictionContext?.selected;
+ if (this.predictionContext) {
+ this.predictionContext.selected = null;
+ }
// Always clear pre-existing selections when a new banner input/gesture starts.
this.options.forEach((entry) => {
entry.highlight(false);
@@ -628,9 +630,13 @@ export class SuggestionBanner extends Banner {
return;
}
+ if (!this.predictionContext) {
+ return;
+ }
+
// The suggestions are still current? Then restore the original
// auto-correct suggestion and its highlighting.
- this._predictionContext.selected = autoselection;
+ this.predictionContext.selected = autoselection;
if(autoselection) {
for(const entry of this.options) {
if(entry.suggestion == autoselection) {
@@ -668,11 +674,11 @@ export class SuggestionBanner extends Banner {
// Invalidate the suggestions internally, but don't visually update;
// this will avoid banner-flicker.
this.currentSuggestions = [];
- this.predictionContext.accept(suggestion.suggestion);
+ this.predictionContext?.accept(suggestion.suggestion);
// Trigger new predictions, as no input exists to trigger new ones otherwise.
// Reversions will re-use old suggestions, though.
if(suggestion.suggestion.tag != 'revert') {
- this.predictionContext.triggerPredictions();
+ this.predictionContext?.triggerPredictions();
}
// Reset the scroll state
diff --git a/windows/docs/engine/whatsnew.md b/windows/docs/engine/whatsnew.md
new file mode 100644
index 0000000000..d9be30aef7
--- /dev/null
+++ b/windows/docs/engine/whatsnew.md
@@ -0,0 +1,19 @@
+---
+title: What's New in Keyman Engine 19.0 for Windows
+---
+
+* **kmcomapi:** Added the `MCompileForBaseKeyboard(long KLID)` COM method to the
+ new `IKeymanKeyboardInstalled2` interface, which extends
+ `IKeymanKeyboardInstalled`. The method accepts the user's base keyboard ID and
+ allows `mcompile` to compile all installed keyboard layouts against that
+ keyboard ID. See #16162 for details.
+* **kmcomapi:** Added the `Install3` COM method, which accepts a base keyboard
+ ID. The base keyboard ID is passed to `mcompile` during installation so that
+ the keyboard layout can be compiled against the specified base keyboard.
+ `Install3` has been added to the following interfaces: `IKeymanKeyboardFile3`,
+ `IKeymanPackageFile3`, `IKeymanKeyboardsInstalled3`, and
+ `IKeymanPackagesInstalled3`. See #16528 for details.
+
+## See Also
+
+* [Keyman Engine for Windows Documentation](index)
\ No newline at end of file
diff --git a/windows/docs/help/about/whatsnew.md b/windows/docs/help/about/whatsnew.md
index fcb10c1e8b..5dbe585580 100644
--- a/windows/docs/help/about/whatsnew.md
+++ b/windows/docs/help/about/whatsnew.md
@@ -4,6 +4,13 @@ title: What's New in Keyman 20.0 for Windows
Here are some of the new features we have added to Keyman 20.0 for Windows:
+- Full support for Windows on ARM64 processors (#14621)
+- Keyboard search pages are now available in more languages (#15510)
+- Improved startup time (#14795)
+- Improved stability on heavily loaded systems (#15179)
+- Improvements to selection of base keyboard for mnemonic layouts (#16162)
+- About [250 other fixes and changes](https://keyman.com/go/app/whatsnew/windows/19.0)
+
## Related Topics
- [Version History](history)