Conversation
Design spec for per-word spacing policy: free per-keystroke signals (complete, normalized prefix-richness score) drive graceMs + a two-gate Assisted tier (instant for finished words, pause for extendable stems), one deferred-space mechanism (PHANTOM), adaptive per-posture cadence, and a live tuning panel + fuller A11 insight overlay. Sequencing: #23 -> #26 -> #24 -> #25. Captures the #23 seam + the ~8 grace-test contract rewrite.
…#86) Phase 1 of the spacing-policy epic (#14). Today the default gesture path defers its autospace via SpaceState.PHANTOM (materialized on next input, adapts to connectors/URLs/punctuation, backspace-reversible) but the two-thumb combining-grace path writes the space EAGERLY in onCombiningGraceExpired. This unifies them. New experimental, default-OFF pref PREF_SPACING_DEFER_GRACE_SPACE. When on, the grace commit arms PHANTOM instead of the eager insertAutomaticSpaceIfOptionsAndTextAllow + mAutospaceJustWritten + the mLastComposedWord separator patch; the existing PHANTOM consumers materialize/suppress the space on next input. The downstream cursor/undo accounting already handles autospaceInserted=false, so it's unchanged. Default-off keeps the ~8 existing eager grace tests valid (no contract rewrite needed); adds two deferred-path tests (materialize-on-next-input, backspace-reversible). Verify: InputLogicTest + SettingsContainerTest -> 115 completed, 3 failed (pre-existing baseline), 1 skipped; 0 new failures. Feel is on-device: gated behind the flag for playtesting per the roadmap's feel-driven rule.
…sh gate (#87) * fix(two-thumb): grace-commit auto-caps refresh + opt-in 'auto-finish only after swipes' Two pre-existing bugs in the combining-grace auto-commit path, found on-device (neither caused by #23 — that only defers the space behind a default-off flag). 1. Erratic capitalization after a grace auto-commit. onCombiningGraceExpired runs on the async grace timer, OFF the normal onCodeInput path that refreshes the shift state after a commit — so the next word's auto-caps was stale (dropped, or applied mid-word -> 'WORds'). Fix: call requestUpdatingShiftState(getCurrentAutoCapsState, getCurrentRecapitalizeState) at the end of onCombiningGraceExpired, mirroring the gesture-commit path. Unconditional — it was a bug for every grace commit. 2. No way to stop the grace timer auto-finishing tap-only words. enterCombiningMode armed for any composing word regardless of tap vs swipe (the fromTap param was unused); mCombiningAutospaceOnlyAfterGesture only gates the space, not the commit. Add opt-in PREF_COMBINING_GRACE_ONLY_AFTER_GESTURE (default off): when on, enterCombiningMode skips arming for a tap-only word (no gesture fragment). Tap-then-swipe still arms (the gesture trigger re-enters with the fragment). Verify: InputLogicTest + SettingsContainerTest -> 116 completed, 3 failed (pre-existing baseline), 1 skipped; 0 new failures; new pref registered. Feel (correct caps + tap-skip) validated on-device. * feat(two-thumb): default 'only auto-finish swiped words' ON + clearer labels Tapped words auto-finishing was the root of a whole cluster of confusing behavior (premature commit, Text Expander procing early, suggestion-pick appending, garbled words) — so make the swipe-only gate the default. - Default PREF_COMBINING_GRACE_ONLY_AFTER_GESTURE to true (was false). Only affects users who enabled the grace timer (advanced opt-in); for them, tap words no longer auto-finish. - Reworded the two near-identical toggles so they can't be confused: 'Only auto-space after swipes' (the SPACE) vs 'Only auto-finish swiped words' (whether the word COMMITS at all), with disambiguating summaries. - Restructure enterCombiningMode: the gate now suppresses only the TIMER ARMING, not combining-mode entry — so a tap-then-swipe word still extends and auto-finishes (fixed a regression the default flip exposed in tapThenGestureCombiningWordStillAutospaces). Verify: InputLogicTest + SettingsContainerTest -> 116 completed, 3 failed (pre-existing baseline), 1 skipped; 0 new failures.
Two-thumb spacing fixes since 3.9.0: grace-commit auto-caps refresh, default-on 'only auto-finish swiped words' (tapped words stay open), clearer spacing labels, and the experimental deferred-grace-space flag.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Release 3.9.1 (3910). Two-thumb spacing fixes on top of 3.9.0: grace-commit auto-caps fix, default-on 'only auto-finish swiped words' (tapped words stay open), clearer spacing labels, experimental deferred-grace-space. See CHANGELOG.md. Merge, then tag v3.9.1 triggers the signed-APK release CD.