Commit graph

33193 commits

Author SHA1 Message Date
Marc Durdin
0e0b858269
Merge pull request #15653 from keymanapp/fix/developer/15627-checkPackageInfo-null-return-values
fix(developer): use correct return values and nullish checks in package-validation
2026-03-03 20:25:45 +07:00
Marc Durdin
cb099d2490
Merge pull request #15622 from keymanapp/fix/developer/15621-handle-missing-package-object-in-kps-file
fix(developer): handle .kps file that has no `<Package>` element
2026-03-03 20:25:37 +07:00
Marc Durdin
ddb06c6f4b
Merge pull request #15616 from keymanapp/fix/developer/15601-crlf-in-ldml-debugger
fix(developer): handle CRLF as CR internally in LDML debugger
2026-03-03 20:25:27 +07:00
Eberhard Beilharz
8aea535d55
Merge pull request #15629 from keymanapp/docs/core/docs
docs(core): add keyhandling doc

This documents the state of `km_core_actions.emit_keystroke` for different keys pressed. Also some cleanup in other docs.

This documents the state after merging #15609 (for ldml keyboards) and NN (for kmn keyboards).

Follows: #15609
2026-03-02 20:22:34 +01:00
Keyman Server
aa54ce23d8
Merge pull request #15657 from keymanapp/auto/version-master-19.0.208
auto: increment master version to 19.0.208
2026-03-02 19:04:03 +01:00
Keyman Build Agent
e06868a622 auto: increment master version to 19.0.208
Test-bot: skip
Build-bot: skip
2026-03-02 12:01:33 -06:00
Marc Durdin
42eec30825 fix(developer): handle CRLF as CR internally in LDML debugger
While the debugger memo internally uses CRLF, in all references, CRLF
should be converted to CR for consistent text manipulation operations.
This follows a similar fix in the kmn debugger in #13334.

Also addresses review comments from @ermshiperete.

Fixes: #15601
Relates-to: #13334
2026-03-02 14:44:18 +01:00
Marc Durdin
3e41d7094f chore(developer): cleanup kps file reader per review comments
Co-authored-by: Darcy Wong <darcy_wong@sil.org>
Co-authored-by: Eberhard Beilharz <ermshiperete@users.noreply.github.com>
2026-03-02 14:38:45 +01:00
Marc Durdin
7377a17216
Merge pull request #15618 from keymanapp/fix/developer/15617-handle-null-window-on-destroy
fix(developer): handle window already destroyed when closing editor
2026-03-02 20:30:45 +07:00
Marc Durdin
b09eb3d589
Merge pull request #15620 from keymanapp/fix/developer/15619-handle-missing-info-section-in-kmp-compiler
fix(developer): package compiler handle missing `info` section in .kps file
2026-03-02 20:04:42 +07:00
Marc Durdin
9666227b48 chore(developer): add null guard to TframeCEFHost.SetFocus
Co-authored-by: Eberhard Beilharz <ermshiperete@users.noreply.github.com>
2026-03-02 14:04:00 +01:00
Marc Durdin
343cf45672 fix(developer): use correct return values and nullish checks in package-validation
Turned on strictNullChecks to verify the file and found a few other
problems in this file. However, there are many null check errors
reported across the kmc-package source which should be addressed in a
future patch. (This is a broader problem for the entire Typescript
source of Keyman.)

Fixes: #15627
Test-bot: skip
Build-bot: skip build:developer
2026-03-02 10:42:33 +01:00
Darcy Wong
2f9f7c15ca
Merge pull request #15605 from keymanapp/fix/ios/fv/build-sh
chore(ios): Cleanup `RELEASE_OEM_FIRSTVOICES` var in build.sh scripts
2026-03-02 11:19:25 +07:00
Darcy Wong
eaab2f25fb
Merge branch 'master' into fix/ios/fv/build-sh 2026-02-27 07:57:31 +07:00
Eberhard Beilharz
f07f95452f
docs(core): add keyhandling doc
This documents the state of `km_core_actions.emit_keystroke` for
different keys pressed. Also some cleanup in other docs.

This documents the state after merging #15609 (for ldml keyboards) and
NN (for kmn keyboards).

Follows: #15609
Build-bot: skip
Test-bot: skip
2026-02-25 19:31:00 +01:00
Keyman Server
b526238b70
Merge pull request #15628 from keymanapp/auto/version-master-19.0.207
auto: increment master version to 19.0.207
2026-02-25 19:08:12 +01:00
Keyman Build Agent
1cc1e972ad auto: increment master version to 19.0.207
Test-bot: skip
Build-bot: skip
2026-02-25 12:01:25 -06:00
Shawn Schantz
c65a46f552
Merge pull request #15498 from keymanapp/maint/ios/15475-xcode-26
maint(ios): upgrade to Xcode 26.2
2026-02-25 11:57:13 -05:00
Keyman Server
3f8961f2b4
Merge pull request #15623 from keymanapp/auto/version-master-19.0.206
auto: increment master version to 19.0.206
2026-02-24 19:07:26 +01:00
Keyman Build Agent
464421a9ff auto: increment master version to 19.0.206
Test-bot: skip
Build-bot: skip
2026-02-24 12:01:46 -06:00
Eberhard Beilharz
f51a3a4c06
Merge pull request #15608 from keymanapp/test/core/minkbd
test(core): add LDML baseline test with minimal keyboard

