Commit graph

6491 commits

Author SHA1 Message Date
Joshua Horton
bf98a2f03b
Merge pull request #16600 from keymanapp/change/web/lexically-weight-prediction-search
change(web): add lexical weighting to prediction search
2026-09-21 21:50:24 +07:00
Joshua Horton
02274223fd fix(android): suppress autocorrection of hardware keystroke input
Fixes: #16602

Build-bot: skip release:web,android
2026-09-18 09:14:59 -05:00
Joshua Horton
00a9b66b01
Merge pull request #16581 from keymanapp/change/web/remove-tokenization-corrector
change(web): remove TokenizationCorrector class only used in epic/boundary-correction
2026-09-18 20:08:35 +07:00
Joshua Horton
013def7d9c change(web): add lexical weighting to prediction search
Fixes: #16577

From 14.0 up until now, our correction-search focused on the minimum "correction distance" to a possible text _correction_, then performed prediction _on top of that_.  This PR changes the search to integrate word-frequency weighting from models within the search, allowing us to optimize for the most likely predictions.  There is no additional performace cost impact of note here - the probability associated with a correction's best prediction is already accessible O(1) with operations we've already been doing.

It is likely that this will help further mitigate issues with transposition handling noted in the user tests for #16450.

Build-bot: skip release:web,android,ios
2026-09-17 16:30:50 -05:00
Eberhard Beilharz
7b2f275eb1
Merge pull request #16524 from keymanapp/fix/web/16080_kbdoff
fix(web): allow to set default keyboard to 'off'

The parameters for setKeyboardForControl basically have three different modes: - an id of a keyboard/language to set that keyboard, enabling independent keyboard mode - empty string to set the system keyboard, enabling independent keyboard mode - null to disable independent keyboard mode.

Our previous code didn't properly handle the last two modes. This change fixes the problems and also clarifies and updates the documentation.

