Commit graph

3039 commits

Author SHA1 Message Date
Marc Durdin
63a40e9934
Merge branch 'master' into context/new-model-project-parameters 2024-06-07 08:35:04 +07:00
Marc Durdin
4a7b766241
Merge pull request #11658 from Nnyny/context/wordlist-editor
chore(developer): add context/wordlist-editor
2024-06-07 08:34:09 +07:00
Marc Durdin
e1879deb96
Merge pull request #11656 from Nnyny/context/character-map
chore(developer): add context/character-map
2024-06-07 08:34:00 +07:00
Marc Durdin
6665cd0688
Merge pull request #11701 from keymanapp/fix/developer/11700-disable-example-edit-controls-if-no-examples
fix(developer): disable example edit controls if no examples in Package Editor
2024-06-06 12:05:04 +07:00
Marc Durdin
7eba4f9a69
Merge pull request #11698 from keymanapp/fix/developer/11687-ignore-javascript-files-with-bad-encodings
fix(developer): treat js files with unrecognized encodings as non-keyboard files
2024-06-06 12:04:49 +07:00
Marc Durdin
c6b5afda7d
Merge pull request #11587 from keymanapp/fix/developer/11586-handle-editor-init-after-debugger
fix(developer): handle editor initializing after debugger when setting execution point
2024-06-06 12:04:39 +07:00
Marc Durdin
6fba7c0159 fix(developer): disable example edit controls if no examples in Package Editor
Fixes: #11700
Fixes: KEYMAN-DEVELOPER-1FT
2024-06-06 08:14:12 +07:00
Marc Durdin
50b28ff3ff fix(developer): treat js files with unrecognized encodings as non-keyboard files
Fixes: KEYMAN-DEVELOPER-201
Fixes: #11687
2024-06-06 06:51:11 +07:00
Nnyny
983aea1ba5 add context/new-model-project-parameters 2024-06-04 14:48:10 +07:00
Marc Durdin
e6d59fc173 chore: move xml2js into the repo to eliminate npm git dependency
Small rewrites to the xml2js code as ES6 modules. Based on
https://github.com/keymanapp/dependency-node-xml2js

Fixes: #8616
2024-06-03 16:07:29 +07:00
Nnyny
423aa7ab94 add context/wordlist-editor 2024-06-03 15:36:07 +07:00
Marc Durdin
b874de25e8 chore: replace git dep on restructure with 3.0.1 in npm
3.0.1 includes our fix. However, 3.0.2 does not yet appear to have been
published, which has a patch for our fix?

Fixes: #8616
2024-06-03 14:58:39 +07:00
Nnyny
8608a26701 add context/character-map 2024-06-03 14:40:57 +07:00
Marc Durdin
b22bf72a91
Merge pull request #11575 from keymanapp/fix/developer/11573-save-selection-when-loading-state
fix(developer): save touch layout editor selection when loading state
2024-06-03 05:42:14 +07:00
Marc Durdin
26f68d0a35
Merge pull request #11635 from keymanapp/chore/developer/11632-increase-timeout-for-compiler-test
chore(developer): increase timeout for kmc-ldml compiler test
2024-06-01 06:19:44 +07:00
Marc Durdin
9e4b5b7b6f
Merge pull request #11633 from keymanapp/fix/developer/11625-support-windows-and-unicode-font-names
fix(developer): support Windows and Unicode names in .ttf
2024-06-01 06:19:36 +07:00
Marc Durdin
aeac822e51
Merge pull request #11631 from keymanapp/fix/developer/11630-bundle-ttfmeta-dependency-internally
fix(developer): bundle ttfmeta library internally with kmc-keyboard-info
2024-06-01 06:19:26 +07:00
Marc Durdin
e622c1ba1b
Merge pull request #11629 from Nnyny/context/debug
chore(developer): add context/debug
2024-05-31 15:50:35 +07:00
Marc Durdin
75d39069ec chore(developer): increase timeout for kmc-ldml compiler test
Fixes: #11632
2024-05-31 15:44:40 +07:00
Marc Durdin
f9fa1a685e fix(developer): support Windows and Unicode names in .ttf
The ttfmeta library is extremely rudimentary. It does next to no error
checking, and supports only a small part of the TTF spec. It did not
support NAME platforms 0 or 3 (the most common platform, Windows), and
these are encoded in UTF-16BE. This patch adds support for those
platforms and throws if an unsupported platform/encoding is encountered.

