Commit graph

30398 commits

Author SHA1 Message Date
Marc Durdin
7c1f3b68d3
Merge pull request #15703 from keymanapp/fix/developer/cherry-pick/15659-resolve-input-path-for-kmc-copy
fix(developer): resolve input project path for `kmc copy` 🍒 🏠
2026-03-09 16:02:18 +07:00
Marc Durdin
b241cfc547
Merge pull request #15702 from keymanapp/fix/developer/cherry-pick/15699-await-copier-result
fix(developer): await copier result before reporting success or failure 🍒 🏠
2026-03-09 16:02:04 +07:00
Marc Durdin
67c7d84959 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
Cherry-pick-of: #15700
2026-03-09 07:10:37 +01:00
Marc Durdin
c99acb4e20 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
Cherry-pick-of: #15701
2026-03-09 06:26:05 +01:00
Marc Durdin
63c8ae0288
Merge pull request #15633 from keymanapp/fix/developer/cherry-pick/15625-ngrok-upgrade
fix(developer): ngrok upgrade 🍒 🏠
2026-03-09 11:23:41 +07:00
Marc Durdin
0e2b1f000c
Merge pull request #15695 from keymanapp/fix/developer/cherry-pick/11706-debug-memo-get-anchor-with-tom-interface
fix(developer): retrieve debug memo anchor without side effects 🍒 🏠
2026-03-06 21:01:47 +07:00
Marc Durdin
e56c2f511b
Merge pull request #15694 from keymanapp/fix/developer/cherry-pick/15063-clone-overwrite
fix(developer): prevent new projects from overwriting existing projects 🍒 🏠
2026-03-06 21:01:36 +07:00
Marc Durdin
ed039332d8 fix(developer): address review comments 2026-03-06 12:26:57 +01:00
Marc Durdin
507dc7a749 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-06 12:26:50 +01:00
Marc Durdin
2053b17299 chore(developer): address review comments
Co-authored-by: Darcy Wong <darcy_wong@sil.org>
2026-03-06 12:23:40 +01:00
Marc Durdin
6843509d24 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-06 12:23:39 +01:00
Marc Durdin
5c5cf73388
Merge pull request #15686 from keymanapp/fix/developer/cherry-pick/13958-setup-feedback
fix(developer): improve UI feedback on upgrade 🍒 🏠
2026-03-05 21:19:45 +07:00
Marc Durdin
f8a1ad2f13 fix(developer): improve UI feedback on upgrade
Show a progress dialog when running the Keyman Developer upgrade
(`-au` parameter).

Fixes: #13958
Test-bot: skip
Cherry-pick-of: #15670
2026-03-05 13:33:39 +01:00
Marc Durdin
0ad94365c1
Merge pull request #15668 from keymanapp/fix/developer/cherry-pick/15630-missing-description-in-windows-import
fix(developer): apply keyboard description in Windows keyboard import 🍒 🏠
2026-03-05 19:19:15 +07:00
Marc Durdin
a431f7b58a
Merge pull request #15664 from keymanapp/fix/developer/cherry-pick/15619-handle-missing-info-section-in-kmp-compiler
fix(developer): package compiler handle missing `info` section in .kps file 🍒 🏠
2026-03-05 19:19:04 +07:00
Marc Durdin
732048598a
Merge pull request #15663 from keymanapp/fix/developer/cherry-pick/15617-handle-null-window-on-destroy
fix(developer): handle window already destroyed when closing editor 🍒 🏠
2026-03-05 19:18:58 +07:00
Marc Durdin
9dacfcd06f
Merge pull request #15662 from keymanapp/fix/developer/cherry-pick/15627-checkPackageInfo-null-return-values
fix(developer): use correct return values and nullish checks in package-validation 🍒 🏠
2026-03-05 19:18:51 +07:00
Marc Durdin
a9b0cbd70f
Merge pull request #15661 from keymanapp/fix/developer/cherry-pick/15621-handle-missing-package-object-in-kps-file
fix(developer): handle .kps file that has no `<Package>` element 🏠 🍒
2026-03-05 19:18:43 +07:00
Marc Durdin
a035516a48
Merge pull request #15660 from keymanapp/fix/developer/cherry-pick/15601-crlf-in-ldml-debugger
fix(developer): handle CRLF as CR internally in LDML debugger 🍒 🏠
2026-03-05 19:18:30 +07:00
Marc Durdin
111bd5082e fix(developer): apply keyboard description in Windows keyboard import 🍒
Fixes: #15630
Test-bot: skip
Cherry-pick-of: #15667
2026-03-04 04:58:48 +01:00
Marc Durdin
456bf97d0a 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-03 14:47:48 +01:00
Marc Durdin
02548dad1b fix(developer): package compiler handle missing info section in .kps file
Fixes: #15619
Fixes: KEYMAN-DEVELOPER-27R
Test-bot: skip
2026-03-03 13:52:16 +01:00
Marc Durdin
1d078cc7d4 chore(developer): add null guard to TframeCEFHost.SetFocus
Co-authored-by: Eberhard Beilharz <ermshiperete@users.noreply.github.com>
2026-03-03 13:50:56 +01:00
Marc Durdin
3ed439fcef 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-03-03 13:50:55 +01:00
Marc Durdin
a1b0113e14 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
Cherry-pick-of: #15653
2026-03-03 13:49:18 +01:00
Marc Durdin
71705610c6 fix(developer): handle .kps file that has no <Package> element
Fixes: #15621
Fixes: KEYMAN-DEVELOPER-37D
Test-bot: skip
2026-03-03 13:45:40 +01:00
Marc Durdin
0c55be6ade 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
Cherry-pick-of: #15616
2026-03-03 13:43:45 +01:00
Marc Durdin
66162a0610 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:33:44 +01:00
Marc Durdin
20b11ea1b7 docs(developer): refresh ngrok help 2026-02-26 11:45:43 +01:00
Marc Durdin
dfcf18a8a2 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
Cherry-pick-of: #15626
Test-bot: skip
2026-02-26 11:44:44 +01:00
Shawn Schantz
b11b52c7d0
Merge pull request #15614 from keymanapp/maint/ios/cherry-pick/15475-xcode-26
maint(ios): upgrade to Xcode 26.2 🍒 🏠
2026-02-25 11:59:23 -05:00
sgschantz
1145fb13a1 maint(ios): update sentry version
Fixes: #15475
2026-02-23 11:21:29 -05:00
sgschantz
fad254e71b maint(ios): upgrade Sentry version 2026-02-23 11:20:22 -05:00
Shawn Schantz
7549c2abd4
Merge pull request #15575 from keymanapp/maint/mac/cherry-pick/15475-xcode-26
maint(mac): upgrade to Xcode 26.2 🍒 🏠
2026-02-20 10:40:46 -05:00
Marc Durdin
dae88db069
Merge branch 'stable-18.0' into maint/mac/cherry-pick/15475-xcode-26 2026-02-12 12:26:49 +07:00
Marc Durdin
e9b06eebaa
Merge pull request #15577 from keymanapp/maint/mac/cherry-pick/10200-handle-hdiutil-detach-failure
fix(mac): retry for mac disk detach 🍒 🏠
2026-02-12 12:26:40 +07:00
Marc Durdin
98df594f76 fix(mac): ensure retry for mac disk detach actually repeats
Increment needed a guard in order to not abort the script. I have tested
locally (stubbing out hdiutil and replacing with false!) -- so I am more
confident this time.

