Commit graph

74 commits

Author SHA1 Message Date
Joshua Horton
be7c9c58a9
Merge pull request #6808 from keymanapp/fix/web/6792-chiral-modifier-mapping
fix(web): maps touch-layout chiral alt, ctrl to non-chiral when non-chiral keyboard is active
2022-07-11 08:12:46 +07:00
Marc Durdin
ace0cbd1d6 fix(web): ncaps rules not matching on touch
Fixes #6910.

Regression introduced in #6874 / #6849 (which themselves were improving
the Caps Lock situation).

Ensures that either `NO_CAPS` or `CAPS` is always set in the modifier
flags.
2022-07-08 16:09:28 +10:00
Marc Durdin
8ba11f608d
Merge pull request #6890 from keymanapp/fix/web/improve-console-error-reporting
fix(web): improve `console.error()` reporting
2022-07-07 09:40:06 +10:00
Marc Durdin
ace3e2c6b0
chore: Apply suggestions from code review
Co-authored-by: Joshua Horton <joshua_horton@sil.org>
2022-07-06 15:15:09 +10:00
Marc Durdin
10caf08919 fix(web): only report console errors if _enabled 2022-07-05 13:14:20 +10:00
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
Marc Durdin
60d4ceb5e6 fix(web): Maintain separate Caps Lock states for touch and physical
Fixes #6799.

Caps Lock state management for touch layouts was not quite right -- it
touched the base Caps state variables rather than just the event Lstates
property. This meant that it was impossible to track the physical Caps
Lock key separately to the touch layout layer, and that the two states
would interfere with each other.
2022-06-29 06:20:45 +10:00
Marc Durdin
9b4eedc2ea chore(web): update kmlmc path ref 2022-06-25 07:40:22 +10:00
Marc Durdin
4f36c3c2df chore(developer): Merge branch 'master' into chore/developer/js-to-lmc 2022-06-25 05:48:57 +10:00
Joshua Horton
f6841333a2
Merge pull request #6557 from keymanapp/change/web/5943-ie-rooting
change(web): drops old IE-related handling code
2022-06-24 08:35:03 +07:00
Marc Durdin
3321667ffa
Merge pull request #6629 from keymanapp/chore/common/move-common-core-desktop-to-core
chore(core): move common/core/desktop/ to core/ 🍏
2022-06-23 06:24:42 +10:00
jahorton
63408e8115 change(web): function rename, unit test update 2022-06-21 08:26:38 +07:00
Joshua Horton
7a8d4580ee
change(web): nomenclature, signature changes from suggestion
Co-authored-by: Marc Durdin <marc@durdin.net>
2022-06-21 08:09:36 +07:00
jahorton
f2bf84d9e1 chore(web): adds unit tests 2022-06-20 14:21:57 +07:00
jahorton
49c701230d fix(web): even better granularity - should allow mixed-chirality rule sets 2022-06-20 12:47:00 +07:00
jahorton
86ce83f6c0 fix(web): better granularity 2022-06-20 12:39:20 +07:00
jahorton
5b3893fe14 fix(web): maps chiral alt, ctrl to non-chiral for non-chiral keyboards 2022-06-20 12:17:27 +07:00
jahorton
f0a0aa379d chore(common): PR review adjustments 2022-06-20 07:57:50 +07:00
jahorton
f06c5b0c8c docs(web): almost lost a significant doc-comment 2022-06-17 08:11:32 +07:00
jahorton
c0a6f082ba chore(web): pr cleanup per suggestions 2022-06-17 08:08:49 +07:00
Marc Durdin
0741b88dc2 fix(web): crash on custom modifier keys
Fixes #6788.
Fixes KEYMAN-WEB-22.
Fixes KEYMAN-DEVELOPER-BQ.
Fixes KEYMAN-ANDROID-160.

Fixes a crash introduced in #6473 which was trying to prevent modifier
keys from triggering "fat finger" alternate lookups, due to incomplete
nullish coalescing.

Related to this, from what I can see, a secondary side-effect of the fix
in #6473 was that some key events may have never had their ruleBehaviors
finalized if they matched the `isOnlyLayerSwitchKey` heuristic, leading
to potential issues with edge case 'deadkey+layer switch' keys or keys
that set store values, for example. So this fix also makes the
`isOnlyLayerSwitchKey` test more targeted.

