From bf9b601d7a91e4c505082099c2c16df1e3ca1789 Mon Sep 17 00:00:00 2001 From: Joshua Horton Date: Thu, 16 Jan 2025 08:36:23 +0700 Subject: [PATCH] change(web): keep transform pattern should match standard suggestion format --- .../worker-thread/src/main/predict-helpers.ts | 12 +++++++----- .../src/tests/mocha/cases/suggestion-similarity.js | 4 ++-- .../src/tests/mocha/cases/worker-model-compositor.js | 4 ++-- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/web/src/engine/predictive-text/worker-thread/src/main/predict-helpers.ts b/web/src/engine/predictive-text/worker-thread/src/main/predict-helpers.ts index a0b687b9bf..70f739611b 100644 --- a/web/src/engine/predictive-text/worker-thread/src/main/predict-helpers.ts +++ b/web/src/engine/predictive-text/worker-thread/src/main/predict-helpers.ts @@ -558,11 +558,13 @@ export function processSimilarity( return; } - // Generate a default 'keep' option if one was not otherwise produced. - - // IMPORTANT: duplicate the original transform. Causes nasty side-effects - // for context-tracking otherwise! - let keepTransform: Transform = { ...inputTransform }; + // Generate a full-word 'keep' replacement like other suggestions when one is not otherwise + // produced; we want to replace the full token in the same manner used for other suggestions. + const basePrefixLength = truePrefix.kmwLength() - inputTransform.insert.kmwLength() + inputTransform.deleteLeft; + const keepTransform = { + insert: truePrefix, + deleteLeft: basePrefixLength + }; // 1 is a filler value; goes unused b/c is for a 'keep'. let keepSuggestion = models.transformToSuggestion(keepTransform, 1); diff --git a/web/src/engine/predictive-text/worker-thread/src/tests/mocha/cases/suggestion-similarity.js b/web/src/engine/predictive-text/worker-thread/src/tests/mocha/cases/suggestion-similarity.js index 7f31b1eff9..18fa1307b1 100644 --- a/web/src/engine/predictive-text/worker-thread/src/tests/mocha/cases/suggestion-similarity.js +++ b/web/src/engine/predictive-text/worker-thread/src/tests/mocha/cases/suggestion-similarity.js @@ -340,8 +340,8 @@ describe('processSimilarity', () => { prediction: { sample: { transform: { - insert: 'e', - deleteLeft: 0 + insert: 'iphone', + deleteLeft: 5 }, displayAs: '', matchesModel: false, diff --git a/web/src/engine/predictive-text/worker-thread/src/tests/mocha/cases/worker-model-compositor.js b/web/src/engine/predictive-text/worker-thread/src/tests/mocha/cases/worker-model-compositor.js index 8dc108440b..0774385026 100644 --- a/web/src/engine/predictive-text/worker-thread/src/tests/mocha/cases/worker-model-compositor.js +++ b/web/src/engine/predictive-text/worker-thread/src/tests/mocha/cases/worker-model-compositor.js @@ -932,8 +932,8 @@ describe('ModelCompositor', function() { assert.equal(suggestions.length, 1); let expectedTransform = { - insert: ' ', // Keeps current context the same, though it adds a wordbreak. - deleteLeft: 0 + insert: 'hi ', // Keeps current context the same, though it adds a wordbreak. + deleteLeft: 2 } assert.deepEqual(suggestions[0].transform, expectedTransform); });