Commit graph

2025 commits

Author SHA1 Message Date
Joshua Horton
60f5effe6e change(web): add transposition unit tests, loosen search correction thresholding 2026-09-04 16:50:56 -05: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
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
a1d50b35bb
Apply batched suggestions from code review
Co-authored-by: Marc Durdin <marc@durdin.net>
2026-09-02 15:04:40 +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
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
Joshua Horton
605d823349 Merge remote-tracking branch 'origin/change/web/stage-correctpredicttuple-construction' into change/web/narrow-autoselection-comparisons
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
2026-08-27 07:22:55 -05:00
Joshua Horton
775b60ba4c
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-26 21:27:25 +07:00
Joshua Horton
39a7652056
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-26 20:47:57 +07:00
Joshua Horton
5481425bf4 docs(web): add predict-helpers.ts header doc
Some checks are pending
Keyman Build Summary / Summarize build status checks (push) Waiting to run
2026-08-26 08:42:13 -05:00
Joshua Horton
27b60a4fcc change(web): enhance missing-stubs error
Relates-to: #15425

Build-bot: skip build:web
Test-bot: skip
2026-08-25 13:22:04 -05:00
Joshua Horton
c278c3601f change(web): narrow the range of suggestions examined to determine autocompletion
Build-bot: skip build:web
2026-08-25 10:48:54 -05:00
Joshua Horton
0e41273465 change(web): stage construction of CorrectionPredictionTuple instances
Build-bot: skip build:web
Test-bot: skip
2026-08-24 13:36:49 -05:00
Marc Durdin
3774b2d8ab
Merge branch 'master' into epic/autocorrect 2026-08-19 20:37:51 +07:00
Joshua Horton
9372137bee change(web): mark a couple fields private
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
2026-08-18 09:12:42 -05:00
Joshua Horton
7a7ca44242 change(web): merge gesture-completion handler and cancler for HeldRepeater 2026-08-18 08:12:51 -05:00
Joshua Horton
0f666be3d5 docs(web): document GestureHandler.cancel idempotency 2026-08-17 08:21:52 -05:00
Joshua Horton
3c13dfb175 refactor(web): refactor HeldRepeater class 2026-08-17 08:12:05 -05:00
Joshua Horton
5a7b7118ff
Merge pull request #16314 from keymanapp/change/web/match-fatfingers-by-element-ids
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
change(web): lookup key-data via elementID, not reference, during fat-finger generation 🚂
2026-08-17 19:05:51 +07:00
Joshua Horton
d153ecb1c0 fix(web): cancel gestures on relayouts and context resets
Related-to: #15226

This fixes the bug underlying the repro described here: https://github.com/keymanapp/keyman/issues/15226#issuecomment-3842211229

I cannot yet confirm that it fixes the issue as a whole, however.

Build-bot: skip build:web release:android release:ios
2026-08-14 15:26:57 -05:00
Joshua Horton
30c5898eba change(web): address missing key entry in subkey correction map 2026-08-14 12:02:31 -05:00
Keyman Server
90c10d5f34
Merge branch 'epic/autocorrect' into auto/A19S35-merge-base-into-autocorrect 2026-08-14 16:18:38 +02:00
Joshua Horton
a672fa21f3 fix(web): use correct layer for key-correction, even upon nextLayer key input
Some checks are pending
Keyman Build Summary / Summarize build status checks (push) Waiting to run
Fixes: KEYMAN-WEB-SP
Fixes: KEYMAN-WEB-SQ
2026-08-13 14:34:57 -05:00
Joshua Horton
67d7ef80e2
Merge pull request #16337 from keymanapp/change/web/rework-taillesss-penultimate-token
Some checks are pending
Keyman Build Summary / Summarize build status checks (push) Waiting to run
change(web): rework penultimate token handling in tailless-keystroke method 🚂
2026-08-13 20:43:15 +07:00
Joshua Horton
29edaa48a4 change(web): address a couple more
Some checks are pending
Keyman Build Summary / Summarize build status checks (push) Waiting to run
2026-08-12 12:53:50 -05:00
Joshua Horton
fcc7c74c8f change(web): alter variable + param names per PR review 2026-08-12 12:52:10 -05:00
Joshua Horton
25f6e6694e Merge branch 'epic/autocorrect' into change/web/match-fatfingers-by-element-ids 2026-08-12 12:38:39 -05:00
Joshua Horton
25744dc226
Merge pull request #16350 from keymanapp/fix/web/complex-backspaces
Some checks are pending
Keyman Build Summary / Summarize build status checks (push) Waiting to run
fix(web): fix complex backspace handling, add unit tests 🚂
2026-08-13 00:37:34 +07:00
Joshua Horton
64a67078e7
Merge pull request #16349 from keymanapp/fix/web/context-token-reconstruction-transition-ids
fix(web): annotate transition ID on reconstructed context tokens 🚂
2026-08-13 00:37:12 +07:00
Joshua Horton
a3f6af9bc9 change(web): add tailless-true-keystroke method assertion
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
2026-08-12 11:04:52 -05:00
Joshua Horton
4c120b9137 change(web): clean up id-tagging transform-map for-each 2026-08-12 10:57:04 -05:00
Joshua Horton
7330e2aaab
Merge pull request #16313 from keymanapp/fix/web/amharic-keyspec-mismatch
fix(web): match fat-finger keys via elementID, not by reference 🚂
2026-08-12 22:52:55 +07:00
Marc Durdin
f1361a94f0 feat(web): add keyman.versionInfo API
KeymanWeb has long had `keyman.build` and `keyman.version`. Neither of
these properties expose the full version string, and consumers are
forced to manipulate them to get a partial version string.