Identified this when adding a Caps Lock layer to sil_euro_latin and
testing the layer switching. At time of fix, the error had been raised
in KeymanWeb, Keyman Developer and Keyman for Android, but not yet
Keyman for iPhone and iPad.
2022-06-17 05:22:19 +10:00
Eberhard Beilharz
f2de89bcc2
chore(common): Merge branch 'master' into chore/common/move-common-core-desktop-to-core 2022-06-15 09:00:32 +02:00
jahorton
0a29496cc1 chore(web): removes iOS 9 pred-text required pseudo-polyfill 2022-06-14 10:54:37 +07:00
jahorton
0f9ade6899 chore(web): reinserts added || die parts to lm-worker wrapping build 2022-05-31 10:02:08 +07:00
jahorton
f23fa7944f chore(web): eliminates es6-shim TS project 2022-05-31 09:35:52 +07:00
jahorton
75964b0077 chore(web): drops non-pred text dependence on es6-shim 2022-05-31 09:11:20 +07:00
jahorton
f4b7cab97a chore(web): rips out IE detection 2022-05-31 09:11:15 +07:00
jahorton
6732e16b1c chore(web): reinserts @ts-nocheck 2022-05-31 09:11:15 +07:00
jahorton
6566031d1b docs(common/models): on early Android dependencies 2022-05-31 09:05:06 +07:00
Marc Durdin
20e79b7b3d
Merge pull request #6677 from keymanapp/chore/web/keyman-version-for-developer
chore(web): adapts keyman-version bundling in Developer products 🎡
2022-05-30 14:23:29 +10:00
jahorton
daa0fc9f93 chore(web): Merge branch 'chore/web/merge-web-version-environment' into chore/web/better-lm-worker-bundling 2022-05-30 09:06:45 +07:00
jahorton
8bc2908780 chore(web): Merge branch 'chore/web/fixup-unit-test-fixups' into chore/web/merge-web-version-environment 2022-05-30 08:53:11 +07:00
Marc Durdin
d5aa61fdc0 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
Marc Durdin
65c8c89be5 chore(web): adapts keyman-version bundling in Developer products
As KEYMAN-VERSION changed from being a type to a class, this broke the
bundling and referencing strategies in Developer/Server and
Developer/kmlmc. This updates the bundling process and fixes the
references in both projects.

Note that keyman-version no longer depends on gosh. Given we are
currently manually calling the build for this in all projects (or should
be!), it's better that we keep the build of this explicit for now.

If we want to restore the postinstall/postci steps in the future, the
gosh dependency would need to be manually removed from package.json in
order for the bundling builds to work for Developer/Server and
Developer/kmlmc.
2022-05-28 10:57:24 +10:00
jahorton
8d40a05664 fix(web): test reporting style... again 2022-05-27 13:07:51 +07:00
jahorton
97f7fbb68d fix(web): proper teamcity reporting of keyboard-processor tests 2022-05-27 12:29:21 +07:00
jahorton
0acffafddd fix(web): ensure keyboard-processor tests are run 2022-05-27 11:53:57 +07:00
jahorton
7b472ca686 chore(web): Merge branch 'chore/web/merge-web-version-environment' into chore/web/better-lm-worker-bundling 2022-05-27 10:31:43 +07:00
jahorton
3855a25d26 chore(web): Merge branch 'chore/web/fixup-unit-test-fixups' into chore/web/merge-web-version-environment 2022-05-27 10:30:16 +07:00
jahorton
de68654cf2 chore(web): Merge branch 'chore/web/no-more-lerna' into chore/web/fixup-unit-test-fixups 2022-05-27 10:28:30 +07:00
Marc Durdin
fcf78bcd94 chore: merge master into branch 2022-05-27 13:11:23 +10:00
Marc Durdin
ef86cd46d9 chore(web): revert temporary type patches
There were a few temporary type patches I had made earlier in the
refactor chain in order to get a build to pass. After completing the
refactor, I was able to return them to their more proper types.
2022-05-27 08:31:19 +10:00
Marc Durdin
c22e892e49 chore(web): revert PostMessage and ImportScripts types 2022-05-27 08:26:51 +10:00
Marc Durdin
566c7f12bd chore(web): reintroduce sourceRoot in tsconfig 2022-05-27 07:46:30 +10:00
jahorton
81fa5ce282 chore(web): addresses PR review 2022-05-24 10:45:34 +07:00
jahorton
ea74a7f2ce chore(web): adds direct keyman-version compile to many build.sh's 2022-05-24 10:11:57 +07:00
jahorton
3139b904f7 chore(web): includes a pre-rebase PR suggestion 2022-05-23 14:06:56 +07:00
jahorton
2d7d2c6ab1 chore(web): Wait, this worked!? Inclusion now in original project's build! 2022-05-23 13:57:06 +07:00
jahorton
2aa0b4445c chore(web): lm-worker "test stub" code elimination 2022-05-23 13:56:09 +07:00
jahorton
0489495e60 chore(web): declaration alias for module export use 2022-05-23 13:44:55 +07:00