This replaces and enables the commented `k_000_null_keyboard` test which didn't work because keys that are not on any layer don't produce output. This instead defines a minimal keyboard with just two keys and then tests typing a key that is on the keyboard followed by a key not on the keyboard.
2026-02-24 17:40:18 +01:00
Eberhard Beilharz
3db661cd42
Merge pull request #15600 from keymanapp/refactor/core/loop
refactor(core): simplify loop for removing text

Instead of using an iterator to loop over the context items, incrementing a counter on each iteration, and then finally removing the calculated number of context items from the list, this change loops through the list and looks at the last context item, removing it if necessary.

Follows: #15596
2026-02-24 17:39:13 +01:00
Eberhard Beilharz
d359908d87
Merge pull request #15596 from keymanapp/fix/core/ldmltest
fix(core): fix iterator in backspace handling

This change replaces the reverse iterator loop that holds a stale iterator across `pop_back()` calls with a pattern that directly accesses `context.back()` on each iteration. This avoids undefined behavior from iterator invalidation when mutating the list or vector.

While so far the previous code didn't show problems, it might still access released memory depending on the implementation. The documentation for `pop_back()` says "References and iterators to the erased element are invalidated", so the previous implementation was clearly wrong.
2026-02-24 17:37:17 +01:00
Marc Durdin
9fca089dc8 fix(developer): handle .kps file that has no <Package> element
Fixes: #15621
Fixes: KEYMAN-DEVELOPER-37D
Test-bot: skip
2026-02-24 16:48:03 +01:00
Marc Durdin
79d13a4ad2 fix(developer): package compiler handle missing info section in .kps file
Fixes: #15619
Fixes: KEYMAN-DEVELOPER-27R
Test-bot: skip
2026-02-24 16:17:06 +01:00
Marc Durdin
0bd6f59382 fix(developer): handle window already destroyed when closing editor
Fixes: #15617
Fixes: KEYMAN-DEVELOPER-1JD
Fixes: KEYMAN-DEVELOPER-36K
Fixes: KEYMAN-DEVELOPER-2P5
Test-bot: skip
2026-02-24 15:35:44 +01:00
Shawn Schantz
610ccc11c2 Revert "maint(ios): resolved warnings for Xcode 26"
This reverts commit a91f098ed6.
Apply these changes in a separate PR.
2026-02-23 13:38:01 -05:00
Keyman Server
bc546d004c
Merge pull request #15610 from keymanapp/auto/version-master-19.0.205
auto: increment master version to 19.0.205
2026-02-20 19:07:13 +01:00
Keyman Build Agent
60e49fe271 auto: increment master version to 19.0.205
Test-bot: skip
Build-bot: skip
2026-02-20 12:01:18 -06:00
Eberhard Beilharz
2237db95f6
test(core): add LDML baseline test with minimal keyboard
This replaces and enables the commented `k_000_null_keyboard` test which
didn't work because keys that are not on any layer don't produce output.
This instead defines a minimal keyboard with just two keys and then tests
typing a key that is on the keyboard followed by a key not on the keyboard.

Test-bot: skip
2026-02-20 12:09:08 +01:00
Joshua Horton
46374e6a92
Merge pull request #15598 from keymanapp/maint/web/spaced-path-handling
maint(web): ensure Web build scripts handle paths with spaces properly
2026-02-20 14:10:40 +07:00
Darcy Wong
a6d92d30f4 chore(ios): Cleanup RELEASE_OEM_FIRSTVOICES var in build.sh scripts
Fixes #9051

* Fixes unbound variable in tools/prepRelease.sh
* Checks `RELEASE_OEM_FIRSTVOICES` env var for build targets
2026-02-20 10:34:55 +07:00
Shawn Schantz
a91f098ed6 maint(ios): resolved warnings for Xcode 26
the keyboard is blank when running in the simulator
unsure why and removing these warnings does not
resolve the issue
2026-02-19 11:21:54 -05:00
Eberhard Beilharz
b405bf5842
refactor(core): simplify loop for removing text
Instead of using an iterator to loop over the context items, incrementing
a counter on each iteration, and then finally removing the calculated
number of context items from the list, this change loops through the list
and looks at the last context item, removing it if necessary.

Follows: #15596
Test-bot: skip
2026-02-18 17:34:02 +01:00
Eberhard Beilharz
df2b675202
fix(core): changed ldml tests to use context list instead of vector
Production code uses a list of context items, so this change modifies
the tests to also use a list instead of a vector to more closely match
production code.

