Commit graph

34272 commits

Author SHA1 Message Date
Eberhard Beilharz
28652af8ab
fix(android): suppress error for fallback keyboard
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.
2026-07-01 12:27:38 +02:00
Eberhard Beilharz
0aa41c1028
fix(android): fix typo 2026-07-01 11:52:02 +02:00
Eberhard Beilharz
a146345eae
fix(android): fix problem with fonts
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.
2026-07-01 11:33:01 +02:00
Marc Durdin
cda7dc6d24 chore: remove deprecated "X-UA-Compatible" and "apple-mobile-web-app-capable" metas
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
2026-07-01 10:27:22 +02:00
Marc Durdin
e6d86d7e04 refactor(web): rename keymanweb to keyman in UI modules
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
2026-07-01 09:18:11 +02:00
Marc Durdin
d527e3739e docs(web): cleanup of index pages and page titles
Fixes: #16169
Test-bot: skip
2026-07-01 08:06:26 +02:00
Marc Durdin
0fc869faa4 fix(web): define IME interfaces in KeyboardInterfaceBase
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
2026-07-01 07:43:08 +02:00
Keyman Server
8d2cdc433b
Merge pull request #16166 from keymanapp/auto/version-master-19.0.250
auto: increment master version to 19.0.250
2026-06-30 20:04:20 +02:00
Keyman Build Agent
d549508f5b auto: increment master version to 19.0.250
Test-bot: skip
Build-bot: skip
2026-06-30 13:02:05 -05:00
Marc Durdin
36a437de93
Merge pull request #16110 from keymanapp/fix/developer/14227-map-shift-key-on-import
fix(developer): map shift key nextlayer property when importing OSK
2026-07-01 00:55:37 +10:00
Marc Durdin
4f72d7f2bb
Merge pull request #16140 from keymanapp/fix/developer/11916-warn-on-race-destroying-appsource
fix(developer): warn only on race when destroying TAppSourceHttpResponder
2026-07-01 00:55:21 +10:00
Marc Durdin
809a3cad4a chore(android): address review comments
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
Also add logging if unit test fails
2026-06-30 15:12:59 +02:00
Marc Durdin
fd6e2bfc6f chore(developer): remove outdated comment
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
2026-06-30 14:42:21 +02:00
Eberhard Beilharz
bad356f499
Merge pull request #16163 from keymanapp/chore/android/dockerfv
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.
2026-06-30 13:08:30 +02:00
Eberhard Beilharz
b490d20098
fix(android): add missing dependency for KeyboardHarness app
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
2026-06-30 12:56:50 +02:00
Eberhard Beilharz
c606733a56
fix(android): add missing dependency for FirstVoices and Samples
Fixes: FV-ANDROID-20E
Build-bot: release:android
2026-06-30 12:17:13 +02:00
Eberhard Beilharz
23764b7e56
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.

