orca/config
Jinjing 544bca5202
fix: terminal IME candidate selection and text commit on Linux (#7634)
* fix terminal IME candidate selection and text commit on Linux

Sogou Pinyin and fcitx on Linux failed in Orca's terminal because bare
229 keydowns were swallowed, and empty composition updates prematurely
deactivated tracking. This led to dropped Chinese text or leaked Space/digit
candidate-selection keys reaching the PTY.

- Allow bare 229 keydowns to bypass suppression on Linux so xterm can diff
  and commit text.
- Prevent empty compositionupdate events from prematurely deactivating
  the composition tracker.
- Suppress and preventDefault candidate-selection keys (Space and digits)
  during active composition and a brief post-composition window.
- Add comprehensive unit tests and an Electron CDP-driven E2E repro.

* fix: register IME gate command as direct spec-file invocation

The reliability-gate checker rejects --grep title selectors and requires
every evidenceRun command to match a gate command. Drop the --grep from
the e2e gate command and its evidence run, and remove the stale 3-file
evidence run superseded by the full 7-file run.

Co-authored-by: Orca <help@stably.ai>

* Guard overlapping and post-composition Linux IME candidate keys

- Track pending candidate key releases in a Map instead of a single
  slot to support overlapping selector key events without stranding.
- Apply the candidate selection guard to post-composition key releases
  that arrive after compositionend, preventing digits/Space from
  leaking into the PTY.
- Restrict the Linux/Sogou candidate selection guard to Linux to
  prevent interference on macOS and Windows.
- Exclude Shift+Space from candidate selection key checks.

* Guard held-key IME candidate repeats and scope policy to desktop Linux

- Keep auto-repeat keydowns for a candidate key suppressed past the
  250ms guard window until its corresponding keyup event is received.
- Clear stale pending releases on fresh non-repeat keydowns to avoid
  guarding the wrong key events.
- Exclude Android and ChromeOS user agents from desktop Linux-specific
  IME candidate key suppression behaviors.
- Ensure the composition tracker is activated unconditionally on
  compositionupdate events.

* Clean up IME reference and extract shared test event fixture

- Remove the obsolete Linux Sogou Pinyin IME reference document.
- Extract the fully-defaulted XtermBypassEvent helper into a shared
  fixture file to keep the policy test suites in sync.
- Add a test verifying that Shift+Space (fcitx full-/half-width toggle)
  is not suppressed as an IME candidate key.

---------

Co-authored-by: Orca <help@stably.ai>
2026-07-06 22:03:39 -07:00
..
patches revert: back out the Windows terminal update-survival chain (#7421→#7499) (#7505) 2026-07-05 22:50:48 -07:00
scripts Add max-lines ratchet CI gate to block new line-limit bypasses (#7608) 2026-07-06 17:12:27 -07:00
dev-app-update.yml
electron-builder.config.cjs revert: back out the Windows terminal update-survival chain (#7421→#7499) (#7505) 2026-07-05 22:50:48 -07:00
localization-audit.md Improve localization catalog sync workflow (#5110) 2026-06-10 11:13:01 -07:00
localization-coverage-allowlist.json Add English localization infrastructure (#4995) 2026-06-09 10:43:04 -07:00
max-lines-baseline.txt Add max-lines ratchet CI gate to block new line-limit bypasses (#7608) 2026-07-06 17:12:27 -07:00
oxlint-react-doctor.json chore: gate high-signal react doctor rules 2026-05-31 22:35:15 -07:00
oxlint-switch-exhaustiveness.json chore: enforce exhaustive switch handling 2026-05-30 13:18:12 -07:00
packaged-runtime-node-modules.cjs Fix Windows bundled ConPTY packaging (#6968) 2026-06-30 18:05:38 -07:00
reliability-gates.jsonc fix: terminal IME candidate selection and text commit on Linux (#7634) 2026-07-06 22:03:39 -07:00
tsconfig.cli.json Fix Codex config paths in managed runtime home (#7157) 2026-07-02 17:01:41 -07:00
tsconfig.node.json
tsconfig.relay.json Support agent status hooks over SSH (#1865) 2026-05-14 16:06:23 -07:00
tsconfig.tc.cli.json
tsconfig.tc.web.json Show and Filter Automation-Created Workspaces (#5697) 2026-06-18 13:05:57 -07:00
tsconfig.web.json chore: enforce exhaustive switch handling 2026-05-30 13:18:12 -07:00
vitest.config.ts chore(lint): upgrade oxlint to 1.71 + enable 7 new rules (autofixed backlog) (#6841) 2026-06-29 22:38:29 -07:00