Commit graph

30287 commits

Author SHA1 Message Date
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
Eberhard Beilharz
0d02825d1d
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
Test-bot: skip
2025-09-22 17:58:02 +02:00
Eberhard Beilharz
d5ddf5bb74
Merge pull request #14785 from keymanapp/maint/linux/cherry-pick/debianupload 2025-09-22 12:12:24 +02:00
Eberhard Beilharz
a73cda2e8a
maint(linux): address code review comments
- directly get PR# from `gh pr create`
- add `Build-bot: skip` trailers

Build-bot: skip
Test-bot: skip
2025-09-19 15:39:52 +02:00
Marc Durdin
3d7f6623b3
Merge pull request #14792 from keymanapp/fix/developer/cherry-pick/13903-offset-compiler-error-line
fix(developer): remove incorrect offset for compiler error line 🍒 🏠
2025-09-19 14:12:50 +02:00
Eberhard Beilharz
cf936a6b86
Merge pull request #14782 from keymanapp/chore/linux/changelog 2025-09-19 12:09:23 +02:00
Marc Durdin
54f586f51b chore(developer): update tests to match 2025-09-19 09:29:00 +02:00
Marc Durdin
1892142c6d fix(developer): remove incorrect offset for compiler error line
Fixes: #13903
2025-09-19 09:28:59 +02:00
Marc Durdin
94992526c4
Merge pull request #14779 from keymanapp/maint/resources/14778-use-VERSION-variable-for-stable-18.0
maint(resources): use VERSION variable in increment-version.sh 🏠
2025-09-19 05:29:27 +02:00
Eberhard Beilharz
711879fb15
maint(linux): improve getting PR# in upload-to-debian.sh 🍒
With this change we wait two seconds after creating the PR before trying
to get the number of the PR so that GitHub can catch up. Previously
recently it wasn't able to get the PR#.

Also adjust the commit message and use the new header for skipping tests.

Cherry-pick-of: #13890
Build-bot: skip
Test-bot: skip
2025-09-18 11:47:47 +02:00
Eberhard Beilharz
7c0c097f14
chore(linux): Update debian changelog 2025-09-18 11:35:12 +02:00
Eberhard Beilharz
82e6a0451d
Merge pull request #14781 from keymanapp/maint/linux/cherry-pick/oracular 2025-09-18 10:40:03 +02:00
Eberhard Beilharz
456096cb63
maint(linux): remove Oracular, add Questing 🍒
Remove EOL Ubuntu 24.10 Oracular, add Ubuntu 25.10 Questing.

Cherry-pick-of: #14319
Build-bot: skip
Test-bot: skip
2025-09-18 10:10:15 +02:00
Marc Durdin
c4789e9a79 maint(resources): use VERSION variable in increment-version.sh
The original `$KEYMAN_VERSION` variable was cherry-picked from 19.0, but
we should have been using `$VERSION` for the 18.0 code.

Fixes: #14778
Follows: #14614
Test-bot: skip
Build-bot: skip
2025-09-18 09:44:27 +02:00
Keyman Server
32c7c77693
Merge pull request #14777 from keymanapp/auto/version-stable-18.0-18.0.242
auto: increment stable-18.0 version to 18.0.242
2025-09-18 09:33:42 +02:00
Keyman Build Agent
60fb477ceb auto: increment stable-18.0 version to 18.0.242 2025-09-18 03:33:05 -04:00
Eberhard Beilharz
d696927980
Merge pull request #14771 from keymanapp/fix/linux/cherry-pick/14748_TypeError
Fixes: #14748
Fixes: KEYMAN-LINUX-8Q
Cherry-pick-of: #14760
2025-09-18 09:16:04 +02:00
Eberhard Beilharz
192136992a
Merge pull request #14774 from keymanapp/docs/linux/whatsnew 2025-09-17 16:52:38 +02:00
Eberhard Beilharz
5adf2f7e24
Merge pull request #14773 from keymanapp/chore/linux/cherry-pick/recommends
`onboard-keyman` isn't available on Debian/Ubuntu and doesn't work properly with Wayland. This change removes the `onboard-keyman` recommends which used to cause `onboard-keyman` to be installed automatically together with `keyman`. The user can still manually install `onboard-keyman`.

