diff --git a/.github/workflows/api-verification.yml b/.github/workflows/api-verification.yml index 8bdddcec6c..68499a67d2 100644 --- a/.github/workflows/api-verification.yml +++ b/.github/workflows/api-verification.yml @@ -25,11 +25,11 @@ jobs: steps: - name: Restore artifacts - uses: actions/cache/restore@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + uses: actions/cache/restore@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 with: path: | artifacts - key: artifacts-key-${GITHUB_RUN_ID} + key: artifacts-key-${{ github.event.workflow_run.id }} restore-keys: artifacts-key- - name: Read environment diff --git a/.github/workflows/deb-packaging.yml b/.github/workflows/deb-packaging.yml index 7c05528878..1876be35b7 100644 --- a/.github/workflows/deb-packaging.yml +++ b/.github/workflows/deb-packaging.yml @@ -315,11 +315,11 @@ jobs: echo "GIT_USER=${{ github.event.client_payload.user }}" >> artifacts/env - name: Cache artifacts - uses: actions/cache/save@13aacd865c20de90d75de3b17ebe84f7a17d57d2 # v4.0.0 + uses: actions/cache/save@0c45773b623bea8c8e75f6c82b208c3cf94ea4f9 # v4.0.2 with: path: | artifacts - key: artifacts-key-${GITHUB_RUN_ID} + key: artifacts-key-${{ github.run_id }} # We intentionally ignore the results of binary_packages_unreleased set_status: diff --git a/HISTORY.md b/HISTORY.md index 046aeb014e..c6c3b88505 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,20 @@ # Keyman Version History +## 18.0.44 alpha 2024-05-24 + +* fix(linux): Pass artifacts key to API verification GHA (#11517) +* fix(web): properly pass test-runner verbose-logging flag (#11509) +* chore(developer): add context/key-test (#11512) +* fix(android/engine): Ignore updating invalid selections (#11510) +* docs(common): update min emscripten version in docs to 3.1.46 (#11530) +* fix(linux): Properly use and pass run_id (#11533) + +## 18.0.43 alpha 2024-05-24 + +* fix(android): Revert Sentry version for FV Android (#11522) +* chore(windows): remove schedule task clean up introduced in 15.0 Alpha (#11521) +* fix(windows): add FirstVoices Keyboards build to Windows release build (#11524) + ## 18.0.42 alpha 2024-05-23 * chore(web): conversion of Web's browser-integration auto-tests for @web/test-runner use (#11455) diff --git a/VERSION.md b/VERSION.md index 65ef51766b..175c4213bd 100644 --- a/VERSION.md +++ b/VERSION.md @@ -1 +1 @@ -18.0.43 \ No newline at end of file +18.0.45 \ No newline at end of file diff --git a/android/KMEA/app/src/main/java/com/keyman/engine/KMKeyboard.java b/android/KMEA/app/src/main/java/com/keyman/engine/KMKeyboard.java index bc7dfc5cc6..d45937fe73 100644 --- a/android/KMEA/app/src/main/java/com/keyman/engine/KMKeyboard.java +++ b/android/KMEA/app/src/main/java/com/keyman/engine/KMKeyboard.java @@ -194,10 +194,16 @@ final class KMKeyboard extends WebView { int selMin = icText.selectionStart, selMax = icText.selectionEnd; + int textLength = rawText.length(); + if (selMin < 0 || selMax < 0) { // There is no selection or cursor // Reference https://developer.android.com/reference/android/text/Selection#getSelectionEnd(java.lang.CharSequence) return false; + } else if (selMin > textLength || selMax > textLength) { + // Selection is past end of existing text -- should not be possible but we + // are seeing it happen; #11506 + return false; } if (selMin > selMax) { diff --git a/developer/src/tike/xml/help/contexthelp.xml b/developer/src/tike/xml/help/contexthelp.xml index 76820ba929..3f071d11c3 100644 --- a/developer/src/tike/xml/help/contexthelp.xml +++ b/developer/src/tike/xml/help/contexthelp.xml @@ -386,4 +386,19 @@
The Project Manager allows you to manage all the files related to a keyboard layout in a single location.
+ + \ No newline at end of file diff --git a/docs/build/macos.md b/docs/build/macos.md index aa1eea34bf..673739379e 100644 --- a/docs/build/macos.md +++ b/docs/build/macos.md @@ -77,7 +77,7 @@ PATH="$HOMEBREW_PREFIX/opt/coreutils/libexec/gnubin:$PATH" ## KeymanWeb Dependencies -* node.js 18+, emscripten, openjdk 8 +* node.js 18+, emscripten 3.1.46 or later, openjdk 8 ```shell brew install node emscripten openjdk@8 diff --git a/docs/build/windows.md b/docs/build/windows.md index da320f244e..99f1b44e28 100644 --- a/docs/build/windows.md +++ b/docs/build/windows.md @@ -181,7 +181,7 @@ You can use Windows Settings to add these environment variables permanently: * KeymanWeb **Requirements**: -* emscripten 3.1.40 +* emscripten 3.1.46 or later * node.js 18+ * [openjdk 11](https://learn.microsoft.com/en-us/java/openjdk/download#openjdk-11)+ @@ -191,7 +191,7 @@ You can use Windows Settings to add these environment variables permanently: # for *much* faster download, hide progress bar (PowerShell/PowerShell#2138) $ProgressPreference = 'SilentlyContinue' -choco install emscripten --version 3.1.40 +choco install emscripten --version 3.1.46 ``` Note: emscripten very unhelpfully overwrites JAVA_HOME, and adds its own diff --git a/oem/firstvoices/windows/src/inst/build.sh b/oem/firstvoices/windows/src/inst/build.sh index b0c7b50a80..bf33b4046c 100755 --- a/oem/firstvoices/windows/src/inst/build.sh +++ b/oem/firstvoices/windows/src/inst/build.sh @@ -2,10 +2,11 @@ ## START STANDARD BUILD SCRIPT INCLUDE # adjust relative paths as necessary THIS_SCRIPT="$(readlink -f "${BASH_SOURCE[0]}")" -. "${THIS_SCRIPT%/*}/../../..../../resources/build/builder.inc.sh" +. "${THIS_SCRIPT%/*}/../../../../../resources/build/builder.inc.sh" ## END STANDARD BUILD SCRIPT INCLUDE source "$KEYMAN_ROOT/resources/shellHelperFunctions.sh" +source "$KEYMAN_ROOT/resources/build/build-download-resources.sh" builder_describe "Installation files for FirstVoices Keyboards" \ @/common/windows/data \ @@ -63,7 +64,17 @@ function do_publish() { -dVERSION=$VERSION_WIN -dRELEASE=$VERSION_RELEASE \ -dPRODUCTID=$GUID1 -dDESKTOPUISOURCE=../xml \ firstvoices.wxs desktopui.wxs - "$WIXLIGHT" -dWixUILicenseRtf=License.rtf -out firstvoices.msi -ext WixUIExtension firstvoices.wixobj desktopui.wixobj + + # ICE82: we suppress because it reports spurious errors with merge module + # keymanengine to do with duplicate sequence numbers. Safely ignored. + # ICE80: we suppress because it reports x64 components without targeting x64. + # Safely ignored. + + "$WIXLIGHT" \ + -sice:ICE82 -sice:ICE80 \ + -dWixUILicenseRtf=License.rtf \ + -out firstvoices.msi \ + -ext WixUIExtension firstvoices.wixobj desktopui.wixobj # # Sign the installation archive @@ -107,7 +118,7 @@ function create-setup-inf() { builder_heading create-setup-inf echo "[Setup]" > setup.inf - echo "Version=$VersionWin" >> setup.inf + echo "Version=$VERSION_WIN" >> setup.inf echo "MSIFileName=firstvoices.msi" >> setup.inf echo "MSIOptions=" >> setup.inf echo "AppName=FirstVoices Keyboards" >> setup.inf diff --git a/web/test.sh b/web/test.sh index b1dbc01263..e3cbaef60f 100755 --- a/web/test.sh +++ b/web/test.sh @@ -62,11 +62,11 @@ fi # Prepare the flags for the karma command. WTR_DEBUG= if builder_is_debug_build; then - WTR_DEBUG=" --manual" + WTR_DEBUG="--manual" fi # End common configs. -builder_run_action test:dom web-test-runner --config "src/test/auto/dom/web-test-runner${WTR_CONFIG}.config.mjs" "${WTR_DEBUG}" +builder_run_action test:dom web-test-runner --config "src/test/auto/dom/web-test-runner${WTR_CONFIG}.config.mjs" ${WTR_DEBUG} -builder_run_action test:integrated web-test-runner --config "src/test/auto/integrated/web-test-runner${WTR_CONFIG}.config.mjs" "${WTR_DEBUG}" +builder_run_action test:integrated web-test-runner --config "src/test/auto/integrated/web-test-runner${WTR_CONFIG}.config.mjs" ${WTR_DEBUG} diff --git a/windows/src/.gitignore b/windows/src/.gitignore index 54037b8c4a..3ac3da4ea5 100644 --- a/windows/src/.gitignore +++ b/windows/src/.gitignore @@ -31,3 +31,6 @@ global/delphi/cust/MessageIdentifierConsts.pas # Coverity intermediate folder and files cov-int/ keyman-windows-coverity.tgz + +# This file is still generated by devtools. TODO: eliminate in future +PathDefines.mak diff --git a/windows/src/build.sh b/windows/src/build.sh index 02ab4fbcac..a1fc4d0e1a 100755 --- a/windows/src/build.sh +++ b/windows/src/build.sh @@ -18,7 +18,8 @@ builder_describe \ ":engine Keyman Engine for Windows" \ ":desktop Keyman for Windows" \ ":components=global/delphi Delphi components" \ - ":test=test/unit-tests Shared unit tests" + ":test=test/unit-tests Shared unit tests" \ + ":fv=../../oem/firstvoices/windows/src/inst OEM FirstVoices for Windows app" builder_parse "$@"