Commit graph

539 commits

Author SHA1 Message Date
Marc Durdin
eac90588dc
Merge pull request #8336 from keymanapp/feat/developer/kmcmplib-feature-flag-tike
feat(developer): add 'Use Legacy Compiler' option to TIKE 🚑
2023-03-02 17:59:55 +11:00
Marc Durdin
2de745b3df feat(developer): add 'Use Legacy Compiler' option to TIKE 2023-02-28 15:55:38 +07:00
Marc Durdin
20cc47714e chore(core): specify --no-tests in all dependent builds 2023-02-21 12:22:00 +07:00
Steven R. Loomis
bccc1e5720 Merge remote-tracking branch 'upstream/master' into chore/merge-master-20230217-epic-ldml 2023-02-17 18:52:33 -06:00
Marc Durdin
c155325d73 fix(developer): Select BCP47 Code dialog inconsistencies
Fixes #8157.

There are some limitations in this dialog as it stands; we will rework
it completely when we revisit BCP 47 tagging.

However, for now, this addresses some strange behaviours around the
Reset button and the displayed output:

* The Reset button will only be enabled if you change the text in the
  Language Name field.
* The messaging around a missing language subtag is clearer -- tells
  the user that they need to enter something there.
* The Reset button will now never insert default text strings into the
  Language Name field.

One example of something that is slightly weird, is if you enter a
two-letter region subtag into the script box, it will show what looks
like a valid tag in the output box (e.g. `en-Au`), but it will be
considered invalid, because that two letter subtag needs to be entered
into the region box.
2023-02-07 12:40:31 +07:00
Steven R. Loomis
ae45295dc6 Merge remote-tracking branch 'upstream/master' into chore/merge-master-a17s5-REDO-epic-ldml 2023-02-03 16:53:35 -06:00
Marc Durdin
8ee8325c74 feat(developer): check for duplicated language codes in package editor and compiler
Fixes #8119.
2023-02-02 15:06:15 +07:00
Marc Durdin
17359dbf53 chore(developer): kmcmpdll debug src path
Adds the src build path in for kmcmpdll.dll for debugging purposes, when
running from any subdirectory of the KEYMAN_ROOT path.
2023-01-31 15:56:30 +07:00
Marc Durdin
067028cec2 chore: revise tag variable name to VERSION_GIT_TAG
Introduce new $VERSION_GIT_TAG environment variable, and update all
references to release@version in all projects to use the new variable.
2023-01-21 17:02:50 +07:00
Marc Durdin
34ece2182d fix(common): update sentry release identifiers to support semver
Fixes #7895.

This should mean that Sentry reports start to track semantic versions. I
have reviewed each project and I _think_ I've captured all the locations
where we need to construct release identifiers. Note that one of them
was fixed from a plain version number.

Docs on release format: https://docs.sentry.io/platforms/node/guides/serverless-cloud/configuration/releases/#bind-the-version
2023-01-17 17:04:24 +07:00
Steven R. Loomis
bc14f18460 Merge remote-tracking branch 'origin/master' into chore/core/mergemaster4-epic-ldml 2022-12-15 17:55:13 -06:00
Marc Durdin
eaae1c3774
Merge pull request #7820 from keymanapp/fix/developer/7810-encodeurl-broken
fix(developer): EncodeURL was not handling spaces
2022-12-01 10:55:48 +11:00
Marc Durdin
1208bf599f
Merge pull request #7830 from keymanapp/fix/developer/7829-onlineupdate-shutdown-thread
fix(developer): OnlineUpdate crash on shutdown
2022-12-01 10:23:53 +11:00
Marc Durdin
182a1fcb41 chore: rename tike internally 2022-11-28 19:52:00 +07:00
Marc Durdin
529278c045 fix(windows): lower case filenames for projects
Fixes #7828.

Moves all projects to lower case filenames so that we don't end up with
filename conflicts in symbol servers.
2022-11-28 19:28:14 +07:00
Marc Durdin
2c6c6f107b fix(developer): OnlineUpdate crash on shutdown
Fixes #7829.

The online update check could crash on shutdown because the thread
destructor would run from the wrong thread. This caused the main form
destruction, which happens if the user chooses to install the update,
to be triggered from the worker thread, leading to much pain.
2022-11-28 09:56:27 +07:00
Marc Durdin
d2e1a41d06 fix(developer): remove missing files from MRU list
Fixes #7808.

If a project is moved, then the MRU, which has absolute path names, will
probably have references to files that don't exist. Rather than leave
these in the list, to be opened and potentially recreated in the wrong
place, we should just remove them entirely.
2022-11-26 07:31:16 +07:00
Marc Durdin
6eefb3a771 fix(developer): EncodeURL was not handling spaces
Fixes #7810.

This addresses a regression introduced in #7631, where URL parameters
with spaces would be encoded into `+` instead of `%20`. Looking a bit
deeper at the Delphi `TNetEncoding.URL.Encode` function I realised that
it was entirely inadequate. Some guy named Marc Durdin wrote a blog a
good few years ago about the problem, and that's what I ended up using.

This encoding issue caused filenames with spaces (by default, project
paths in Developer have spaces) to give a 404 when editing a touch
layout, which meant that the touch keyboards could not be saved.

Also fixes KEYMAN-DEVELOPER-74, where the + encoding caused multiple
entries to appear in the filename cache.

Amusing to Google this problem, find solid answer on SO, which pointed
to my very own blog. Embarrassing that my own code didn't already
include my own fix.

A secondary issue is also fixed here, where request parameters were
double-decoded for formencoded POST requests. The fix for broken URL
encodings was only required for GET requests.

This also showed up in KEYMAN-DEVELOPER-74, with double-encoded paths
being registered as source files.
2022-11-26 07:09:53 +07:00
Marc Durdin
c18f1a7e63
Merge pull request #7631 from keymanapp/fix/developer/7628-utf8-urls
fix(developer): URL parameters should be UTF-8
2022-11-11 08:03:00 +11:00
Marc Durdin
31513d657e fix(developer): handle utf-8 paths safely 2022-11-10 15:26:27 +11:00
Marc Durdin
3dbd11939f
Merge pull request #7650 from keymanapp/fix/core/7649-emit-keystroke-writing-action-to-wrong-queue
fix(core): emit keystroke was writing to wrong queue
2022-11-09 20:24:26 +11:00
Marc Durdin
d1ab61eac1
Merge pull request #7659 from keymanapp/fix/developer/7658-handle-unpaired-surrogate-in-token-command
fix(developer): handle unpaired surrogate
2022-11-09 16:46:21 +11:00
Marc Durdin
6ebba9deb1
Merge pull request #7655 from keymanapp/fix/developer/4757-6928-handle-shutdown-on-update-better
fix(developer): handle shutdown cleanup more cleanly
2022-11-09 16:46:04 +11:00
Marc Durdin
5d41e7a36e fix(developer): handle unpaired surrogate
Fixes #7658.

When manipulating text that contains an unpaired surrogate, the text
editor could throw an exception trying to encode the text to send
through to the token command. This simply masks that error.
2022-11-09 09:43:55 +11:00
Marc Durdin
03ae8582db fix(developer): handle shutdown cleanup more cleanly
Fixes #4757.
Fixes #6928.

Three separate ways shutdown is more robust:

1. Destroy main form before web server -- this ensures that all main
   form routines have deregistered app sources from web server.
2. In some situations, `FormClose` can be skipped by shutdown routines,
   for example, if you call `Application.Terminate`. This change ensures
   that we get a second chance to cleanup in the form destructor with
   `DoCloseCleanup`.
3. In the Online Update Check, instead of `Application.Terminate`, we
   now use `Application.MainForm.Close`, which is much more polite, as
   it ensures that changed files are saved, etc, and does proper
   cleanup. This particular change may make the other two somewhat
   irrelevant but they are still sensible as they will cover us for
   other potential form destruction sequences.
2022-11-09 08:18:41 +11:00
Marc Durdin
d2fe2a61f9 fix(developer): patch from previous commit 2022-11-09 07:36:28 +11:00
Marc Durdin
b76eb41a06 fix(developer): handle edge cases for app sources
Relates to #6928 and KEYMAN-DEVELOPER-74.

Fixes one more potential pathway for assertions being raised, and adds
some extra debugging in case there are additional pathways we are not
capturing.
2022-11-09 07:32:05 +11:00
Marc Durdin
d7fbdfc59a
Merge pull request #7617 from keymanapp/fix/developer/7616-inferred-key-text-stability
fix(developer): improve support for inferred key cap text
2022-11-09 05:14:44 +11:00
Marc Durdin
42a9f2ca72 fix(core): emit keystroke was writing to wrong queue
Fixes #7649.

emit_keystroke code path in kmx processor was writing directly to the
core queue instead of to the internal kmx processor queue. This caused
it to be out-of-order in the actions sent to the engine/debugger.

Engines didn't really care but it broke the debugger, for example if
only a deadkey was in the buffer and backspace was pressed, Developer
would assert as it would get unexpected context for the deletions.
2022-11-08 16:31:30 +11:00
Marc Durdin
cbc63c42b2
Merge pull request #7642 from keymanapp/fix/developer/7641-prevent-compile-if-no-project
fix(developer): disable Keyboard|Compile if no project loaded
2022-11-08 14:42:19 +11:00
Marc Durdin
094050ec90
Merge pull request #7635 from keymanapp/fix/developer/7634-handle-encoding-error
fix(developer): handle EEncodingError loading text file
2022-11-08 14:41:35 +11:00
Marc Durdin
460b933a31
Merge pull request #7633 from keymanapp/chore/developer/tidy-up-hints
chore(developer): tidy up compile hints
2022-11-08 14:41:27 +11:00
Marc Durdin
7755e000a8
Merge pull request #7626 from keymanapp/fix/developer/7625-update-monaco-editor-to-0.15.6
fix(developer): update monaco editor to 0.15.6
2022-11-08 14:40:58 +11:00
Marc Durdin
7539c41b27 fix(developer): disable Keyboard|Compile if no project loaded
Fixes #7641.

