Commit graph

2201 commits

Author SHA1 Message Date
Joshua Horton
d819190e5c docs(web): add review-requested comment 2026-01-29 09:10:17 -06:00
Joshua Horton
1983f129fa change(web): simplify Spur logic - parentNode always exists 2026-01-29 09:10:03 -06:00
Joshua Horton
3149eabae3 feat(web): add .codepointLength field for SearchQuotientNode types
Build-bot: skip build:web
Skip-bot: skip
2026-01-22 13:26:16 -06:00
Joshua Horton
cfe72f4aa2 refactor(web): renames PendingTokenization as TokenizationEdge, adds doc-comments
Now that the SearchQuotientNode rework is stabilizing, I've finally landed on a better name for the type.  PendingTokenization _directly_ correlates to outbound edges from `SearchQuotientNode` entries once processed.  New doc-comments are also added documenting the relationship of `TransitionEdge` and `TokenizationSubset` to `SearchQuotientSpur` and `SearchQuotientCluster`.

Admittedly, it may be wise to additionally rename `TokenizationSubset` to `TransitionCluster` (and rename the source file) to further mirror the relationship of these types... but that can always be done in a follow-up.

Build-bot: skip build:web
Test-bot: skip
2026-01-22 13:25:30 -06:00
Joshua Horton
fd45aa4281 refactor(web): adds unique identifier to transform-tokenization subsets
This addition will allow us to clearly and cleanly indicate transforms that are two (or more) halves of the same original whole.  It is notably more selective than just the original transition ID and is better suited for indicating split-transform cases.

Build-bot: skip build:web
Test-bot: skip
2026-01-22 12:40:21 -06:00
Joshua Horton
cf3950896a refactor(web): relocate definition of .sourceRangeKey to SearchQuotientSpur, SearchQuotientNode
Build-bot: skip build:web
Test-bot: skip
2026-01-22 12:38:13 -06:00
Joshua Horton
3a613df954 change(web): hoist unit-test format changes from descendant PR 2026-01-22 12:36:10 -06:00
Joshua Horton
27ccde3c45 change(web): renames and restructures TokenInputSource as PathInputProperties 2026-01-22 12:35:08 -06:00
Joshua Horton
446ac5eed1 docs(web): document TokenInputSource and its members 2026-01-22 12:31:29 -06:00
Joshua Horton
58ad8c247b change(web): enhance SearchQuotientSpur unit tests 2026-01-22 12:31:24 -06:00
Joshua Horton
a625596f4d fix(web): assert matching transition IDs in SearchPath constructor 2026-01-22 12:30:54 -06:00
Joshua Horton
df580c2fad change(web): simplify SearchQuotientSpur constructor use 2026-01-22 12:30:54 -06:00
Joshua Horton
92051cdc43 refactor(web): manage true-input data from SearchQuotientSpur
Once we start considering alternate tokenization schemes, we'll want to note how each potential input path aligns with the original input keystrokes.  As there can be multiple paths to land within the same token, it's best to store this data on the SearchQuotientSpur objects instead.  This becomes especially relevant when considering token splits and merges, which will be the next follow-ups.

Build-bot: skip build:web
Test-bot: skip
2026-01-22 12:30:50 -06:00
Joshua Horton
c4b8f69216 change(web): remove .sourceText property
Once we enable whitespace fat-fingering, it will be possible for the 'source text' to actually _change_ after an autocorrect yet still be correctable.  `.sourceText` does not reflect this adequately.  What _does_ remain unchanged is the `.sourceRangeKey` property and its value - those provide a better source of stability and identification.

