1. Jul 05, 2022
    • Marc Durdin's avatar
      fix(web): remove spurious log "No keyboard stubs exist" · 3977ffda
      Marc Durdin authored
      This error has been logged for every start of Keyman Engine for Web in
      embedded contexts, but nothing bad ever happens. It does not really seem
      to be anything we need to worry about. (It may be that the
      `setDefaultKeyboard()` call will never return true, but it is still
      harmless in any case.)
      3977ffda
    • Marc Durdin's avatar
    • Marc Durdin's avatar
      10caf089
    • Marc Durdin's avatar
      fix(web): improve `console.error()` reporting · 0b64871b
      Marc Durdin authored
      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.
      0b64871b
  2. Jul 03, 2022
  3. Jul 02, 2022
  4. Jun 30, 2022
  5. Jun 29, 2022
  6. Jun 28, 2022
  7. Jun 27, 2022
  8. Jun 26, 2022
  9. Jun 25, 2022
  10. Jun 24, 2022