Commit graph

33476 commits

Author SHA1 Message Date
Shawn Schantz
5a26e59add
Merge pull request #15655 from keymanapp/maint/ios/fv/xcode-26
maint(ios): update fv Cartfile for Xcode 26
2026-03-03 15:57:47 -05:00
Keyman Server
8b8b6b045f
Merge pull request #15666 from keymanapp/auto/version-master-19.0.209
auto: increment master version to 19.0.209
2026-03-03 19:03:55 +01:00
Keyman Build Agent
b0bfc6be6f auto: increment master version to 19.0.209
Test-bot: skip
Build-bot: skip
2026-03-03 12:02:02 -06:00
Marc Durdin
529a49431e maint(developer): make TestCompilerCallbacks usage more consistent and simplify
Simplify usage of `TestCompilerCallbacks` by making it responsible for
the `beforeEach` and `afterEach` incantations itself. There are a couple
of more complex usages of `TestCompilerCallbacks` which have been
excluded from this change on purpose.

Renamed `testCallbacks` to `callbacks` in the one place where it was
different.

Hoist @types/node and @types/mocha because inconsistent versions of
@types/mocha were causing compiler errors with this change.

Also added a cast to `fs.readFileSync` to `Uint8Array` to eliminate
compiler warnings/errors in test files.

Fixes: #15654
Test-bot: skip
2026-03-03 16:44:06 +01:00
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
Eberhard Beilharz
9836070299
fix(core): clarify and extend comment 2026-03-02 17:43:34 +01:00
Eberhard Beilharz
67468c4dce
fix(core): address code review comments
Co-authored-by: Marc Durdin <marc@durdin.net>
2026-03-02 17:28:19 +01:00
Eberhard Beilharz
382b5d45e3
fix(core): fix keydown/up handling for LDML keyboards
For LDML keyboards this change fixes the `emit_key` flag so that it has
the same value for the KeyDown and the KeyUp event. This fixes some
problems with stuck keys. Previously we would set `emit_key=TRUE` on
KeyDown but `emit_key=FALSE` on KeyUp for frame keys. This caused Linux
to never see the KeyUp event, resulting in a stuck key.

Also add unit tests that verifies that the actions that we get after
calling `km_core_process_event` are what we expect.

Fixes: #15569
Fixes: #15550
2026-03-02 17:27:36 +01:00
Eberhard Beilharz
2bd6cfd735
refactor(core): rename fields to start with underscore
Test-bot: skip
2026-03-02 17:27:15 +01:00
Eberhard Beilharz
d8a5f694da
refactor(core): fix whitespace
Build-bot: skip
Test-bot: skip
2026-03-02 17:26:14 +01:00
Shawn Schantz
dddd500052 maint(fv): update Cartfile for Xcode 26 2026-03-02 09:16:38 -05: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
Marc Durdin
b2dbd357b8 fix(developer): address review comments
Co-authored-by: Darcy Wong <darcy_wong@sil.org>
Co-authored-by: Eberhard Beilharz <ermshiperete@users.noreply.github.com>
2026-03-02 10:31:20 +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
dependabot[bot]
ede902df4a
chore(deps): bump minimatch
Bumps [minimatch](https://github.com/isaacs/minimatch) from 10.1.1 to 10.2.4.
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/minimatch/compare/v10.1.1...v10.2.4)

---
updated-dependencies:
- dependency-name: minimatch
  dependency-version: 10.2.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-28 09:56:42 +00:00
dependabot[bot]
5d2f9bd65e
chore(deps): bump minimatch and @microsoft/api-extractor
Bumps [minimatch](https://github.com/isaacs/minimatch) to 3.1.5 and updates ancestor dependencies [minimatch](https://github.com/isaacs/minimatch) and [@microsoft/api-extractor](https://github.com/microsoft/rushstack/tree/HEAD/apps/api-extractor). These dependencies need to be updated together.


Updates `minimatch` from 3.1.2 to 3.1.5
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/minimatch/compare/v3.1.2...v3.1.5)

