Now builds from a clean repo:
developer/src/build.sh configure build test publish
* Splits kmbrowserhost into kmdbrowserhost for Developer; this means
that Developer Browser Host now inherits the Developer settings rather
than the Keyman for Windows settings, and simplifies distribution and
management. The only difference between the two is in the startup code
so this seems like a good split.
* Cleanup of various build scripts and dependencies.
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.
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.
Fixes#11041.
If two TIKE processes try to save the MRU at the same time, this can
result in a sharing violation. The relevant OLE error code is not
saved as a constant in Delphi lib, so I looked it up and added it here.
Also fixes an inadvertent issue where F1 was not opening context help in
the text editor anywhere in Keyman Developer. This means that pressing
F1 while a keyword is highlighted in a .kmn keyboard will not re-open
the context help for that keyword once more (yay!)
Fixes#10915.
Note that a more systemic fix to keyman core will involve ensuring that
the debug list is always properly terminated, but that does not need to
happen in beta.
Fixes two things:
* $VERSION_GIT_TAG was being misinterpreted by mkver as
$VERSION + "_GIT_TAG". This has been addressed by making the $VERSION
match the last one in the replaceVersionStrings_Mkver function, and
also have moved to using the newer $VersionGitTag and $Environment
vartiables instead.
* The 'dist' property was being set in sentry-cli sourcemap uploads,
though we never set the dist prop when we initialize sentry.
Fixes#10737.
Two parts to this: first, Keyman Core release build needs to generate
the .pdb file, and second, the build needs to put it and the .dll into
a place where the sentry-cli scan will find it.
Fixes#10684.
If a project .kpj file was not saved in UTF-8 or ANSI, or had a BOM,
then Keyman Developer would crash with an access violation due to an
uninitialized variable.
Fixes#10655.
Fixes#10663.
If a .kmn file had only a .js target, then Keyman Developer would return
an empty string for the target (based on .kmx). This meant that the path
for the compiler was an empty string, the path for opening the build
folder was an empty string.
Refactored the relevant code to simplify the logic a little.
Fixes#10582.
Returned struct from the `km_core_state_get_actions()` API is now owned
by the state object. This is a change in API contract. The corresponding
`km_core_actions_dispose()` API has been made private, because there is
never any need for API consumers to call it. As this change is happening
in alpha, we won't bump the ABI version.
`state->app_context` is now guaranteed to be in sync with
`state->context` after `km_core_process_event()`, with the actions
struct populated at that point.
The next and final step in this refactor is to remove the actions queue
altogether from the Core and make that a kmn-only concept, but that will
wait until 18.0. The only consumers of the actions queue are the
kmn-specific interactive debugger in Keyman Developer, and kmn-specific
Input Method eXtensions in Keyman Engine for Windows.
Fixes#10530.
Adds the deleted_context member to the km_core_actions struct, and
associated unit tests. Simplifies integration by providing the consumer
with all the data they need in order to execute the transform,
specifically around number of delete operations required, without
needing to query the target application context again. The number of
delete operations will vary according to application compliance and
selected encoding; for example a UTF-16 string may require 2
delete-backs for surrogate pairs in the text buffer for a compliant app,
whereas there will be a single delete-back key event for a non-compliant
app.
The deleted_context member should also be used for debug assertions.