Also included is an improvement to the guide-examples e2e tests that now wait until all keyboards are loaded (which may fix #16167).

Partially drafted by kilo.ai.

User tests will follow in an upcoming PR for #16522.

Fixes: #16080
2026-09-17 17:25:24 +02:00
Eberhard Beilharz
56524f1862
Apply batched suggestions from code review
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
Co-authored-by: Marc Durdin <marc@durdin.net>
2026-09-17 16:50:17 +02:00
Joshua Horton
115f2dba20 change(web): remove TokenizationCorrector class only used in epic/boundary-correction
Build-bot: skip build:web
Test-bot: skip
2026-09-16 16:53:55 -05:00
Joshua Horton
13ae31e2e6
Merge pull request #16450 from keymanapp/fix/web/support-transposition-autocorrect
fix(web): support autocorrection of transposed text
2026-09-17 01:33:19 +07:00
Eberhard Beilharz
4b7c0d48e5
fix(web): address code review comments
Some checks are pending
Keyman Build Summary / Summarize build status checks (push) Waiting to run
2026-09-16 15:37:51 +02:00
Joshua Horton
24060dbbc8 change(web): enhance unit test to help ensure transpositions aren't accidentally ignored
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
2026-09-15 10:41:46 -05:00
Joshua Horton
4945ae9407 change(web): discard transposition paths that require extra inserts or deletes 2026-09-15 09:14:30 -05:00
Eberhard Beilharz
3671ab06bb
refactor(web): add header to osk views files
Also remove outdated mentioning of Keyman 10 and outdated copyright year.

Build-bot: skip
Test-bot: skip
2026-09-15 14:43:44 +02:00
Eberhard Beilharz
835f226aba
test(web): add e2e tests for independent/global mode
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
2026-09-14 17:58:41 +02:00
Joshua Horton
1802b3aaef
Merge pull request #16548 from keymanapp/fix/web/unexpected-worker-unload-msg
fix(web): handle 'unload' message while attempting model 'load'
2026-09-11 20:17:42 +07:00
Eberhard Beilharz
e50fd2cf7a
chore(web): address code review comments
Also add links to guide examples to test page.
2026-09-11 11:35:40 +02:00
Joshua Horton
91c36f3998 feat(web): add failed model-load recovery unit test 2026-09-10 11:06:10 -05:00
Marc Durdin
fcd34d4cb9
Merge pull request #16531 from keymanapp/fix/web/16503-remove-scroll-to-top
fix(web): remove scroll-to-top on page load
2026-09-10 11:46:37 +07:00
Joshua Horton
18f334a60e fix(web): handle 'unload' message while attempting model 'load'
Fixes: KEYMAN-WEB-MD

Build-bot: skip build:web
Test-bot: skip
2026-09-09 13:49:12 -05:00
Joshua Horton
3b626da355 change(web): allow autocorrection on input of basic whitespaces
Build-bot: skip
Test-bot: skip
2026-09-08 10:25:02 -05:00
Eberhard Beilharz
4d7867e61c fix(web): allow to set default keyboard to 'off'
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
The parameters for `setKeyboardForControl` basically have three
different modes:
- an id of a keyboard/language to set that keyboard, enabling independent
  keyboard mode
- empty string to set the system keyboard, enabling independent keyboard
  mode
- `null` to disable independent keyboard mode.

Our previous code didn't properly handle the last two modes. This change
fixes the problems and also clarifies and updates the documentation.

Also included is an improvement to the guide-examples e2e tests that now
wait until all keyboards are loaded (which may fix #16167).

Partially drafted by kilo.ai.

Fixes: #16080
Build-bot: skip release:web
2026-09-08 11:56:41 +02:00
Eberhard Beilharz
d2abc847ff
refactor(web): simplify logic of prepareKeyboardForActivation
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
Co-authored-by: Marc Durdin <marc@durdin.net>
2026-09-07 18:32:56 +02:00
Eberhard Beilharz
04a5cd13c9 chore(web): minor improvements and fixes
Some checks are pending
Keyman Build Summary / Summarize build status checks (push) Waiting to run
Build-bot: skip build:web
Test-bot: skip
2026-09-07 17:05:06 +02:00
Eberhard Beilharz
bd827f8395 refactor(web): clarify function scope and update some function comments 2026-09-07 17:05:06 +02:00
Eberhard Beilharz
8ec6ba0c94
Merge pull request #16523 from keymanapp/chore/web/typesInTest
chore(web): adjust types in guide-examples tests
2026-09-07 17:05:03 +02:00
dependabot[bot]
cb0c368478
chore(deps): bump qs and express
Bumps [qs](https://github.com/ljharb/qs) to 6.16.0 and updates ancestor dependency [express](https://github.com/expressjs/express). These dependencies need to be updated together.


Updates `qs` from 6.15.2 to 6.16.0
- [Changelog](https://github.com/ljharb/qs/blob/main/CHANGELOG.md)
- [Commits](https://github.com/ljharb/qs/compare/v6.15.2...v6.16.0)

Updates `express` from 4.22.2 to 5.2.1
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/v4.22.2...v5.2.1)

---
updated-dependencies:
- dependency-name: express
  dependency-version: 5.2.1
  dependency-type: direct:production
- dependency-name: qs
  dependency-version: 6.16.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-07 09:20:28 +00:00
Joshua Horton
c0052f8620 Merge remote-tracking branch 'origin/fix/web/support-transposition-autocorrect' into fix/web/support-transposition-autocorrect
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
2026-09-04 16:51:59 -05:00
Joshua Horton
60f5effe6e change(web): add transposition unit tests, loosen search correction thresholding 2026-09-04 16:50:56 -05:00
Marc Durdin
22bc09dc8b fix(web): remove scroll-to-top on page load
This is a legacy behaviour from pre KeymanWeb 2.0 days, probably to deal
with buggy rendering in older browsers. Removing as an unwanted
side-effect.

Fixes: #16503
Test-bot: skip
2026-09-04 16:11:05 +02:00
Eberhard Beilharz
53540cc826
chore(web): adjust types 2026-09-03 18:25:05 +02:00
Eberhard Beilharz
75fe9b812c
Merge pull request #16521 from keymanapp/refactor/web/scope
refactor(web): clarify scope of PageContextAttachment functions

Also refactor function comments to follow the style we usually use, and rename some parameters.
2026-09-03 18:24:45 +02:00
Eberhard Beilharz
7f41b797f2
Merge pull request #16519 from keymanapp/chore/web/constcookie
chore(web): add const for cookie name
2026-09-03 18:24:12 +02:00
Eberhard Beilharz
58dbb3d1ee
refactor(web): clarify scope of PageContextAttachment functions
Also refactor function comments to follow the style we usually use,
and rename some parameters.

Build-bot: skip build:web
Test-bot: skip
2026-09-03 16:46:56 +02:00
Marc Durdin
c64bdb82a6
Merge pull request #16504 from keymanapp/fix/web/16477-remove-deprecated-window-unload-handler
fix(web): remove deprecated `onunload` handler
2026-09-03 21:44:32 +07:00
Joshua Horton
78e3d509f4 Merge branch 'master' into fix/web/support-transposition-autocorrect 2026-09-03 09:44:18 -05:00
Joshua Horton
b665a19e7a
Merge pull request #16436 from keymanapp/change/web/narrow-autoselection-comparisons
change(web): narrow the range of suggestions examined to determine autocompletion
2026-09-03 20:16:56 +07:00
Joshua Horton
b659a287fb
Merge pull request #16429 from keymanapp/change/web/stage-correctpredicttuple-construction
change(web): stage construction of CorrectionPredictionTuple instances
2026-09-03 20:16:35 +07:00
Eberhard Beilharz
8e4df44aeb
chore(web): add const for cookie name
Build-bot: skip build:web
Test-bot: skip
2026-09-03 14:14:09 +02:00
Eberhard Beilharz
7e6a32cdc7
Merge pull request #16495 from keymanapp/fix/web/16190_KbdNotAvailable
chore(web): tweak error message

Previously the browser component and web engine had the same error message which made it harder to know where the exception happened if a call stack or source map were missing. This change modifies the message in engine.

Related-to: #16190
2026-09-03 11:33:31 +02:00
Eberhard Beilharz
359c9270aa
chore(web): add explanations why test page only works on local test server 2026-09-03 11:16:15 +02:00
Eberhard Beilharz
9d2b9bc1ff
Update web/src/test/manual/web/keyboard-errors/index.html
Co-authored-by: Marc Durdin <marc@durdin.net>
2026-09-03 09:22:11 +02:00
Joshua Horton
fd45e8df24 docs(web): adjust header comment to tweak build
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
2026-09-02 13:33:53 -05:00
Eberhard Beilharz
a570108f85
chore(web): allow to run keyboard-errors test from build server
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
2026-09-02 19:34:00 +02:00
Eberhard Beilharz
67c7bfe953
chore(web): adjust expected error message in manual test
Some checks are pending
Keyman Build Summary / Summarize build status checks (push) Waiting to run
2026-09-02 15:23:30 +02:00
Eberhard Beilharz
a1d50b35bb
Apply batched suggestions from code review
Co-authored-by: Marc Durdin <marc@durdin.net>
2026-09-02 15:04:40 +02:00
Marc Durdin
405111d815 fix(web): remove deprecated onunload handler
The `onunload` event is deprecated. The only thing we do is cleanup,
which is not necessary if the page is being unloaded anyway.

Fixes: #16477
Test-bot: skip
2026-09-02 10:40:41 +02:00
Eberhard Beilharz
268b64eab5
chore(web): update file headers
Build-bot: skip
Test-bot: skip
2026-09-01 17:57:11 +02:00
Eberhard Beilharz
7a61311147
chore(web): tweak error message
Previously the browser component and web engine had the same error message
which made it harder to know where the exception happened if a call stack
or source map were missing. This change modifies the message in engine.

Related-to: $#16190
Build-bot: skip release:android,ios,web
Test-bot: skip
2026-09-01 17:29:41 +02:00
Joshua Horton
1c528dde8f
change(web): apply MD suggestion from code review
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
Co-authored-by: Marc Durdin <marc@durdin.net>
2026-08-31 21:27:00 +07:00
Joshua Horton
45e3df9822 fix(web): support autocorrection of transposed text
Fixes: #16398
Fixes: #12311

Note:  will not handle transpositions that cross token boundaries.
Also note:  major changes will be needed for epic/boundary-correction, as it will discontinue use of the LegacyQuotientSpur type.

Build-bot: skip release:web,android,ios
2026-08-27 12:28:18 -05:00
Eberhard Beilharz
07e62e9fe2
chore(android): upload webview source map during android and ios build
Previously we uploaded the webview source map during a web build. This
can lead to problems because that is not the actual artifact used for
Android and iOS.

This change therefore moves uploading the webview source map to Sentry
to the android and ios builds.

Build-bot: skip build:web,android,ios
Test-bot: skip
2026-08-27 18:57:18 +02:00