Skip to content

Check exact editor characters independently of IME decoration - #109

Merged
moikdev merged 13 commits into
mainfrom
fix/api26-native-input
Nov 5, 2026
Merged

moikdev merged 13 commits into
mainfrom
fix/api26-native-input

Conversation

@moikdev

@moikdev moikdev commented Nov 5, 2026

Copy link
Copy Markdown
Owner

Native editor characters can remain exact while IME composition adds an underline to EditableText. The old readiness helper compared complete annotation objects and could reject that legitimate state. This change compares every UTF-16 character, keeps composition diagnostics separate, and adds guarded native-input fixtures with matched old-assertion controls.

Closes #108. Part of #69, which stays open. Production/build sources and all eleven packaged assets/notices are unchanged; every native run uses the frozen fec0a4bf application. The original system-keyboard/old-image failures remain unresolved.

Validation:

  • 23 controlled positives / seven whole cohorts /108 successful restoration checks: base21 on the common harness, plus two fresh strengthened Unicode checks. The latter adds a same-length substitution so a length-only matcher would fail.
  • Two intended old-annotation failures /zero JUnit passes /29 successful restoration checks on the same production binary. The common test APKs differ only in classes3.dex; positive-only runner receipts remain failed and calibration is separate.
  • 13 read-only final-preservation checks: original APKs, all573 app/evidence files, geometry/font, four IME settings, package absence on the disposable legacy AVD and ordinary UID state.
  • JVM343; Python130 per mode; debug/test and benchmark/test builds; lint0 errors/56 warnings per variant. Actual exact-head hosted Android CI and two independent gpt-6.1-sol/high audits are separate pending gates.

Controlled cases explicitly select a silent test-APK IME and drive a native InputConnection. Normal/200% observations cover API26 revision1/WebView58 at physical1080×1920/420dpi, and the dedicated API36 revision7/WebView133 tablet at physical1920×1200/240dpi with phone/landscape overrides. Enlarged cases are functional smoke. Japanese text retention uses a zero-result query and adds no nonempty-grid veto-sensitivity claim. Model/semantic setup, injected keys and direct dispatch carry no physical-typing credit.

The first probes omitted keyboard switch history; its original pre-probe identity is unverified. Final baselines follow the documented cleanup and verify four raw settings. One older modern control failed its cleanup deadline; its owner stayed held and a separate sixteen-check recovery restored the original state. Failed/insensitive cohorts keep their outcomes. See the report and checkpoint for binary/source splits, all84 attempts, 525 retained capture hashes and 21 selected raw frame sets.

Real app smoke evidence, same production binary. The first pair contrasts test rejection/acceptance; the ordinary app screen has no error banner and no UI repair is claimed.

Old strict annotation assertion fails Exact-character assertion passes
Android8 at100%: ordinary owned editor after the old strict test failed Same Android8 app at100%: owned composing editor after exact characters passed

Android16 overridden phone at200%: retained Japanese text, zero results, controlled test IME

Android16 overridden landscape at200%: exact caller range after pointer Back from idle Updates

This provides no full Android8 keyboard, OEM/physical, accessibility, whole-Store/Raycast, #89 or production-signing clearance.

moikdev commented Nov 5, 2026

Copy link
Copy Markdown
Owner Author

Exact-head gate update: independently verified Android run 42026037454 completed successfully for 3f87bf7a4182b74ba16c52c113c67613e5f6bb41, event pull_request. The same head's local/android status58146385516 is also successful. The checkout remains clean and unchanged. Both required independent gpt-6.1-sol/high audit conclusions remain outstanding; merge is withheld until those results and the final expected-head check are verified.

moikdev commented Nov 5, 2026

Copy link
Copy Markdown
Owner Author

Independent audit recorded for exact head 3f87bf7a4182b74ba16c52c113c67613e5f6bb41: gpt-6.1-sol / high, UX/input/test-coverage/evidence-provenance, full base-to-head and affected callers, read-only without delegation or companion consultation. Result: no actionable findings within scope. The reviewer viewed all21 actual published PNGs, verified all296 indexed files/249 current source hashes, raw CRLF/projections/binary splits and accounting (84 attempts;23 current positives;two intended failures). Recorded test/build outcomes were inspected, not rerun. Functional-smoke, zero-result Japanese, original IME-history and private-original limits remain disclosed. Root reconfirmed a clean, unchanged checkout. Correctness/security audit and final exact-head gate verification remain pending; no merge clearance yet.

@moikdev moikdev left a comment

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Both required independent full base-to-head audits are recorded for exact head 3f87bf7a4182b74ba16c52c113c67613e5f6bb41, base c4ca362e7f3efccc59eacc4fdcaa7184fe0507c1.

  • Correctness/security and collector/test soundness: gpt-6.1-sol / high, independent, read-only, no delegation or companion consultation; no actionable findings within scope.
  • UX/input/test coverage/evidence provenance: gpt-6.1-sol / high, independent and read-only; no actionable findings within scope, including all21 actual published PNGs.

Reviewers verified source/APK splits,296 public hashes,249 current source hashes,525 retained capture hashes and the bounded claims. They inspected retained tests/builds rather than executing them. Root separately reverified the unchanged clean checkout, current source/public Git bytes, successful exact-head local/android58146385516 and actual pull_request Android run42026037454.

Current scoped results remain23 positives/seven cohorts/108 restoration checks, two intended negatives/zero passes/29 checks, and13 final read-only preservation checks. System-IME failures, original pre-probe history uncertainty, zero-result Japanese limits, private-original/cross-boot and broader platform/parity exclusions remain explicit. The change corrects test contracts/fixtures; production code/assets are unchanged. Expected-head merge verification is the final step.

@moikdev
moikdev merged commit d8d8978 into main Nov 5, 2026
2 checks passed

moikdev commented Nov 5, 2026

Copy link
Copy Markdown
Owner Author

PR #109 merged as d8d8978ba63379e332cbef013fa909ea930075da using expected head 3f87bf7a4182b74ba16c52c113c67613e5f6bb41. Root independently verified both parents and merge tree e1e90ae1d5385c70b3f6b073e31ec7fd9ea5f3f7, identical to the reviewed head. Both required independent gpt-6.1-sol/high full-head audits cleared within scope; exact-head Android run42026037454 and local/android58146385516 succeeded. Review conclusions are recorded in COMMENT review5784970043. Issue#108 closed; #69 remains open. Production behavior/assets are unchanged, and the documented system-IME, pre-probe-history, physical/OEM/accessibility and signing limits remain. Watch stopped. Next intake: explicit touch Clear search affordances under the broader touch/readability goal.

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.

Separate exact native text content from IME decoration in API26 compatibility checks

1 participant