Merge pull request #16794 from keymanapp/auto/B19S3-merge-beta-into-alpha

auto: B19S3 merge beta into master
This commit is contained in:
Marc Durdin 2026-10-16 14:01:17 +02:00 • committed by GitHub
commit debd7af2a9
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
29 changed files with 257 additions and 1386 deletions

View file

@ -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)

View file

@ -1 +1 @@
alpha
beta

View file

@ -1 +1 @@
20.0.5
20.0.5

View file

@ -9,6 +9,7 @@ plugins {
ext.rootPath = '../../'
apply from: "$rootPath/version.gradle"
String tier = System.getenv("KEYMAN_TIER");
println "Using tier $tier"
java {
toolchain {

View file

@ -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)

View file

@ -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)

View file

@ -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 <https://docs.sentry.io/cli/installation/> 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.

14
docs/build/macos.md vendored
View file

@ -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 <https://docs.sentry.io/cli/installation/> for the installation, and
check [minimum-versions.md](../minimum-versions.md) for the required version of
`sentry-cli`.

View file

@ -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}

View file

@ -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 <https://docs.sentry.io/cli/installation/> for the installation, and
check [minimum-versions.md](../minimum-versions.md) for the required version of
`sentry-cli`.

View file

@ -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 |

View file

@ -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 ,

View file

@ -53,21 +53,6 @@ Original TestLodge ID: TC188
</details>
<details>
<summary>Cleanup</summary>
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
</details>
---
**TEST_288**
@ -122,21 +107,6 @@ Original TestLodge ID: TC189
</details>
<details>
<summary>Cleanup</summary>
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
</details>
---
**TEST_289**
@ -190,21 +160,6 @@ Original TestLodge ID: TC190
</details>
<details>
<summary>Cleanup</summary>
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
</details>
---
**TEST_290**
@ -252,21 +207,6 @@ Original TestLodge ID: TC191
</details>
<details>
<summary>Cleanup</summary>
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
</details>
---
**TEST_291**
@ -320,20 +260,6 @@ Original TestLodge ID: TC192
</details>
<details>
<summary>Cleanup</summary>
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
</details>
**TEST_292**
Test case for BASIC_MODIPRESS_HOLD,
@ -381,21 +307,6 @@ Original TestLodge ID: TC193
</details>
<details>
<summary>Cleanup</summary>
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
</details>
---
**TEST_293**
@ -454,21 +365,6 @@ Original TestLodge ID: TC194
</details>
<details>
<summary>Cleanup</summary>
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
</details>
---
**TEST_294**
@ -522,21 +418,6 @@ Original TestLodge ID: TC195
</details>
<details>
<summary>Cleanup</summary>
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
</details>
---
**TEST_295**
@ -586,21 +467,6 @@ Original TestLodge ID: TC196
</details>
<details>
<summary>Cleanup</summary>
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
</details>
---
**TEST_297**
@ -653,21 +519,6 @@ Original TestLodge ID: TC198
</details>
<details>
<summary>Cleanup</summary>
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
</details>
---
**TEST_300**
@ -733,21 +584,6 @@ Original TestLodge ID: TC201
</details>
<details>
<summary>Cleanup</summary>
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
</details>
---
**TEST_302**
@ -807,20 +643,5 @@ Original TestLodge ID: TC203
</details>
<details>
<summary>Cleanup</summary>
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
</details>
---

View file

