Commit graph

32469 commits

Author SHA1 Message Date
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
98d07956ab
Merge pull request #14717 from keymanapp/feat/web/correction-setup-helper-tests
feat(web): add unit tests to validate correction setup helpers 🚂
2025-09-10 20:12:14 +07:00
Joshua Horton
4889229933
Merge pull request #14716 from keymanapp/refactor/web/factorize-correction-helper
refactor(web): split correction helper correctAndEnumerate into separate methods 🚂
2025-09-10 20:12:05 +07:00
Joshua Horton
3775396459
Merge pull request #14537 from keymanapp/feat/web/delayed-reversions
feat(web): support reversions after returning to end of applied suggestion text 🚂
2025-09-10 20:10:59 +07:00
Joshua Horton
2aac446919
Merge pull request #14700 from keymanapp/fix/web/suggestions-after-bksp
fix(web): display suggestions for text reached by backspace 🚂
2025-09-10 20:10:51 +07: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
91163d0a2d
Merge pull request #14713 from keymanapp/feat/web/integrated-autocorrect-apply-tests
feat(web): add new headless integration tests for keystroke interactions with suggestion application 🚂
2025-09-09 20:31:08 +07:00
Joshua Horton
b7a5c7d019
Merge pull request #14712 from keymanapp/fix/web/dummy-model-transform-handling
fix(web): fix transform IDs, appended transform handling for dummy models 🚂
2025-09-09 20:30:59 +07:00
Joshua Horton
a9a9dce952
Merge pull request #14711 from keymanapp/change/web/convert-main-interfaces-tests-to-ts
change(web): convert engine/main, engine/interfaces tests to TS 🚂
2025-09-09 20:30:51 +07: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
d629149913
Merge pull request #14529 from keymanapp/feat/web/auto-accept-on-punctuation
feat(web): perform autocorrect upon input of configured word-breaking marks 🚂
2025-09-08 20:13:36 +07:00
Joshua Horton
e9c1c88f7e
Merge pull request #14508 from keymanapp/feat/web/punctuation-whitespace-reversion
feat(web): add Web engine support for auto-reverting whitespace appended to Suggestions on punctuation input 🚂
2025-09-08 20:13:25 +07: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
Joshua Horton
6283aeaac6 fix(web): update recent-revert flag 2025-09-05 15:52:20 -05:00
Joshua Horton
646ba066dd change(web): display reversions before keeps 2025-09-05 15:18:55 -05:00
Joshua Horton
2bebb45abb fix(web): fix triggering for suggestions after keystroke-application of suggestions 2025-09-05 15:07:46 -05:00
Joshua Horton
7702241a01 change(web): manage reversion display from worker
This prevents display errors associated with reversions that occurred once the worker started supplying reversions as part of prediction requests.

Also hides suggestions / reversions that depend on context states that have aged out of the Web engine's cache.
2025-09-05 14:19:04 -05:00
Joshua Horton
c484311679 feat(web): support reversions after returning to end of applied text
Relates-to: #12884
Relates-to: #12648 (item 3 from the first list)
2025-09-05 14:19:04 -05:00
Joshua Horton
099d4aaff4 fix(web): display suggestions for text reached by backspace 2025-09-05 14:14:55 -05:00
Joshua Horton
eb83fb91bc fix(web): fix immediate application of suggestions following another 2025-09-05 12:16:55 -05:00
Joshua Horton
be25bd3891 fix(web): fix handling of replaced post-accept prediction contexts 2025-09-05 11:06:08 -05:00
Joshua Horton
2881ce6997 Merge branch 'feat/web/punctuation-whitespace-reversion' into feat/web/auto-accept-on-punctuation 2025-09-05 10:23:45 -05:00
Joshua Horton
cf7448a364 change(web): improve handling for reverting appended transform 2025-09-05 10:23:33 -05:00