Commit graph

33975 commits

Author SHA1 Message Date
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
Marc Durdin
2e38a50522 change(common): remove drafted font metadata from KMX+ format
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
This comes out of a design philosophy review on what we include when we
embed OSK data into KMX.

We will now avoid embedding font name into the OSK (and hence .kmx)
altogether, and leave that metadata to the packaging data. Reasons:

1. The font information is specified in the .kps, so we have to do a
   patchup on the .kmx during packaging if we want to embed the info
   into the OSK.

2. The referenced font must be supplied separately anyway (via .kmp,
   @font-face, or system supplied, etc), so including the font facename
   in the keyboard is not really all that helpful.

3. Philosophically, the font is really a presentation level factor
   (aside from displaymap considerations). Keeping it together with
   future theming and styling choices, rather than the key layout data,
   seems appropriate.

4. This makes fewer places where font data is referenced -- in fact, to
   just one place: in the .kps/.kmp for LDML keyboards, which is great.

This also simplifies some aspects of the embed-osk-in-kmx work, removing
the need to patch the .kmx after the build, and eliminates the smelly
kmx-plus-osk-token.ts file.

A corresponding change has been made to the design document referenced
in #14857.

Test-bot: skip
2026-04-16 09:13:15 +02:00
Marc Durdin
1ddd972590 chore(developer): extend unit tests for flicks and address review comments
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
2026-04-16 09:10:31 +02:00
Marc Durdin
35212fdd50 fix(common): track flick index correctly when building flicks table
Fixes: #15853
2026-04-16 09:09:41 +02:00
Keyman Server
945556201e
Merge pull request #15850 from keymanapp/auto/A19S26-merge-master-into-web-core
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
auto: A19S26 merge master into web-core 🎼
2026-04-13 16:35:31 +02:00
Keyman Server
94e1b26825
Merge branch 'epic/web-core' into auto/A19S26-merge-master-into-web-core 2026-04-13 15:47:18 +02:00
Marc Durdin
8b88195aec docs(core): rebuild Core docs from .h and remove broken hotdoc config
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
Rebuild the API docs using api-header-extractor script, and add the
script to the normal build for Core so that it doesn't get out of sync
again.

Hotdoc configuration has not been used for a while; it is currently
broken and we haven't got any docs generated by it anyway, so remove
from repo.

Remove largely duplicate BUILDING.md and old json-schema.md.

Test-bot: skip
2026-04-11 17:33:07 +02:00
Marc Durdin
35e09caf64 chore(core): remove jsonpp
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
jsonpp was being used only in a single unit test, and so this was a lot
of overhead and complexity for very little benefit. We may want to add
some more unit tests in the future for state_api.tests.cpp to do a
deep comparison of the state?

Test-bot: skip
2026-04-11 07:39:56 +02:00
Keyman Server
297b52890e
Merge pull request #15839 from keymanapp/auto/A19S26-merge-master-into-embed-osk-in-kmx
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
auto: A19S26 merge master into embed-osk-in-kmx 🔱
2026-04-10 19:32:37 +02:00
Keyman Server
1374491ed9
Merge branch 'epic/embed-osk-in-kmx' into auto/A19S26-merge-master-into-embed-osk-in-kmx 2026-04-10 17:04:46 +02:00
Marc Durdin
596aae6e40 chore(core): move keyboard_api and options_api tests to gtest 2026-04-10 11:39:01 +02:00
Marc Durdin
b40012de23 chore(core): move test helpers into helpers/ folder
Test-bot: skip
2026-04-09 12:16:15 +02:00
Marc Durdin
30f40b5092 chore(developer): polish character constants and U_ id check
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
Move U_25CC to a new CharacterConstants common enumeration.

Rewrite U_ key id conversion to check for invalid characters and report
to the keyboard author with warnings.

Co-authored-by: Eberhard Beilharz <ermshiperete@users.noreply.github.com>
2026-04-09 10:53:56 +02:00
Keyman Server
f99512c328
Merge pull request #15830 from keymanapp/auto/version-master-19.0.223
auto: increment master version to 19.0.223
2026-04-08 20:04:13 +02:00
Keyman Build Agent
f494a10e24 auto: increment master version to 19.0.223
Test-bot: skip
Build-bot: skip
2026-04-08 13:02:18 -05:00
Eberhard Beilharz
0166861f0b
Merge pull request #15823 from keymanapp/fix/linux/memmove
fix(linux): fix memory problem

This fixes a problem identified by devin.ai: Because of the operator precedence the previous code caused `memmove` to read `sizeof(commit_queue_item) - 1` bytes past the end of `commit_queue`. With this change `memmove` now reads the intended `MAX_QUEUE_SIZE - 1` `commit_queue_items`.
2026-04-08 18:03:02 +02:00
Marc Durdin
e42f235b31 chore(developer): enable skipped test for disp key cap constants
Test-bot: skip
2026-04-07 15:15:23 +02:00