This replaces the legacy keyboard download dialog with the new search,
which supports searching rather than just scrolling. It also integrates
a keyboard download pattern which I will refactor into a separate unit
in the next PR, which should implement the Universal Link strategy.
This makes server URLs version agnostic and works with
tiers and debug overrides in all URLs. This is groundwork
for universal links and integrated new keyboard search.
Also uses /windows/ instead of /desktop/ where possible.
This starts the refactoring of Keyman Setup for Windows
for a more online-first bootstrap approach for bundling.
For users who are offline, the traditional bundled approach
works, as does throwing package files into the same folder
as setup.exe. This makes the whole installer much simpler
to deploy and test.
At this stage, there are a lot of rough edges, so need to
refine these, including setup strings, language choices,
and error and logging management.
This updates Sentry integration to use the exception object which
gives better tracking and consolidation over time, once we learned
how to report the call stack more reliably.
Works around #119 on the compiler side. This normalises the touch layout file in the
compile phase, fixing integers which should be strings, etc. This means that
we no longer need to correct the issue in the Engine; a rebuild of affected
keyboards is sufficient (although of course we'll need a version bump in order
for them to be distributed.
Start moving data from forms to models/controllers for
onlineupdate and establish a shared data pattern for
transitional refactoring. Also establish a TLocaleStrings
class which has no global variable dependency.
Serve all Keyman Configuration dialogs over a local http server
instead of over file protocol. This is more secure and allows for
a bunch of things in the future, including simple online integration
and stable reporting.
kmshell had no application.title set and this gave incorrect
results for crash report dialog.
kmbrowserhost was acting as a VCL app but it isn't, and the
sentry integration was pulling in all the VCL dependencies which
was a bad outcome. This removes those and handles crashes as a
non-VCL app.