Commit graph

2961 commits

Author SHA1 Message Date
Marc Durdin
9f4f8fcda9 fix(developer): treat js files with unrecognized encodings as non-keyboard files
Fixes: KEYMAN-DEVELOPER-201
Fixes: #11687
2024-06-06 06:53:00 +07:00
Marc Durdin
1603562e72 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:39:50 +07:00
Marc Durdin
3b1a641d1b 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 15:39:48 +07:00
Marc Durdin
9c29e4f6e1
Merge pull request #11583 from keymanapp/fix/developer/cherry-pick/11581-flicks-for-default-key-hints
fix(developer): correct the inference of default hint from flicks 🍒 🏠
2024-05-31 13:07:16 +07:00
Marc Durdin
9a554ffa20
Merge pull request #11578 from keymanapp/fix/developer/cherry-pick/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:07:00 +07:00
Marc Durdin
8b69ac256f
Merge pull request #11576 from keymanapp/fix/developer/cherry-pick/11573-save-selection-when-loading-state
fix(developer): save touch layout editor selection when loading state 🍒 🏠
2024-05-31 13:06:48 +07:00
Marc Durdin
fd117edab5
Merge pull request #11564 from keymanapp/fix/developer/cherry-pick/11562-handle-missing-data-in-kps-keyboard
fix(developer): handle missing data in .kps `<Keyboard>` 🍒 🏠
2024-05-31 13:06:41 +07:00
Marc Durdin
694837cd2d
Merge pull request #11556 from keymanapp/fix/developer/cherry-pick/11554-handle-invalid-default-project-path
fix(developer): handle invalid default project path in options 🍒 🏠
2024-05-31 13:06:25 +07:00
Marc Durdin
b79943e86a
Merge pull request #11559 from keymanapp/fix/developer/cherry-pick/11557-invalid-project-file-at-launch
fix(developer): handle invalid project file when scanning for owner project 🍒 🏠
2024-05-30 09:29:27 +07:00
Marc Durdin
ffa6f8a411
Merge pull request #11553 from keymanapp/fix/developer/cherry-pick/11551-create-folder-for-mrulist
fix(developer): ensure folder for MRU list is always created 🍒 🏠
2024-05-30 09:29:06 +07:00
Marc Durdin
634bd9b315
Merge pull request #11547 from keymanapp/fix/developer/cherry-pick/11545-nomatch-return-causes-exception
fix(developer): handle unsupported `return` statement in `match` and `nomatch` in web compiler 🍒 🏠
2024-05-30 09:28:55 +07:00
Marc Durdin
b78a5072b9 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
Cherry-pick-of: #11582
2024-05-28 09:53:26 +07:00
Marc Durdin
a9dccb20c2 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:56:19 +07:00
Marc Durdin
3d8ae26237 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:51:37 +07:00
Marc Durdin
d6ac1b4d0d 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:05:47 +07:00
Marc Durdin
e46a2b2331 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:48:38 +07:00
Marc Durdin
e02322d75f 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:17:21 +07:00
Marc Durdin
9ff69e4227 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:53:16 +07:00
Marc Durdin
7054275fc3 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:41:29 +07:00
Marc Durdin
c23cf49b7e 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:24:29 +07:00
Marc Durdin
19693199a9 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:06:20 +07:00
Marc Durdin
8474372baa fix(developer): define lastSelLength variable
Fixes #11361.
2024-05-06 10:25:04 +07:00
Marc Durdin
4fc94a9e70 fix(developer): handle missing Description element for File element in package compiler
Fixes #11353.
2024-05-03 14:31:10 +07:00
Marc Durdin
78902e3891 fix(developer): handle missing Name element for File element in package compiler
Fixes #11351.
2024-05-03 14:25:35 +07:00
Marc Durdin
d019707a65
Merge pull request #11244 from keymanapp/fix/developer/11199-export-osk-without-keyman-installed
fix(developer): support export of visual keyboard when Keyman for Windows not installed
2024-04-26 17:08:58 +10:00
Dr Mark C. Sinclair
9cb29b06da chore(developer): Merge branch 'beta' into test/developer/keyboard-info-compiler-messages-unit-tests-2 2024-04-23 12:24:54 +01:00
Dr Mark C. Sinclair
e742926dba chore(developer): some further elimination of code redundancy 2024-04-23 11:58:04 +01:00
Marc Durdin
5658a177a2
Merge pull request #11276 from keymanapp/fix/developer/11274-use-strict-for-downlevel-browsers
fix(developer): "use strict" for downlevel browsers in Server
2024-04-23 18:55:33 +10:00
Marc Durdin
83b925310a
Merge pull request #11271 from keymanapp/fix/developer/11262-crash-when-closing-in-help-form
fix(developer): report missing help to sentry instead of local xml
2024-04-23 18:55:20 +10:00
Marc Durdin
85fccb35f6
Merge pull request #11269 from keymanapp/fix/developer/11233-ne-plus-ultra
fix(developer): keep escaped plus-sign escaped 🙀
2024-04-22 23:42:57 +10:00
Dr Mark C. Sinclair
00d7b6ccc7 chore(developer): Merge branch 'beta' into test/developer/keyboard-info-compiler-messages-unit-tests-2 2024-04-22 10:38:37 +01:00
Dr Mark C. Sinclair
2f43362e6c chore(developer): Merge branch 'beta' into test/developer/keyboard-info-compiler-unit-tests-2 2024-04-22 10:33:13 +01:00
Marc Durdin
d3c2ddf671
Merge pull request #11275 from keymanapp/fix/developer/11273-initdroparea-lazy-init
fix(developer): lazy initialization of test window
2024-04-22 18:29:05 +10:00
Marc Durdin
90b7e3161f
Merge pull request #11272 from keymanapp/fix/developer/11261-handle-multiple-server-instances
fix(developer): handle multiple instances of Server starting
2024-04-22 18:28:58 +10:00
Marc Durdin
f199c6aec2
Merge pull request #11270 from keymanapp/fix/developer/11260-handle-invalid-unicode-values-in-layout-builder
fix(developer): handle invalid Unicode values in touch layout builder
2024-04-22 14:18:02 +10:00
Marc Durdin
50f2547436
Merge pull request #11252 from keymanapp/fix/developer/11194-avoid-crash-if-mru-project-is-missing
fix(developer): test that MRU project exists before attempting to reference on startup
2024-04-22 14:17:55 +10:00
Marc Durdin
f870e912f3 fix(developer): "use strict" for downlevel browsers in Server
Fixes #11274.
2024-04-22 10:57:53 +07:00
Marc Durdin
d296100feb fix(developer): lazy initialization of test window
Fixes #11273.

