docs: describe paced typing and remaining acceptance gates

This commit is contained in:
baketnk committed 2026-09-24 23:23:11 -04:00
1 parent 9829d0611d
commit 938caa39cc
5 files changed
+44 -18

No files matched your search

+13 -7
View File
@@ -44,13 +44,19 @@ initialize OpenVR, open a microphone, run ASR, download files or inject input.
microphone device failure releases the stream for explicit retry. A cancelled
in-flight request or broken worker protocol may require reloading. No
cloud/desktop fallback.
- Gamescope IME v2 generated bindings, per-action short-lived lease, unavailable
handling, UTF-8/control validation and explicit Type + Enter action.
Type ensures a trailing space without doubling an existing one. Type + Enter
first types pending review, releases the text lease, then acquires a fresh
lease for Enter. Failed/uncertain text never proceeds to Enter; failed
Enter acquisition never replays text. If a validated transcript fills the
4096-byte bound and lacks a trailing space, Type preserves all its bytes and
- Gamescope IME v2 generated bindings and a tick-driven paced delivery queue:
at most 24 Unicode codepoints per commit, at least 150 ms between commits,
including separate actions and explicit Enter. This is a proposed workaround
for the finite temporary keymap, not a target-consumption acknowledgment. Clipboard is
untouched. The full literal is retained while pending; Cancel/Quit, focus loss
or model/debug changes discard unsent input without retry or Enter. Manual
Type captures a verified Xwayland target; Auto insert keeps its original guard.
The IME is retained only through the task and cooldown (shutdown can wait the
remaining <=150 ms). Pacing does not sleep in the UI loop, but an individual
Wayland roundtrip can still reach its bounded one-second timeout. Type adds
a trailing space if it fits, without doubling an existing one. If a validated
transcript fills the 4096-byte bound and lacks a trailing space, Type preserves
all its bytes and
queues it **without** the usual space; it does not signal a separate error.
Destination consumption and repeated-delivery behavior remain unaccepted.
- User-local installer with checked binary-archive or explicitly provisioned
+9 -4
View File
@@ -194,11 +194,16 @@ Gamescope exposes focus-display/window root properties, but their encoding and
relationship to seat focus need implementation-specific validation. Do not infer
that X display `:0` is always the destination, or that an X focus observation
identifies a native Wayland text field. For unobservable native Wayland focus,
require explicit review/Type; do not advertise safe auto-targeting.
keep the transcript in review; current paced manual Type also refuses an
unverifiable target. Do not advertise native Wayland target support.
If focus changes, keep the result in review. A fresh Type explicitly approves
the current destination and creates a new delivery authorization. Recheck again
at typing. This minimizes stale delivery but does **not** eliminate a race
Before the first send, focus failure keeps the result in review. A fresh Type
approves a currently verified Xwayland destination and creates a new delivery
authorization. The paced queue rechecks that same target before each <=24-codepoint
batch and explicit Enter, spacing commits by at least 150 ms. After a partial
send, focus failure drops the remainder and Enter without replay; it cannot
undo already queued input. The clipboard remains untouched. This minimizes stale
delivery but does **not** eliminate a race
between the final check and global input processing; do not claim otherwise.
A Wayland roundtrip means compositor processing, not application consumption.
Report `input queued`, never `message sent`.
+12 -1
View File
@@ -178,7 +178,9 @@ focus-out, root focus-property change (even if the same window returns), window
destruction, held keyboard key, missing X display or any disagreement permanently
disarms that clip. The transcript then remains for explicit review/Type.
Native Wayland focus and child text-field focus cannot be safely inferred here;
those cases fall back to review. No automatic Enter, speech commands or retry.
those cases fall back to review. Manual Type now also requires a verifiable
Xwayland target; it does not bypass an unavailable guard. No automatic Enter,
speech commands or retry.
The compositor can still change focus in the gap between the final check and
global delivery, and IME commit is not an application receipt. This path has
offline synthetic focus tests and a separate owned-target IME fixture; live
@@ -186,6 +188,15 @@ speech-driven Auto insert, target coverage and headset acceptance remain
unverified. The setting is preserved on upgrade
and a failed preference write applies only to the current session.
Delivery uses a responsive, tick-driven queue of at most 24 Unicode codepoints
per commit, with at least 150 ms between commits and before explicit Enter.
The full 4096-byte literal is preserved, including all-space batches. The same
target is checked before every batch; input blocked before the first send keeps
review, whereas partial/uncertain input is consumed and never retried. Cancel
stops remaining text and Enter; it cannot undo bytes already queued. Record and
new Type actions are disabled while pacing. The clipboard is never touched.
This source-grounded Gamescope workaround still needs long-text live acceptance.
`quick_inputs` is an editable list of 1–6 nonempty, printable ASCII strings,
each at most 64 characters. Edit the JSON file and restart; there is no headset
text editor. Inputs are literal (not expanded or interpreted by FrameYap) and