Commit graph

4491 commits

Author SHA1 Message Date
Marc Durdin
f813442c40
Merge pull request #15276 from keymanapp/revert-14799-change/windows/include-map2pdb-for-relevant-projects
change(windows): Revert "change(windows): include map2pdb generation for relevant Delphi projects"
2025-12-05 07:10:52 +01:00
Marc Durdin
cb8150c896
Merge pull request #15275 from keymanapp/docs/developer/api-refresh
docs(developer): add/update API docs
2025-12-03 15:02:41 +01:00
Marc Durdin
6c99f33bcc
Revert "change(windows): include map2pdb generation for relevant Delphi projects" 2025-12-03 14:13:54 +01:00
dependabot[bot]
e4606e4925
chore(deps): bump glob
Bumps [glob](https://github.com/isaacs/node-glob) from 10.4.5 to 10.5.0.
- [Changelog](https://github.com/isaacs/node-glob/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/node-glob/compare/v10.4.5...v10.5.0)

---
updated-dependencies:
- dependency-name: glob
  dependency-version: 10.5.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-12-03 12:55:03 +00:00
Marc Durdin
9de8371cfe docs(developer): add/update API docs
Test-bot: skip
Build-bot: skip
2025-12-03 13:51:30 +01:00
Marc Durdin
99409aba91
Merge pull request #15229 from keymanapp/feat/developer/embed-osk/convert-kvk-into-kmx-plus
feat(developer): convert .kvk into KMX+ and embed into .kmx 🔱
2025-12-01 12:01:42 +01:00
Marc Durdin
f3bab43e96
chore(developer): Apply suggestions from code review
Co-authored-by: Eberhard Beilharz <ermshiperete@users.noreply.github.com>
2025-12-01 11:15:58 +01:00
Marc Durdin
ce5a5bb2f1 refactor(developer): move KVK embed into embed-osk-kvk.ts 2025-11-27 11:44:53 +01:00
Marc Durdin
3eaaacd706 fix(developer): handle errors in .keyman-touch-layout file when loading
If the .keyman-touch-layout file has validation errors, Keyman Developer
will now report the first validation error in the message window, rather
than silently closing the whole keyboard editor. The
.keyman-touch-layout file will be loaded in Code view, and once the
first validation error is addressed, switching to Design view will
report the next error.

For future improvement:
* reporting multiple validation errors
* reporting line number of error

Fixes: #15242
Test-bot: skip
2025-11-27 05:50:36 +01:00
Marc Durdin
2751b531a3
Apply suggestions from code review
Co-authored-by: Eberhard Beilharz <ermshiperete@users.noreply.github.com>
2025-11-26 06:51:57 +01:00
Marc Durdin
12b77a5a78 feat(developer): convert .kvk into KMX+ and embed into .kmx
Implement the conversion from .kvk into KMX+ format, and embed the
result into the .kmx file. This change does not yet support &displaymap.

Move some virtual key modifier state helpers out of
visual-keyboard-compiler.ts and into shared module
modifier-key-constants.ts.

This change also flags the need to update the package compiler to
rewrite the font metadata into the KMX+ tables.

Test-bot: skip
2025-11-25 11:59:34 +01:00
Marc Durdin
c546bf3bd6 feat(developer): inject KMX+ into .kmx
Add a function to inject KMX+ data into a .kmx file, along with unit
tests. Groundwork for embedding the OSK into KMX.

Test-bot: skip
2025-11-24 07:27:36 +01:00
Marc Durdin
0090d62978
Merge branch 'epic/embed-osk-in-kmx' into refactor/developer/groundwork-extra-data-and-move-helpers-for-embed 2025-11-21 14:45:38 +01:00
Marc Durdin
770b6e3347
Merge pull request #15183 from keymanapp/feat/developer/reserve-space-for-kmxplus
feat(developer): reserve space for KMX+ header in KMX written from kmcmplib 🔱
2025-11-21 14:45:14 +01:00
Marc Durdin
d033c634d7
Update developer/src/kmc-kmn/test/embed-osk.tests.ts
Co-authored-by: Eberhard Beilharz <ermshiperete@users.noreply.github.com>
2025-11-21 10:48:51 +01:00
Marc Durdin
75847a389f
Apply suggestions from code review
Co-authored-by: Eberhard Beilharz <ermshiperete@users.noreply.github.com>
2025-11-21 10:48:11 +01:00
Marc Durdin
eb4b10996d
Merge pull request #15087 from keymanapp/fix/developer/11363-prevent-race-on-server-load-kmw
fix(developer): avoid race in page.onload vs kmw.init in Server
2025-11-21 10:39:43 +01:00
Marc Durdin
76a4980848
Merge branch 'feat/developer/reserve-space-for-kmxplus' into refactor/developer/groundwork-extra-data-and-move-helpers-for-embed 2025-11-20 15:16:36 +01:00
Marc Durdin
3e1c8ed04e
Merge branch 'feat/common/kmx-plus-osk-embed-support' into feat/developer/reserve-space-for-kmxplus 2025-11-20 15:16:21 +01:00
Marc Durdin
45496aaf30
Merge branch 'epic/embed-osk-in-kmx' into feat/common/kmx-plus-osk-embed-support 2025-11-20 15:15:35 +01:00
Keyman Server
7ad056bf5f
Merge branch 'epic/embed-osk-in-kmx' into auto/A19S16-merge-master-into-embed-osk-in-kmx 2025-11-20 11:08:48 +01:00
Marc Durdin
f11803651d refactor(developer): pass extra data from kmcmplib and move helpers for embed
Move some modifier key conversion utilities to a shared unit and also
add touchLayoutFilename and targetVersion to the kmcmplib extra data,
in preparation for generating and embedding OSK data.

Test-bot: skip
2025-11-20 10:47:55 +01:00
Marc Durdin
4932790ac0 feat(developer): reserve space for KMX+ header in KMX written from kmcmplib
For keyboards that are v19 or later, always reserve space for the KMX+
header that will be written out in kmc-kmn, to avoid rewriting the whole
file. At this time, zero out that space.

Test-bot: skip
Build-bot: skip build:developer
2025-11-19 10:14:57 +01:00
Marc Durdin
fa90df7c07 chore(common): Merge branch 'feat/common/kmx-plus-osk-embed-support' 2025-11-18 15:52:16 +01:00
Marc Durdin
ede398cf7b chore(developer): rename lists to forms
Missed this in earlier refactor.
2025-11-18 15:51:44 +01:00
Marc Durdin
2076cd9989
Merge branch 'epic/embed-osk-in-kmx' into feat/common/kmx-plus-osk-embed-support 2025-11-18 15:41:05 +01:00
Marc Durdin
a53a1593ec feat(common): add v19 sections to KMX+ in Core and Developer
The disp and layr sections have new v19 layouts, to support the Keyman
OSK requirements for epic/embed-osk-in-kmx. This supports writing the
new versions of these sections in Developer and loading them into Core,
doing transformations where necessary so that Core always works with v19
structures after load.

This does not implement the transformations required to support the OSK
APIs; that will be implemented in a follow-up PR. Nor is support for
writing the OSK data from source .kvks and .keyman-touch-layout
supported; this is just the scaffolding for supporting the structures in
the KMX+ data.

Test-bot: skip
2025-11-18 13:55:01 +01:00
Marc Durdin
6e470efa3e
Merge pull request #14799 from keymanapp/change/windows/include-map2pdb-for-relevant-projects
change(windows): include map2pdb generation for relevant Delphi projects
2025-11-17 17:02:25 +01:00
Marc Durdin
edca16f508 change(windows): include map2pdb generation for relevant Delphi projects
Adds a call to map2pdb for Delphi projects, if map2pdb is an executable
on the path. This way, we get .pdb files we can use for debugging and
for performance profiling. This also replaces tds2dbg.

If map2dbg is available, then the build and install actions will copy
the PDB to be alongside the corresponding executable, making most debug
actions relatively seamless for finding symbols.

Also fixes up setup.exe in Windows and Developer to extend setup.exe to
a 512-byte boundary after map2pdb patches the PE.

Relates-to: #14787
Build-bot: skip release:developer,windows
Test-bot: skip
2025-11-13 14:48:18 +01:00
Marc Durdin
34e71c4df2
Apply suggestions from code review
Co-authored-by: Eberhard Beilharz <ermshiperete@users.noreply.github.com>
2025-11-13 13:06:16 +01:00
Marc Durdin
fc0ff90684 refactor(developer): rename layr.lists to layr.forms
The name `form` better represents the semantic meaning of the
structure, and reduces confusion with the `list` section and other uses
of `list` in KMX+.

Test-bot: skip
2025-11-12 11:29:58 +01:00
Marc Durdin
5dbc438f53 maint(resources): add builder_launch function
Use `builder_launch` to launch other builder scripts rather than calling
directly, so that inheritable state and options are passed through.

Test-bot: skip
2025-11-10 11:46:14 +01:00
Keyman Server
b7c93d9e37
Merge branch 'epic/embed-osk-in-kmx' into auto/A19S15-merge-master-into-embed-osk-in-kmx 2025-11-07 14:06:33 +01:00
Marc Durdin
23b5dca1b3 fix(developer): remove package version if FollowKeyboardVersion is set in Package Editor
To reduce confusion when 'Follow Keyboard Version' is set, clear the
cached package version data from UI and .kps source when saving the
package or making changes to it.

Fixes: #11892
Test-bot: skip
2025-11-03 10:54:44 +01:00
Marc Durdin
756a0e2b58 fix(developer): avoid race in page.onload vs kmw.init in Server
Also adds `server:run` action for build.sh, and adds check for scenario
where an ad blocker/privacy extension blocks sentry javascript loading.

Fixes: #11363
Fixes: KEYMAN-DEVELOPER-30X
2025-11-03 09:52:33 +01:00
Marc Durdin
933ea5bb58 change(developer): remove kmlmc and kmlmp
These were replaced by kmc in v17.0. We kept them as legacy alternatives
in v18.0, but it is time to remove them now to reduce the maintenance of
having multiple entry points to kmc.

Fixes: #13181
Test-bot: skip
2025-10-31 17:08:56 +01:00
Marc Durdin
702a64c281
Merge pull request #15062 from keymanapp/chore/windows/vs2022
chore(windows): upgrade VC++ projects to v143 (VS2022)
2025-10-31 15:38:25 +01:00
Marc Durdin
21c3a630bf chore(windows): upgrade VC++ projects to v143 (VS2022)
Test-bot: skip
Build-bot: skip release:developer,windows
2025-10-31 13:33:30 +01:00
Marc Durdin
aba67ef682
Merge pull request #15061 from keymanapp/chore/developer/kmc-package-nullish-cleanup
chore(developer): fix always-false nullish coalescing
2025-10-31 06:30:48 +01:00
Marc Durdin
344fd4bd3d
Merge pull request #15060 from keymanapp/fix/developer/handle-load-errors-for-touch-layout-builder
fix(developer): handle exceptions loading .keyman-touch-layout files
2025-10-31 06:30:42 +01:00
Marc Durdin
c255e78857
Merge pull request #15058 from keymanapp/chore/developer/11916-extra-debugging-crash-on-exit
chore(developer): add breadcrumbs to trace sporadic crashes on exit
2025-10-31 06:30:27 +01:00
Marc Durdin
9e1fe8e6de chore(windows): upgrade VC++ projects to v143 (VS2022)
Test-bot: skip
Build-bot: skip release:developer,windows
2025-10-30 16:31:45 +01:00
Marc Durdin
8e6ca01175 chore(developer): fix always-false nullish coalescing
Test-bot: skip
Build-bot: skip
2025-10-30 15:24:15 +01:00
Marc Durdin
0b17c632a0 fix(developer): handle exceptions loading .keyman-touch-layout files
If file is unreadable or contains invalid encoding, show a message
instead of crashing.

Build-bot: skip
Test-bot: skip
2025-10-30 15:22:47 +01:00
Marc Durdin
037e199f3c chore(developer): add breadcrumbs to trace sporadic crashes on exit
Relates-to: #11916
Test-bot: skip
2025-10-30 15:01:37 +01:00
Marc Durdin
2ba22bbe51 chore(developer): further debugging for assertion failure
Adds breadcrumbs for debug memo to try and narrow down sequence of
events leading to assertion failure with backspace.

Relates-to: #11706
Test-bot: skip
2025-10-30 14:36:25 +01:00
Marc Durdin
19264fdbe2
Merge pull request #15030 from cvosoft/test/add-osk-character-use-format-tests
test(developer): add kmc-analyze tests for AnalyzeOskCharacterUse output formats
2025-10-30 06:04:30 +01:00
Marc Durdin
df212364a2 maint(resources): add repository record for all published packages
While not documented as such, it appears that the repository record is
required with trusted publishing of npm packages.

Test-bot: skip
Build-bot: skip
2025-10-29 14:35:31 +01:00
Christoph Völker
d49c23646a Merge remote-tracking branch 'upstream/master' into test/add-osk-character-use-format-tests 2025-10-29 14:17:10 +01:00
Marc Durdin
f2d4dff1f7
Merge pull request #14993 from keymanapp/feat/developer/add-targetversion-parameter
feat(developer): add targetVersion support to kmc and kmc-kmn 🔱
2025-10-29 11:04:12 +01:00