@ -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
</details>
<details>
<summary>Cleanup</summary>
1. Uninstall Keyman build on the device.
2. Uninstall the Amharic keyboard.
3. Uninstall the Chrome browser.
</details>
---
**TEST_175**
@ -106,15 +100,6 @@ Original TestLodge ID: TC115
</details>
<details>
<summary>Cleanup</summary>
1. Uninstall Keyman build on the device.
2. Uninstall the Amharic keyboard.
3. Uninstall Atom Editor.
</details>
---
**TEST_178**
@ -165,15 +150,6 @@ Original TestLodge ID: TC118
</details>
<details>
<summary>Cleanup</summary>
1. Uninstall Keyman build on the device.
2. Uninstall the Amharic keyboard.
3. Uninstall Safari browser.
</details>
---
**TEST_180**
@ -224,15 +200,6 @@ Original TestLodge ID: TC120
</details>
<details>
<summary>Cleanup</summary>
1. Uninstall Keyman build on the device.
2. Uninstall the Amharic keyboard.
3. Uninstall the Firefox browser.
</details>
---
**TEST_183**
@ -283,15 +250,6 @@ Original TestLodge ID: TC123
</details>
<details>
<summary>Cleanup</summary>
1. Uninstall Keyman build on the device.
2. Uninstall the Amharic keyboard.
3. Uninstall the Firefox browser.
</details>
---
**TEST_185**
@ -341,15 +299,6 @@ Original TestLodge ID: TC125
</details>
<details>
<summary>Cleanup</summary>
1. Uninstall Keyman build on the device.
2. Uninstall the Amharic keyboard.
3. Uninstall Notes App.
</details>
---
**TEST_188**
@ -399,15 +348,6 @@ Original TestLodge ID: TC128
</details>
<details>
<summary>Cleanup</summary>
1. Uninstall Keyman build on the device.
2. Uninstall the Amharic keyboard.
3. Uninstall LibreOffice 7.0 app.
</details>
---
**TEST_190**
@ -469,14 +409,6 @@ Original TestLodge ID: TC130
</details>
<details>
<summary>Cleanup</summary>
1. Uninstall Keyman build on the device.
2. Uninstall Chrome browser.
</details>
---
**TEST_193**
@ -539,14 +471,6 @@ Original TestLodge ID: TC133
</details>
<details>
<summary>Cleanup</summary>
1. Uninstall Keyman build on the device.
2. Uninstall Chrome browser.
</details>
---
**TEST_195**
@ -608,13 +532,6 @@ Original TestLodge ID: TC135
</details>
<details>
<summary>Cleanup</summary>
1. Uninstall Keyman build on the device.
</details>
---
**TEST_198**
@ -676,13 +593,6 @@ Original TestLodge ID: TC138
</details>
<details>
<summary>Cleanup</summary>
1. Uninstall Keyman build on the device.
</details>
---
**TEST_200**
@ -747,13 +657,6 @@ Original TestLodge ID: TC140
</details>
<details>
<summary>Cleanup</summary>
1. Uninstall Keyman build on the device.
</details>
---
**TEST_203**
@ -815,13 +718,6 @@ Original TestLodge ID: TC143
</details>
<details>
<summary>Cleanup</summary>
1. Uninstall Keyman build on the device.
</details>
---
**TEST_205**
@ -882,12 +778,6 @@ Original TestLodge ID: TC145
</details>
<details>
<summary>Cleanup</summary>
1. Uninstall Keyman build on the device.
</details>
**TEST_208**
Test case for MAIL app with Shortcuts,
@ -946,13 +836,6 @@ Original TestLodge ID: TC148
</details>
<details>
<summary>Cleanup</summary>
1. Uninstall Keyman build on the device.
</details>
---
**TEST_210**
@ -995,14 +878,6 @@ Original TestLodge ID: TC222
</details>
<details>
<summary>Cleanup</summary>
1. Uninstall Keyman build on the device.
2. Uninstall Chrome browser.
</details>
---
**TEST_213**
@ -1047,14 +922,6 @@ Original TestLodge ID: TC225
</details>
<details>
<summary>Cleanup</summary>
1. Uninstall Keyman build on the device.
2. Uninstall Chrome browser.
</details>
---
**TEST_215**
@ -1094,13 +961,6 @@ Original TestLodge ID: TC235
</details>
<details>
<summary>Cleanup</summary>
1. Uninstall Keyman build on the MAC
</details>
---
**TEST_218**
@ -1142,14 +1002,6 @@ Original TestLodge ID: TC238
</details>
<details>
<summary>Cleanup</summary>
1. Uninstall Keyman build on the MAC
SUITE_KMX_PROCESSOR_COMPLIANT_GROUP_LINUX:
</details>
---
**TEST_220**
@ -1193,14 +1045,6 @@ Original TestLodge ID: TC250
</details>
<details>
<summary>Cleanup</summary>
1. Uninstall Keyman build on the device.
2. Uninstall Chrome browser.
</details>
---
**TEST_223**
@ -1245,14 +1089,6 @@ Original TestLodge ID: TC253
</details>
<details>
<summary>Cleanup</summary>
1. Uninstall Keyman build on the device.
2. Uninstall Chrome browser.
</details>
---
**TEST_226**
@ -1295,14 +1131,6 @@ Original TestLodge ID: TC266
</details>
<details>
<summary>Cleanup</summary>
1. Uninstall Keyman build on the macOS
2. Uninstall the TextEdit app.
</details>
---
**TEST_228**
@ -1345,14 +1173,6 @@ Original TestLodge ID: TC268
</details>
<details>
<summary>Cleanup</summary>
1. Uninstall Keyman build on the macOS
2. Uninstall the TextEdit app.
</details>
---
**TEST_231**
@ -1401,13 +1221,6 @@ Original TestLodge ID: TC286
</details>
<details>
<summary>Cleanup</summary>
1. Uninstall the Keyman build on the macOS.
</details>
---
**TEST_233**
@ -1451,13 +1264,6 @@ Original TestLodge ID: TC288
</details>
<details>
<summary>Cleanup</summary>
1. Uninstall the Keyman build on the macOS.
</details>
---
**TEST_236**
@ -1505,13 +1311,6 @@ Original TestLodge ID: TC291
</details>
<details>
<summary>Cleanup</summary>
1. Uninstall the Keyman build on the macOS.
</details>
---
**TEST_238**
@ -1558,13 +1357,6 @@ Original TestLodge ID: TC293
</details>
<details>
<summary>Cleanup</summary>
1. Uninstall the Keyman build on the macOS.
</details>
---
**TEST_341**
@ -1618,12 +1410,5 @@ TC - fix(mac): handle PackageInfo section in kmp.inf file #13876
</details>
<details>
<summary>Cleanup</summary>
1. Uninstall the Keyman build on macOS.
</details>
---

View file

@ -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
<summary>Action</summary>
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.

File diff suppressed because it is too large Load diff

View file

@ -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"

View file

@ -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 <eb1@sil.org> Mon, 18 May 2026 18:06:49 +0200
-- Eberhard Beilharz <eb1@sil.org> 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 <byang@debian.org> Wed, 30 Sep 2026 10:39:04 -0400
keyman (18.0.248-1) unstable; urgency=medium

View file

@ -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() {

View file

@ -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 ###

View file

@ -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

View file

@ -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"

View file

@ -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
KEYMAN_VERSION_UNICODE=17.0.0 # UCD + related data

View file

@ -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)

View file

@ -85,13 +85,14 @@ export class PredictionContext extends EventEmitter<PredictionContextEventMap> {
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<PredictionContextEventMap> {
this.resetContext();
}
}
}
}

View file

@ -22,7 +22,7 @@ export class TranscriptionCache extends RewindableCache<Transcription> {
});
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');
}
}
}

View file

@ -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

View file

@ -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)

View file

@ -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)