Now, the ttfmeta library is unsupported and gone (#11630). It is based
on another library, ttfinfo, last updated 11 years ago. This is not
great. But the other Node libraries that I located introduce further
dependencies or complex builds (e.g. WASM) and that's not great either,
for a function used only in one place in our build environment.

https://learn.microsoft.com/en-us/typography/opentype/spec/name

The test-font-family.ts runs a basic test against Lateef font, and has
a skipped test that can be run (with minor edits) against all fonts in
the keyboard repository. I have done this to verify that there are no
fonts that return errors, but have disabled this test for deployment for
now.

Fixes: #11625
2024-05-31 15:24:47 +07:00
Marc Durdin
76bd22b120 fix(developer): bundle ttfmeta library internally with kmc-keyboard-info
Remove ttfmeta from package.json, and copy only the relevant files into
ttfmeta/ under kmc-keyboard-info. This is a stopgap measure as we will
probably attempt to identify an alternate library in the future.

See also #11625 which is the driver for making this change now.

Fixes: #11630
2024-05-31 14:54:09 +07:00
Nnyny
2d9ffcc288 add context/debug 2024-05-31 14:27:15 +07:00
Marc Durdin
39509cc918
Merge pull request #11608 from keymanapp/chore/increase-fixture-build-test-timeout
chore: increase kmc-kmn build test timeout
2024-05-31 13:07:38 +07:00
Marc Durdin
db5e8929ed
Merge pull request #11582 from keymanapp/fix/developer/11581-flicks-for-default-key-hints
fix(developer): correct the inference of default hint from flicks
2024-05-31 13:07:07 +07:00
Marc Durdin
f7b3e70895
Merge pull request #11577 from keymanapp/fix/developer/11574-fixup-flick-multitap-in-layer-props
fix(developer): use correct variable when fixing up flick and multitap in Layer Properties dialog
2024-05-31 13:06:55 +07:00
Marc Durdin
c1db67a95c
Merge pull request #11563 from keymanapp/fix/developer/11562-handle-missing-data-in-kps-keyboard
fix(developer): handle missing data in .kps `<Keyboard>`
2024-05-31 13:06:36 +07:00
Marc Durdin
4e5b59f016
Merge pull request #11555 from keymanapp/fix/developer/11554-handle-invalid-default-project-path
fix(developer): handle invalid default project path in options
2024-05-31 13:06:19 +07:00
Marc Durdin
769c10ccf5
Merge pull request #11552 from keymanapp/fix/developer/11551-create-folder-for-mrulist
fix(developer): ensure folder for MRU list is always created
2024-05-30 13:36:31 +07:00
Marc Durdin
e5e21e79cb
Merge pull request #11558 from keymanapp/fix/developer/11557-invalid-project-file-at-launch
fix(developer): handle invalid project file when scanning for owner project
2024-05-30 09:29:19 +07:00
Marc Durdin
84954063f3
Merge pull request #11546 from keymanapp/fix/developer/11545-nomatch-return-causes-exception
fix(developer): handle unsupported `return` statement in `match` and `nomatch` in web compiler
2024-05-30 09:28:47 +07:00
Marc Durdin
8cef070cd8 chore: increase kmc-kmn build test timeout
Rarely, CI builds have been timing out building the test fixtures, with
the default 2,000msec timeout. Increasing to 10,000msec.
2024-05-30 04:50:53 +07:00
Marc Durdin
951eb571fe chore(developer): rename Default_DefaultProjectPath to Get_Initial_DefaultProjectPath 2024-05-28 14:39:07 +07:00
Marc Durdin
dfc90de81d fix(developer): handle editor initializing after debugger when setting execution point
Fixes: #11586
Fixes: KEYMAN-DEVELOPER-1K7
2024-05-28 13:53:04 +07:00
Marc Durdin
9f5141b18c fix(developer): correct the inference of default hint from flicks
There were two problems here:
* An undeclared variable `source`
* The `flick` parameter is an array, not an object, so indexing by
  direction is invalid

Fixes: #11581
Fixes: KEYMAN-DEVELOPER-1YW
2024-05-28 09:49:38 +07:00
Marc Durdin
5c40ec9878 fix(developer): use correct variable when fixing up flick and multitap in Layer Properties dialog
Fixes: #11574
Fixes: KEYMAN-DEVELOPER-1GC
2024-05-28 06:54:47 +07:00
Marc Durdin
193250db71 fix(developer): save touch layout editor selection when loading state
Key selection was left in a corrupted state in `builder.loadState()`, on
first load of the touch layout editor, because the selection was not
restored after calling `prepareLayer()`.

This only happens on first load because after first load, the selection
will have been saved to the state (which is kept in the backend,
associated with the instance of the editor), so pressing F5 to reload
the page will not reproduce the issue.

Fixes: #11573
Fixes: KEYMAN-DEVELOPER-1Z8
2024-05-28 06:46:48 +07:00
Marc Durdin
8efba7186e fix(developer): handle missing data in .kps <Keyboard>
Handles when `<Version/>`, `<Name/>`, or `<ID/>` elements are missing
from `<Keyboard>` elements in the .kps file in kmc-package. Adds a unit
test.

Fixes: #11562
Fixes: KEYMAN-DEVELOPER-1YY
2024-05-27 15:04:53 +07:00
Marc Durdin
15acd713fb fix(developer): handle invalid project file when scanning for owner project
Also updates the only other place where a project file is loaded like
this, in the project renderer, and handles it too (this scenario is
less likely to happen because the project file must already have been
loaded in order to be presented in the UI).

Fixes: #11557
Fixes: KEYMAN-DEVELOPER-1Z2
2024-05-27 12:46:49 +07:00
Marc Durdin
59a907ee04 fix(developer): handle invalid default project path in options
If a relative or otherwise invalid path is given for `default project
path` in .keymandeveloper/options.json, then this will reset the path
to the default of `%Documents%/Keyman Developer/Projects`.

Fixes: #11554
Fixes: KEYMAN-DEVELOPER-1ZB
2024-05-27 12:14:53 +07:00
Marc Durdin
6d2164f1e6 fix(developer): ensure folder for MRU list is always created
This arises if `%AppData%/Keyman/Keyman Developer` folder is missing.
It is sporadic because most times, Keyman Developer Server wins a
startup race and creates the folder before this code is ever reached.

Fixes: #11551
Fixes: KEYMAN-DEVELOPER-1MY
2024-05-27 10:50:58 +07:00
Marc Durdin
67484cb5d5 fix(developer): handle unsupported return statement in match and nomatch in web compiler
The `return` statement is unsupported in the web compiler. This is
documented, but the problem here was that the `nomatch` and `match`
metarules have no corresponding `fkp` structure, so that caused a fatal
error in the compiler if these were used in combination, e.g.

    nomatch > return

Fixes: #11545
2024-05-27 09:38:46 +07:00
Marc Durdin
e9175de00f fix(developer): test existence of ngrok.exe before atttempting to start
Fixes the scenario where the `%AppData%\Keyman\Keyman Developer\Server\bin`
folder exists, but ngrok.exe is not in the folder, which caused Keyman
Developer Server to crash.

Fixes: #11542
Fixes: KEYMAN-DEVELOPER-1JE
2024-05-27 08:21:13 +07:00
Marc Durdin
84888c2390
Merge pull request #11512 from Nnyny/developer/contexthelp
chore(developer): add context/key-test
2024-05-24 13:51:59 +07:00
Marc Durdin
1e66b6ed0e
Merge pull request #11421 from keymanapp/chore/developer/11317-build.sh
chore(developer): build.sh for developer
2024-05-23 14:22:54 +07:00
Nnyny
273d79e204 context/key-test 2024-05-23 13:45:05 +07:00
Marc Durdin
78de7e901b
Merge pull request #11488 from keymanapp/fix/developer/11486-handle-invalidate-context-in-debugger
fix(developer): handle `KM_CORE_IT_INVALIDATE_CONTEXT` in debugger
2024-05-22 10:56:02 +07:00
Dr Mark C. Sinclair
4b9c2e8f95 chore(developer): Merge branch 'master' into test/developer/kmn-compiler-messages-unit-tests 2024-05-21 09:09:49 +01:00
Marc Durdin
c52d32cca6 fix(developer): handle KM_CORE_IT_INVALIDATE_CONTEXT in debugger
The output from Keyman Core changed in #11172 to emit a
`KM_CORE_IT_INVALIDATE_CONTEXT` action when a frame key is pressed, but
the debugger was not catering for this scenario, causing an assertion
failure.

Fixes: #11486
Fixes: KEYMAN-DEVELOPER-1Y4
2024-05-21 09:02:28 +07:00
Dr Mark C. Sinclair
6c2308637f chore(developer): Merge branch 'master' into test/developer/kmn-compiler-messages-unit-tests 2024-05-20 10:30:36 +01:00
Dr Mark C. Sinclair
23069398bf chore(developer): remove all message text assertions 2024-05-20 10:28:13 +01:00