Build-bot: skip
Test-bot: skip
2026-06-30 11:51:03 +02:00
Eberhard Beilharz
32e045527d
Merge branch 'master' into fix/android/16096_blankKeyboard 2026-06-30 09:08:01 +02:00
rc-swag
82cfbce114
Merge pull request #16126 from keymanapp/fix/windows/15433/add-update-propery-remote-check
fix(windows): add update property to remote check
2026-06-30 12:50:29 +10:00
Keyman Server
fea10dda20
Merge pull request #16161 from keymanapp/auto/version-master-19.0.249
auto: increment master version to 19.0.249
2026-06-29 20:04:13 +02:00
Keyman Build Agent
c1fbf2fdf1 auto: increment master version to 19.0.249
Test-bot: skip
Build-bot: skip
2026-06-29 13:02:46 -05:00
Eberhard Beilharz
be188563d3
Merge pull request #16153 from keymanapp/maint/linux/improveapicheck
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
2026-06-29 18:35:33 +02:00
Eberhard Beilharz
71b0586c66
fix(android): fix failing test on Windows
Some checks are pending
Keyman Build Summary / Summarize build status checks (push) Waiting to run
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.
2026-06-29 18:25:26 +02:00
Eberhard Beilharz
bec75197b1
fix(android): add tests for WebViewUtils.buildAssertUrl
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.
2026-06-29 17:56:06 +02:00
Eberhard Beilharz
a2150b17bf
Merge pull request #16108 from keymanapp/test/web/guide-examples
test(web): add e2e tests for examples from guide
2026-06-29 17:29:59 +02:00
Joshua Horton
700380ddc1 change(ios): pre-emptively denote utf-8 encoding for JSON
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
We don't actually pass JSON through our scheme handler yet, but just in case... we ensure we detect JSON's MIME type and annotate appropriately
2026-06-29 10:24:17 -05:00
Joshua Horton
fa435cbeae
docs(ios): change file header date format
Co-authored-by: Marc Durdin <marc@durdin.net>
2026-06-29 22:21:58 +07:00
Joshua Horton
a70861dad8
change(web): Fix ios/engine/build.sh comment
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
Co-authored-by: Marc Durdin <marc@durdin.net>
2026-06-29 22:14:40 +07:00
Eberhard Beilharz
b805f66177
chore(android): address code review comment 2026-06-29 17:08:24 +02:00
Eberhard Beilharz
0847fb6ca2
chore(android): address code review comments
Co-authored-by: Marc Durdin <marc@durdin.net>
2026-06-29 16:57:33 +02:00
Marc Durdin
5371ed2edd
Merge pull request #16156 from keymanapp/fix/web/16155-regression-set-osk
fix(web): revert regression in setting `activeKeyboard` in `set osk`
2026-06-30 00:46:46 +10:00
Marc Durdin
c7ac68208b
Merge pull request #16129 from keymanapp/fix/developer/15340-fixup-references-after-deleting-layer
fix(developer): fixup references to layer after deleting in Touch Layout Editor
2026-06-30 00:46:38 +10:00
Marc Durdin
a55efd60b7
Merge pull request #16134 from keymanapp/fix/developer/13458-consolidate-server-options
fix(developer): consolidate user options in TypeScript code
2026-06-30 00:46:26 +10:00
Marc Durdin
1dd2ea07ba
Merge pull request #16111 from keymanapp/fix/developer/15606-cannot-clone-legacy-keyboards
fix(developer): prevent clone of legacy keyboards with no source
2026-06-30 00:46:19 +10:00
Joshua Horton
eea463b18b fix(web): set proper font path for doc-keyboards 2026-06-29 09:38:03 -05:00
Marc Durdin
b535203e36 chore(developer): fix docs, api_extractor params in build.sh's
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
Test-bot: skip
Build-bot: skip release:developer
2026-06-29 16:34:39 +02:00
Marc Durdin
9d99597f68
Merge pull request #16158 from keymanapp/maint/resources/history-reporting-interface-cleanup
maint(resources): DRY out `PRInformation` interface
2026-06-30 00:14:00 +10:00
Marc Durdin
2e81a43139
Merge pull request #16154 from keymanapp/chore/history-
chore: add missing line to history
2026-06-30 00:11:57 +10:00
Marc Durdin
b2ee534612
docs: improve comments in keyman-developer-options.ts
Build-bot: skip

Co-authored-by: Eberhard Beilharz <ermshiperete@users.noreply.github.com>
2026-06-29 16:11:39 +02:00
Marc Durdin
e2f0954cd5 fix(developer): Free val in GetSourcePathFromBody
Co-authored-by: Eberhard Beilharz <ermshiperete@users.noreply.github.com>
2026-06-29 15:59:26 +02:00
Marc Durdin
724249263c maint(resources): DRY out PRInformation interface
Test-bot: skip
Build-bot: skip
2026-06-29 15:56:31 +02:00
Marc Durdin
c2d72b7a03 fix(web): revert regression in setting activeKeyboard in set osk
Fixes: #16155
Test-bot: skip
2026-06-29 15:40:05 +02:00
Marc Durdin
9d1f197c39 chore: add missing line to history 2026-06-29 15:09:45 +02:00
Eberhard Beilharz
83e9501b65
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.

Build-bot: skip
Test-bot: skip
2026-06-29 12:46:27 +02:00
Marc Durdin
7155e9d722 fix(android): refactor KMLog - simplification and added resilience
* 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
2026-06-29 09:50:51 +02:00
Joshua Horton
b3ee271aee fix(ios): load host page, keyboards through a consistent WKURLSchemeHandler
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
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
2026-06-26 14:37:11 -05:00
Joshua Horton
13e154f3a4 fix(ios): bundle in KMW's globe-hint.css
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
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
2026-06-26 14:36:27 -05:00
Eberhard Beilharz
64abd5b690
fix(android): fix loading of keyboards on Android
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
2026-06-26 20:01:30 +02:00
Marc Durdin
e387588503 fix(developer): warn only on race when destroying TAppSourceHttpResponder
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
2026-06-25 12:27:00 +02:00
Marc Durdin
bbeb799ac2 feat(ios): add keyman-version to package-version check
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
2026-06-25 11:27:00 +02:00