Commit graph

1980 commits

Author SHA1 Message Date
Joshua Horton
2db1e3fd20
Merge pull request #14756 from keymanapp/refactor/web/source-input-vs-example-input
refactor(web): differentiate between true and represented inputs for context tokens 🚂
2025-10-06 21:50:46 +07:00
Joshua Horton
6eedb2e7ab change(web): revert no-longer-valid change 2025-09-25 14:59:49 -05:00
Joshua Horton
5dc28b5492 refactor(web): track original ContextToken source properties + reform use of .exampleText 2025-09-25 14:51:57 -05:00
Joshua Horton
ba4a2f2631 Merge branch 'epic/autocorrect' into feat/web/transpose-disable-option 2025-09-25 08:20:27 -05:00
Joshua Horton
785b139b17 Merge branch 'epic/autocorrect' into refactor/web/compute-distance-helper 2025-09-24 16:18:23 -05:00
Joshua Horton
ba07b9b831
Merge pull request #14724 from keymanapp/refactor/web/improve-edit-calc-encapsulation
refactor(web): improve encapsulation for edit-distance calculation objects 🚂
2025-09-25 04:16:45 +07:00
Joshua Horton
082ebf59e4
Merge pull request #14706 from keymanapp/feat/web/partial-splits-and-merges
feat(web): support partial split + merge edits 🚂
2025-09-25 04:16:36 +07:00
Joshua Horton
2b64a0857b docs(web): fix sourceText doc comment 2025-09-24 10:37:12 -05:00
Joshua Horton
f59443d19c change(web): enhance unit test clarity per review 2025-09-24 10:23:58 -05:00
Joshua Horton
3dba25cf7d
Merge pull request #14697 from keymanapp/change/web/edit-path-edge-data
change(web): edit path edges should report alignment indices instead of texts 🚂
2025-09-23 23:25:11 +07:00
Joshua Horton
7ddd7e24fd
Merge pull request #14689 from keymanapp/feat/web/split-merge-edit-paths
feat(web): support split, merge for edit-path construction 🚂
2025-09-23 23:24:56 +07:00
Joshua Horton
49b557cef9
Merge pull request #14687 from keymanapp/refactor/web/edit-path-construction
refactor(web): refactor edit-path construction to support extensions from subclasses 🚂
2025-09-23 23:24:47 +07:00
Joshua Horton
066b29695c
Merge pull request #14686 from keymanapp/feat/web/start-split-merge-distance
feat(web): start support for calculating 'split', 'merge' edits 🚂
2025-09-23 23:24:40 +07:00
Joshua Horton
b3a993c0a0
Merge pull request #14685 from keymanapp/refactor/web/calc-extension-indexing
refactor(web): refactor distance-calculation method that extends path on new input 🚂
2025-09-23 20:40:41 +07:00
Joshua Horton
ba431ed3b8
change(web): Apply property-alignment suggestions from code review
Co-authored-by: Eberhard Beilharz <ermshiperete@users.noreply.github.com>
2025-09-23 20:32:03 +07:00
Joshua Horton
e68d98a977 Merge branch 'feat/web/start-split-merge-distance' into refactor/web/edit-path-construction 2025-09-23 08:21:50 -05:00
Joshua Horton
db51d21d0a
change(web): Apply linting-style suggestions from code review
Co-authored-by: Eberhard Beilharz <ermshiperete@users.noreply.github.com>
2025-09-23 20:17:21 +07:00
Joshua Horton
012dcaeee9 refactor(web): differentiate between true and represented inputs for context tokens
To be up-front, this is looking ahead significantly to epic/dict-breaker (#12142) concerns.  The core idea here:  each token should mark which part of the current context it represents - and the best data for the job happens to be the original, true transforms.

With epic/dict-breaker and other possible work that would faciltate considering alternative tokenizations, it is quite possible the original source transform(s) for a tokenization may not actually be represented within that tokenization's input set.

Consider:  if the spacebar appears as a fat-finger alternate for a letter key, we may wish to model an alternate tokenization where we actually _used_ that keystroke as a whitespace instead of a standard letter.  The resulting whitespace token shouldn't have the original letter key's transform as part of its represented inputs for such a case.

Build-bot: skip build:web
Test-bot: skip
2025-09-19 09:27:17 -05:00
Keyman Server
425b8864fd
Merge branch 'epic/autocorrect' into chore/A19S11-merge-master-into-autocorrect 2025-09-12 00:25:29 -07:00
Joshua Horton
f7e291a7c3 feat(web): add option to disable transpose edits
Tokens in the active context should not be transposable, so this commit adds an option that permits disabling transpose edits during edit-distance calculation.

Build-bot: skip build:web
Test-bot: skip
2025-09-10 10:52:43 -05:00
Joshua Horton
7ebfbfe54e refactor(web): move static computeDistance to standalone helper
The main goal of this commit is to allow computeDistance to operate properly with both ClassicalDistanceCalculation and SegmentableDistanceCalculation. For now, context alignment via computeAlignment will continue to use the former edit-distance calculation type, but the goal is to convert to use of the latter and its support for 'split' / 'merge' edit operations in the near future.

Build-bot: skip build:web
Test-bot: skip
2025-09-10 10:50:19 -05:00
Joshua Horton
47c1310f8d refactor(web): improve encapsulation for edit-distance calculation objects
Build-bot: skip build:web
Test-bot: skip
2025-09-10 10:16:37 -05:00
Joshua Horton
c56206c3f1 feat(web): support partial split + merge edits
After a bit of thought, I realized that it's feasible to support certain kinds of "partial" splits and edits.  If the only missing portion is entirely on one end or the other of the "combined" token, that isn't costly to compute - and it very much matches the specific cases that motivated 'merge' / 'split' support to begin with.

Suppose the word `can't` is partially in the context, at the start of the sliding context window.  Sliding backward one character at a time and using our default wordbreaker, we'd get...
- `t`
- `'`, `t`
- `n't`

`n't` is a "partial merge" scenario - we're missing the 'n', but the rest of the pieces are present.  The new changes allow us to detect that `'` and `t` combine as part of the `n't` token.

Note that this still requires a 1-to-many relationship between the "input" and "match" string sequences; there will be no support for a hypothetical "merge-then-split" operation.  (Say, combining 2 and splitting the result into 3 - or vice versa.)
2025-09-10 08:25:50 -05:00
Joshua Horton
5c6a95284a change(web): edit path edges should report alignment indices instead of texts
This change will provide a way to align more directly from edit path data, rather than rely on the post-op guesswork that's been used until now to approximate it.
2025-09-10 08:25:33 -05:00
Joshua Horton
0fbf9c028e feat(web): support split, merge for edit-path construction
Relates-to: #14679

The goal of this PR is to facilitate better handling for token splits and token merges.
2025-09-10 08:25:13 -05:00
Joshua Horton
01d73079a9 refactor(web): better edge-finder typing, cleanup 2025-09-10 08:24:37 -05:00
Joshua Horton
88393c515d refactor(web): refactor edit-path construction to support extensions from subclasses 2025-09-10 08:24:37 -05:00
Joshua Horton
36cee82da8 refactor(web): relocate getMergeSplitParent 2025-09-10 08:23:59 -05:00
Joshua Horton
8ca4b8b3cd feat(web): start support for calculating 'split', 'merge' edits 2025-09-10 08:23:59 -05:00
Joshua Horton
1853af628b refactor(web): refactor distance-calculation method that extends path on new input 2025-09-10 08:23:30 -05:00
Joshua Horton
29f3f8595e feat(web): add unit tests to validate correction setup helpers
This commit adds unit tests for the methods extracted in #14716 designed to help automate testing for work done in #14700 and #14537, among other recent epic/autocorrect PRs.

There's also a very small bit of cleanup of logic that affected one of the new tests.

Build-bot: skip test:web
Test-bot: skip
2025-09-09 14:40:27 -05:00
Joshua Horton
439b9c3f01 refactor(web): spin off determineSuggestionAlignment method 2025-09-09 13:00:37 -05:00
Joshua Horton
eb679488a4 refactor(web): spin off matchBaseContextState, determineContextTransition as helpers 2025-09-09 13:00:37 -05:00
Joshua Horton
db5e77c0dc refactor(web): move traversal-less correction code to own helper 2025-09-09 13:00:37 -05:00
Joshua Horton
05a608fb69 fix(web): unit test patchup due to bad index choice 2025-09-09 12:58:47 -05:00
Joshua Horton
4417a44d28 feat(web): add delayed-reversion headless integration tests 2025-09-09 09:46:14 -05:00
Joshua Horton
a97222e5dd Merge branch 'fix/web/suggestions-after-bksp' into feat/web/delayed-reversions 2025-09-09 08:52:45 -05:00
Joshua Horton
eb43cfa729 Merge branch 'epic/autocorrect' into fix/web/suggestions-after-bksp 2025-09-09 08:32:38 -05:00
Joshua Horton
261f5c6faf Merge branch 'fix/web/dummy-model-transform-handling' into feat/web/integrated-autocorrect-apply-tests 2025-09-08 16:15:36 -05:00
Joshua Horton
28102e8a51 Merge branch 'change/web/convert-main-interfaces-tests-to-ts' into fix/web/dummy-model-transform-handling 2025-09-08 16:15:13 -05:00
Joshua Horton
7af47742b1 fix(web): fix test building dependency 2025-09-08 16:10:21 -05:00
Joshua Horton
b6369ab0e9 feat(web): add Trie-backed K_SPACE replace test 2025-09-08 16:06:16 -05:00
Joshua Horton
1018821865 feat(web): add new headless integration tests for keystroke interactions with suggestion application
Build-bot: skip build:web
Test-bot: skip
2025-09-08 15:59:03 -05:00
Joshua Horton
7b5388125c fix(web): fix transform IDs, appended transform handling for dummy models
Build-bot: skip build:web
Test-bot: skip
2025-09-08 15:56:31 -05:00
Joshua Horton
29d0cb1eb1 change(web): convert engine/main, engine/interfaces tests to TS
Build-bot: skip build:web
Test-bot: skip
2025-09-08 13:47:51 -05:00
Joshua Horton
c26c9c5b82 fix(web): fix failed user test scenario - overwriting suggestion-applied whitespace 2025-09-08 08:09:07 -05:00
Joshua Horton
6c847422df fix(web): patch up unit tests for change to worker reversion pattern 2025-09-08 07:46:11 -05:00
Joshua Horton
eadbfc625f Merge branch 'fix/web/suggestions-after-bksp' into feat/web/delayed-reversions 2025-09-07 21:33:36 -05:00
Joshua Horton
28ade8991d fix(web): better delete-left handing for suggestions when crossing word boundaries 2025-09-07 21:32:08 -05:00
Joshua Horton
2fadae873e fix(web): patch up unit tests 2025-09-05 15:56:18 -05:00