Skip to content

wasm: separate browser text commits, IME composition and keyboard shortcuts #407

Description

@subinium

Priority: P2
Evidence: Trusted Chrome Cmd+V reproduction; physical OS IME remains untested
Baseline: v0.23.0 source 37933f9, audited 2026-09-05. Native execution/compile probes used Rust 1.98.0 on aarch64 macOS unless explicitly stated otherwise.

Problem and Reproduction

A paste listener exists, but every recognized keydown is prevented, including Cmd/Ctrl+V. In a controlled Chrome clipboard test a plain focusable host receives1 paste, while the current cancellation policy receives0. There is no composition/beforeinput/input bridge; synthetic composing Enter is treated as a normal key. Synthetic composition is not proof of physical Korean/Japanese IME behavior.

crates/slt-wasm/src/lib.rs:476 · crates/slt-wasm/src/lib.rs:717 · crates/slt-wasm/src/lib.rs:894

Scope

  • Preserve native paste generation and commit browser text exactly once.
  • Separate navigation/shortcuts from composition and input commits; add a focused editable sink if needed.
  • Define focus ownership, caret placement and browser copy/cut capability boundaries.

Expected Effect

Make normal paste and multilingual browser text entry usable without accidental form submission or duplicated characters.

Acceptance Criteria

  • Trusted shortcut paste and context-menu paste produce identical content once.
  • Record physical Korean/Japanese IME, dead keys, emoji, cancellation and confirming Enter behavior.
  • No double insertion across keydown/input and no intermediate composition keys delivered as commands.
  • Two mounts plus a normal page input preserve outside browser shortcuts and focus transfer.
  • Follow the repository quality gates and the evidence rules in tracking: post-v0.23 correctness, resource efficiency and WASM completion #366; record actual results rather than treating a proposed test as passed.

Boundaries and Dependencies

Do not request arbitrary clipboard-read permission as a paste fix. Existing OSC52 copy API is terminal-specific, not a broken browser clipboard promise.

Related closed work: #298. This is a scoped follow-up at the audit baseline, not a claim that every prior fix is absent.

Tracking: #367; overall audit #366. This issue records unresolved work, not an implemented fix.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:wasmBrowser/WASM backend, integration and companion publicationbugSomething isn't workingseverity:criticalIncorrect logic or significant bugtype:bugCorrectness: panic, wrong logic, unexpected behavior

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions