Commit graph

30332 commits

Author SHA1 Message Date
Marc Durdin
27d8bb2cdd
Merge pull request #15219 from keymanapp/fix/windows/cherry-pick/8064-low-level-hook-watch-dog
fix(windows): reinstall low level keyboard hook if it gets removed 🍒 🏠
2025-11-28 10:49:08 +01:00
Marc Durdin
83251358b0 fix(windows): reinstall low level keyboard hook if it gets removed 🍒
This change improves the stability of Keyman for Windows by monitoring
the health of the low level keyboard hook. If keyman.exe is unresponsive
at any time, Windows can silently uninstall its low level keyboard hook,
which results in (at least) two problems:

* Keyman's hotkeys stop working
* A modifier key can become stuck, if it was pressed around the time
  Keyman became unresponsive.

The most common scenario in which Keyman can become unresponsive is high
system load, e.g. rendering graphics, videoconference calls, compiling
software.

Restarting Keyman always resolved both of these two issues in the past,
but with this patch, I hope that this will no longer be necessary.

A related 'fakefreeze' project is not included in this cherry-pick; see
PR #15179 for this.

Logging has been updated; look for "LowLevelHookWatchDog" in the log for
related events.

One final small change in keyman32.cpp, as I refactored the
WH_KEYBOARD_LL hook installation/uninstallation, was to always clear out
hook variables when uninstalling a hook, because if the hook fails to
uninstall, there's really nothing we can do about it anyway, and we
probably shouldn't be trying again.

Fixes: #8064
Cherry-pick-of: #15179
Test-bot: skip
Build-bot: skip
2025-11-21 16:00:28 +01:00
Marc Durdin
177d136598
Merge pull request #15195 from keymanapp/feat/windows/cherry-pick/15192-upgrade-wix-3-14-1
feat(windows): update wix to 3.14.1 🍒🏠
2025-11-20 11:08:15 +01:00
rc-swag
90469c8105 feat(windows): update wix to 3.14.1
Update the WiX toolset build version to 3.14.1 for Arm64.

Fixes: #15192
2025-11-20 10:22:44 +01:00
Eberhard Beilharz
756f71a25c
Merge pull request #15132 from keymanapp/chore/linux/changelog 2025-11-17 08:32:27 +01:00
Marc Durdin
1086c12c4e
Merge pull request #15175 from keymanapp/fix/windows/cherry-pick/14342-invalid-data-type-for-regkey
fix(windows): add check a fix for registry datatypes 🍒 🏠
2025-11-15 06:48:45 +01:00
rc-swag
b5b916abbf fix(windows): remove dead code 2025-11-15 05:43:27 +01:00
rc-swag
b04229efe5 fix(windows): free the correct object KeyboardToggleReg 2025-11-15 05:43:26 +01:00
rc-swag
5bf1f635a6 fix(windows): add check a fix for registry datatypes
Fixes: #14342
The Windows system level keyboard hotkeys controlled in
registry have sometimes been incorrectly written as
a DWORD datatype. There 106 events in sentry for just
July. When opening the Windows setting dialog and the registry
has DWORDS it will show unassinged in the dialog if apply
is pressed it will convert the keys to REG_SZ.
This fix follows a similar pattern it will check the data
type of the registry key if it is DWORD it will remove it
and add a new key of the same name as REG_SZ and set it to
the unassigned value.

Fixes: KEYMAN-WINDOWS-4NK
2025-11-15 05:43:25 +01:00
Eberhard Beilharz
9eeb6be695
chore(linux): Update debian changelog 2025-11-10 17:06:42 +01:00
Eberhard Beilharz
d7e160cc36
Merge pull request #14964 from keymanapp/chore/linux/changelog
chore(linux): Update debian changelog 🏠
2025-11-04 19:29:21 +01:00
Eberhard Beilharz
97d7266e31
Merge branch 'stable-18.0' into chore/linux/changelog 2025-11-03 14:44:57 +01:00
Marc Durdin
8362fb0e99
Merge pull request #15068 from keymanapp/maint/resources/npm-publish-use-v18-env-var
maint(resources): use VERSION_ENVIRONMENT var for v18 🏠
2025-11-03 05:19:06 +01:00
Marc Durdin
376b5fd612
Merge pull request #15081 from keymanapp/chore/18.0/vs2022
chore(windows): VS2022 patch for stable-18.0 🏠
2025-10-31 15:39:22 +01:00
Marc Durdin
d7b16aece9 chore(windows): upgrade VC++ projects to v143 (VS2022)
Test-bot: skip
Build-bot: skip release:developer,windows
2025-10-31 13:37:24 +01:00
Marc Durdin
f7d1b6ceb5 maint(resources): use VERSION_ENVIRONMENT var for v18
Follows: #15054
Build-bot: skip
Test-bot: skip
2025-10-31 11:36:32 +01:00
Keyman Server
b068e0af45
Merge pull request #15066 from keymanapp/auto/version-stable-18.0-18.0.245
auto: increment stable-18.0 version to 18.0.245
2025-10-31 07:39:26 +01:00
Keyman Build Agent
e2f5cbd9d7 auto: increment stable-18.0 version to 18.0.245 2025-10-31 01:38:44 -05:00
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
Eberhard Beilharz
392d85a1ad
chore(linux): Update debian changelog 2025-10-15 12:09:34 +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