Fixes: #14769
Fixes: #5214
Cherry-pick-of: #14772
2025-09-17 16:52:12 +02:00
Eberhard Beilharz
5d4eb6de46
docs(linux): update release notes for stable release
Follows: #14773
Build-bot: skip
Test-bot: skip
2025-09-17 15:47:10 +02:00
Eberhard Beilharz
b3bf2eac90
chore(linux): remove automatic installation of onboard-keyman 🍒
`onboard-keyman` isn't available on Debian/Ubuntu and doesn't work
properly with Wayland. This change removes the `onboard-keyman`
recommends which used to cause `onboard-keyman` to be installed
automatically together with `keyman`. The user can still manually install
`onboard-keyman`.

Fixes: #14769
Fixes: #5214
Cherry-pick-of: #14772
Build-bot: skip
Test-bot: skip
2025-09-17 15:33:58 +02:00
Eberhard Beilharz
373c02b7d1
fix(linux): don't crash on invalid languages in keyboard 🍒
Fixes: #14748
Fixes: KEYMAN-LINUX-8Q
Cherry-pick-of: #14760

# User Testing

**TEST_INSTALL**: open `km-config` and install a keyboard. Verify that
the keyboard gets added to the list of installed keyboards in `km-config`
as well as to the languages dropdown in the taskbar.
2025-09-17 15:10:00 +02:00
Marc Durdin
ff9f6b4698
Merge pull request #14722 from keymanapp/fix/developer/cherry-pick/14719-transform-slashes-loading-package
fix(developer): transform slashes to backslashes in paths in Package Editor 🍒 🏠
2025-09-15 10:31:54 +02:00
Eberhard Beilharz
85bae5e1c9
Merge pull request #14714 from keymanapp/fix/linux/cherry-pick/14707_NoneTypeNotIterable
Some keyboards seem to be missing the `keyboards` section in the `kmp.json` file. This change prevents a crash and instead returns `None` and thus we don't create a .ldml file and so onboard will show the default keyboard instead. The alternative would be to create an empty .ldml file, but that causes onboard to show a keyboard with all key caps being empty.

Cherry-pick-of: #14708
Fixes: #14707
Fixes: KEYMAN-LINUX-8P
2025-09-10 15:05:35 +02:00
Marc Durdin
1a7633b37e fix(developer): transform slashes to backslashes in paths in Package Editor
When loading package files generated by kmc or edited on non-Windows
systems, the Package Editor will now convert any forward slashes in the
path to backslashes. This is necessary because the path manipulation
functions in Keyman Developer work only with backslashes.

Fixes: #14719
Build-bot: skip release:developer
Cherry-pick-of: #14721
2025-09-10 15:04:24 +02:00
Eberhard Beilharz
c3487e964d
fix(linux): don't crash if kmp.json is missing keyboards section 🍒
Some keyboards seem to be missing the `keyboards` section in the
`kmp.json` file. This change prevents a crash and instead returns `None`
and thus we don't create a .ldml file and so onboard will show the
default keyboard instead. The alternative would be to create an empty
.ldml file, but that causes onboard to show a keyboard with all key caps
being empty.

Cherry-pick-of: #14708
Fixes: #14707
Fixes: KEYMAN-LINUX-8P
Test-bot: skip
2025-09-09 16:32:36 +02:00
Eberhard Beilharz
53cafb1fe0
Merge pull request #14696 from keymanapp/fix/web/cherry-pick/14108_NaN
PR #13860 fixed a similar error by adding a check for NaN. However, it missed doing it for `layoutWidth` and only changed `layoutHeight`. This PR adds a similar check to `layoutWidth` and  `internalHeight` and will thus fix the error we're still seeing in Sentry.

Also add unit tests for all three methods.

Fixes: #14108
Fixes: [KEYMAN-WEB-RA](https://keyman.sentry.io/issues/6579536471/?referrer=github_integration)
Cherry-pick-of: #14684
2025-09-08 09:07:26 +02:00