mirror of
https://github.com/keymanapp/keyman.git
synced 2026-09-12 18:47:41 +00:00
Keyman cross platform input methods system running on Android, iOS, Linux, macOS, Windows and mobile and desktop web
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. |
||
|---|---|---|
| .github | ||
| android | ||
| common | ||
| developer | ||
| docs | ||
| ios | ||
| linux | ||
| mac | ||
| oem/firstvoices | ||
| resources | ||
| web | ||
| windows/src | ||
| .clang-format | ||
| .editorconfig | ||
| .flake8 | ||
| .gitignore | ||
| CODE_OF_CONDUCT.md | ||
| configure-repo.sh | ||
| CONTRIBUTING.md | ||
| crowdin.yml | ||
| HISTORY.md | ||
| lerna.json | ||
| LICENSE.md | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| TIER.md | ||
| VERSION.md | ||
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.
