Skip to content

Release 3.9.1#91

Merged
AsafMah merged 4 commits into
mainfrom
dev
Jun 11, 2026
Merged

Release 3.9.1#91
AsafMah merged 4 commits into
mainfrom
dev

Conversation

@AsafMah

@AsafMah AsafMah commented Jun 11, 2026

Copy link
Copy Markdown
Owner

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.

AsafMah added 4 commits June 11, 2026 02:14
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.
@AsafMah AsafMah merged commit 2950dce into main Jun 11, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant