diff --git a/HISTORY.md b/HISTORY.md index c76f95dbb9..d31f440304 100644 --- a/HISTORY.md +++ b/HISTORY.md @@ -1,5 +1,34 @@ # Keyman Version History +## 19.0.78 alpha 2025-07-04 + +* docs(developer): Fix links in gestures guide (#14297) + +## 19.0.77 alpha 2025-07-04 + +* maint(mac): rename `_do_publish` function to `do_publish` to fix release build (#14273) +* maint(ios): remove extra `cd` command from ios release builds (#14272) +* maint(android): remove `--ci` parameter from android builds (#14264) +* refactor(resources): replace shebang for TC include files (#14265) +* fix(core): fix failing `common-test-core.sh` script (#14271) +* maint(common): match OSTYPE correctly on macOS (#14277) +* fix(common): fix triggering builds if no builds to start (#14274) +* maint(common): trigger common builds for resources/teamcity/common changes (#14279) + +## 19.0.76 alpha 2025-07-03 + +* maint(common): move TC configuration for common tests (#14205) +* refactor(common): improve downloads include script (#14253) +* maint(web): move rsync code to shared functions (#14254) +* maint(developer): replace Powershell scripts (#14255) +* maint(windows): move TC configuration for Keyman Windows to scripts (#14186) +* feat(windows): human text message for 413 error (#14055) +* refactor(web): move helper functions to beginning of function (#14252) +* maint(android): add TC build scripts for Keyman for Android (#14222) +* maint(linux): use `tc_rsync_upload` and `write_download_info` functions (#14258) +* maint(ios): add TC build scripts for iOS (#14229) +* maint(mac): add TC build scripts for macOS (#14239) + ## 19.0.75 alpha 2025-07-02 * feat(resources): support ignoring unknown options in builder (#14216) diff --git a/VERSION.md b/VERSION.md index ba0827f2cf..1b64c3a8c4 100644 --- a/VERSION.md +++ b/VERSION.md @@ -1 +1 @@ -19.0.76 \ No newline at end of file +19.0.79 \ No newline at end of file diff --git a/android/build.sh b/android/build.sh index 12017e2c6b..caeddb5b51 100755 --- a/android/build.sh +++ b/android/build.sh @@ -39,7 +39,6 @@ builder_describe \ test \ "publish Publishes symbols to Sentry and the APKs to the Play Store." \ "archive Copy release artifacts to upload/ and rsync to downloads.keyman" \ - "--ci+ Deprecated build option. Remove in 20.0" \ --upload-sentry+ \ ":engine=KMEA Keyman Engine for Android" \ ":app=KMAPro Keyman for Android" \ diff --git a/developer/docs/help/guides/develop/touch-keyboard-tutorial/gestures.md b/developer/docs/help/guides/develop/touch-keyboard-tutorial/gestures.md index c66039cee3..b09d5919cf 100644 --- a/developer/docs/help/guides/develop/touch-keyboard-tutorial/gestures.md +++ b/developer/docs/help/guides/develop/touch-keyboard-tutorial/gestures.md @@ -4,11 +4,11 @@ title: Using Gestures in Keyman Developer Keyman Developer offers **Longpress** keys, **Flicks**, and **Multitaps** for touch keyboard layout. To allow gestures onto your keyboard, go to the Touch layout tab and define the keys as follows: -Keyman Developer touch layout gestures +Keyman Developer touch layout gestures ## Tips -***Flicks** and **long presses** can both be used in a single keyboard. In this scenario, it is recommended to use flicks in only one direction—south (down). Long presses work well alongside this pattern. See, for example, [sil_euro_latin](../../../../keyboard/sil_euro_latin/3.0.3/sil_euro_latin#toc-mobile-keyboard-layout). +***Flicks** and **long presses** can both be used in a single keyboard. In this scenario, it is recommended to use flicks in only one direction—south (down). Long presses work well alongside this pattern. See, for example, [sil_euro_latin](https://help.keyman.com/keyboard/sil_euro_latin/3.0.3/sil_euro_latin#toc-mobile-keyboard-layout). * Another helpful tip seen in the sil_euro_latin keyboard is using south-flicks on the base and shift layers corresponding to the numeric/symbol layer, this aids in both memorization and discovery. * **Flicks** in multiple directions are possible, but currently Keyman does not support hints for multiple directions, so they are not very discoverable. * **Long presses** are more discoverable, but **flicks** are faster. We suggest using south flicks along with long presses, and including the flick output in the long press for maximum discoverability and optimum ergonomics. @@ -22,5 +22,5 @@ Keyman Developer offers **Longpress** keys, **Flicks**, and **Multitaps** for to ## See also -* The [Winchus keyboard](../../../../keyboard/winchus/1.4/winchus#guia-rapida-celular) -* The [GFF Amharic keyboard](../../../../keyboard/gff_amharic/3.2.1/gff_amharic#toc-using-this-keyboard) \ No newline at end of file +* The [Winchus keyboard](https://help.keyman.com/keyboard/winchus/1.4/winchus#guia-rapida-celular) +* The [GFF Amharic keyboard](https://help.keyman.com/keyboard/gff_amharic/3.2.1/gff_amharic#toc-using-this-keyboard) \ No newline at end of file diff --git a/resources/build/run-required-test-builds.sh b/resources/build/run-required-test-builds.sh index 02ec814969..9227c613cc 100755 --- a/resources/build/run-required-test-builds.sh +++ b/resources/build/run-required-test-builds.sh @@ -259,7 +259,7 @@ fi # Start test builds as required # -if (( ${#build_platforms[@]} > 0)); then +if [[ ! -z ${build_platforms:-} ]] && (( ${#build_platforms[@]:-0} > 0)); then builder_echo heading "Start test builds" triggerTestBuilds build_platforms $PRNUM else diff --git a/resources/build/trigger-definitions.inc.sh b/resources/build/trigger-definitions.inc.sh index db879b95e8..8748e63edf 100644 --- a/resources/build/trigger-definitions.inc.sh +++ b/resources/build/trigger-definitions.inc.sh @@ -38,15 +38,23 @@ available_platforms_regex=`echo "${available_platforms[@]}" | sed 's/ /|/g'` # We also allow 'common' and 'core' platforms for Build-bot: commands readonly available_platforms_regex="$available_platforms_regex|common|core" -# the base folder for each pattern does not need to be included, nor oem folders -# e.g. android='common/models|common/predictive-text' -# will expand into android='^(android|(oem/[^/]+/android)|common/models|common/predictive-text)' +# the base folder for each pattern does not need to be included, nor oem +# folders, nor resources/teamcity folders +# +# e.g. watch_android='web|comon/web' will expand to cover: +# android +# oem/*/android +# web +# common/web +# resources/teamcity/android +# resources/teamcity/includes -watch_android='web|common/models|common/predictive-text|common/web' -watch_ios='web|common/models|common/predictive-text|common/web' + +watch_android='web|common/web' +watch_ios='web|common/web' watch_linux='core|common/test/keyboards/baseline' watch_mac='core' -watch_web='common/models|common/predictive-text|common/web|core' +watch_web='common/web|core' watch_windows='common|core|web' watch_developer='common|core|web' @@ -55,10 +63,10 @@ watch_developer='common|core|web' watch_common_web='common/web' # Currently, we run web tests on all three of our build platforms, to ensure # that they work in all our environments. So we need to include common/web in -# the matches for these -watch_common_windows='common/windows|common/web' -watch_common_mac='common/mac|common/web' -watch_common_linux='common/linux|common/web' +# the matches for these, as well as resources/teamcity/common +watch_common_windows='common/windows|common/web|resources/teamcity/common' +watch_common_mac='common/mac|common/web|resources/teamcity/common' +watch_common_linux='common/linux|common/web|resources/teamcity/common' # # Available build configurations and VCS identifiers; identifiers are somewhat inconsistent due diff --git a/resources/teamcity/android/android-actions.inc.sh b/resources/teamcity/android/android-actions.inc.sh index 4e0273c5fc..5c56b81abe 100755 --- a/resources/teamcity/android/android-actions.inc.sh +++ b/resources/teamcity/android/android-actions.inc.sh @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +# shellcheck shell=bash # Keyman is copyright (C) SIL Global. MIT License. android_clean_action() { @@ -11,8 +11,9 @@ android_clean_action() { android_build_action() { builder_echo start "build" "Building Keyman for Android" local TARGETS="$1" + local ARGS="$2" # REVIEW: is it deliberate that we `configure` all targets but only `build,test` `$TARGETS`? - "${KEYMAN_ROOT}/android/build.sh" configure build,test:"${TARGETS}" --debug --ci + "${KEYMAN_ROOT}/android/build.sh" configure build,test:"${TARGETS}" ${ARGS} builder_echo end "build" success "Finished building Keyman for Android" } diff --git a/resources/teamcity/android/keyman-android-release.sh b/resources/teamcity/android/keyman-android-release.sh index bd0aa14b44..f11cecb5b6 100755 --- a/resources/teamcity/android/keyman-android-release.sh +++ b/resources/teamcity/android/keyman-android-release.sh @@ -120,10 +120,10 @@ fi if builder_has_action all; then android_clean_action - android_build_action "${TARGETS}" + android_build_action "${TARGETS}" --release do_publish else builder_run_action clean android_clean_action - builder_run_action build android_build_action "${TARGETS}" + builder_run_action build android_build_action "${TARGETS}" --release builder_run_action publish do_publish fi diff --git a/resources/teamcity/android/keyman-android-test-samples.sh b/resources/teamcity/android/keyman-android-test-samples.sh index 2698ad914a..1faa1b6c66 100755 --- a/resources/teamcity/android/keyman-android-test-samples.sh +++ b/resources/teamcity/android/keyman-android-test-samples.sh @@ -31,7 +31,7 @@ cd "${KEYMAN_ROOT}/android" function do_build() { "${KEYMAN_ROOT}/android/build.sh" \ configure,build:engine,sample1,sample2,keyboardharness \ - --debug --ci + --debug } if builder_has_action all; then diff --git a/resources/teamcity/android/keyman-android-test.sh b/resources/teamcity/android/keyman-android-test.sh index 8a531a2bfe..ca856e1ff4 100755 --- a/resources/teamcity/android/keyman-android-test.sh +++ b/resources/teamcity/android/keyman-android-test.sh @@ -38,8 +38,8 @@ fi if builder_has_action all; then android_clean_action - android_build_action "${TARGETS}" + android_build_action "${TARGETS}" --debug else builder_run_action clean android_clean_action - builder_run_action build android_build_action "${TARGETS}" + builder_run_action build android_build_action "${TARGETS}" --debug fi diff --git a/resources/teamcity/common/common-test-core.sh b/resources/teamcity/common/common-test-core.sh index 57bc8a1c2c..9ea781697a 100755 --- a/resources/teamcity/common/common-test-core.sh +++ b/resources/teamcity/common/common-test-core.sh @@ -25,19 +25,16 @@ builder_parse "$@" if is_ubuntu; then ARCH=arch elif is_windows; then - ARCH=x86 + ARCH=win elif is_macos; then ARCH=mac else builder_echo error "Unknown architecture" - return 1 + exit 1 fi function do_all() { "${KEYMAN_ROOT}/core/build.sh" configure,build,test:${ARCH} - if is_windows; then - "${KEYMAN_ROOT}/core/build.sh" configure,build,test:x64 - fi } builder_run_action all do_all diff --git a/resources/teamcity/developer/developer-actions.inc.sh b/resources/teamcity/developer/developer-actions.inc.sh index 73e1a325df..9f0819aef2 100644 --- a/resources/teamcity/developer/developer-actions.inc.sh +++ b/resources/teamcity/developer/developer-actions.inc.sh @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +# shellcheck shell=bash # Keyman is copyright (C) SIL Global. MIT License. developer_install_dependencies_on_linux_action() { diff --git a/resources/teamcity/includes/tc-download-info.inc.sh b/resources/teamcity/includes/tc-download-info.inc.sh index 25755af877..c1e596a394 100644 --- a/resources/teamcity/includes/tc-download-info.inc.sh +++ b/resources/teamcity/includes/tc-download-info.inc.sh @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +# shellcheck shell=bash # Keyman is copyright (C) SIL Global. MIT License. # shellcheck disable=SC2154 diff --git a/resources/teamcity/includes/tc-helpers.inc.sh b/resources/teamcity/includes/tc-helpers.inc.sh index 065df7fe9e..9022599607 100644 --- a/resources/teamcity/includes/tc-helpers.inc.sh +++ b/resources/teamcity/includes/tc-helpers.inc.sh @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +# shellcheck shell=bash # Keyman is copyright (C) SIL Global. MIT License. # Returns 0 if we're running on Ubuntu. @@ -22,7 +22,7 @@ is_windows() { # Returns 0 if we're running on macOS. is_macos() { - if [[ "${OSTYPE:-}" == "darwin" ]]; then + if [[ "${OSTYPE:-}" == darwin* ]]; then return 0 else return 1 diff --git a/resources/teamcity/includes/tc-linux.inc.sh b/resources/teamcity/includes/tc-linux.inc.sh index 7e219f7e28..9d65f6e7a7 100644 --- a/resources/teamcity/includes/tc-linux.inc.sh +++ b/resources/teamcity/includes/tc-linux.inc.sh @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +# shellcheck shell=bash # Keyman is copyright (C) SIL Global. MIT License. # # Shared functions for any builds that run on Linux agents, diff --git a/resources/teamcity/includes/tc-mac.inc.sh b/resources/teamcity/includes/tc-mac.inc.sh index a5de278343..397a0d393b 100644 --- a/resources/teamcity/includes/tc-mac.inc.sh +++ b/resources/teamcity/includes/tc-mac.inc.sh @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +# shellcheck shell=bash # Keyman is copyright (C) SIL Global. MIT License. # # Shared functions for any builds that run on Mac agents diff --git a/resources/teamcity/includes/tc-windows.inc.sh b/resources/teamcity/includes/tc-windows.inc.sh index 4c0411eda6..d7170fd191 100644 --- a/resources/teamcity/includes/tc-windows.inc.sh +++ b/resources/teamcity/includes/tc-windows.inc.sh @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +# shellcheck shell=bash # Keyman is copyright (C) SIL Global. MIT License. # # Shared functions for any builds that run on Windows agents diff --git a/resources/teamcity/ios/ios-actions.inc.sh b/resources/teamcity/ios/ios-actions.inc.sh index 00b82b7f5c..acf904fe0f 100755 --- a/resources/teamcity/ios/ios-actions.inc.sh +++ b/resources/teamcity/ios/ios-actions.inc.sh @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +# shellcheck shell=bash # Keyman is copyright (C) SIL Global. MIT License. ios_build() { diff --git a/resources/teamcity/ios/keyman-ios-release.sh b/resources/teamcity/ios/keyman-ios-release.sh index d8f3848289..b9386a3ed3 100755 --- a/resources/teamcity/ios/keyman-ios-release.sh +++ b/resources/teamcity/ios/keyman-ios-release.sh @@ -203,7 +203,6 @@ function __do_upload_to_fastlane() { export PILOT_GROUPS="Alpha" fi - cd "upload/${KEYMAN_VERSION}" command -v fastlane # shellcheck disable=SC2154 fastlane pilot upload \ diff --git a/resources/teamcity/macos/keyman-macos-release.sh b/resources/teamcity/macos/keyman-macos-release.sh index fb73185019..50830b747b 100755 --- a/resources/teamcity/macos/keyman-macos-release.sh +++ b/resources/teamcity/macos/keyman-macos-release.sh @@ -69,7 +69,7 @@ function _build_publish() { builder_echo end success "publish" "Finished publishing Keyman for macOS" } -function _do_publish() { +function do_publish() { _build_publish _publish_to_downloads_keyman_com tc_upload_help "Keyman for macOS" mac diff --git a/resources/teamcity/macos/macos-actions.inc.sh b/resources/teamcity/macos/macos-actions.inc.sh index a463db4612..84095beac7 100755 --- a/resources/teamcity/macos/macos-actions.inc.sh +++ b/resources/teamcity/macos/macos-actions.inc.sh @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +# shellcheck shell=bash # Keyman is copyright (C) SIL Global. MIT License. macos_clean_action() { diff --git a/resources/teamcity/web/web-actions.inc.sh b/resources/teamcity/web/web-actions.inc.sh index d12b846e96..4966f8f468 100644 --- a/resources/teamcity/web/web-actions.inc.sh +++ b/resources/teamcity/web/web-actions.inc.sh @@ -1,4 +1,4 @@ -#!/usr/bin/env bash +# shellcheck shell=bash # Keyman is copyright (C) SIL Global. MIT License. web_install_dependencies_on_linux_action() { diff --git a/resources/teamcity/windows/windows-actions.inc.sh b/resources/teamcity/windows/windows-actions.inc.sh index e8553bef0f..3b5699447c 100755 --- a/resources/teamcity/windows/windows-actions.inc.sh +++ b/resources/teamcity/windows/windows-actions.inc.sh @@ -1,3 +1,4 @@ +# shellcheck shell=bash # Keyman is copyright (C) SIL Global. MIT License. windows_build_action() {