We use SIL EuroLatin as fallback keyboard. If that is not installed,
previously we output an error which showed up as a toast for the user.
This change now outputs a warning instead of the error for the default
keyboard.
Also changed the KeyboardHarness test app to set a different keyoard as
default.
The default fonts (DejaVueSans.ttf and keymanweb-osk.ttf) are located in
the root directory, not the package directory. This fixes the
KeyboardHarness test app.
Also some improvements with variable and function names to better match
what they do.
For Keyman Developer Server, add app.webmanifest so that it can be saved
to the home screen; other pages should not require this.
Fixes: #16172
Test-bot: skip
The variable name `keymanweb` used in the UI modules is confusing
because `KeymanWeb` also exists and points to something else. Rename to
`keyman` which just mirrors `window.keyman`.
Also fixup type declaration for toolbar `lastDismissalCallback`, which
did not match the assigned type.
Fixes: #16168
Test-bot: skip
Ensure that the IME interface methods are all defined for both browser
and webview modes. Deprecate 'Element' methods and replace with
'TextStore' to clarify return type. Add deprecation flags where needed
and update documentation accordingly.
Fixes: #16144
chore(android): allow to build FV app in docker container
Building the FirstVoices app is triggered in the top-level `build.sh` if the two environment variables are set. Previously we didn't pass these variables to Docker, so the FV app was never built even when the env variables were set. This change passes the two variables to the container, thus allowing to build the FW app in the docker container.
Building the FirstVoices app is triggered in the top-level `build.sh`
if the two environment variables are set. Previously we didn't pass
these variables to Docker, so the FV app was never built even when the
env variables were set. This change passes the two variables to the
container, thus allowing to build the FW app in the docker container.
Build-bot: skip
Test-bot: skip
maint(linux): show output of API check also in log file
Previously the output of running the API check was only shown on the summary page, but not in the log file of the step. With this change it is now also displayed in the log file.
Related: #16151
On Windows the tests failed because the AppData directory doesn't yet
exist under an allowed app internal storage path. This change creates
the directory first when running tests.
Also fix `assertEquals` in that test file - the parameter ordering is
`expected, actual` but we had it the other way round which gives a
confusing message if the test fails.
Previously the output of running the API check was only shown on the
summary page, but not in the log file of the step. With this change it
is now also displayed in the log file.
Build-bot: skip
Test-bot: skip
* Clean up `KMLog` -- simpler code paths, DRY out common validation,
remove redundant re-entrancy checks.
* Use Sentry `setTag` API and scopes instead of `setExtra`.
* Wrap all potential failure points in exception handlers for extra
resilience -- do our best to make sure errors are reported in as many
cases as possible.
Fixes: #16122
Test-bot: skip
This bypasses any need to modify KMW keyboard loading (say, via .fetch), though it does require a number of collateral changes to be made in order for CORS, etc to be satisfied.
Build-bot: skip build:ios
Pretty much just what the title says; it's been silently missing this whole time.
This doesn't fix iOS keyboard's display by itself, but it is a prerequisite for the full solution offered by #16136.
Build-bot: skip build:ios
Test-bot: skip
This change moves to using `WebViewAssetLoader` for loading files from
the device instead of using file:// URLs. This fixes the blank keyboard
problem reported in #16096 for Android.
Also make `KMKeyboard.getKeyboardRoot()` private, and rename public
`Keyboard.getKeyboardPath()` to private `Keyboard.getKeyboardUrl()`.
Part-of: #16096
I uncovered one race, documented in the source. Not trying to resolve
that race at this time (it is not consequential). There is a second
condition which is unclear -- and may have other consequences. So report
a warning to Sentry when this arises, but do not crash out on the user.
Fixes: #11916
Test-bot: skip
For Keyman for iOS, add the new `keyman-version` parameter to the
api.keyman.com/package-version call so that updates to packages that are
not supported on the current version of Keyman will not be offered. This
supports the scenario where an updated keyboard or lexical model depends
on a newer version of Keyman. Note that an older version of the keyboard
or lexical model package will not be offered (the user can still
download and install an older version manually, but generally, the
recommended solution is to upgrade Keyman; there would be significant
cost to add support for querying and installation of older version
keyboards on the server side, for limited benefit).
Also change order of handling for response so that error responses are
recognized even if non-error fields are present. (The current api
endpoint, before keymanapp/api.keyman.com#325 lands, can return `kmp`
and `version` fields even when an `error` field was present, and the iOS
code would see that as a valid response for upgrade, when it shouldn't.
The keymanapp/api.keyman.com#325 change ensures that the additional
fields are not set if there is an `error` field.)
Relates-to: keymanapp/api.keyman.com#325