Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
682 commits
Select commit Hold shift + click to select a range
4ba1fcb
Merge pull request #15376 from keymanapp/refactor/web/keyboard-storage
ermshiperete Dec 22, 2025
5f2e727
test(web): address code review comments
ermshiperete Jan 6, 2026
f65a752
test(web): address code review comments
ermshiperete Jan 6, 2026
79cc8e7
test(web): address code review comments
ermshiperete Jan 6, 2026
65642ae
Merge pull request #15341 from keymanapp/test/web/jsbaseline
ermshiperete Jan 6, 2026
5666b42
Merge branch 'epic/web-core' into test/common/baseline
ermshiperete Jan 6, 2026
085da4e
Merge pull request #15348 from keymanapp/test/common/baseline
ermshiperete Jan 6, 2026
afe6f46
Merge branch 'epic/web-core' into test/web/problem
ermshiperete Jan 7, 2026
e129378
Merge pull request #15357 from keymanapp/test/web/problem
ermshiperete Jan 7, 2026
d0c7810
Merge pull request #15370 from keymanapp/test/web/optbaseline
ermshiperete Jan 7, 2026
f9f804c
feat(web): remove 'export default' to eliminate more aliases
ermshiperete Jan 6, 2026
1a8c909
Apply suggestions from code review
ermshiperete Jan 9, 2026
2dd1ec7
Merge pull request #15401 from keymanapp/feat/web/15292_removeDefault
ermshiperete Jan 9, 2026
3833f19
refactor(web): remove some aliases
ermshiperete Jan 9, 2026
08a94ad
docs(web): document purpose of key codes > 50000
ermshiperete Jan 9, 2026
050d18a
refactor(web): Rename `(Default)Worker` to `WebWorker` and `NodeWorker`
ermshiperete Jan 12, 2026
89681ce
Merge pull request #15414 from keymanapp/refactor/web/renames
ermshiperete Jan 13, 2026
26ba3c8
refactor(web): explicitly specify public/private on CookieSerializer
ermshiperete Jan 7, 2026
ac22e0b
feat(web): add `CookieSerializer.loadAllMatching` function
ermshiperete Jan 13, 2026
b339a97
docs(common): improve documentation for .kmn test files
ermshiperete Jan 14, 2026
4e1b773
chore(web): fix e2e tests
ermshiperete Jan 14, 2026
c7fecbf
Merge pull request #15428 from keymanapp/refactor/web/publicprivate
ermshiperete Jan 15, 2026
f8546c0
feat(web): address code review comments
ermshiperete Jan 15, 2026
a329ef9
Update core/tests/unit/kmx/README.md
ermshiperete Jan 15, 2026
a8c6871
feat(web): add `findStores` functions
ermshiperete Dec 19, 2025
9909d7d
feat(core): expose `km_core_state_options_update` to WASM
ermshiperete Jan 15, 2026
2d0c1c0
Merge pull request #15429 from keymanapp/feat/web/loadAllMatching
ermshiperete Jan 15, 2026
aa0a02c
feat(web): small changes to test keyboards
ermshiperete Jan 15, 2026
5e380c0
feat(web): implement persisting keyboard options
ermshiperete Jan 15, 2026
18127b4
Merge pull request #15430 from keymanapp/docs/common/kmntests
ermshiperete Jan 15, 2026
7c05ac8
Merge pull request #15431 from keymanapp/chore/web/e2e
ermshiperete Jan 15, 2026
414092a
Merge branch 'epic/embed-osk-in-kmx' into auto/A19S20-merge-master-in…
mcdurdin Jan 16, 2026
f6b8bfb
Merge branch 'epic/web-core' into auto/A19S20-merge-master-into-web-core
mcdurdin Jan 16, 2026
6532bef
Merge pull request #15450 from keymanapp/auto/A19S20-merge-master-int…
mcdurdin Jan 16, 2026
c9164a7
Merge pull request #15458 from keymanapp/auto/A19S20-merge-master-int…
mcdurdin Jan 16, 2026
4432673
refactor(web): rename `ruleBehavior` variables → `processorAction`
ermshiperete Jan 16, 2026
9930a8c
refactor(web): remove web-utils exports from keyboard
ermshiperete Jan 16, 2026
aea2e2a
refactor(web): use unitTestEndpoint pattern in OSK
ermshiperete Jan 16, 2026
f8d0754
chore(web): update TODO comments
ermshiperete Jan 16, 2026
f22faa1
refactor(web): rename `DefaultRules` → `DefaultOutputRules`
ermshiperete Jan 16, 2026
77b4bd8
refactor(web): `options` parameter mandatory in `JSKeyboardProcessor`…
ermshiperete Jan 16, 2026
0d67393
refactor(web): `options` parameter mandatory in `InputProcessor` c'tor
ermshiperete Jan 16, 2026
aa5c5ba
refactor(web): make `ProcessorInitOptions.keyboardInterface` mandatory
ermshiperete Jan 16, 2026
4f15457
feat(web): implement `KeyboardEngineBase.isChiral`
ermshiperete Jan 16, 2026
130121b
Merge pull request #15460 from keymanapp/chore/web/todos
ermshiperete Jan 19, 2026
2e40439
Merge pull request #15437 from keymanapp/feat/web/findStores
ermshiperete Jan 19, 2026
aeb8cbe
Merge branch 'epic/web-core' into refactor/web/defaultRules
ermshiperete Jan 19, 2026
83dca0f
feat(core): address code review comments
ermshiperete Jan 19, 2026
bc3f447
feat(web): address code review comments
ermshiperete Jan 19, 2026
8d3a6da
fix(web): fix baseline tests
ermshiperete Jan 19, 2026
01bee77
feat(web): cleanup of variable stores
ermshiperete Jan 19, 2026
f9b75f5
Merge pull request #15472 from keymanapp/fix/web/baselinetests
ermshiperete Jan 20, 2026
63028ab
Merge pull request #15466 from keymanapp/feat/web/isChiralEngineBase
ermshiperete Jan 20, 2026
b8d2dc5
Merge pull request #15462 from keymanapp/refactor/web/exports
ermshiperete Jan 20, 2026
55af621
Merge pull request #15461 from keymanapp/refactor/web/processorAction
ermshiperete Jan 20, 2026
03eba3c
Merge pull request #15463 from keymanapp/refactor/web/test-index
ermshiperete Jan 20, 2026
485ea55
chore(web): Merge remote-tracking branch 'origin/epic/web-core' into …
ermshiperete Jan 20, 2026
f7f23df
Merge branch 'epic/web-core' into feat/core/optionsupdate
ermshiperete Jan 20, 2026
2641681
chore(web): Merge branch 'epic/web-core' into refactor/web/defaultRules
ermshiperete Jan 20, 2026
63173a2
feat(developer): address code review comments
ermshiperete Jan 20, 2026
8ecaae5
refactor(web): address code review comments
ermshiperete Jan 20, 2026
ad10627
chore(web): Merge branch 'refactor/web/defaultRules' into refactor/we…
ermshiperete Jan 20, 2026
bc6ea94
Merge pull request #15464 from keymanapp/refactor/web/defaultRules
ermshiperete Jan 20, 2026
6ae03c8
Merge pull request #15438 from keymanapp/feat/core/optionsupdate
ermshiperete Jan 20, 2026
0422b3f
chore(core): Remove `km_core_keyboard_attrs.folder_path`
ermshiperete Jan 19, 2026
2b56e87
chore(web): Merge branch 'epic/web-core' into feat/web/persistopts
ermshiperete Jan 21, 2026
ffc8de0
Merge pull request #15436 from keymanapp/feat/web/persistopts
ermshiperete Jan 21, 2026
40ce71a
refactor(web): address code review comments
ermshiperete Jan 21, 2026
54e6a8a
fix(web): fix problem with tests if KEYMAN_ROOT is not set
ermshiperete Jan 21, 2026
de49944
chore(web): remove `keyboard_attributes._folder_path`
ermshiperete Jan 21, 2026
2654257
feat(web): address code review comments and fix build
ermshiperete Jan 22, 2026
7d57e83
chore(web): Merge branch 'epic/web-core' into feat/web/15287_doModifi…
ermshiperete Jan 22, 2026
7f110d1
feat(web): fix build
ermshiperete Jan 22, 2026
c8c20b7
Merge pull request #15343 from keymanapp/feat/web/15287_doModifierPress
ermshiperete Jan 22, 2026
7e972ab
Merge pull request #15465 from keymanapp/refactor/web/ProcessorInitOp…
ermshiperete Jan 22, 2026
fd2a43d
Update web/src/test/auto/headless/engine/loadKeyboardHelper.ts
ermshiperete Jan 26, 2026
bfa6dfa
Merge pull request #15477 from keymanapp/fix/web/tests
ermshiperete Jan 26, 2026
e2b31c4
maint(web): re-add engine .js tests
ermshiperete Jan 22, 2026
84aedb8
refactor(web): rename `keyboard.tests.ts` → `jskeyboard.tests.ts`
ermshiperete Jan 26, 2026
4992268
feat(web): add unit test for RTL
ermshiperete Jan 27, 2026
933361a
feat(web): add and use RTL test keyboard
ermshiperete Jan 29, 2026
1ad1205
Merge pull request #15502 from keymanapp/feat/web/15288_rtl
ermshiperete Jan 29, 2026
7243112
Merge branch 'epic/embed-osk-in-kmx' into auto/A19S21-merge-master-in…
keyman-server Jan 31, 2026
e77d46f
Merge branch 'epic/web-core' into auto/A19S21-merge-master-into-web-core
keyman-server Jan 31, 2026
55cb591
Merge pull request #15529 from keymanapp/auto/A19S21-merge-master-int…
keyman-server Jan 31, 2026
15d86b4
Merge pull request #15537 from keymanapp/auto/A19S21-merge-master-int…
keyman-server Jan 31, 2026
7bdd4b5
Merge branch 'epic/embed-osk-in-kmx' into auto/A19S22-merge-master-in…
keyman-server Feb 13, 2026
ed63b70
Merge branch 'epic/web-core' into auto/A19S22-merge-master-into-web-core
mcdurdin Feb 13, 2026
22c06a0
Merge pull request #15471 from keymanapp/chore/core/deprecation
ermshiperete Feb 13, 2026
7f1b925
chore(web): fix buggy merge
ermshiperete Feb 13, 2026
0af3a2a
chore(core): update API `changes.md` document
ermshiperete Feb 13, 2026
90f77bd
Merge pull request #15589 from keymanapp/auto/A19S22-merge-master-int…
mcdurdin Feb 13, 2026
a8e2a6a
Merge pull request #15581 from keymanapp/auto/A19S22-merge-master-int…
mcdurdin Feb 16, 2026
1b4a04a
Merge pull request #15590 from keymanapp/chore/core/docs
ermshiperete Feb 16, 2026
7b98648
Merge branch 'epic/embed-osk-in-kmx' into auto/A19S23-merge-master-in…
keyman-server Feb 27, 2026
3c525cc
chore: Merge branch 'epic/web-core' into auto/A19S23-merge-master-int…
ermshiperete Feb 27, 2026
b7a91e1
Merge pull request #15638 from keymanapp/auto/A19S23-merge-master-int…
keyman-server Feb 27, 2026
533674f
Merge pull request #15646 from keymanapp/auto/A19S23-merge-master-int…
ermshiperete Feb 27, 2026
36cd83f
chore(common): cleanup and reorganize hextobin to remove fs dependency
mcdurdin Mar 12, 2026
b6b10d1
chore: Merge branch 'epic/embed-osk-in-kmx' into auto/A19S24-merge-ma…
mcdurdin Mar 15, 2026
71577d1
Merge pull request #15740 from keymanapp/auto/A19S24-merge-master-int…
mcdurdin Mar 15, 2026
70c54b0
chore: Merge branch 'epic/web-core' into auto/A19S24-merge-master-int…
mcdurdin Mar 16, 2026
efad936
feat(common): add KMX+ file reader in Typescript
mcdurdin Mar 16, 2026
2c3b03c
maint(web): use gosh to execute web server in e2e tests
mcdurdin Mar 16, 2026
59a12fd
maint(web): downgrade playwright to 1.46.1
mcdurdin Mar 16, 2026
7955745
chore(common): use `any` as `ErrorOptions` type not yet available eve…
mcdurdin Mar 16, 2026
77a612d
Merge pull request #15733 from keymanapp/chore/common/hextobin-cleanup
mcdurdin Mar 16, 2026
c8058fd
chore(common): Merge branch 'epic/embed-osk-in-kmx' into feat/common/…
mcdurdin Mar 16, 2026
00dedf8
Merge pull request #15759 from keymanapp/maint/web/15758-playwright-x…
mcdurdin Mar 16, 2026
6c6780a
Merge pull request #15748 from keymanapp/auto/A19S24-merge-master-int…
mcdurdin Mar 17, 2026
ec5efd4
chore(common): adjust dependencies
mcdurdin Mar 17, 2026
1d9b8cc
maint(web): address code review comments
ermshiperete Jan 29, 2026
745fa36
chore(web): Merge branch 'epic/web-core' into maint/web/jstests
ermshiperete Mar 20, 2026
bd330e4
feat(common): address review comments
mcdurdin Mar 23, 2026
41294af
Merge pull request #15752 from keymanapp/feat/common/kmx-plus-file-re…
mcdurdin Mar 23, 2026
06f7f22
maint(web): address more code review comments
ermshiperete Mar 23, 2026
bbad490
maint(web): cleanup imports
ermshiperete Mar 23, 2026
66c5f12
Merge pull request #15497 from keymanapp/maint/web/jstests
ermshiperete Mar 23, 2026
aa61b08
feat(developer): embed touch layout and kvk into kmx
mcdurdin Mar 26, 2026
3b72227
fix(common): add missing `default` property to keyman-touch-layout.cl…
mcdurdin Mar 26, 2026
79d4bdd
change(common): remove drafted font metadata from KMX+ format
mcdurdin Mar 26, 2026
c2a150d
chore(common): cleanup data types for kmx-plus-file
mcdurdin Mar 26, 2026
ab23c12
Merge branch 'epic/embed-osk-in-kmx' into auto/A19S25-merge-master-in…
mcdurdin Mar 27, 2026
8311c65
Merge branch 'epic/web-core' into auto/A19S25-merge-master-into-web-core
mcdurdin Mar 27, 2026
fb160b3
chore(core): adjust paths for ldml test keyboards
mcdurdin Mar 27, 2026
a5c09f4
chore(core): fixup test keyboard paths
mcdurdin Mar 27, 2026
ef5b881
Merge pull request #15795 from keymanapp/auto/A19S25-merge-master-int…
mcdurdin Mar 27, 2026
24ddbf8
Merge pull request #15803 from keymanapp/auto/A19S25-merge-master-int…
mcdurdin Mar 27, 2026
4be89fe
chore(common): address review comments
mcdurdin Apr 1, 2026
d15f410
refactor(common): introduce modifier-key-constants
mcdurdin Apr 7, 2026
2399324
feat(developer): add kmap support to KMX+ kvk and keyman-touch-layout
mcdurdin Apr 7, 2026
e42f235
chore(developer): enable skipped test for disp key cap constants
mcdurdin Apr 7, 2026
30f40b5
chore(developer): polish character constants and U_ id check
mcdurdin Apr 9, 2026
b40012d
chore(core): move test helpers into helpers/ folder
mcdurdin Apr 9, 2026
596aae6
chore(core): move keyboard_api and options_api tests to gtest
mcdurdin Apr 10, 2026
1374491
Merge branch 'epic/embed-osk-in-kmx' into auto/A19S26-merge-master-in…
keyman-server Apr 10, 2026
297b528
Merge pull request #15839 from keymanapp/auto/A19S26-merge-master-int…
keyman-server Apr 10, 2026
35e09ca
chore(core): remove jsonpp
mcdurdin Apr 10, 2026
8b88195
docs(core): rebuild Core docs from .h and remove broken hotdoc config
mcdurdin Apr 10, 2026
94e1b26
Merge branch 'epic/web-core' into auto/A19S26-merge-master-into-web-core
keyman-server Apr 13, 2026
9455562
Merge pull request #15850 from keymanapp/auto/A19S26-merge-master-int…
keyman-server Apr 13, 2026
35212fd
fix(common): track flick index correctly when building flicks table
mcdurdin Apr 16, 2026
1ddd972
chore(developer): extend unit tests for flicks and address review com…
mcdurdin Apr 16, 2026
2e38a50
change(common): remove drafted font metadata from KMX+ format
mcdurdin Mar 26, 2026
8ab3f4e
chore(common): cleanup data types for kmx-plus-file
mcdurdin Mar 26, 2026
c985808
chore(common): address review comments
mcdurdin Apr 1, 2026
2153403
refactor(common): introduce modifier-key-constants
mcdurdin Apr 7, 2026
401c0db
feat(developer): add kmap support to KMX+ kvk and keyman-touch-layout
mcdurdin Apr 7, 2026
f57c3d5
chore(developer): address review comments
mcdurdin Apr 16, 2026
aa54f7e
Merge branch 'feat/developer/embed-osk/kmap' into chore/developer/emb…
mcdurdin Apr 16, 2026
8461ec4
chore(core): address review comments
mcdurdin Apr 16, 2026
1517b13
Merge pull request #15613 from keymanapp/feat/developer/embed-osk/con…
mcdurdin Apr 16, 2026
8704ecf
Merge pull request #15788 from keymanapp/change/developer/embed-osk/r…
mcdurdin Apr 16, 2026
54868b0
Merge pull request #15789 from keymanapp/chore/common/embed-osk/15752…
mcdurdin Apr 16, 2026
24d10d0
Merge pull request #15821 from keymanapp/feat/developer/embed-osk/kmap
mcdurdin Apr 16, 2026
71503fa
Merge pull request #15822 from keymanapp/chore/developer/embed-osk/en…
mcdurdin Apr 16, 2026
fef4236
Merge pull request #15833 from keymanapp/chore/core/embed-osk/move-te…
mcdurdin Apr 16, 2026
115ab18
refactor(web): add abstract `Keyboard` base class
ermshiperete Apr 16, 2026
0f57b8a
chore(core): Merge branch 'epic/embed-osk-in-kmx' into chore/core/rem…
mcdurdin Apr 16, 2026
2f861b9
chore(core): disable api-header-extractor build for Ubuntu packaging
mcdurdin Apr 16, 2026
cee292d
Merge branch 'chore/core/remove-jsonpp' into docs/core/rebuild-docs
mcdurdin Apr 17, 2026
d93fc5a
refactor(web): output id in console error of playwright TC reporter
ermshiperete Apr 17, 2026
1f2577c
Merge pull request #15835 from keymanapp/chore/core/remove-jsonpp
mcdurdin Apr 17, 2026
7df5b94
refactor(web): simplify `VariableStore` type
mcdurdin Apr 17, 2026
d6c2b21
Merge branch 'epic/web-core' into feat/web/varStoresCleanup
mcdurdin Apr 17, 2026
2cffc57
chore(web): cleanup variable store interfaces for web-core
mcdurdin Apr 17, 2026
be198d2
Merge pull request #15836 from keymanapp/docs/core/rebuild-docs
mcdurdin Apr 17, 2026
6677c2b
refactor(web): address code review comments
ermshiperete Apr 17, 2026
fa6a795
Merge pull request #15854 from keymanapp/refactor/web/kbdbaseclass
ermshiperete Apr 17, 2026
50139a0
refactor(web): eliminate nullable variableStoreSerializer code paths
mcdurdin Apr 17, 2026
b15f954
chore(web): add ref to headless-resources
mcdurdin Apr 17, 2026
49a2887
Merge branch 'epic/web-core' into feat/web/varStoresCleanup
mcdurdin Apr 17, 2026
9e3b739
Merge pull request #15470 from keymanapp/feat/web/varStoresCleanup
mcdurdin Apr 17, 2026
0fb2cd2
chore: Merge branch 'epic/web-core' into epic/embed-osk-in-kmx
mcdurdin Apr 17, 2026
407d9dd
Merge pull request #14857 from keymanapp/epic/embed-osk-in-kmx
mcdurdin Apr 17, 2026
b7b03a9
chore(web): fix red squiggles in .ts test files in vscode
ermshiperete Apr 20, 2026
816bda2
Merge pull request #15858 from keymanapp/chore/web/squiggles
ermshiperete Apr 20, 2026
b16dc6f
refactor(web): cleanup return types in KeymanEngine
ermshiperete Apr 17, 2026
1e180a8
chore(web): update paths to specialCharacters.ts
mcdurdin Apr 20, 2026
ee48bc6
Merge pull request #15859 from keymanapp/chore/web/update-paths-to-sp…
mcdurdin Apr 21, 2026
0a1a8de
chore(web): address code review comments
ermshiperete Apr 21, 2026
e8da94e
Merge pull request #15856 from keymanapp/chore/web/cleanup
ermshiperete Apr 21, 2026
f30e3fb
docs(core): update generated files
ermshiperete Apr 23, 2026
e1cb7d2
docs(core): restore changes between 17 and 18 in keyman_core_api.h
ermshiperete Apr 23, 2026
9f42ace
docs(core): fix comment
ermshiperete Apr 23, 2026
9465071
Merge pull request #15869 from keymanapp/docs/core/updates
ermshiperete Apr 23, 2026
35ea65c
feat(web): get list of store names from stores defined in core
ermshiperete Apr 20, 2026
d1030de
Merge branch 'epic/web-core' into auto/A19S27-merge-master-into-web-core
keyman-server Apr 24, 2026
a30d618
Merge pull request #15882 from keymanapp/auto/A19S27-merge-master-int…
keyman-server Apr 24, 2026
8defa88
docs(web): update file header
ermshiperete Apr 24, 2026
c613103
Merge pull request #15883 from keymanapp/docs/web/fileheader
ermshiperete Apr 24, 2026
3b84867
refactor(web): rename variables and parameter names in KeymanEngine 🧼
ermshiperete Apr 24, 2026
269ba67
refactor(web): use `KeyboardDetails` type 🧼
ermshiperete Apr 27, 2026
1840818
feat(web): implement getting keyboard details for KMX keyboards 🧼
ermshiperete Apr 27, 2026
5128345
feat(web): clarify return type of `KeymanEngine.getKeyboardDetails` 🧼
ermshiperete Apr 27, 2026
d61e5bb
refactor(core): clean up unit tests
mcdurdin Apr 28, 2026
9853f29
chore(core): address memory leak for embedded_test_source
mcdurdin Apr 28, 2026
63c2ed8
chore(core): avoid emitting control chars into junit.xml
mcdurdin Apr 28, 2026
85e3bf1
Merge pull request #15870 from keymanapp/feat/web/loadSerializedOpts
ermshiperete Apr 28, 2026
09d2816
refactor(web): address code review comment
ermshiperete Apr 28, 2026
f16d27c
Merge pull request #15887 from keymanapp/refactor/web/renames
ermshiperete Apr 28, 2026
602a740
Merge pull request #15888 from keymanapp/refactor/web/kbdDetails
ermshiperete Apr 28, 2026
8c96287
feat(web): ignore keyboards without details
ermshiperete Apr 28, 2026
10fcfe4
refactor(web): move common code to abstract `KeyboardProcessor` base …
ermshiperete Apr 27, 2026
16dcfaa
chore(web): Merge branch 'epic/web-core' into feat/web/keyboardDetails
ermshiperete Apr 28, 2026
c6abfa2
Merge pull request #15889 from keymanapp/feat/web/keyboardDetails
ermshiperete Apr 28, 2026
7c460e9
Merge pull request #15890 from keymanapp/feat/web/getKbdDetailsType
ermshiperete Apr 28, 2026
1bc83f9
chore(web): cleanup `web/src/app/browser/src/test-index.ts` exports
ermshiperete Apr 30, 2026
9c364d5
chore(web): use .d.ts instead of .d.js for types
ermshiperete Apr 30, 2026
925e68c
refactor(web): move context tests to typescript
ermshiperete Apr 30, 2026
90caa12
Merge pull request #15893 from keymanapp/refactor/web/kbdProcessor
ermshiperete Apr 30, 2026
1b8f37e
Merge pull request #15899 from keymanapp/chore/web/15894_test-index
ermshiperete May 4, 2026
d2fb11a
Merge pull request #15898 from keymanapp/refactor/web/jstests
ermshiperete May 4, 2026
ac56e72
chore(developer): handle parse errors in loading LDML test files
mcdurdin May 4, 2026
c78531d
refactor(core): clean up API documentation
mcdurdin May 4, 2026
0f2f3c1
refactor(core): clean up API documentation
mcdurdin May 4, 2026
08891bb
chore(core): address review comments on unit tests
mcdurdin May 6, 2026
33a4d4b
chore(developer): reduce coverage threshold for kmc-ldml to 85%
mcdurdin May 6, 2026
be26f58
chore(core): Merge branch 'refactor/core/api-documentation' of https:…
mcdurdin May 6, 2026
7591dc0
chore(core): tidy up api-header-extractor
mcdurdin May 6, 2026
d428fb2
Merge branch 'chore/core/test-cleanup-2' into chore/developer/ldml-te…
mcdurdin May 6, 2026
a8888ca
Merge branch 'chore/developer/ldml-test-file-reader-error-handler' in…
mcdurdin May 6, 2026
410a482
chore(core): use ASSERT_FALSE and ASSERT_TRUE where possible
mcdurdin May 6, 2026
5da3b4e
chore(core): cleanup transforms.tests.cpp
mcdurdin May 6, 2026
86571de
chore(core): cleanup compare_debug_items unit test helper
mcdurdin May 6, 2026
f7e210b
chore(core): cleanup state_context_api.tests.cpp
mcdurdin May 6, 2026
40d36f8
chore(core): add cross-reference between ldml_test_source and kmx_tes…
mcdurdin May 6, 2026
a3de441
chore(core): add test for NFD context deleting one combining mark
mcdurdin May 6, 2026
6a4fc1f
Merge pull request #15891 from keymanapp/chore/core/test-cleanup-2
mcdurdin May 6, 2026
82f4c95
chore(core): merge actions test data for unit tests
mcdurdin May 7, 2026
6ec106f
Merge branch 'refactor/core/api-documentation' into chore/core/15913-…
mcdurdin May 7, 2026
e0fd08c
chore(core): cleanup leaks in tests and skipped tests
mcdurdin May 7, 2026
f4e94fb
chore(core): Merge branch 'chore/core/15913-unit-test-follow-on'
mcdurdin May 7, 2026
e05a2cf
chore(developer): mark methods as private in ldml-keyboard-xml-reader
mcdurdin May 8, 2026
b35847a
Merge pull request #15903 from keymanapp/chore/developer/ldml-test-fi…
mcdurdin May 8, 2026
48e684e
Merge branch 'epic/web-core' into refactor/core/api-documentation
mcdurdin May 8, 2026
27de659
Merge pull request #15904 from keymanapp/refactor/core/api-documentation
mcdurdin May 8, 2026
b2d4cf9
Merge pull request #15923 from keymanapp/chore/core/15913-unit-test-f…
mcdurdin May 8, 2026
0d6b995
Merge branch 'epic/web-core' into auto/A19S28-merge-master-into-web-core
keyman-server May 11, 2026
0f2c033
Merge pull request #15943 from keymanapp/auto/A19S28-merge-master-int…
mcdurdin May 12, 2026
3a25613
maint(web): output name of TC reporter
ermshiperete May 12, 2026
e593c45
maint(web): fix starting local dev server for e2e tests
ermshiperete May 13, 2026
c2e102b
Merge pull request #15949 from keymanapp/maint/web/15895_WindowsTc
ermshiperete May 13, 2026
a2e8dc2
maint(web): fix Playwright TC reporter
ermshiperete May 20, 2026
9195dec
fix(web): address code review comments
ermshiperete May 21, 2026
39d6969
fix(web): further simplification
ermshiperete May 21, 2026
9c04c49
Merge pull request #15986 from keymanapp/fix/web/playwrightreporter
ermshiperete May 21, 2026
3d65485
chore: Merge branch 'epic/web-core' into auto/A19S29-merge-master-int…
mcdurdin May 22, 2026
9824409
Merge pull request #16002 from keymanapp/auto/A19S29-merge-master-int…
mcdurdin May 26, 2026
1e69f3f
chore: Merge branch 'epic/autocorrect' into chore/merge-web-core-into…
mcdurdin May 27, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion android/KMEA/app/src/main/assets/android-host.js
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,7 @@ function deregisterModel(modelID) {
}

