1. Renamed form UfrmNGrokOptions to UfrmServerOptions
2. Renamed kmdev-server to just plain server
3. Tidied up npm versioning to use VERSION_WITH_TAG
This last point should help avoid confusion as now only CI release
builds will ever generate a package.json with a.b.c, a.b.c-alpha or
a.b.c-beta. Local and test builds will always have the corresponding
-test or -local environment appended. This also helps avoid issues if
we accidentally publish an incorrect version.
Initial commit for Keyman Developer Server, running on Node.
Supports web debugger only at this point.
Extensive rewrite of web debugger, much of it more modern standards,
significantly improved UX:
1. Drop keyboards, packages, fonts, models onto debug page to load them
2. Websocket for instant reload of recompiled keyboards, packages,
models.
3. API for interacting with debug server.
4. Cache of recently used items.
5. Integration with ngrok for public access as desired.
6. Tray icon (currently default icon) for control of server.
7. Server can live after TIKE closes, supports multiple TIKE instances.
8. UI of debug host page rewritten with Bootstrap.
9. Packages downloads integrated into main page, and download link for
Keyman supports all platforms (Linux is just a link to
instructions...)
10. Avoids file locking and contention by managing all files internally.
11. Not yet tested, but should run cross-platform.
Adds ngrok configuration dialog and processes for downloading, updating
and setting up ngrok.
It is likely this will change with a refactor of the web debugger into a
standalone node module in the future. This will add support for multi-
instance Keyman Developer and be another step towards a cross-platform
IDE.
If the computer has split user/admin accounts, then language association may not be completed automatically, and the user may need to add a language association themselves.
Ref https://community.software.sil.org/t/what-security-permissions-are-needed-to-install-a-keyboard-configuration-in-keyman/5695/10
Note: the topic `configure-computer` has a terrible url but I won't fix that here. Suggested future fix -- turn `configure-computer` into a redirect to `link-keyboard-to-language` or `associate-keyboard-with-language`?
@keymanapp-test-bot skip
Initial integration of ngrok into Keyman Developer web debugger
experience, so that the user can access their web debug session from
another device without significant configuration. By default, ngrok is
switched off, but when it is enabled and configured (user must register
an email address online I think), then Keyman Developer will start an
ngrok tunnel in the background and make it the default link in the list
of available addresses.
This also adds an option to hide the list of local addresses, which is
probably clearer for users when ngrok is active. However, as local
addresses will be faster if configured, it may be less sensible to do
this.
If the user has ngrok installed and in use already, then it is
recommended that they simply open a tunnel via the ngrok interface for
the debugger web host, rather than relying on Keyman Developer's
internal integration, as Keyman Deveoper does not do handle multiple
ngrok sessions.
The user may choose to make the ngrok tunnel window visible, which will
be helpful in error scenarios.
If Keyman Developer crashes, the ngrok tunnel may be left running, and
will need to be manually killed.
Keyman Developer now remembers the 10 most recently debugged keyboards,
models and packages in the web debugger, across sessions. It determines
the recency of use by the last access time of the object, and caches at
most 10 of each type of object when the IDE session ends.
The cache data is stored in %appdata%\Keyman\Keyman Developer\WebDebugCache.json.
The web debugger is now always available when Keyman Developer is
running, even if the user has not yet clicked 'Start Web Debugging', as
otherwise cached web debug objects would not be immediately available.
Keyman Developer will verify that files listed in the cache are still
available, and will remove them on startup if the file disappears.
Adds polling for changes to keyboards or models under test in the
web debugger. When changes are detected, the keyboards and/or models
are instantly reloaded automatically.
While it may be smarter to move to a different build system altogether,
it is also a *lot* more work. This was a fairly minor syntax refresh to
get nmake working with our existing Makefile system. This is now no
longer compatible with Borland make, so you will need to use `nmake` to
build.
The presence of NMAKE.md informs builds systems that nmake should be
used instead of make.