Skip to content

Acquire widget keyboard focus only for explicit user intent - #117

Draft
xandreeddev wants to merge 14 commits into
mainfrom
fix/lucent-widget-keyboard-intent
Draft

xandreeddev wants to merge 14 commits into
mainfrom
fix/lucent-widget-keyboard-intent

Conversation

@xandreeddev

@xandreeddev xandreeddev commented Oct 27, 2026 •

Copy link
Copy Markdown
Owner

Closing notification history can let a passive desktop widget reclaim keyboard focus before a cold browser receives keys. This change separates keyboard capability, explicit user demand and native ownership. The framework performs one-shot acquisition and verifies retention after grab teardown; caret/focus paint follows actual keyboard activity. Domain ports remain independent of native objects and secure clients opt out.

The original ba5 cold-browser pointer and Tab/Enter routes pass, including trusted keyboard input and all nine cleanup checks per case. This PR remains a draft: fast inline-widget acquisition, outside handoff and reacquisition still need a valid complete native trial. The earlier held-button/completed-click failures retain their exact outcomes; their guest delivery order was not measured.

Validation on source ba5b8a51:

  • Arch40433468095 passes 17 stages, 880 targeted tests, 94 named regressions and a genuine 121-input/480-image software-Vulkan catalogue. Coherent six-client/root-greeter deployment preserves settings/security.
  • Both original canonical cold URI cases pass three feature checks, one trusted unmodified nonrepeat KeyA and nine cleanup checks each.
  • Native lock/PAM V3 passes six checks, including new compositor acknowledgement, exact native locker, authenticated unlock, retained same-invocation clean exit and wallpaper resume. Earlier failed attempts remain preserved.

The separately compiled/deployed d77 control-flush candidate passes 17 stages/885 tests/99 named regressions and fresh export. Its original cold URI pointer and Tab/Enter cases also pass all three feature/nine cleanup checks each. A completed Notes click delivers the first key and normal undo. The later closed V10 diagnostic establishes a test-transport problem: the guest receives the outside KeyA 4.332 ms before the tablet press, and the pointer never reaches the browser. This does not establish a Lucent focus failure or infer earlier trials' guest order. The observer closes both descriptors; eight cleanup checks pass but original-cursor restoration fails, with no later recovery claimed. Correct physical pointer preparation and retesting remain pending. d77 source/captures are not promoted into this ba5 PR.

Still missing: valid fast first-key/outside/reacquisition acceptance; secure pixels/login and suspend regression; eligible normal memory at or below 300 MiB; source-rate/60 FPS and smooth interaction measurements; physical-device and broader application coverage. Source-specific reports and historical flags remain unchanged. No full-goal or performance acceptance is claimed.

Add prepared-hit press observers, typed one-shot native focus requests, and exact lifetime focus observations. Track pending and acknowledged widget ownership per member and output, clear foreground or lost ownership, and never restore demand merely because a panel closes. Keep native acquisition integration separate until the coherent candidate is built and tested.
Use exact prepared input and native lifetime identity, preserve last presented state for keyboard policy commits, and verify retained focus after releasing the optional protocol grab. Add source-authored callback, ordering, retirement and presentation-state regressions; local Cargo and native execution remain pending.

This branch has not been deployed

No deployments
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