Commit graph

30273 commits

Author SHA1 Message Date
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
Eberhard Beilharz
0020b98784
fix(web): fix error trying to calculate style scaling effects 🍒
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 will thus fix the error
we're still seeing in Sentry.

The same error could potentially happen in `internalHeight`, so we
add the check for NaN there as well. Addresses code review comments.

Also add unit tests for all three methods.

# User Testing

TEST_INUKTITUT_KEYBOARD: Using Keyman for Android, install the
`inuktitut_pirurvik` and verify that no error notifications appear.

Fixes: #14108
Fixes: [KEYMAN-WEB-RA](https://keyman.sentry.io/issues/6579536471/?referrer=github_integration)
Cherry-pick-of: #14684
2025-09-05 15:53:39 +02:00
Darcy Wong
90a22b39ea
Merge pull request #14663 from keymanapp/cherrypick/android/samples-fv-edge-to-edge
fix(android): Cleanup layouts for Engine, Sample apps, and FirstVoices apps for edge to edge 🍒 🏠
2025-09-04 07:11:32 +07:00
Eberhard Beilharz
d3d6f63d0f
Merge pull request #14599 from keymanapp/maint/linux/cherry-pick/packaging 2025-09-03 11:56:36 +02:00
Darcy Wong
ee90c4308b fix(android): Update KMSample1 when changing orientation 2025-09-03 09:57:55 +07:00
Darcy Wong
51645c1e91 fix(android): Cl;eanup list layout in Engine and FirstVoices for edge to 2025-09-02 07:36:00 +07:00
Darcy Wong
482b6df3de fix(android): Update Sample, Test, and FirstVoices apps for edge to edge
fix(android): Update Sample, Test, and FirstVoices apps for edge to edge 🪟
2025-09-02 07:35:43 +07:00
Eberhard Beilharz
dd25555fbf
maint(linux): address code review comments 2025-09-01 15:36:42 +02:00
Darcy Wong
4937224352
Merge pull request #14642 from keymanapp/cherrypick/android/osk-gap
fix(android): Fix insets for in-app vs system keyboard 🏠
2025-09-01 06:52:37 +07:00
Darcy Wong
77af8cd807
Merge pull request #14597 from keymanapp/cherrypick/android/edge-to-edge
fix(android): Convert Keyman app layouts for edge to edge 🏠
2025-09-01 06:52:18 +07:00
Darcy Wong
ee4c70b513
Merge pull request #14584 from keymanapp/cherrypick/android/api-35
fix(android): Update: Android Target API to 35, Java to 21, and Gradle dependencies 🏠
2025-09-01 06:51:54 +07:00
Darcy Wong
3735b10a76 fix(android): Fix insets for in-app vs system keyboard 2025-08-29 08:05:00 +07:00
Eberhard Beilharz
eede3c8adc
Merge pull request #14589 from keymanapp/chore/linux/changelog 2025-08-28 09:37:55 +02:00
Marc Durdin
9937df9343
Merge pull request #14614 from keymanapp/maint/resources/cherry-pick-use-correct-version-for-pr-history-cherry-pick
maint(resources): use correct version for PR title for history cherry-pick 🏠 🍒
2025-08-28 04:50:41 +02:00
Eberhard Beilharz
701f7b72ec
chore(linux): Update debian changelog 2025-08-27 18:02:47 +02:00