Skip to content

Diagnose Emoji menu Back clearing the caller query #115

Open

Description

@moikdev

Part of #1/#69/#71; observed while verifying #114. Preserve the failed observation and investigate separately from the header keyboard toggle.

Observed facts: on the owned Tinycast_Tablet_API_36, physical 1920×1200 /240dpi /100% font, app SHA256 1291d0619b6f70ae90c4d25f759a444fbf32827ffa3ee36233f91006fdf8b2ac (source 411b7f73) and test APK f4925b8c25e900ed336a48f9bfdabd0358bf158818938fd4cdbd47b57b58e1a9, the Emoji callback protocol rejects stale visibility/epoch actions and rejects a Show action while the category menu is visible. After actual UiDevice.pressBack() closes that menu, the focused emoji-search exposes an empty EditableText/range(0,0), while the contract expects face. The menu-before-Back frame is captured; the post-Back text is established by the failure's native semantics dump, not a separate after-image. The launcher case passes. The whole two-case cohort remains failed 1/2, with all15 restoration checks passing. No pre-existing-code attribution or root cause is established.

Acceptance:

  • Reproduce the exact sequence with actual before/after PNG/XML and owned query/range data. Compare a simple menu-close protocol and matched historical/current APK controls where applicable; keep all failures and source/binary identities.
  • Trace actual BACK DOWN/UP, menu ownership/visibility, window/focus and caller query around dispatch and Android BackHandler delivery. Distinguish facts from inference; investigate possible multiple handling without assuming it.
  • One Back closes one active menu layer and preserves the caller's query/range. Define IME-shown behavior explicitly and preserve normal Escape/keyboard/menu navigation, touch backdrop dismissal and route return.
  • Retain the failed system-Back outcome. A passing Escape, backdrop, menu-choice or controlled-dispatch protocol earns no Back repair or cause credit.
  • Verify relevant wide/short-landscape profiles at100%/200%, modern regression and legacy scope where supported, with guarded app/APK/settings restoration.
  • Publish real commit-pinned evidence, actual local/hosted checks and two independent gpt-6.1-sol/high full-change audits; expected-head merge only. Broader Resolve API26 keyboard, IME and caller-selection compatibility failures #69/Make palette controls readable and reliable for touch and large fonts #71, OEM/TalkBack and signing limits remain open.

Activity

  1. moikdev commented on Nov 5, 2026

    @moikdev
    OwnerAuthor

    A new isolated probe now reproduces query loss on both the archived pre-toggle app 66a6965e…c524c (source 6c5825bf) and the current frozen app 98da1466…aa5de3 (source f30bebd6), using the same final test APK dc22049a…ccdf3d / fixture source 69bd578d, owned API36 tablet1920×1200 /240dpi /100%.

    The probe never activates a header keyboard control. It sets the owned face query, hides the IME as controlled setup, increments the search epoch, opens the category menu by actual pointer and calls UiDevice.pressBack(). Both positive-only runner receipts fail the exact-query assertion (0/1 each), retain before/menu/after PNG/XML/frame sets, and record query "", route emoji and IME hidden afterward. All30 restoration checks pass. This reproduces the query-loss pattern on historical code; it establishes no key-delivery cause or repair.

    UiDevice.pressBack() returned false in both observations. The raw field named injection_accepted stores that method return only; it must not be interpreted as evidence that no Back input was delivered. Actual DOWN/UP and dispatcher tracing remain required. The #114 pointer-backdrop protocol supplies no system-Back repair credit; this issue stays open.

  2. moikdev commented on Nov 5, 2026

    @moikdev
    OwnerAuthor

    New source-bound diagnosis after #116: the observation-only window callback harness (8e35be10, test SHA256 bf3c9785…7dd2fa) reproduces 0/1 query-loss failures on both archived/current pre-fix APKs, with 30 successful restoration checks. It observes no Back events at the window callback, so it establishes no delivery cause at that boundary.

    A separate tracing-only app/harness at 1dc1a1ce4460ba1401e6a0e408b8faea68b194c5 reproduces the same 0/1 failure with all 15 restoration checks. Its bounded opt-in trace records one matching native DOWN/UP pair: pre-IME DOWN changes menu_open true→false and returns handled=true; the Emoji dispatcher callback then changes query length4→0 with no menu open; the corresponding canceled UP is consumed afterward. Zero trace drops, exact window-observer and property restoration. This establishes the two actions within this captured sequence. The pinned UiAutomator2.3.0 bytecode also confirms that pressBack’s Boolean reports its accessibility-event wait, not key-delivery acceptance.

    The candidate now delegates the complete KEYCODE_BACK sequence to the existing Back dispatcher instead of dismissing in the menu key handler. The matched repaired run and broader Back/Escape/pointer/IME regression checks are still pending; no repair clearance yet. The original failed receipts remain failed.

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

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions