Commit graph

33991 commits

Author SHA1 Message Date
Marc Durdin
a8888ca7c7
Merge branch 'chore/developer/ldml-test-file-reader-error-handler' into refactor/core/api-documentation
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
2026-05-06 21:48:55 +10:00
Marc Durdin
d428fb2622
Merge branch 'chore/core/test-cleanup-2' into chore/developer/ldml-test-file-reader-error-handler
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
2026-05-06 21:48:47 +10:00
Marc Durdin
7591dc0bba chore(core): tidy up api-header-extractor 2026-05-06 13:28:03 +02:00
Marc Durdin
be26f58481 chore(core): Merge branch 'refactor/core/api-documentation' of https://github.com/keymanapp/keyman into refactor/core/api-documentation 2026-05-06 13:02:18 +02:00
Marc Durdin
33a4d4b09c chore(developer): reduce coverage threshold for kmc-ldml to 85% 2026-05-06 12:10:10 +02:00
Marc Durdin
08891bb3a2 chore(core): address review comments on unit tests
Test-bot: skip
Co-authored-by: Eberhard Beilharz <ermshiperete@users.noreply.github.com>
2026-05-06 12:09:19 +02:00
Marc Durdin
0f2f3c1009 refactor(core): clean up API documentation
Move all Keyman Core header API documentation to javadoc-style so that
we can get inline documentation and simplify the readability of the
header files.

Update api-header-extractor to support minimal javadoc formatting of the
comments.

Test-bot: skip
2026-05-05 16:29:53 +02:00
Marc Durdin
c78531dbc0 refactor(core): clean up API documentation
Move all Keyman Core header API documentation to javadoc-style so that
we can get inline documentation and simplify the readability of the
header files.

Update api-header-extractor to support minimal javadoc formatting of the
comments.

Test-bot: skip
2026-05-04 17:35:20 +02:00
Marc Durdin
ac56e72fa9 chore(developer): handle parse errors in loading LDML test files
Test-bot: skip
2026-05-04 13:54:34 +02:00
Marc Durdin
63c2ed823f chore(core): avoid emitting control chars into junit.xml 2026-04-28 15:48:49 +02:00
Marc Durdin
9853f29046 chore(core): address memory leak for embedded_test_source 2026-04-28 14:47:33 +02:00
Marc Durdin
d61e5bbb18 refactor(core): clean up unit tests
Consolidate test frameworks and cleanup, including:
* all tests use Google Test
* reorganize folders, esp. kmnkbd -> api
* move all api tests into api folder
* replace references to test_assert or test_color with gtest equivalents
* leverage gtest patterns to remove boilerplate code
* dramatically simplify meson.build files and localize variables
* move shared helper code into helpers/ folder
* make test names unique and add gtest protocol for reporting back to
  teamcity

Fixes:
* CLDR test keyboards had invalid unicodeset escapes (needs to be raised
  upstream also) - was not failing tests because files were not loading
  but returning success

Test-bot: skip
2026-04-28 12:17:44 +02:00
Eberhard Beilharz
e8da94ed40
Merge pull request #15856 from keymanapp/chore/web/cleanup
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
refactor(web): cleanup return types in KeymanEngine

This change explicitly specifies the return types and access for the functions in KeymanEngine. Also introduce `KeyboardDetails` instead of `ReturnType<>`.
2026-04-21 14:20:12 +02:00
Eberhard Beilharz
0a1a8de744
chore(web): address code review comments
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
2026-04-21 12:11:11 +02:00
Marc Durdin
ee48bc69df
Merge pull request #15859 from keymanapp/chore/web/update-paths-to-specialCharacters.ts
Some checks are pending
Keyman Build Summary / Summarize build status checks (push) Waiting to run
chore(web): update paths to specialCharacters.ts 🎼
2026-04-21 19:22:25 +10:00
Marc Durdin
1e180a8639 chore(web): update paths to specialCharacters.ts
After epic/embed-osk-in-kmx merge into epic/web-core,
specialCharacters.ts had moved and so paths needed to be adjusted.

Test-bot: skip
2026-04-20 17:36:15 +02:00
Eberhard Beilharz
b16dc6f2f8
refactor(web): cleanup return types in KeymanEngine
Some checks are pending
Keyman Build Summary / Summarize build status checks (push) Waiting to run
This change explicitly specifies the return types and access for the
functions in KeymanEngine. Also introduce `KeyboardDetails` instead of
`ReturnType<>`.

