Commit graph

30313 commits

Author SHA1 Message Date
Marc Durdin
9a9f825119
Merge pull request #15057 from keymanapp/chore/developer/cherry-pick/11706-extra-debugging-redux-bksp
chore(developer): further debugging for assertion failure 🍒 🏠
2025-10-31 07:29:03 +01:00
Marc Durdin
c01637e358
Merge pull request #15059 from keymanapp/chore/developer/cherry-pick/11916-extra-debugging-crash-on-exit
chore(developer): add breadcrumbs to trace sporadic crashes on exit 🍒 🏠
2025-10-31 06:30:34 +01:00
Marc Durdin
7c5d6f704f chore(developer): add breadcrumbs to trace sporadic crashes on exit
Relates-to: #11916
Test-bot: skip
Cherry-pick-of: #15058
2025-10-30 15:02:42 +01:00
Marc Durdin
ec57939f4d chore(developer): further debugging for assertion failure
Adds breadcrumbs for debug memo to try and narrow down sequence of
events leading to assertion failure with backspace.

Relates-to: #11706
Test-bot: skip
Cherry-pick-of: #15056
2025-10-30 14:36:55 +01:00
Marc Durdin
82a8567845
Merge pull request #15054 from keymanapp/maint/resources/cherry-pick/npm-publish
maint(resources): move NPM package publishing to GitHub Actions 🍒 🏠
2025-10-30 10:55:44 +01:00
Marc Durdin
2af0faeb65 maint(resources): use older VERSION_GIT_TAG variable 2025-10-30 08:11:44 +01:00
Marc Durdin
96d836125a maint(resources): fixup includes for npm-publish.sh for 18.0 2025-10-30 07:46:52 +01:00
Marc Durdin
0653e10c25 chore: unix line endings and unused include 2025-10-30 07:41:00 +01:00
Marc Durdin
57a50ba7a1 maint(resources): cherry-pick changes to npm-publish scripts
This commit collects all changes to npm-publish.yml and npm-publish.sh,
from the series of PRs associated with PR #15029.
2025-10-30 07:11:41 +01:00
Marc Durdin
6449dfe2bf maint(resources): add repository record for all published packages
While not documented as such, it appears that the repository record is
required with trusted publishing of npm packages.

Cherry-pick-of: #15049
Build-bot: skip release:developer
2025-10-30 07:10:45 +01:00
Marc Durdin
1d8cc3afcd maint(developer): reduce coverage threshold for node 24 for dev-utils
I am not entirely clear why the coverage dropped, but I suspect it's due
to code paths that are not activated in node 24. For now, just dropping
coverage threshold to 40%.

Cherry-pick-of: #15042
2025-10-30 07:07:38 +01:00
Marc Durdin
fb26516008 chore(developer): skip git date test for shallow clones
If the repository is a shallow checkout, then the only commit will be
the most recent one, and the test will fail. We could lookup the date of
the most recent test, but it's a pretty meaningless test, so instead we
will skip the test in this scenario.

For example, this happens on GitHub Actions when we do a shallow
checkout. The only risk we have is if we move all builds to shallow
checkouts and end up always skipping this test, but (a) the code is
unlikely to change, and (b) issuse would be  picked up on local builds
in that situation pretty quickly.

Cherry-pick-of: #15042
2025-10-30 07:06:57 +01:00
Marc Durdin
7c095bd889 maint(resources): skip nvm in npm-publish script
Cherry-pick-of: #15041
2025-10-30 07:05:20 +01:00
Marc Durdin
bb32cecea7 maint(resources): move NPM package publishing to GitHub Actions
Due to recent changes in NPM package publishing security requirements,
we have to move from TeamCity build to a GitHub Action to publish our
NPM packages, so we can take advantage of trusted publishing. This
change also consolidates and centralizes the npm publishing into
resources/build/ci/npm-publish.sh, which removes a lot of boilerplate
from each of the build.sh scripts, and ensures consistency.

Packages will be `npm pack`ed on PR and test builds, and published in
release builds.

