Skip to content

auto: A19S33 merge master into web-core 🎼 - #16265

Open
keyman-server wants to merge 81 commits into
epic/web-corefrom
auto/A19S33-merge-master-into-web-core
Open

auto: A19S33 merge master into web-core 🎼#16265
keyman-server wants to merge 81 commits into
epic/web-corefrom
auto/A19S33-merge-master-into-web-core

Conversation

@keyman-server

Copy link
Copy Markdown
Collaborator

Test-bot: skip
Build-bot: build

mcdurdin and others added 30 commits June 23, 2026 10:41
When a new OSK is attached, we need to set its active keyboard and
lexical model. These are undocumented API contracts between Keyman
Engine for Web and Keyman Developer Server, so this appears to have
changed in v.19 for keyboards (although the sync is also necessary for
v.18).

Fixes: #15217
Test-bot: skip
* Centralize the api-extractor.json files, update usage
* Support @SInCE
* Tidy up a few warnings relating to API documentation content

Fixes: #14838
Test-bot: skip
For Keyman for Android, 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).

Relates-to: keymanapp/api.keyman.com#325
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
* 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
Test-bot: skip
Build-bot: skip release:developer
Also add logging if unit test fails
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
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
…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
…t osk

After review, it is better to do the sync of the model banner in
KeymanWeb `set osk()` than in the client of the API. The client should
be able to assign a new OSK and have it "just work" without needing to
attach things to it.

Fixes: #15217
PR #16146 introduced a problem with selecting a different font as
display font so that we always ended up with not setting the font.
This was caused by the font filenames now being a URL (which is necessary
because they get processed by the web engine). However, the Android code
checks for the existence of the font in order to create the typeface,
which only works for local paths.

This PR modifies and simplifies `KMKeyboard.getFontFilename` to return the
full path, renames `KMKeyboard.txtFont` and `KMKeyboard.oskFont` to make
it clearer that they contain a path and not a URL.

Also initialize `KMKeyboard.oskFontPath` with empty string instead of
`null`. This makes it consistent with` txtFontPath` and with the
documented behavior of `KMManager.getKeyboardOskFontFilename()` (which
returns `KMKeyboard.oskFontPath`).

Follows: #16146
Fixes: #16187
Build-bot: release:android
Co-authored-by: Marc Durdin <marc@durdin.net>
Co-authored-by: Eberhard Beilharz <ermshiperete@users.noreply.github.com>
…esting

Build-bot: skip build:web
Test-bot: skip
Cancel button goes on the left according to GNOME Human Interface Guidelines.

Test-bot: skip
Co-authored-by: Marc Durdin <marc@durdin.net>
…utton-order

chore(linux): reorder buttons on kmp install window
…-keymanweb-variable

refactor(web): rename `keymanweb` to `keyman` in UI modules
…d-html-metas

chore: remove deprecated "X-UA-Compatible" and "apple-mobile-web-app-capable" metas
…MLog

fix(android): refactor `KMLog` - simplification and added resilience
fix(android): differentiate between fontPath and fontUrl in Keyman Engine for Android
This change renames the font variable names so that they match the
two conceptual fonts we have. Also remove obsolete code that dealt with
the `font` parameter being a JSON object instead of a string containing
the font filename. Having the `font` parameter containing a JSON object
was legacy code that won't happen with current Keyman versions.

Follow-up-of: #16188
Build-bot: release:android
fix(web): fixes cookie unit-tests and path for OSK resources during testing
Test-bot: skip
Build-bot: skip
auto: increment master version to 19.0.253
@keymanapp-test-bot

keymanapp-test-bot Bot commented Jul 20, 2026

Copy link
Copy Markdown

User Test Results

Test specification and instructions

User tests are not required

Test Artifacts

  • Android
    • Keyman for Android apk - build : all tests passed (no artifacts on BuildLevel "build")
    • FirstVoices Keyboards for Android apk - build : all tests passed (no artifacts on BuildLevel "build")
    • KeyboardHarness apk - build : all tests passed (no artifacts on BuildLevel "build")
    • KMSample1 apk - build : all tests passed (no artifacts on BuildLevel "build")
    • KMSample2 apk - build : all tests passed (no artifacts on BuildLevel "build")
  • Developer
    • Keyman Developer - build : all tests passed (no artifacts on BuildLevel "build")
    • Compiler Regression Tests - build : all tests passed (no artifacts on BuildLevel "build")
    • kmcomp.zip - build : all tests passed (no artifacts on BuildLevel "build")
  • iOS
    • Keyman for iOS (simulator image) - build : all tests passed (no artifacts on BuildLevel "build")
    • FirstVoices Keyboards for iOS (simulator image) - build : all tests passed (no artifacts on BuildLevel "build")
  • Keyboards
    • Test Keyboards - build : all tests passed (no artifacts on BuildLevel "build")
  • macOS
    • Keyman for macOS (.dmg) - build : all tests passed (no artifacts on BuildLevel "build")
    • Keyman for macOS (.pkg) - build : all tests passed (no artifacts on BuildLevel "build")
  • Windows
    • Keyman for Windows - build : all tests passed (no artifacts on BuildLevel "build")
    • FirstVoices Keyboards for Windows - build : all tests passed (no artifacts on BuildLevel "build")
    • Text Editor (ARM64) - build : all tests passed (no artifacts on BuildLevel "build")
    • Text Editor (x64) - build : all tests passed (no artifacts on BuildLevel "build")
    • Text Editor (x86) - build : all tests passed (no artifacts on BuildLevel "build")

@keymanapp-test-bot keymanapp-test-bot Bot changed the title auto: A19S33 merge master into web-core auto: A19S33 merge master into web-core 🎼 Jul 20, 2026
@keymanapp-test-bot keymanapp-test-bot Bot added this to the A19S34 milestone Jul 20, 2026
@ermshiperete

Copy link
Copy Markdown
Contributor

Web Test failing because of #16167

@rc-swag rc-swag left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We are ok to merge as Web Test failing because of #16167 is being addressed

@rc-swag
rc-swag enabled auto-merge July 22, 2026 06:09
@rc-swag
rc-swag disabled auto-merge July 22, 2026 06:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Todo

Development

Successfully merging this pull request may close these issues.

6 participants