If you close the active project and have the Welcome window visible, it
was possible for the Compile action to still be enabled, even though
there was nothing to compile.
2022-11-07 09:01:37 +11:00
Marc Durdin
b62bc0d197 fix(developer): only update charmap for hint when focused
Ensure that the character map is only updated for hint text when
actually editing the hint text.

Fixes KEYMAN-DEVELOPER-S8.
2022-11-07 07:20:09 +11:00
Marc Durdin
8286e8a85c fix(developer): handle EEncodingError loading text file
Fixes #7634.
2022-11-06 05:43:52 +11:00
Marc Durdin
c3b2df80bf chore(developer): tidy up compile hints 2022-11-06 04:59:50 +11:00
Marc Durdin
0f2fbd443d fix(developer): URL parameters should be UTF-8
Fixes #7628.

Indy components do not treat URLs as UTF-8. Our legacy EncodeURL
function (sourced from Indy components) was the same. Discovered we
needed to fixup the parsing of URLs as well as the construction of them;
there may be other places we need to fix, although I did do a search for
the relevant types in TIKE source.
2022-11-05 07:19:31 +11:00
Marc Durdin
9813399d71 fix(developer): update monaco editor to 0.15.6
Updates Monaco editor from 0.14.3 to 0.15.6, incorporating
microsoft/vscode#57617 to fix #7625.

The changes to editor.js are required because `editor.model` was not a
public property and we should have been using `editor.getModel()` all
along.

I have not updated to the latest version of monaco (0.35.1 at time of
writing this), as I wish to minimize the changeset during beta.

While I prefer not to update dependencies in beta, this seems to be a
fairly clean update. Will monitor and can roll back if it leads to
instability.
2022-11-05 06:01:14 +11:00
Marc Durdin
238a8e9185 fix(developer): improve support for inferred key cap text
Fixes #7616.

Fixes a crash when attempting to infer key cap text from key id, and
cleans up the support for inferred key text so that it works correctly
in the designer.

Also adds a safeguard to KMW to stop invalid key ids causing a crash.
2022-11-04 06:18:24 +11:00
Marc Durdin
6b9c7de6c0 fix(developer): tweak captions for consistency
Fixes #7605.
Fixes #7606.
2022-11-03 09:04:50 +11:00
Marc Durdin
27275013af
Merge pull request #7594 from keymanapp/fix/developer/6974-gif-splash-image-preview
fix(developer): support gif preview images in Package Editor
2022-11-03 09:02:00 +11:00
Marc Durdin
770781c0c9
Merge pull request #7593 from keymanapp/fix/developer/5238-scrollable-details-and-build-tabs
fix(developer): Make Details and Build tabs scrollable
2022-11-03 08:44:21 +11:00
Marc Durdin
549f627509
Merge pull request #7585 from keymanapp/fix/developer/298-avoid-reformatting-unchanged-system-stores
fix(developer): avoid reformatting unchanged system stores
2022-11-02 14:49:06 +11:00
Marc Durdin
7be90d3ac7
Merge pull request #7584 from keymanapp/fix/developer/2803-basic-project-icon
fix(developer): generate a default icon for basic keyboard projects
2022-11-02 14:35:57 +11:00
Marc Durdin
badf5e6d4b
Merge pull request #7531 from keymanapp/fix/developer/7529-enforce-us-layout-for-debugger
fix(developer): Use US base layout for debugger
2022-11-02 13:47:06 +11:00
Marc Durdin
9421ba29cb fix(developer): support gif preview images in Package Editor
Fixes #6974.

GIF images were not supported in the Details tab, Image file, because we
didn't link in GIF file support. After linking it in, we also needed to
change over the picture rendering to have an intermediate render step,
as the existing model only worked with .bmp images.

At the same time, added warnings for wrongly-sized images to the image
size information.
2022-11-02 12:05:50 +11:00
Marc Durdin
b7d305a8d3 fix(developer): Make Details and Build tabs scrollable
Fixes #5238.

The Details and Build tabs have fixed positional content in the Keyboard
Editor, Model Editor, and Package Editor. Sizing the window too small
can cause content to be outside the bounds of the tab. This patch moves
these tabs into scrollboxes (except for Details tabs on Keyboard and
Model editors, which were already in scrollboxes). The remaining tabs
have resizable content. The tabs will still become fairly unusable if
they become too small, but this should be less of a problem than before.
2022-11-02 11:37:07 +11:00
Marc Durdin
4be2dcc9e4 fix(developer): avoid reformatting unchanged system stores
Fixes #298.
2022-11-01 16:33:10 +11:00
Marc Durdin
3e220e33c4 fix(developer): generate a default icon for basic keyboard projects
Fixes #2803.

The new basic project template will now include a default icon,
generated either from the first BCP 47 tag, or else from the first 3
letters of the filename of the keyboard.

The icon will not be included if the keyboard does not target desktop
platforms, as web/touch do not currently support the icon.
2022-11-01 15:14:13 +11:00