Build-bot: skip build:web
Test-bot: skip
2026-01-22 12:29:15 -06:00
Joshua Horton
a0bd109174 fix(web): do not preserve taillessTrueKeystroke when receiving empty input 2026-01-22 12:24:27 -06:00
Joshua Horton
4f763fba11 change(web): rework suggestion-alignment helper to use tokenization directly 2026-01-22 12:24:26 -06:00
Joshua Horton
ceabe5a041 refactor(web): convert main correction-search method to accept multiple spaces
Build-bot: skip build:web
Test-bot: skip
2026-01-22 12:23:57 -06:00
Joshua Horton
92e2605d06
Merge pull request #15443 from keymanapp/change/web/dedupe-unit-test
change(web): remove unit test near-duplicate 🚂
2026-01-22 23:22:09 +07:00
Joshua Horton
fb347d85f2 Merge branch 'epic/autocorrect' into refactor/web/differentiate-module-types 2026-01-22 10:01:15 -06:00
Joshua Horton
0925ff64ec
Merge pull request #14987 from keymanapp/refactor/web/use-interface-as-search-parent
refactor(web): generalize SearchQuotientSpur parent requirements 🚂
2026-01-22 23:00:03 +07:00
Joshua Horton
fb825ce4a5 Merge branch 'refactor/web/use-interface-as-search-parent' into refactor/web/differentiate-module-types 2026-01-22 09:36:13 -06:00
Joshua Horton
2f4089a318 fix(web): better hasInputs handling for root nodes 2026-01-22 09:35:45 -06:00
Joshua Horton
5d294df1bf Merge branch 'refactor/web/use-interface-as-search-parent' into refactor/web/differentiate-module-types 2026-01-22 09:35:00 -06:00
Joshua Horton
42fcbc390d refactor(web): move unit-testing .hasInputs to standalone, tree-shakable method 2026-01-22 09:21:05 -06:00
Joshua Horton
64791e1277 fix(web): adjust formatting nit re: missing else 2026-01-22 08:40:41 -06:00
Joshua Horton
b0b56e426a
Merge pull request #15405 from keymanapp/refactor/web/local-input-cost-heuristic
refactor(web): refactor local input cost heuristic 🚂
2026-01-22 21:38:14 +07:00
Joshua Horton
2ef4c89215
Merge pull request #15404 from keymanapp/refactor/web/search-result-node-access
refactor(web): make SearchResult's node-path accessible 🚂
2026-01-22 21:38:03 +07:00
Joshua Horton
4ecaf051f3 Merge branch 'fix/web/delete-corrections-flat-cost' into refactor/web/replace-addInput-with-constructor 2026-01-22 08:13:52 -06:00
Joshua Horton
d73f6eec07 change(web): one let -> const 2026-01-22 08:09:42 -06:00
Joshua Horton
69a64dbf02 Merge branch 'epic/autocorrect' into fix/web/delete-corrections-flat-cost 2026-01-22 08:09:04 -06:00
Joshua Horton
c57bd06b57
Merge pull request #15399 from keymanapp/fix/web/prevent-insdel-sub-aliasing
fix(web): prevent insert-delete edit sequences from aliasing as substitution edits 🚂
2026-01-22 21:07:27 +07:00
Joshua Horton
2a8eba9688 Merge branch 'feat/web/search-space-identifiers' into change/web/remove-duplicate-path-filtering 2026-01-21 16:06:27 -06:00
Joshua Horton
0ff6f23564 Merge branch 'epic/autocorrect' into feat/web/search-space-identifiers 2026-01-21 16:04:25 -06:00
Joshua Horton
74edbdc023
Merge pull request #14979 from keymanapp/refactor/web/search-batcher
refactor(web): adds SearchQuotientNode base interface 🚂
2026-01-22 04:57:42 +07:00
Joshua Horton
813beeb988
Merge pull request #15415 from keymanapp/change/web/rename-module-prop-name
change(web): rename .searchSpace property to .searchModule 🚂
2026-01-22 04:57:31 +07:00
Joshua Horton
221ac83edc
Merge pull request #14921 from keymanapp/refactor/web/simple-search-space-reuse
refactor(web): simple reuse of search modules 🚂
2026-01-22 04:57:19 +07:00
Joshua Horton
79ebd76573
Merge pull request #14920 from keymanapp/refactor/web/relocate-search-space
refactor(web): relocate SearchSpace definition as SearchQuotientSpur, tests to own code file 🚂
2026-01-22 04:57:09 +07:00
Joshua Horton
6067807ab8
Merge pull request #15161 from keymanapp/docs/web/add-search-space-doc
docs(web): start internal doc on SearchSpace design, requirements, and analysis 🚂
2026-01-22 04:56:58 +07:00
Joshua Horton
20d7855eb8
Merge pull request #14916 from keymanapp/refactor/web/correction-heuristic-and-thresholding
refactor(web): rework correction heuristic and thresholding toward multi-tokenization support 🚂
2026-01-22 04:56:46 +07:00
Joshua Horton
aaaab2eafc docs(web): clarify keystroke non-independence 2026-01-20 14:50:39 -06:00
Joshua Horton
4807e35df8 docs(web): fix outdated doc-comments, typos per review 2026-01-16 08:42:00 -06:00
Joshua Horton
54d06d4b9c change(web): remove unit test near-duplicate
Build-bot: skip build:web
Test-bot: skip
2026-01-15 12:48:19 -06:00
Joshua Horton
dc383f873d Merge branch 'refactor/web/use-interface-as-search-parent' into refactor/web/differentiate-module-types 2026-01-14 16:50:34 -06:00
Joshua Horton
cf70816b97 change(web): update unit-test suite name 2026-01-14 16:50:13 -06:00
Joshua Horton
a281711ebf refactor(web): create separate types for search graph root notes 2026-01-14 15:21:32 -06:00
Joshua Horton
5a17050bff change(web): improve nil-input case handling 2026-01-09 14:50:25 -06:00
Joshua Horton
348e876907 refactor(web): differentiate search-space module types
This PR converts SearchQuotientSpur into an abstract base class with specialized forms for different cases.  Two implementations are provided:
- SearchQuotientRoot - for the root node of the search
- LegacyQuotientSpur - for modeling existing behavior before swapping to our target design and model

Build-bot: skip build:web
Test-bot: skip
2026-01-09 11:32:45 -06:00
Joshua Horton
3a56e23753 refactor(web): generalize SearchQuotientSpur parent requirements
As an upcoming goal is to introduce a new SearchQuotientNode type that will assist with context-caching across multiple tokenizaitons, it is wise to generalize SearchQuotientSpur and functions utilizing it to accept any SearchQuotientNode-implementing type as its parent.

Build-bot: skip build:web
Test-bot: skip
2026-01-09 11:31:08 -06:00
Joshua Horton
445cca21c4 refactor(web): refactor local input cost heuristic
These changes were previously part of #14987 and have been extracted for ease of review.

Build-bot: skip build:web
Test-bot: skip
2026-01-09 11:23:12 -06:00
Joshua Horton
72ee0fe576 refactor(web): make SearchResult's node-path accessible
This was formerly part of #14987 and has been extracted for ease of review.

Build-bot: skip build:web
Test-bot: skip
2026-01-09 11:18:28 -06:00