Test-bot: skip
2026-04-20 17:14:55 +02:00
Eberhard Beilharz
816bda2723
Merge pull request #15858 from keymanapp/chore/web/squiggles
Some checks are pending
Keyman Build Summary / Summarize build status checks (push) Waiting to run
chore(web): fix red squiggles in .ts test files in vscode

VSCode shows red squiggles under things like `describe` or `it` in .ts test files for web. This change adds the types to the `tsconfig.json` file which fixes this problem.
2026-04-20 14:22:31 +02:00
Eberhard Beilharz
b7b03a9960
chore(web): fix red squiggles in .ts test files in vscode
VSCode shows red squiggles under things like `describe` or `it` in
.ts test files for web. This change adds the types to the `tsconfig.json`
file which fixes this problem.

Build-bot: skip build:web
Test-bot: skip
2026-04-20 14:04:03 +02:00
Marc Durdin
407d9dd3b3
Merge pull request #14857 from keymanapp/epic/embed-osk-in-kmx
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
epic: embed-osk-in-kmx 🔱
2026-04-18 03:02:20 +10:00
Marc Durdin
0fb2cd2dc6 chore: Merge branch 'epic/web-core' into epic/embed-osk-in-kmx 2026-04-17 19:01:15 +02:00
Marc Durdin
9e3b7390fc
Merge pull request #15470 from keymanapp/feat/web/varStoresCleanup
feat(web): cleanup of variable stores 🎼
2026-04-18 02:54:31 +10:00
Marc Durdin
49a2887c24
Merge branch 'epic/web-core' into feat/web/varStoresCleanup
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
2026-04-18 01:29:29 +10:00
Marc Durdin
b15f9548ef chore(web): add ref to headless-resources 2026-04-17 17:26:16 +02:00
Marc Durdin
50139a0ebd refactor(web): eliminate nullable variableStoreSerializer code paths
To reduce the number of possible failure cases within KeymanWeb,
require variableStoreSerializer to always be initialized. This impacts
only unit tests in practice. There remains a unit test special case in
the variable store code itself which needs to be removed in the future.

Create a mock VariableStoreTestSerializer class so that unit tests can
run without impacting state or requiring cookies. (We should leverage
this in future tests to verify that variable stores are saved
correctly.)

Establish keyman/test/headless-resources, so that we can include shared
resources such as VariableStoreTestSerializer without creating a
dependency on either DOM or Node.
2026-04-17 15:36:11 +02:00
Eberhard Beilharz
fa6a795f6f
Merge pull request #15854 from keymanapp/refactor/web/kbdbaseclass
Some checks are pending
Keyman Build Summary / Summarize build status checks (push) Waiting to run
refactor(web): add abstract `Keyboard` base class 🎼

Also rename `JSKeyboardData` → `KeyboardData`.
2026-04-17 15:22:17 +02:00
Eberhard Beilharz
6677c2b198
refactor(web): address code review comments
Co-authored-by: Marc Durdin <marc@durdin.net>
2026-04-17 14:49:10 +02:00
Marc Durdin
be198d2f9c
Merge pull request #15836 from keymanapp/docs/core/rebuild-docs
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
docs(core): rebuild Core docs from .h and remove broken hotdoc config 🔱
2026-04-17 21:04:34 +10:00
Marc Durdin
2cffc57eb1 chore(web): cleanup variable store interfaces for web-core 2026-04-17 12:59:04 +02:00
Marc Durdin
d6c2b213ee
Merge branch 'epic/web-core' into feat/web/varStoresCleanup 2026-04-17 20:44:06 +10:00
Marc Durdin
7df5b94cc2 refactor(web): simplify VariableStore type
Remove the unnecessary nested set patterns for `VariableStore` and
rename the type to `VariableStores` to match its actual use.
2026-04-17 12:08:58 +02:00
Marc Durdin
1f2577c78e
Merge pull request #15835 from keymanapp/chore/core/remove-jsonpp
chore(core): remove jsonpp 🔱
2026-04-17 19:44:48 +10:00
Eberhard Beilharz
d93fc5aa7e
refactor(web): output id in console error of playwright TC reporter
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
2026-04-17 10:05:33 +02:00
Marc Durdin
cee292de43
Merge branch 'chore/core/remove-jsonpp' into docs/core/rebuild-docs
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
2026-04-17 17:36:03 +10:00
Marc Durdin
2f861b9628 chore(core): disable api-header-extractor build for Ubuntu packaging
As Ubuntu packaging does not currently have a node environment, we'll
disable api-header-extractor; the output files are not used in this
context anyway.
2026-04-17 09:35:04 +02:00
Marc Durdin
0f57b8a77c chore(core): Merge branch 'epic/embed-osk-in-kmx' into chore/core/remove-jsonpp
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
2026-04-17 09:12:37 +02:00
Eberhard Beilharz
115ab18d71
refactor(web): add abstract Keyboard base class
Also rename `JSKeyboardData` → `KeyboardData`.

Test-bot: skip
2026-04-16 22:18:08 +02:00
Marc Durdin
fef4236cbd
Merge pull request #15833 from keymanapp/chore/core/embed-osk/move-test-helpers
Some checks are pending
Keyman Build Summary / Summarize build status checks (push) Waiting to run
chore(core): move test helpers into helpers/ folder 🔱
2026-04-17 06:17:38 +10:00
Marc Durdin
71503fa13c
Merge pull request #15822 from keymanapp/chore/developer/embed-osk/enable-constants-test
chore(developer): enable skipped test for disp key cap constants 🔱
2026-04-17 06:17:23 +10:00
Marc Durdin
24d10d06d2
Merge pull request #15821 from keymanapp/feat/developer/embed-osk/kmap
feat(developer): add kmap support to KMX+ kvk and keyman-touch-layout 🔱
2026-04-17 06:17:10 +10:00
Marc Durdin
54868b0e20
Merge pull request #15789 from keymanapp/chore/common/embed-osk/15752-cleanup
chore(common): cleanup data types for kmx-plus-file 🔱
2026-04-17 06:17:01 +10:00
Marc Durdin
8704ecf2ee
Merge pull request #15788 from keymanapp/change/developer/embed-osk/remove-font-data-from-osk
change(common): remove drafted font metadata from KMX+ format 🔱
2026-04-17 06:16:50 +10:00
Marc Durdin
1517b1369a
Merge pull request #15613 from keymanapp/feat/developer/embed-osk/convert-touch-layout-into-kmx-plus
feat(developer): convert .keyman-touch-layout into KMX+ data and embed 🔱
2026-04-17 06:16:36 +10:00
Marc Durdin
8461ec4330 chore(core): address review comments
Some checks are pending
Keyman Build Summary / Summarize build status checks (push) Waiting to run
Co-authored-by: Eberhard Beilharz <ermshiperete@users.noreply.github.com>
2026-04-16 10:06:15 +02:00
Marc Durdin
aa54f7e49d
Merge branch 'feat/developer/embed-osk/kmap' into chore/developer/embed-osk/enable-constants-test
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
2026-04-16 17:54:10 +10:00
Marc Durdin
f57c3d56c8 chore(developer): address review comments
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
Co-authored-by: Eberhard Beilharz <ermshiperete@users.noreply.github.com>
2026-04-16 09:51:18 +02:00
Marc Durdin
401c0db352 feat(developer): add kmap support to KMX+ kvk and keyman-touch-layout
Add mappings for key to vkey + mod for .kvk and .keyman-touch-layout,
and clarify the key identifiers for .keyman-touch-layout within KMX+
format.

Update unit test fixture khmer_angkor.keyman_touch_layout to remove
dependency on .kmn (T_xxxx_yyyy -> U_xxxx_yyyy), as the relevant
VKDictionary will not be present, because the corresponding .kmn is not
compiled for the unit tests where the fixture is used.

Test-bot: skip
2026-04-16 09:22:13 +02:00
Marc Durdin
2153403e84 refactor(common): introduce modifier-key-constants
Refactor the `getModifierState` and `getStateFromLayer` functions into a
cleaner `modifierStringToState` function, and move from web into common.

Marks existing functions as deprecated but does not update usage at this
time.
2026-04-16 09:17:24 +02:00
Marc Durdin
c985808276 chore(common): address review comments
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
Co-authored-by: Eberhard Beilharz <ermshiperete@users.noreply.github.com>
2026-04-16 09:15:02 +02:00
Marc Durdin
8ab3f4eead chore(common): cleanup data types for kmx-plus-file
Addresses comments in #15752 review.

Test-bot: skip
See-also: #15752
2026-04-16 09:15:01 +02:00