Ref: https://docs.npmjs.com/trusted-publishers
Ref: https://github.blog/changelog/2025-09-29-strengthening-npm-security-important-changes-to-authentication-and-token-management/
Fixes: #14963
Test-bot: skip
Build-bot: release:developer
Cherry-pick-of: #15029
2025-10-30 07:03:14 +01:00
Marc Durdin
1661398f7e
Merge pull request #15009 from keymanapp/fix/mac/cherry-pick/15007-ignore-ansi-kvk
fix(mac): ignore non-Unicode key caps when preparing OSK 🍒 🏠
2025-10-27 15:40:45 +01:00
Marc Durdin
3f1b337ff2
Merge pull request #15006 from keymanapp/fix/developer/cherry-pick/14411-handle-missing-begin-unicode
fix(developer): handle missing `begin Unicode` in KMW compiler 🍒 🏠
2025-10-27 15:40:37 +01:00
Marc Durdin
36ce19e769
Merge pull request #15005 from keymanapp/fix/developer/cherry-pick/14988-string-escape-syntax-highlight
fix(developer): do not treat backslash as a string escape in syntax highlighting 🍒 🏠
2025-10-27 15:40:29 +01:00
Marc Durdin
987ca0e551 fix(mac): ignore non-Unicode key caps when preparing OSK
The typeFlags property is used to differentiate Unicode and non-Unicode
keys in the array of keys in a .kvk file. All non-Unicode keys should
be ignored, as we do not support non-Unicode keyboards on macOS.

The reason this fixes #15007, is that the keyboard in question had both
ANSI and Unicode sections in its .kvk file, and the ANSI section was
stored after the Unicode section, so the font spec for ANSI was
overriding the previously (correctly) set Unicode font spec.

Fixes: #15007
Cherry-pick-of: #15008
Test-bot: skip
2025-10-24 11:04:55 +02:00
Marc Durdin
3233348e97 fix(developer): handle missing begin Unicode in KMW compiler
This probably arose with the move to kmcmplib in WASM, and as it was
never unit tested, we missed it. A simple signed vs unsigned issue.

Fixes: #14411
Test-bot: skip
Cherry-pick-of: #15002
2025-10-24 09:25:28 +02:00
Marc Durdin
b9b97d293b fix(developer): do not treat backslash as a string escape in syntax highlighting
Adjust two incorrect rules that caused backslash to be treated as an
escape in strings in syntax highlighting in .kmn language.

Fixes: #14988
Test-bot: skip
Build-bot: skip
Cherry-pick-of: #15001
2025-10-24 09:20:29 +02:00
Darcy Wong
2db726aa3e
Merge pull request #14982 from keymanapp/cherrypic/android/style-status-bar-white
fix(android): Set the main app background white 🏠
2025-10-21 09:41:31 +07:00
Darcy Wong
eeffb2cdf8 fix(android): Set the main app background white 2025-10-20 15:26:55 +07:00
Eberhard Beilharz
132103432a
Merge pull request #14975 from keymanapp/fix/linux/cherry-pick/10178_exitibus
fix(linux): use `ibus` command to restart ibus 🍒 🏠