Updates `minimatch` from 9.0.4 to 9.0.9
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/minimatch/compare/v3.1.2...v3.1.5)

Updates `minimatch` from 9.0.5 to 9.0.9
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/minimatch/compare/v3.1.2...v3.1.5)

Updates `minimatch` from 5.1.6 to 5.1.9
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/minimatch/compare/v3.1.2...v3.1.5)

Updates `@microsoft/api-extractor` from 7.47.3 to 7.57.6
- [Changelog](https://github.com/microsoft/rushstack/blob/main/apps/api-extractor/CHANGELOG.md)
- [Commits](https://github.com/microsoft/rushstack/commits/@microsoft/api-extractor_v7.57.6/apps/api-extractor)

---
updated-dependencies:
- dependency-name: minimatch
  dependency-version: 3.1.5
  dependency-type: indirect
- dependency-name: minimatch
  dependency-version: 9.0.9
  dependency-type: indirect
- dependency-name: minimatch
  dependency-version: 9.0.9
  dependency-type: indirect
- dependency-name: minimatch
  dependency-version: 5.1.9
  dependency-type: indirect
- dependency-name: "@microsoft/api-extractor"
  dependency-version: 7.57.6
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-28 02:58:16 +00:00
Darcy Wong
eaab2f25fb
Merge branch 'master' into fix/ios/fv/build-sh 2026-02-27 07:57:31 +07:00
Shawn Schantz
4c4643644e fix(mac): surrogate pair backspace handling
replaces with surrogate pair or single character
but not with a larger composed character or
grapheme cluster

Fixes: #15543
2026-02-26 11:30:27 -05:00
Eberhard Beilharz
76866b275b
feat(linux): address code review comments
- add date to header and filename
- add state of ibus
- add privacy statement and link to privacy policy
2026-02-26 17:04:49 +01:00
Marc Durdin
058df11f0c docs(developer): refresh ngrok help 2026-02-26 11:39:58 +01:00
dependabot[bot]
01e3e32cae
chore(deps-dev): bump rollup from 4.22.4 to 4.59.0
Bumps [rollup](https://github.com/rollup/rollup) from 4.22.4 to 4.59.0.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v4.22.4...v4.59.0)

---
updated-dependencies:
- dependency-name: rollup
  dependency-version: 4.59.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-26 10:09:46 +00:00
Marc Durdin
7d8e3978a1 fix(developer): ngrok upgrade
The existing ngrok package is no longer maintained, so this commit
switches to @ngrok/ngrok. However, this means a number of deployment
changes, as the new module uses a node binary module rather than a
standalone executable, and the path to the module is assumed to be on
the Node search path.

The new module also requires VC++ redistributable, so installation of
that has been added to the Server Options dialog.

Use of ngrok with Keyman Developer Server should be in theory possible
with non-Windows platforms with this change, if the user installs the
appropriate @ngrok binary package (e.g. @ngrok/ngrok-darwin-universal)
globally before starting the server.

Fixes: #15625
Build-bot: skip release:developer
2026-02-26 10:07:06 +01:00
dependabot[bot]
058e68db5a
chore(deps-dev): bump basic-ftp from 5.0.5 to 5.2.0
Bumps [basic-ftp](https://github.com/patrickjuchli/basic-ftp) from 5.0.5 to 5.2.0.
- [Release notes](https://github.com/patrickjuchli/basic-ftp/releases)
- [Changelog](https://github.com/patrickjuchli/basic-ftp/blob/master/CHANGELOG.md)
- [Commits](https://github.com/patrickjuchli/basic-ftp/compare/v5.0.5...v5.2.0)

---
updated-dependencies:
- dependency-name: basic-ftp
  dependency-version: 5.2.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-25 22:36:05 +00: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