Skip to content

Cotabby for Windows v0.3.1-doubletap-test — double-tap Tab acceptance (test build)

Pre-release
Pre-release

Choose a tag to compare

@pupontech pupontech released this 14 Oct 13:18

Cotabby for Windows — double-tap Tab acceptance (test build)

This is a test build for owner validation, not a stable release. It is a
prerelease and does not replace v0.3.0 as the latest stable download.

Source

  • Commit: 39a300ca8b82e0a42a9d061ae4bcb1b8782079ad (branch codex/upstream-double-tap, draft PR #4)
  • Ports upstream FuJacob/cotabby #840 double-tap acceptance.
  • Zip sha256: 02425a7573ed82c1dc7d1de10651c1b1b79f73ea89243ad2ca83e3e59a68a3fc

What is new

  • Opt-in double-tap Tab: Settings → Shortcuts → Accept Entire Suggestion → Double-tap Tab.
    The first Tab accepts a word or phrase immediately; a second distinct Tab within 300 ms
    accepts the remainder of the same suggestion, once. Repeats stay word-by-word, and moving
    the pair is retired by any intervening key, session change, focus change or settings change.
  • Shift+Tab stays navigation (upstream matches the accept key by keycode plus the whole
    modifier set), so a reverse-navigation key press reaches the app instead of being eaten.
  • Acceptance is serialized and honest. A queued second press is resolved against the live
    suggestion instead of being discarded; the 300 ms window is measured from the physical key
    events; a word boundary is derived from confirmed insertions rather than a lagging
    accessibility read; and an insertion that landed but could not be committed is reported as
    such instead of as a refusal.
  • Failed insertions do not advance or arm the suggestion, the acceptance queue recovers
    from a processor fault, and disposal completes every captured key exactly once.
  • Field identity now uses the UI Automation runtime id, and a field whose provider exposes
    none is treated as unproven rather than unowned, so double-tap still works there.

Verified

  • 274 portable tests pass; Windows CI run
    38570074952 on this exact
    commit passed tests, compilation and packaging.
  • Windows CI also runs the real keyboard hook and UI Automation against WPF fixtures: 9/9 cases
    (double tap, held key, unowned Tab, Shift+Tab, cross-process and same-process focus change, held
    dispatcher, stale snapshot).
  • Credential-field privacy proof (real UIA) and native CPU runtime load passed; every packaged byte
    is hashed in PACKAGE-MANIFEST.json, and the extracted ZIP was verified member by member.

About this publication

  • Published as a prerelease from the branch commit above (draft PR #4), not from main; it does not
    replace v0.3.0 as the latest stable download. No merge and no stable tag were performed.
  • The repository's tag-triggered Release Windows build workflow is intentionally not used for this
    test tag: it requires the VERSION file to equal the tag, which a -test tag cannot satisfy. The asset
    here is the artifact of the green verification run on this exact commit, byte-verified before upload.

Known limits — please read before testing

  • A Tab captured by the accept path whose insertion is then refused is NOT replayed. That key
    press is reported, not re-delivered: the app may miss it. This is deliberate; a safe replay path
    does not exist yet.
  • The synthetic hook proof uses a fixture-directed insertion adapter and injected keys. It is not
    proof for the production SendInput inserter or for physically held keys.
  • Live model suggestions, GPU behaviour and real host applications are not verified by
    automation and need owner testing.
  • Global opt-in on the Tab key only: no per-app shortcut overrides, no typing-history collection.
    Selecting Double-tap Tab replaces the previous full-accept key choice rather than keeping it dormant.

How to test

  1. Extract the complete ZIP into a new folder and keep runtimes\win-x64 beside Cotabby.exe.
  2. Run Cotabby.exe as a standard user (no .NET install needed); your existing settings and model
    cache are used.
  3. Settings → Shortcuts → choose Double-tap Tab, then in a normal text field try: one Tab, two
    quick Tabs, holding Tab, two slow Tabs, and Shift+Tab.
  4. Check C:\tmp\cotabby-live.log for model load and a constrained decode. Do not share the raw log —
    it can contain your typed text.