function enableSuggestions(model, suggestionType) {
// Set the options first so that KMW's ModelManager can properly handle model enablement states
// Set the options first so that KMW's ModelCache can properly handle model enablement states
// the moment we actually register the new model.
// Use console_debug
console_debug('enableSuggestions(model, maySuggest='+suggestionType+')');
Expand Down
4 changes: 2 additions & 2 deletions android/KMEA/build.sh
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ JUNIT_RESULTS="##teamcity[importData type='junit' path='keyman\android\KMEA\app\

builder_describe "Builds Keyman Engine for Android." \
"@/web/src/app/webview" \
"@/web/src/engine/sentry-manager" \
"@/common/web/sentry-manager" \
"clean" \
"configure" \
"build" \
Expand Down Expand Up @@ -81,7 +81,7 @@ if builder_start_action build:engine; then
cp "$KEYMAN_WEB_ROOT/build/app/resources/osk/kmwosk.css" "$ENGINE_ASSETS/kmwosk.css"
cp "$KEYMAN_WEB_ROOT/build/app/resources/osk/globe-hint.css" "$ENGINE_ASSETS/globe-hint.css"
cp "$KEYMAN_WEB_ROOT/build/app/resources/osk/keymanweb-osk.ttf" "$ENGINE_ASSETS/keymanweb-osk.ttf"
cp "$KEYMAN_ROOT/web/src/engine/sentry-manager/build/lib/index.js" "$ENGINE_ASSETS/keyman-sentry.js"
cp "$KEYMAN_ROOT/common/web/sentry-manager/build/lib/index.js" "$ENGINE_ASSETS/keyman-sentry.js"

echo "Copying es6-shim polyfill"
cp "$KEYMAN_ROOT/node_modules/es6-shim/es6-shim.min.js" "$ENGINE_ASSETS/es6-shim.min.js"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,6 @@
<CompilerWarningsAsErrors>True</CompilerWarningsAsErrors>
<CheckFilenameConventions>True</CheckFilenameConventions>
<SkipMetadataFiles>True</SkipMetadataFiles>
<ProjectType>lexicalmodel</ProjectType>
<ProjectType>keyboard</ProjectType>
</Options>
</KeymanDeveloperProject>
12 changes: 10 additions & 2 deletions common/include/km_types.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,20 @@

#if defined(__LP64__) || defined(_LP64)
/* 64-bit, g++ */
#define KMX_64BIT
#define KMX_REQUIRES_REALIGNMENT
#endif

#if defined(_WIN64) && !defined(USE_64)
/* 64-bit, Windows */
#define KMX_64BIT
#define KMX_REQUIRES_REALIGNMENT
#endif

#if defined(__EMSCRIPTEN__)
// Emscripten/WASM. Emscripten even though it uses 32-bit (and not 64-bit
// pointers like the 64-bit architectures above) requires 32-bit alignment
// for pointers which we don't always have in the KMX data from file
// (see #12844).
#define KMX_REQUIRES_REALIGNMENT
#endif

typedef uint32_t KMX_DWORD;
Expand Down
45 changes: 30 additions & 15 deletions common/include/kmx_file.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@

#pragma once

#include <km_types.h>
#include "km_types.h"

#ifdef KM_CORE_LIBRARY
// TODO: move this to a common namespace keyman::common::kmx_file or similar in the future
Expand Down Expand Up @@ -52,8 +52,10 @@ namespace kmx {
#define VERSION_160 0x00001000
#define VERSION_170 0x00001100

#define VERSION_190 0x00001300

#define VERSION_MIN VERSION_50
#define VERSION_MAX VERSION_170
#define VERSION_MAX VERSION_190

//
// Backspace types
Expand All @@ -62,6 +64,9 @@ namespace kmx {
#define BK_DEFAULT 0
#define BK_DEADKEY 1

// Next character to delete is a Unicode surrogate pair
#define BK_SURROGATE 4

// Different begin types
#define BEGIN_ANSI 0
#define BEGIN_UNICODE 1
Expand Down Expand Up @@ -267,14 +272,24 @@ namespace kmx {
#define C_CODE_IFSYSTEMSTORE(store, val1, val2) U_UC_SENTINEL U_CODE_IFSYSTEMSTORE store val1 val2
#define C_CODE_SETSYSTEMSTORE(store, val) U_UC_SENTINEL U_CODE_SETSYSTEMSTORE store val

//
// COMP_KEYBOARD.dwFlags bitfield
//

#define KF_SHIFTFREESCAPS 0x0001
#define KF_CAPSONONLY 0x0002
#define KF_CAPSALWAYSOFF 0x0004
#define KF_LOGICALLAYOUT 0x0008
#define KF_AUTOMATICVERSION 0x0010

// 16.0: Support for LDML Keyboards in KMXPlus file format
#define KF_KMXPLUS 0x0020
/** 16.0+: A `COMP_KEYBOARD_KMXPLUSINFO` structure is present immediately after `COMP_KEYBOARD` */
#define KF_KMXPLUS 0x0020

/**
* 19.0+: The `COMP_KEYBOARD_KMXPLUSINFO` structure contains a v19 embedded OSK;
* may be used with or without KF_KMXPLUS.
*/
#define KF_KMXPLUSOSK 0x0040

#define HK_ALT 0x00010000
#define HK_CTRL 0x00020000
Expand Down Expand Up @@ -362,17 +377,17 @@ struct COMP_KEYBOARD_KMXPLUSINFO {
};

/**
* Only valid if comp_keyboard.dwFlags&KF_KMXPLUS
* Only valid if comp_keyboard.dwFlags&(KF_KMXPLUS|KF_KMXPLUSOSK)
*/
struct COMP_KEYBOARD_EX {
COMP_KEYBOARD header; // 0000 see COMP_KEYBOARD
COMP_KEYBOARD_KMXPLUSINFO kmxplus; // 0040 see COMP_KEYBOARD_EXTRA
struct COMP_KEYBOARD header; // 0000 see COMP_KEYBOARD
struct COMP_KEYBOARD_KMXPLUSINFO kmxplus; // 0040 see COMP_KEYBOARD_EXTRA
};

typedef COMP_KEYBOARD *PCOMP_KEYBOARD;
typedef COMP_STORE *PCOMP_STORE;
typedef COMP_KEY *PCOMP_KEY;
typedef COMP_GROUP *PCOMP_GROUP;
typedef struct COMP_KEYBOARD *PCOMP_KEYBOARD;
typedef struct COMP_STORE *PCOMP_STORE;
typedef struct COMP_KEY *PCOMP_KEY;
typedef struct COMP_GROUP *PCOMP_GROUP;

extern const int CODE__SIZE[];
#define CODE__SIZE_MAX 5
Expand All @@ -382,10 +397,10 @@ extern const int CODE__SIZE[];
#define KEYBOARDFILEGROUP_SIZE 24
#define KEYBOARDFILEKEY_SIZE 20

static_assert(sizeof(COMP_STORE) == KEYBOARDFILESTORE_SIZE, "COMP_STORE must be KEYBOARDFILESTORE_SIZE bytes");
static_assert(sizeof(COMP_KEY) == KEYBOARDFILEKEY_SIZE, "COMP_KEY must be KEYBOARDFILEKEY_SIZE bytes");
static_assert(sizeof(COMP_GROUP) == KEYBOARDFILEGROUP_SIZE, "COMP_GROUP must be KEYBOARDFILEGROUP_SIZE bytes");
static_assert(sizeof(COMP_KEYBOARD) == KEYBOARDFILEHEADER_SIZE, "COMP_KEYBOARD must be KEYBOARDFILEHEADER_SIZE bytes");
static_assert(sizeof(struct COMP_STORE) == KEYBOARDFILESTORE_SIZE, "COMP_STORE must be KEYBOARDFILESTORE_SIZE bytes");
static_assert(sizeof(struct COMP_KEY) == KEYBOARDFILEKEY_SIZE, "COMP_KEY must be KEYBOARDFILEKEY_SIZE bytes");
static_assert(sizeof(struct COMP_GROUP) == KEYBOARDFILEGROUP_SIZE, "COMP_GROUP must be KEYBOARDFILEGROUP_SIZE bytes");
static_assert(sizeof(struct COMP_KEYBOARD) == KEYBOARDFILEHEADER_SIZE, "COMP_KEYBOARD must be KEYBOARDFILEHEADER_SIZE bytes");

#ifdef KM_CORE_LIBRARY
} // namespace kmx
Expand Down
37 changes: 32 additions & 5 deletions common/test/keyboards/baseline/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,21 +4,48 @@ This folder contains a set of keyboards that are used by multiple projects to
verify behaviour, both for compilation, and for runtime tests.

The following projects are known to use these keyboards:

* core -- .kmn files only, compiled with kmc during tests
* developer/kmcmplib -- .kmn files, compiled for tests, and .kmx as reference
* linux -- .kmn files for test steps only, .kmx files
* web -- .kmn files for test steps, .kmx and .js files

The .kmx files were built with kmcomp, not kmc, in order to ensure that
The .kmx and .js files were built with kmcomp, not kmc, in order to ensure that
developer/kmcmplib gets a valid baseline reference.

Once kmc is stable, it is possible that we will be able to use the kmc npm
module to build .kmx for all projects that need them.

## Build parameters

Keyboards were built with debug information and no compiler version embedded,
with kmcomp 16.0.138:
The keyboards can be built with:

```bat
for %d in (*.kmn) do kmcomp -no-compiler-version -d %d
```bash
./build.sh build
```

This builds the keyboards with debug information and no compiler version
embedded.

## Grouping of the test fixtures

Fixtures that test similar functionality are roughly grouped together.
There is some overlap between different groups, so this was done
mainly by test name.

| Name | Test group |
|----------|------------------------------------------|
| k_00xx_* | Tests that didn't fit in any other group |
| k_01xx_* | Basic rules |
| k_02xx_* | RALT |
| k_03xx_* | deadkeys |
| k_04xx_* | Using multiple groups |
| k_05xx_* | Options |
| k_06xx_* | System stores |
| k_07xx_* | Caps related tests |
| k_08xx_* | Context related |

## Description of file format

See [README.md](/core/tests/unit/kmx/README.md) in core for a description
of the file format.
Loading
Loading