Keyman cross platform input methods system running on Android, iOS, Linux, macOS, Windows and mobile and desktop web
Find a file
Marc Durdin 0b64871be3 fix(web): improve console.error() reporting
The back story:

Currently Keyman for Android reports errors sent to the console via
`console.error()` into Sentry but sentry-manager itself does not. This
means that Keyman for iPhone and iPad and other users of sentry-manager
do not report these errors. Many of these errors are important.

What's worse is that Keyman for Android's error reporting here (via the
`sendKMWError()` function in Keyman Engine for Android) does not capture
stack traces, and so many of the errors we get do not have enough
information to resolve them.

Furthermore, by having `sendKMWError()` in Keyman for Android, we
capture exceptions and other program errors twice -- once on the web
side, and once on the Java side -- this adds noise to our error
reporting. Sentry also tends to lump many unrelated `sendKMWError()`
events together, so tracking resolution to the errors is painful.

The fix:

This adds a patch to sentry-manager to capture `console.error()` and
`console.warning()` events and report them through Sentry's normal error
reporting, and disables the `sendKMWError()` report (although we leave
the breadcrumb in place for when there are later, related Java errors).
There is a Sentry integration called CaptureConsole, but it does not
support capturing stack traces until v6.14
(https://github.com/getsentry/sentry-javascript/pull/4034). Updating
Sentry to 6.14 or newer is a bigger job (due to ES6 baseline req. etc.)

Note that Keyman for iOS currently has some other stubs in place
overriding the `console.*` functions. These should be removed for
release builds, so that we can use this pattern instead. I will try and
tackle this in a follow-up PR (I will build it on my mac so I can test
it).

A sample error report captured with this mechanism (no sourcemaps here
because this is a -local build):

https://sentry.io/organizations/keyman/issues/3401287467/events/c40fd2cebb7743cc8dfe72e0dd34bf65/?project=5983524

I am proposing we back-port this to 15.0-stable as we are missing a lot
of data in many of our error reports on Android.
2022-07-05 10:57:42 +10:00
.github Update .github/labeler.yml 2022-05-24 07:45:10 +10:00
android fix(web): improve console.error() reporting 2022-07-05 10:57:42 +10:00
common fix(web): improve console.error() reporting 2022-07-05 10:57:42 +10:00
core chore(common): Merge branch 'master' into chore/common/move-common-core-desktop-to-core 2022-06-15 09:00:32 +02:00
developer chore(web): adapts keyman-version bundling in Developer products 2022-05-28 10:57:24 +10:00
docs chore(common): Merge branch 'chore/web/keyman-version-for-developer' into chore/common/move-common-core-desktop-to-core 2022-05-30 09:38:27 +10:00
ios fix(ios): eliminates conditional height for banner image 2022-06-27 10:52:31 +07:00
linux Merge pull request #6841 from keymanapp/fix/linux/6813-KeyboardInterrupt-cherrypick 2022-06-27 09:33:55 +02:00
mac chore(ios): update ios/macos build scripts to log scripts 2022-06-24 11:37:46 +10:00
oem/firstvoices chore(ios): rename run-xcodebuild to run_xcodebuild 2022-06-24 14:03:55 +10:00
resources fix(common): trigger builds correctly for stable builds 2022-06-26 14:33:36 +10:00
web Merge pull request #6854 from keymanapp/fix/web/6853-refresh-layout-undef-guard 2022-06-29 13:30:01 +07:00
windows/src fix(windows): show full version number 2022-06-29 11:03:41 +10:00
.clang-format chore(common): Add C++ formatting rules 2021-07-29 18:50:25 +02:00
.editorconfig chore(linux): Address a few more lintian warnings 2022-03-15 15:32:10 +01:00
.flake8 chore(linux): Add integration tests for ibus-keyman 2021-11-04 09:22:28 +01:00
.gitignore chore(ios): update ios/macos build scripts to log scripts 2022-06-24 11:37:46 +10:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2021-10-08 10:46:53 +11:00
configure-repo.sh feat(common): Support git worktree when configuring local hooks 2020-02-24 18:30:57 +01:00
CONTRIBUTING.md chore(linux): Fix lintian warnings 2022-03-10 20:30:44 +01:00
crowdin.yml Merge pull request #6529 from keymanapp/chore/linux/l10n 2022-04-14 09:13:02 +02:00
HISTORY.md auto: increment master version to 16.0.25 2022-07-02 14:02:10 -04:00
LICENSE.md chore: license date 2022-03-15 13:59:27 +11:00
package-lock.json chore(deps): bump got from 11.8.3 to 11.8.5 2022-06-22 00:54:49 +00:00
package.json fix(common): update increment-version for new tsc, node versions 2022-06-13 15:54:18 +10:00
README.md Update README.md 2021-10-08 18:06:46 +11:00
TIER.md chore: restore TIER and VERSION to 16 alpha 2022-03-15 15:09:17 +11:00
tsconfig-base.json chore(web): eliminates es6-shim TS project 2022-05-31 09:35:52 +07:00
tsconfig.json chore(web): eliminates es6-shim TS project 2022-05-31 09:35:52 +07:00
VERSION.md auto: increment master version to 16.0.25 2022-07-02 14:02:10 -04:00

Keyman

Keyman makes it possible for you to type in any language on Windows, macOS, Linux, iPhone, iPad, Android tablets and phones, and even instantly in your web browser. Create keyboard layouts with Keyman Developer and share them with the community in the keyboards repository. The Keyman Community have already contributed keyboard layouts for over 2,000 languages!

License

Copyright (c) SIL International.

Keyman is an open source project distributed under the MIT license.

Get Involved

Development Status

Important Links