This change deprecates both these properties, and introduces a new
`keyman.versionInfo` property, which returns an object with all the
version information, most importantly `full`.

Update documentation and add a unit test for this, following the unit
test pattern established throughout Keyman of a unit test filename
matching the implementation class. The `KeymanEngineBase` class is a
little difficult to instantiate so this unit test module currently has
a minimal instantiation which provides enough to fulfill the one
included test.

Test-bot: skip
2026-08-12 11:07:31 +02:00
Joshua Horton
2a3fb9796b
Merge pull request #16336 from keymanapp/docs/web/comment-tailless-keystroke-loop
Some checks are pending
Keyman Build Summary / Summarize build status checks (push) Waiting to run
docs(web): document loop within tailless-keystroke construction 🚂
2026-08-12 05:30:49 +07:00
Joshua Horton
ce0df801e7 fix(web): fix complex backspace handling, add unit tests
Fixes: #16335

The new unit tests here caught the behavior addressed by this PR's predecessor, #16349.

Meanwhile, a _different_ behavior was noted here that had added complexity - it so happens the test case I constructed managed to catch a bug in backspace handling!  Fortunately, a small tweak was able to resolve the issue.

Build-bot: skip build:web
Test-bot: skip
2026-08-11 17:26:57 -05:00
Joshua Horton
b4c9b40916 fix(web): annotate transition ID on reconstructed context tokens
Build-bot: skip build:web
Test-bot: skip
2026-08-11 17:17:38 -05:00
Joshua Horton
515994135c change(web): rework penultimate token handling in tailless-keystroke method
Build-bot: skip build:web
Test-bot: skip
2026-08-10 11:20:30 -05:00
Joshua Horton
9a8d17c090 docs(web): document loop within tailless-keystroke construction
Build-bot: skip build:web
Test-bot: skip
2026-08-10 11:16:20 -05:00
Joshua Horton
79c343b74b
change(web): add issue number to code comment
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
Co-authored-by: Marc Durdin <marc@durdin.net>
2026-08-10 22:32:08 +07:00
Keyman Server
0a868ac7ff
Merge branch 'epic/autocorrect' into auto/A19S34-merge-base-into-autocorrect 2026-08-10 09:54:03 +02:00
Joshua Horton
dd0bf09cfd change(web): lookup key-data via elementID, not reference, during fat-finger generation
Build-bot: skip release:web release:android

Relates-to:  #16254
Relates-to:  #16313

Noting that similar issues to those fixed by #16313 have occurred in other gesture-related contexts, it seems wise to implement the same sort of fix for all gesture types - perhaps the Android WebView has its own circumstances where similar "reference replacements" may occur and throw off our internal key-matching logic.
2026-08-07 15:27:32 -05:00
Joshua Horton
d55a1949c8 fix(web): match fat-finger keys via elementID, not by reference
Fixes: #16254

While I have not been able to find a definitive online reference, it appears that the key-spec instance attached to OSK elements may be replaced within the iOS Safari-based WebView despite no re-assignment existing within Keyman Engine for Web code.

The references should not change under any condition, but it appears that something external within the iOS WebView causes this anyway.  Fortunately, we can still check against the unique element ID, which provides a way around this issue.

Build-bot: skip release:web release:ios
2026-08-07 15:23:49 -05:00
Eberhard Beilharz
870903dccb
refactor(web): fix return type of currentKeyboardSrcTextStore
`currentKeyboardSrcTextStore` can return `null` if the global
`textStore` should be used. This change reflects this in the return
type.

Build-bot: skip build:web
Test-bot: skip
2026-08-07 09:37:14 +02:00
Joshua Horton
6c2d873d09 change(web): relocate comment per PR review 2026-08-06 13:39:46 -05:00
Joshua Horton
2d59915030 fix(web): fix construction for suggestions emitted after left-deleting whitespace
Build-bot: skip release:web release:android
2026-08-05 10:52:36 -05:00
Joshua Horton
c6b55c5fcc
Merge pull request #16290 from keymanapp/fix/web/bksp-reconstruction
fix(web): restore backspace-input token reconstruction 🚂
2026-08-04 20:07:36 +07:00
Joshua Horton
1b8e82cee5 change(web): fix import path
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
2026-08-03 14:16:36 -05:00
Eberhard Beilharz
1eb58c4ef8
chore(web): fire keyboardloaded event only once per keyboard
Previously we fired `keyboardloaded` twice for each loaded keyboard.
This change fixes this.

Fixes: #16292
Build-bot: skip build:web
Test-bot: skip
2026-08-03 17:50:11 +02:00