Addresses code review comment.

Test-bot: skip
2026-02-18 16:08:59 +01:00
Eberhard Beilharz
32bb1c8502
fix(core): fix iterator in backspace handling
This change replaces the reverse iterator loop that holds a stale iterator
across `pop_back()` calls with a pattern that directly accesses
`context.back()` on each iteration. This avoids undefined behavior from
iterator invalidation when mutating the list or vector.

While so far the previous code didn't show problems, it might still access
released memory depending on the implementation. The documentation for
`pop_back()` says "References and iterators to the erased element are
invalidated", so the previous implementation was clearly wrong.

Test-bot: skip
2026-02-18 15:58:45 +01:00
Joshua Horton
5c445d470c change(web): remove temp debug shell-script echo statements 2026-02-18 12:59:17 +07:00
Joshua Horton
b7975973af maint(web): ensure Web build scripts handle paths with spaces properly
The command shortcuts that were used by Web
scripts to create bundles via `esbuild` were not
properly handling the $KEYMAN_ROOT path when it
contained a space.  These changes will rectify
this behavior and permit builds for such cases.

Build-bot: skip build:web
Test-bot: skip
2026-02-18 09:14:30 +07:00
Keyman Server
65408863b5
Merge pull request #15593 from keymanapp/auto/version-master-19.0.204
auto: increment master version to 19.0.204
2026-02-16 19:05:18 +01:00
Keyman Build Agent
2a96eae14d auto: increment master version to 19.0.204
Test-bot: skip
Build-bot: skip
2026-02-16 12:01:20 -06:00
Marc Durdin
b23c97e368
Merge pull request #15591 from keymanapp/mcdurdin-patch-1
docs: Add status.keyman.com info to website readme
2026-02-16 11:19:18 +07:00
Marc Durdin
4cfb7402da
Revise port lookup and dependencies in README
Updated the port lookup table and website dependencies in the README.
2026-02-16 05:01:11 +01:00
Keyman Server
989a8dbadb
Merge pull request #15578 from keymanapp/auto/version-master-19.0.203
auto: increment master version to 19.0.203
2026-02-12 19:07:24 +01:00
Keyman Build Agent
4a0bbe68f6 auto: increment master version to 19.0.203
Test-bot: skip
Build-bot: skip
2026-02-12 12:01:32 -06:00
Eberhard Beilharz
d32d1b6b78
Merge pull request #15573 from keymanapp/fix/linux/15572_FileNotFoundError
fix(linux): check for existing file before trying to install

Under some circumstances it's possible that the user manages to select a directory instead of a kmp file, or manually enters a non-existing file. Is used to throw an error that we caught on Sentry; the user was able to continue to use the app. This change now checks for a valid file before trying to install the kmp file.

Fixes: #15572
Fixes: KEYMAN-LINUX-99
2026-02-12 10:20:37 +01:00
Keyman Server
90ff20bdf6
Merge pull request #15574 from keymanapp/auto/version-master-19.0.202
auto: increment master version to 19.0.202
2026-02-09 19:07:22 +01:00
Keyman Build Agent
1257c249b8 auto: increment master version to 19.0.202
Test-bot: skip
Build-bot: skip
2026-02-09 12:01:38 -06:00
Eberhard Beilharz
7941b3d4a1
fix(linux): check for existing file before trying to install
Under some circumstances it's possible that the user manages to select
a directory instead of a kmp file, or manually enters a non-existing file.
Is used to throw an error that we caught on Sentry; the user was able to
continue to use the app. This change now checks for a valid file before
trying to install the kmp file.

Fixes: #15572
Fixes: KEYMAN-LINUX-99
2026-02-09 16:04:24 +01:00
Eberhard Beilharz
96bae4296f
Merge pull request #15568 from keymanapp/chore/linux/xz
chore(linux): use xz compression for source tarballs 🗜️

Using the xz compression instead of gzip greatly reduces the size of the tarball.

Follows: #15566
2026-02-09 15:13:26 +01:00
Eberhard Beilharz
e776a2cf76
Merge pull request #15566 from keymanapp/fix/linux/15544_sourcepkg
fix(linux): include missing artifacts in source tarball 🗜️

With this change it's possible to build Keyman from the source tarball by running `./build.sh` from the Keyman root directory.

When building Keyman as part of the Ubuntu/Debian packaging, we don't use the toplevel `build.sh` file but instead call the build scripts in the subdirectories. This omits building some components that are currently not needed for running Keyman for Linux. The `dist.sh` script only includes the necessary files in this case, distinguished by the `origdist` parameter. This results in a significantly smaller tarball (2.5MB vs 51MB).

This change also enhances the `generate_tar_ignore_list` function so that it is now possible to add `build` to the exclude list to ignore all `build` subdirectories.

Fixes: #15544
2026-02-09 15:06:34 +01:00