When using Kubuntu exiting ibus sometimes used to hang (#10178). This was because ibus' `bus.exit()` doesn't shutdown properly (see https://github.com/ibus/ibus/issues/2816#issuecomment-3410473708). The recommended way is to use the `ibus exit` command. Since we no longer use the API we can directly use the `ibus restart` command, which this PR implements.

Fixes: #10178
Cherry-pick-of: #14971
2025-10-17 10:53:45 +02:00
Eberhard Beilharz
285a8463e7
fix(linux): use ibus command to restart ibus 🍒
When using Kubuntu exiting ibus sometimes used to hang (#10178). This
was because ibus' `bus.exit()` doesn't shutdown properly
(see https://github.com/ibus/ibus/issues/2816#issuecomment-3410473708).
The recommended way is to use the `ibus exit` command. Since we no longer
use the API we can directly use the `ibus restart` command, which this
PR implements.

Fixes: #10178
Cherry-pick-of: #14971
2025-10-16 20:02:55 +02:00
Keyman Server
46e22c8398
Merge pull request #14958 from keymanapp/auto/version-stable-18.0-18.0.244
auto: increment stable-18.0 version to 18.0.244
2025-10-15 05:39:40 +02:00
Keyman Build Agent
ab407448df auto: increment stable-18.0 version to 18.0.244 2025-10-14 22:39:11 -05:00
Marc Durdin
102ce7ef47
Merge pull request #14951 from keymanapp/fix/mac/cherry-pick/bengali-word
fix(mac): add Microsoft Word to non-compliant app list 🍒 🏠
2025-10-14 09:43:41 +02:00
Shawn Schantz
22fbfe8020 fix(mac): add Microsoft Word to non-compliant app list
addresses issue with Bengali text

Fixes: #14160
2025-10-13 13:25:49 -04:00
Darcy Wong
9d5f8381ff
Merge pull request #14913 from keymanapp/cherrypick/android/14873-extra-bar
fix(android): Refactor bottom inset calculations for inapp and system keyboard 🏠
2025-10-10 13:19:00 +07:00
Marc Durdin
34c9046b51
Merge pull request #14917 from keymanapp/chore/ios/cherry-pick/14914-renew-ios-cert
chore(ios): renew certificate 🍒 🏠
2025-10-10 05:33:01 +02:00
Eberhard Beilharz
5a109fbb9d
Merge pull request #14898 from keymanapp/fix/linux/cherry-pick/14888_dbusx11dep
fix(linux): replace `dbus-x11` dependency 🍒 🏠

When using a different DBus implementation `dbus-launch` might not exist, but instantiating a `SessionBus` object might start a session dbus if it's not already running. This change also replaces the `dbus-x11` dependency with `default-dbus-session-bus | dbus-session-bus` and changes the way we detect if dbus is already running.

Also remove `DBUS_SESSION_BUS_ADDRESS` from `sudo gsettings` call. It turns out we don't need this since we execute the `gsettings` command in the context of the user anyway which connects to the user's session dbus.

Cherry-pick-of: #14895
Fixes: #14888
2025-10-10 03:46:41 +02:00
Shawn Schantz
05ec654e17 chore(ios): renew certificate 2025-10-09 11:13:10 -04:00
Darcy Wong
6cb9749256 fix(android): Refactor bottom inset calculations for inapp and system 2025-10-09 06:42:57 +07:00
Darcy Wong
14c95ade3b
Merge pull request #14906 from keymanapp/cherrypick/android/14897-longpress-delay-menu
fix(android): Convert longpress delay menu to ConstraintLayout 🏠
2025-10-09 06:40:00 +07:00
Darcy Wong
c0a0d879b4 fix(android): Convert longpress delay menu to ConstraintLayout 2025-10-08 15:26:06 +07:00
Eberhard Beilharz
b80dbf5a6b
fix(linux): replace dbus-x11 dependency 🍒
When using a different DBus implementation `dbus-launch` might not exist,
but instantiating a `SessionBus` object might start a session dbus if
it's not already running. This change also replaces the `dbus-x11`
dependency with `default-dbus-session-bus | dbus-session-bus` and changes
the way we detect if dbus is already running.

Also remove `DBUS_SESSION_BUS_ADDRESS` from `sudo gsettings` call. It
turns out we don't need this since we execute the `gsettings` command
in the context of the user anyway which connects to the user's session
dbus.

Cherry-pick-of: #14895
Fixes: #14888
Test-bot: skip
2025-10-07 16:29:59 +02:00
Eberhard Beilharz
f4c95e98ca
Merge pull request #14855 from keymanapp/chore/linux/changelog
chore(linux): Update debian changelog 🏠
2025-10-06 12:00:37 +02:00
Eberhard Beilharz
d93f3a4931
chore(linux): Update debian changelog 2025-09-29 11:38:49 +02:00
Keyman Server
3d2c2df621
Merge pull request #14852 from keymanapp/auto/version-stable-18.0-18.0.243
auto: increment stable-18.0 version to 18.0.243
2025-09-29 08:57:38 +02:00
Keyman Build Agent
b87475fa60 auto: increment stable-18.0 version to 18.0.243 2025-09-29 02:57:06 -04:00
Marc Durdin
00c1eada74
Merge pull request #14832 from keymanapp/feat/windows/cherry-pick/14787-improve-startup-time
feat(windows): improve startup time by caching locale names 🍒 🏠
2025-09-29 07:43:10 +02:00
Marc Durdin
1b490fa4cf
Merge pull request #14829 from keymanapp/fix/windows/cherry-pick/14791-no-advertising
fix(windows): disable .msi shortcut advertisement 🍒 🏠
2025-09-29 07:43:04 +02:00
Darcy Wong
69a1132558
Merge pull request #14833 from keymanapp/cherrypick/android/bottom-insets
fix(android): Apply bottom insets to system keyboard for Keyman, KMSample2, and FirstVoices 🏠
2025-09-29 10:06:30 +07:00
Eberhard Beilharz
ce2fc6d3fc
Merge pull request #14811 from keymanapp/chore/linux/cherry-pick/lintian
chore(linux): remove no longer needed lintian overrides 🍒 🏠

It looks like we no longer need these lintian overrides: - package-contains-documentation-outside-usr-share-doc got resolved by excluding these directories from our source package - the other one was a false positive that looks like it got fixed in Debian

Cherry-pick-of: #14810
2025-09-26 08:54:05 +02:00
Darcy Wong
7337952f6f docs(android): Document getNavigationBarHeight API 2025-09-25 20:58:05 +07:00
Darcy Wong
cb9e295d46 cherrypick(android): Fix bottom insets for KMSample2 and FirstVoices 2025-09-25 20:57:32 +07:00
Darcy Wong
94535521fd cherrypick(android): Apply bottom insets to system keyboard 2025-09-25 20:56:52 +07:00
Marc Durdin
dbf2815846 docs(windows): add documentation for localization functions
Build-bot: skip
2025-09-25 14:56:21 +02:00
Marc Durdin
ca83712765 feat(windows): improve startup time by caching locale names
This was flagged years ago as a potential performance hotspot: each
locale is loaded at process start for any kmcomapi-involved process,
which takes quite a long time. This refactor moves the locale
enumeration out of kmcomapi and into the build process, so we have a
static list of locales put into locale/index.xml.

This includes a minor breaking change to Keyman Engine API on Windows:
`MessageFromID(id, locale)` now only allows the three ids
SKUILanguageName, SKUILanguageNameWithEnglish, and SKLanguageCode, for
performance reasons. At this point, only SKUILanguageNameWithEnglish is
actually used anywhere in Keyman, and it is unlikely that any other
consumers are requesting alternate IDs.

Fixes: #14787
Build-bot: skip release:windows
2025-09-25 14:56:20 +02:00
Marc Durdin
2a81279dc1 fix(windows): disable .msi shortcut advertisement
Change Keyman shortcuts to standard Windows shortcuts, rather than
advertised shortcuts, to work around a problem with advertised shortcuts,
elevated custom actions, and non-admin users, as described in #14791.

The problem is related to advertised shortcuts in Windows Installer. When
you have an advertised shortcut, the first use of the shortcut triggers a
repair to prepare the app for use in the new user's context. And now, with
Aug 2025 Windows security patch KB5063878, tweaked in Sep 2025, this
triggers an elevation dialog, which the non-admin user cannot work around.

This means that the shortcuts will be regular Windows shortcut files rather
than advertised shortcuts, and are added to
`%ProgramData%\Microsoft\Windows\Start Menu\Programs\Keyman for Windows`
(so, available for all users on that machine, but will not follow a user
across machines).

* DISABLEADVTSHORTCUTS: https://learn.microsoft.com/en-us/windows/win32/msi/disableadvtshortcuts
* Shortcut advertisement: https://learn.microsoft.com/en-us/windows/win32/msi/advertisement

Relates-to: #14809
Fixes: #14791
Cherry-pick-of: #14814
Build-bot: skip release:windows
2025-09-25 09:06:53 +02:00