On some devices, the fetch() would return faster than the remaining
script loads, which caused this script error. Lazy initialization should
address this.
2024-04-22 10:56:01 +07:00
Marc Durdin
dfdda1a4b2 fix(developer): handle multiple instances of Server starting
Fixes #11261.
2024-04-22 10:32:55 +07:00
Marc Durdin
65c056cb26 fix(developer): report missing help to sentry instead of local xml
Fixes #11262.

Avoid the crash by reporting missing help pages to Sentry instead of
attempting to write to a local .xml file. This gives us more data of
which help is missing from Keyman Developer, which is more useful to
us.
2024-04-22 09:21:53 +07:00
Marc Durdin
007f0bdc28 fix(developer): handle invalid Unicode values in touch layout builder
Fixes #11260.
2024-04-22 08:26:03 +07:00
Steven R. Loomis
7fb97efa43 fix(developer): escape plus and asterisk sign
- additional tests for asterisk and plus

Fixes: #11233
2024-04-19 16:37:16 -05:00
Marc Durdin
57fb66a53a chore(developer): ignore missing folder when cleaning 2024-04-19 10:08:52 +07:00
Marc Durdin
1f616a875d chore(developer): temporary copy of osk xml when building installer 2024-04-19 06:39:23 +07:00
Dr Mark C. Sinclair
e6f40ad73a chore(developer): simplify a TextDecoder.decode stub 2024-04-18 11:21:06 +01:00
Dr Mark C. Sinclair
5e14f009b9 chore(developer): replace khmer_angkor sources with constant 2024-04-18 10:48:48 +01:00
Dr Mark C. Sinclair
65429bd089 chore(developer): replace some fixture paths with constants 2024-04-18 10:26:41 +01:00
Dr Mark C. Sinclair
687fcee296 chore(developer): remove placeholder comment 2024-04-18 09:57:17 +01:00
Marc Durdin
5f7f9e905c fix(developer): test that MRU project exists before attempting to reference on startup
Fixes #11194.

If the last-used project file no longer exists (e.g. has been renamed),
then Keyman Developer would crash as it did not test that the file had
been loaded successfully before attempting to reference it.
2024-04-18 14:05:39 +07:00
Marc Durdin
787d5f5a01 fix(developer): prevent xmlns for ldml keyboard template child elements
Fixes #11228.
2024-04-18 13:49:38 +07:00