Some apps (Electron/Chromium, games, certain web text surfaces) don't expose AX text values reliably. FocusSnapshotResolver walks AX for prefix text; when the walk yields nothing usable, we lose the ability to suggest. Maintain a per-field prefix buffer driven by the existing CGEventTap keyDown stream, used as a fallback when the AX prefix is empty.
Acceptance
Parent: #16
Some apps (Electron/Chromium, games, certain web text surfaces) don't expose AX text values reliably.
FocusSnapshotResolverwalks AX for prefix text; when the walk yields nothing usable, we lose the ability to suggest. Maintain a per-field prefix buffer driven by the existingCGEventTapkeyDown stream, used as a fallback when the AX prefix is empty.Acceptance
prefixText.Parent: #16