Skip to content

Stability cleanup: remove falsified two-thumb experiment code from production paths #147

Description

@AsafMah

Why

main / v0.3.0 is stable, but dev currently carries ~1,950 added lines from the two-thumb experiment in #141. Device testing falsified the central production claim:

  • DUAL_POINTER produces nonsense for real words such as "ambulance".
  • The research harness measured the in-repo AOSP decoder, but the feature is visible only when a user-supplied/system glide library is loaded — a different, closed binary.
  • IdealPrefixTrailBuilder was also actively harmful when no native library was loaded, until the UI was gated.

Known-bad default-off code is still complexity in the hot input path. Leaving it around indefinitely is exactly how an experimental fork becomes unmaintainable.

Keep — proven or independently useful

  • PointerIdNormalizer and its tests: fixes a real zero-suggestions bug when no input point carries id 0.
  • Side-by-side experimental build type (.exp) and distinct IME label: useful infrastructure for future device A/B tests.
  • Historical findings in docs/issues, including the falsification and why the measured decoder was not the running decoder.

Remove from production paths

  • DUAL_POINTER mode and its preference/UI.
  • IdealPrefixTrailBuilder and its preference/UI.
  • Re-timing/gap/interval preferences.
  • StrokeAligner indirection if its only remaining purpose is those modes; restore the previous connector merge directly in WordComposer rather than preserving an abstraction around a dead experiment.
  • Native two-pointer host harness assertions that imply relevance to the user-supplied decoder. Keep only if clearly labelled as testing the unused in-repo engine and it provides ongoing value.
  • Settings/search wiring and strings for removed controls.

Definition of done

  • Normal/default typing path is as close as practical to pre-Two-thumb experimental build (upstream v4.1.2 merged, installs side by side) #141 complexity.
  • No known-bad two-track or synthetic-prefix options are exposed.
  • Proven pointer-id normalization remains.
  • .exp packaging remains for future controlled experiments.
  • Existing regression corpus and native suite pass; full JVM results match the checked-in baseline through tools/check_test_results.py.
  • Device smoke: normal swipe, two-thumb connector behavior, and no zero-suggestion case after pointer id 0 lifts.

Ordering

Land after the LeanBitLab v4.1.8 sync and the double-tap Shift fix, so the cleanup is based on the tree we intend to stabilize rather than creating another rebase/conflict round.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions