Commit graph

6432 commits

Author SHA1 Message Date
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
Marc Durdin
85d7b398bc chore(web): add test for versionInfo.full
Test-bot: skip
2026-08-13 08:40:21 +02: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
1f82507730 docs(web): deprecate unused and obsolete API endpoints and docs cleanup
Deprecate the following obsolete functions and properties:
* `keyman.helpURL`
* `keyman.util.rgba`
* `keyman.util.toFloat`
* `keyman.util.toNumber`
* `keyman.util.toNzString`

Use correct language for code blocks in Keyman Engine for Web
documentation.

Test-bot: skip
2026-08-12 16:07:22 +02:00
Marc Durdin
b40c4b376b fix(web): cleanup loaduserinterface and unloaduserinterface events
The `loaduserinterface` and `unloaduserinterface` events were
incompletely implemented, and the documentation was incomplete. This
change:

1. ensures `loaduserinterface` is called any time a UI is set, either
   during initialization or when the property is set later.
2. ensures `unloaduserinterface` is called immediately before a UI is
   shutdown.
3. updates documentation
4. removes misleading commented code in kmwuifloat.ts

Test-bot: skip
2026-08-12 15:51:55 +02: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
Eberhard Beilharz
58915062f8
docs(web): add language identifier to the code blocks of event docs
Build-bot: skip
Test-bot: skip
2026-08-10 14:17:56 +02:00
Eberhard Beilharz
e772775461
Merge pull request #16311 from keymanapp/refactor/web/setTargetDir
refactor(web): improve naming of `_SetTargetDir` function

`_SetTargetDir` deals with setting the text direction of the target, not the target directory. This change mainly renames the private function to `setTargetTextDirection`.
2026-08-10 13:53:56 +02: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
Eberhard Beilharz
363f71e9de
refactor(web): improve naming of _SetTargetDir function
`_SetTargetDir` deals with setting the text direction of the target,
not the target directory. This change mainly renames the private function
to `setTargetTextDirection`.

Build-bot: skip build:web
Test-bot: skip
2026-08-07 08:54:22 +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
433f4ea90f
Merge pull request #16298 from keymanapp/feat/web/add-pred-text-unit-tests
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
feat(web): add new pred-text unit test cases 🚂
2026-08-04 20:33:16 +07: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
Joshua Horton
04a75adef6 feat(web): add new pred-text unit test cases
Adds unit tests to cover context-reset patterns
and to ensure that transition IDs are always set
properly on generated suggestions, for all model
types.

Build-bot: skip build:web
Test-bot: skip
2026-08-03 12:54:57 -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
Joshua Horton
67b26cb643
Merge pull request #16273 from keymanapp/fix/web/empty-prediction-cases
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
fix(web): improve prediction whitespace-input, backspace-input edge case handling 🚂
2026-07-30 23:24:12 +07:00
Joshua Horton
e1f143a619 fix(web): fix unit test issues from last commit
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
2026-07-30 11:23:48 -05:00
Eberhard Beilharz
21f744f44a
Merge pull request #16286 from keymanapp/refactor/web/contextManager
refactor(web): adjust function visibility and variable names
2026-07-30 15:51:50 +02:00
Joshua Horton
051ef41a26 fix(web): restore backspace-input token reconstruction
Before epic/autocorrect, input of a pure backspacing transform would perform special operations within the predictive-text worker, reconstructing the remainder of the token and erasing fat-finger data.  This PR fixes the regression.

This is notably useful when attempting to erase part of an applied suggestion, as applied suggestions wholesale-replace the original versions of affected tokens with a single transform input.  Backspacing into the transform will then break that unitary transform into pieces better suited for ongoing predictive-text operations.

Build-bot: skip build:web build:android
2026-07-29 16:28:42 -05:00
Joshua Horton
f2e160c232 feat(web): add unit tests for prior commit
Some checks failed
Keyman Build Summary / Summarize build status checks (push) Has been cancelled
2026-07-28 12:01:03 -05:00
Joshua Horton
7db38f93ec fix(web): do not remove applied transition ID from original token when editing 2026-07-28 08:40:44 -05:00
Joshua Horton
f864bf293a change(web): spin off method, add unit tests to verify handling of keep vs revert suggestions
Some checks are pending
Keyman Build Summary / Summarize build status checks (push) Waiting to run
2026-07-27 12:11:50 -05:00