Commit graph

1977 commits

Author SHA1 Message Date
Joshua Horton
5bd7edbb28 Merge branch 'feat/web/trace-insert-edits' into feat/web/compute-merge-split-effects 2025-09-25 15:07:46 -05:00
Joshua Horton
d32a29f854 Merge branch 'feat/web/backward-slide-tokenization' into feat/web/trace-insert-edits 2025-09-25 15:07:03 -05:00
Joshua Horton
b7bc34d528 Merge branch 'feat/web/build-token-aligned-edge-windows' into feat/web/backward-slide-tokenization 2025-09-25 15:04:43 -05:00
Joshua Horton
414c6f12ab Merge branch 'feat/web/context-slide-deltas' into feat/web/build-token-aligned-edge-windows 2025-09-25 15:03:40 -05:00
Joshua Horton
ec76f0dd5f Merge branch 'refactor/web/source-input-vs-example-input' into feat/web/context-slide-deltas 2025-09-25 15:01:06 -05: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
2b64a0857b docs(web): fix sourceText doc comment 2025-09-24 10:37:12 -05:00
Joshua Horton
7362d36066 feat(web): add helper for aligning tokens after merges, splits
Relates-to: #14679

Build-bot: skip build:web
Test-bot: skip
2025-09-22 09:36:12 -05:00
Joshua Horton
9ffc093ac4 feat(web): add helper for tokenizing Transform.insert via tokenization of applied context
Relates-to: #14679

Build-bot: skip build:web
Test-bot: skip
2025-09-22 09:34:40 -05:00
Joshua Horton
b1d3899c55 feat(web): adds helper method applyContextSlide for updating context tokenization before applying inputs
Relates-to: #14679

Build-bot: skip build:web
Test-bot: skip
2025-09-22 09:31:54 -05:00
Joshua Horton
1b39e92c16 change(web): edgeSliceIndex => sliceIndex 2025-09-22 09:30:17 -05:00
Joshua Horton
987de6ec27 docs(web): add docs for buildEdgeWindow helper types 2025-09-22 09:26:54 -05:00
Joshua Horton
8d4197d70f change(web): hoist changes motivated by later work 2025-09-22 08:52:49 -05:00
Joshua Horton
c43b02329d feat(web): add empty-context unit test 2025-09-19 12:28:41 -05:00
Joshua Horton
943f93294c feat(web): build token-aligned edge windows
These windows are designed for use in detecting tokenization shifts both at the start and the end of the context.

Relates-to: #14679

Build-bot: skip build:web
Test-bot: skip
2025-09-19 10:55:45 -05:00
Joshua Horton
fcc843e9b0 feat(web): adds method to determine the change to context resulting from a context window slide
To be explicit:  the method is designed to compare the context after applying
a context transition's edit with the context state after a window slide takes
effect, but before the next transition's edit takes effect.

Build-bot: skip build:web
Test-bot: skip
2025-09-19 09:28:11 -05: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
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
Joshua Horton
6283aeaac6 fix(web): update recent-revert flag 2025-09-05 15:52:20 -05:00