Test-bot: skip
Build-bot: skip
Follows: #15176
2026-02-12 05:41:02 +01:00
Marc Durdin
a50a78d4ba maint(mac): handle hdiutil detach failure correctly in make-km-dmg.sh
Fixes: #10201
Test-bot: skip
Build-bot: skip release:mac
2026-02-12 05:40:54 +01:00
sgschantz
bf062ca5ef maint(mac): upgrade to Xcode 26
change cocoa-sentry version to one compatible with
Xcode 26
2026-02-11 08:54:20 -05:00
Eberhard Beilharz
ad3ab2f847
Merge pull request #15558 from keymanapp/chore/linux/deb
chore(linux): update copyright year and standards version 🏠
2026-02-05 14:05:14 +01:00
Eberhard Beilharz
be60bc0182
Merge pull request #15556 from keymanapp/chore/linux/changelog
chore(linux): Update debian changelog 🏠
2026-02-05 14:04:56 +01:00
Eberhard Beilharz
5aaec9eeb3
chore(linux): update copyright year and standards version
This change updates the copyright year in the `debian/copyright` file
as well as the `Standards-Version` to 4.7.3 in `debian/control`.

Test-bot: skip
2026-02-04 14:07:46 +01:00
Eberhard Beilharz
06efd544f5
chore(linux): Update debian changelog 2026-02-04 13:48:41 +01:00
Keyman Server
3fe2a0f990
Merge pull request #15554 from keymanapp/auto/version-stable-18.0-18.0.247
auto: increment stable-18.0 version to 18.0.247
2026-02-04 04:41:53 +01:00
Keyman Build Agent
61b77c28f2 auto: increment stable-18.0 version to 18.0.247 2026-02-03 21:41:24 -06:00
Marc Durdin
0c071bb2b7
Merge pull request #15551 from keymanapp/fix/core/cherry-pick/15491-15505-bengali-normalization-and-tests
fix(core): normalization segment should end on NFC boundary, not NFD 🍒 🏠
2026-02-04 09:54:03 +07:00
Marc Durdin
2f5bbccd52
Merge pull request #15494 from keymanapp/fix/core/cherry-pick/15487-bksp
fix(core): handle backspace decomposition 🍒 🏠
2026-02-04 09:53:53 +07:00
Marc Durdin
75b540c4d9 chore(core): update test from nfd to nfc 2026-02-04 06:35:56 +11:00
Marc Durdin
c16af76186 chore(core): address review comments
Co-authored-by: Darcy Wong <darcy_wong@sil.org>
Co-authored-by: Eberhard Beilharz <ermshiperete@users.noreply.github.com>
2026-02-04 06:16:19 +11:00
Marc Durdin
2e96fe93b6 fix(core): normalization segment should end on NFC boundary, not NFD
When normalizing, we need to stop processing on an NFC boundary, not an
NFD boundary, to support normalizations such as in Bengali, where
appending `U+09D7` to a context of `U+0995 U+09C7` should result in
`U+0995 U+09CC`.

The specification is unclear on this; see https://unicode-org.atlassian.net/browse/CLDR-19218

This also updates the ldml keyboard unit test suite to support running
in full NFC mode (used in all Engine implementations) as well retaining
the NFD mode (now only used by the debugger).

Side note: the Bengali normalization failure case was picked up by the
improvements to the unit test suite, proving once again that good tests
are so valuable.

Fixes: #15491
Fixes: #15505
Follows: #15488
Cherry-pick-of: #15506
Relates-to: CLDR-19218
2026-02-04 06:15:35 +11:00