chore(web): fire `keyboardloaded` event only once per keyboard
Previously we fired `keyboardloaded` twice for each loaded keyboard. This change fixes this.
Fixes: #16292
maint(android): update Android Target API to 36
This change updates the Android Target API to 36 to satisfy the upcoming annual Play Store Aug 31 requirement. It updates Keyman for Android to use API level 36 by changing the compileSdk and targetSdkVersion properties to 36.
Changes made by AI (Gemini 3 Flash Preview).
Fixes: #16279
chore(web): update help links to use latest version
This updates three in-code help links to point to `current-version` instead of an outdated version page.
fix(web): ignore exception trying to access cookie
This change works around the problem where third-party cookies are blocked when using the keymanweb bookmark by ignoring the exception. The cookie is used to store a previous state; if we ignore the exception the user will always get the initial state of the keyboard, but at least the bookmark is usable.
Fixes: #keymanapp/r.keymanweb.com/9
This change works around the problem where third-party cookies are
blocked when using the keymanweb bookmark by ignoring the exception.
The cookie is used to store a previous state; if we ignore the exception
the user will always get the initial state of the keyboard, but at
least the bookmark is usable.
Fixes: #keymanapp/r.keymanweb.com/9
Build-bot: skip build:web
Test-bot: skip
This change updates the Android Target API to 36 to satisfy the upcoming
annual Play Store Aug 31 requirement. It updates Keyman for Android to
use API level 36 by changing the compileSdk and targetSdkVersion
properties to 36.
Also update `compileSdkVersion` and some reformatting in `README.md`.
Changes made by AI (Gemini 3 Flash Preview).
Fixes: #16279
Build-bot: release:android
when vectors are resized the memory is realocated so all the option
pointers become invalid. Using a deque avoids this it has all the same
methods so it is straight replacement.
fixes: #15961
# Keyman Conventional Commit suggestions:
#
# - Link to a Sentry issue with git trailer:
# Fixes: _MODULE_-_ID_
# - Give credit to co-authors:
# Co-authored-by: _Name_ <_email_>
# - Use imperative, present tense ('attach' not 'attaches', 'attached' etc)
# - Don't include a period at the end of the title
# - Always include a blank line before trailers
# - More: https://github.com/keymanapp/keyman/wiki/Pull-Request-and-Commit-workflow-notes
chore(android): remove doc for non-existing deprecated functions
Several functions got deprecated in Keyman 14 and replaced with a function with same name and parameters but different return type. The original function no longer exists. This change removes the documentation for those no longer existing deprecated functions.
Also update the documentation for two deprecated functions to show what should be used instead.
chore(android): cleanup font variable names, remove obsolete code
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
Several functions got deprecated and replaced with a function with
same name and parameters but different return type. The original
function no longer exists. This change removes the documentation for
those no longer existing deprecated functions.
Also update the documentation for two deprecated functions to show what
should be used instead.
Build-bot: skip
Test-bot: skip
chore(android): log legacy cloud keyboards
This adds a Sentry log if a user is still using legacy cloud keyboards. We do this so that we will learn if there are still users out there or if we can remove the code that deals with those keyboards.
Reverts part of commit d0e1649630 until we know
if there are still users out there that are using legacy cloud keyboards.
See #16237.
Build-bot: skip build:android
This adds a Sentry log if a user is still using legacy cloud keyboards.
We do this so that we will learn if there are still users out there
or if we can remove the code that deals with those keyboards.
Test-bot: skip
* Specify clearer filenames for Android samples and test KeyboardHarness
* Cleanup android/*/build.sh to match current patterns
* Remove obsolete jcenter dependency
* Export BUILDER_CONFIGURATION in builder.inc.sh
Fixes: #16137Fixes: #16181
Test-bot: skip
Build-bot: skip release:android
* Remove irrelevant context from toast and add more context for Sentry
report.
* Add a test keyboard with a script error that will trigger the toast on
first keystroke.
* Rearrange common/test/keyboards/invalid to make a good place for
compiled invalid keyboards.
Fixes: #16145
Test-bot: skip
fix(android): add permissions for Sentry and set default keyboard
This change fixes two problems that cause a script error in the sample apps:
- add internet access permissions so that the Sentry server can be reached
- explicitly set the default keyboard since sil_euro_latin keyboard is not included in the sample apps. This works around #16215.
Fixes: #16180