Commit graph

3417 commits

Author SHA1 Message Date
dependabot[bot]
b2be91752e
chore(deps): bump ip-address
Bumps [ip-address](https://github.com/beaugunderson/ip-address) from 10.1.0 to 10.2.0.
- [Commits](https://github.com/beaugunderson/ip-address/commits)

---
updated-dependencies:
- dependency-name: ip-address
  dependency-version: 10.2.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-18 09:37:48 +00:00
dependabot[bot]
c77dab10fc
chore(deps): bump path-to-regexp and express
Bumps [path-to-regexp](https://github.com/pillarjs/path-to-regexp) to 0.1.13 and updates ancestor dependency [express](https://github.com/expressjs/express). These dependencies need to be updated together.


Updates `path-to-regexp` from 0.1.12 to 0.1.13
- [Release notes](https://github.com/pillarjs/path-to-regexp/releases)
- [Changelog](https://github.com/pillarjs/path-to-regexp/blob/v.0.1.13/History.md)
- [Commits](https://github.com/pillarjs/path-to-regexp/compare/v0.1.12...v.0.1.13)

Updates `express` from 4.21.2 to 4.22.1
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/v4.22.1/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.21.2...v4.22.1)

---
updated-dependencies:
- dependency-name: path-to-regexp
  dependency-version: 0.1.13
  dependency-type: indirect
- dependency-name: express
  dependency-version: 4.22.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-05-04 09:37:20 +00:00
Marc Durdin
e99813b3e3 chore(common): cleanup optionals in ldml keyboard reader
`boxArrays` had some optional chaining that was either not needed,
and/or was used in an inappropriate context, for example within the
iterable argument to a `for` statement, which would have caused an "not
iterable" error if it ever actually resolved to `undefined`.

This should have no material impact on the code, but helps to clarify
code readability.

Test-bot: skip
2026-04-22 15:33:26 +02:00
Marc Durdin
1e1a378231
Merge pull request #15791 from keymanapp/dependabot/npm_and_yarn/developer/src/server/src/win32/trayicon/addon-src/brace-expansion-5.0.5
chore(deps): bump brace-expansion from 5.0.4 to 5.0.5 in /developer/src/server/src/win32/trayicon/addon-src
2026-03-28 03:25:08 +11:00
dependabot[bot]
0205ada4aa
chore(deps): bump brace-expansion
Bumps [brace-expansion](https://github.com/juliangruber/brace-expansion) from 5.0.4 to 5.0.5.
- [Release notes](https://github.com/juliangruber/brace-expansion/releases)
- [Commits](https://github.com/juliangruber/brace-expansion/compare/v5.0.4...v5.0.5)

---
updated-dependencies:
- dependency-name: brace-expansion
  dependency-version: 5.0.5
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-26 22:20:26 +00:00
dependabot[bot]
fb8dae5090
chore(deps): bump picomatch
Bumps [picomatch](https://github.com/micromatch/picomatch) from 4.0.3 to 4.0.4.
- [Release notes](https://github.com/micromatch/picomatch/releases)
- [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md)
- [Commits](https://github.com/micromatch/picomatch/compare/4.0.3...4.0.4)

---
updated-dependencies:
- dependency-name: picomatch
  dependency-version: 4.0.4
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-26 07:39:34 +00:00
Marc Durdin
1806c1baa6 fix(developer): define globalThis for compiled custom lexical models
The boilerplate code for custom lexical models has never really been
tested. For use in a browser/worker context, we need to define
`exports`. The added unit test verifies that the model will build.

Test-bot: skip
2026-03-24 10:31:07 +01:00
dependabot[bot]
e08247d4f6
chore(deps): bump tar
Bumps [tar](https://github.com/isaacs/node-tar) from 7.5.10 to 7.5.11.
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v7.5.10...v7.5.11)

---
updated-dependencies:
- dependency-name: tar
  dependency-version: 7.5.11
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-11 00:29:09 +00:00
Marc Durdin
65f7d91e67
Merge pull request #15705 from keymanapp/fix/developer/15673-new-project-whitespace
fix(developer): use trimmed version of paths when verifying in New Project
2026-03-09 18:53:51 +07:00
Marc Durdin
36fa80f6fb
Merge pull request #15704 from keymanapp/fix/developer/15674-unlockproject-guard
fix(developer): correct INVALID_HANDLE_VALUE check in UnlockProject
2026-03-09 18:53:45 +07:00
Marc Durdin
5562f6a32c
Merge pull request #15701 from keymanapp/fix/developer/15699-await-copier-result
fix(developer): await copier result before reporting success or failure
2026-03-09 16:01:56 +07:00
Marc Durdin
f2f3e32e69 fix(developer): use trimmed version of paths when verifying in New Project
Fixes: #15673
Build-bot: skip
Test-bot: skip
2026-03-09 07:38:13 +01:00
Marc Durdin
89c9c615e5 fix(developer): correct INVALID_HANDLE_VALUE check in UnlockProject
Fixes: #15674
Test-bot: skip
Build-bot: skip
2026-03-09 07:31:51 +01:00
Marc Durdin
a8f5ee3362 fix(developer): resolve input project path for kmc copy
Relative paths would cause `kmc copy` to fail to find sources files for
the project, because component paths would be constructed incorrectly.
The cleanest fix is to ensure that we always full resolve local file
paths before attempting to copy the project.

Fixes: #15659
2026-03-09 07:08:47 +01:00
Marc Durdin
5129a482b4 fix(developer): await copier result before reporting success or failure
Without `await`, a 'success' message is always returned, because the
Promise that is returned is not nullish. While the log message was
misleading, the outcome was already correct, because the parent function
`copyProject()` did correctly await the call to `doCopy()`.

Fixes: #15699
Test-bot: skip
2026-03-09 06:24:57 +01:00
Marc Durdin
00b0a98715
Merge pull request #15649 from keymanapp/dependabot/npm_and_yarn/fast-xml-parser-5.3.8
chore(deps): bump fast-xml-parser from 5.3.4 to 5.3.8
2026-03-09 11:55:08 +07:00
Marc Durdin
11e3e100a6
Merge pull request #15626 from keymanapp/fix/developer/15625-ngrok-upgrade
fix(developer): ngrok upgrade
2026-03-06 21:49:13 +07:00
Marc Durdin
deec23cfde
Merge pull request #15672 from keymanapp/fix/developer/11706-debug-memo-get-anchor-with-tom-interface
fix(developer): retrieve debug memo anchor without side effects
2026-03-06 21:01:26 +07:00
Marc Durdin
99cec792d4
Merge pull request #15669 from keymanapp/fix/developer/15063-clone-overwrite
fix(developer): prevent new projects from overwriting existing projects
2026-03-06 21:01:11 +07:00
Marc Durdin
aff6c7d686
Merge pull request #15684 from keymanapp/maint/developer/test-callbacks-cleanup-redux
maint(developer): cleanup additional TestCompilerCallbacks references
2026-03-06 21:00:48 +07:00
Marc Durdin
659e85033a
Merge pull request #15665 from keymanapp/maint/developer/test-callbacks-cleanup
maint(developer): make `TestCompilerCallbacks` usage more consistent and simplify
2026-03-06 21:00:39 +07:00
dependabot[bot]
25c3490ecd
chore(deps): bump fast-xml-parser from 5.3.4 to 5.3.8
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 5.3.4 to 5.3.8.
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.3.4...v5.3.8)

---
updated-dependencies:
- dependency-name: fast-xml-parser
  dependency-version: 5.3.8
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-06 13:58:59 +00:00
Marc Durdin
281e382171 chore(developer): Merge branch 'master' into fix/developer/15625-ngrok-upgrade 2026-03-06 14:52:41 +01:00
Marc Durdin
cca8d4d21f docs: tweak build bot docs and update imsample gitignore
Just minor maintenance.

Build-bot: skip
Test-bot: skip
2026-03-06 10:21:04 +01:00
Marc Durdin
274d7891e6
Merge pull request #15681 from keymanapp/dependabot/npm_and_yarn/multer-2.1.1
chore(deps): bump multer from 2.0.2 to 2.1.1
2026-03-06 03:37:52 +07:00
Marc Durdin
d5db6f5395
Merge pull request #15682 from keymanapp/dependabot/npm_and_yarn/developer/src/server/src/win32/trayicon/addon-src/tar-7.5.10
chore(deps): bump tar from 7.5.7 to 7.5.10 in /developer/src/server/src/win32/trayicon/addon-src
2026-03-06 03:28:33 +07:00
Marc Durdin
0e8f468963
Merge pull request #15648 from keymanapp/dependabot/npm_and_yarn/developer/src/server/src/win32/trayicon/addon-src/minimatch-10.2.4
chore(deps): bump minimatch from 10.1.1 to 10.2.4 in /developer/src/server/src/win32/trayicon/addon-src
2026-03-06 03:28:02 +07:00
Marc Durdin
ad7966950d chore(developer): address review comments
Co-authored-by: Darcy Wong <darcy_wong@sil.org>
2026-03-05 15:19:01 +01:00
Marc Durdin
f1163860d1 fix(developer): address review comments 2026-03-05 15:14:54 +01:00
Marc Durdin
8f3b2b06c9
Merge pull request #15670 from keymanapp/fix/developer/13958-setup-feedback
fix(developer): improve UI feedback on upgrade
2026-03-05 19:20:51 +07:00
Marc Durdin
724a8ea0f5 maint(developer): cleanup additional TestCompilerCallbacks references
Address a review comment from #15665 and cleanup additional references
that I missed the first time around, along with the `fs.readFileSync`
`Uint8Array` cast.

Follows: #15665
Test-bot: skip
2026-03-05 13:15:43 +01:00
dependabot[bot]
1a07aadc05
chore(deps): bump tar
Bumps [tar](https://github.com/isaacs/node-tar) from 7.5.7 to 7.5.10.
- [Release notes](https://github.com/isaacs/node-tar/releases)
- [Changelog](https://github.com/isaacs/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/isaacs/node-tar/compare/v7.5.7...v7.5.10)

---
updated-dependencies:
- dependency-name: tar
  dependency-version: 7.5.10
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-05 09:08:11 +00:00
dependabot[bot]
0700a3e444
chore(deps): bump multer from 2.0.2 to 2.1.1
Bumps [multer](https://github.com/expressjs/multer) from 2.0.2 to 2.1.1.
- [Release notes](https://github.com/expressjs/multer/releases)
- [Changelog](https://github.com/expressjs/multer/blob/main/CHANGELOG.md)
- [Commits](https://github.com/expressjs/multer/compare/v2.0.2...v2.1.1)

---
updated-dependencies:
- dependency-name: multer
  dependency-version: 2.1.1
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-05 08:15:02 +00:00
Marc Durdin
59f02a6a55 fix(developer): retrieve debug memo anchor without side effects
Use RichEdit's `ITextDocument` interface to retrieve the selection
anchor/caret information, and avoid the side-effects that can arise with
the hacky `EM_GETSEL` / `EM_SETSEL` pattern we used previously.

Changing the selection with `EM_SETSEL` in order to find the anchor
point causes notification messages to be generated that can arrive at an
unexpected time in some text selection scenarios, which ended up with us
having a saved selection in the debugger pointing to the wrong text
range.

The name `Anchor` was a misnomer, because it was actually returning the
caret position, not the anchor for the selection, which is the far side
of the selection from the anchor!

Fixes: #11706
Fixes: KEYMAN-DEVELOPER-18A
2026-03-04 14:01:42 +01:00
Marc Durdin
26cf278cc1 fix(developer): improve UI feedback on upgrade
Show a progress dialog when running the Keyman Developer upgrade
(`-au` parameter).

Fixes: #13958
Test-bot: skip
2026-03-04 06:27:36 +01:00
Marc Durdin
7a8fa1bf7f fix(developer): prevent new projects from overwriting existing projects
The new project UI process detects if the target project folder already
exists in a given path, and asks if the author wants to overwrite it.

However, this has been inconsistently implemented -- in the clone
keyboard case, the process would fail with a message "error KM0B004:
Output path <PATH> already exists, not overwriting". In other cases, no
files would be removed, but existing files would be overwritten where
there was a collision, resulting in a messy project folder.

I have opted to prevent this situation in a consistent manner, requiring
the author to remove the folder themselves in Windows Explorer, even
though this is higher friction, because it pushes them into verifying
that they actually want to delete the contents of the folder.

I also took the opportunity to DRY out this verification process in the
six different New Project dialogs.

Fixes: #15063
2026-03-04 05:45:21 +01:00
Marc Durdin
a0ecd51c60 fix(developer): apply keyboard description in Windows keyboard import
Fixes: #15630
Test-bot: skip
2026-03-04 04:57:56 +01: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
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
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
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
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
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
dependabot[bot]
7f62458843
chore(deps): bump @isaacs/brace-expansion
Bumps @isaacs/brace-expansion from 5.0.0 to 5.0.1.

---
updated-dependencies:
- dependency-name: "@isaacs/brace-expansion"
  dependency-version: 5.0.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-03 19:54:22 +00:00