Skip to content

fix(firefox): remove pre-supplied stdin and require live terminal input #57

Closed

Description

@kbuffardi

Follow-up to issue #55 and PR #56.

PR #56 added Firefox JSPI live stdin but retained pre-supplied/buffered stdin. Remove that fallback entirely. Firefox must use live canonical terminal input when worker-side JSPI is available; otherwise it must report stdin unsupported without opening a dialog. Chromium must retain its SharedArrayBuffer live stdin path.

Out of scope: filesystem persistence/write-back, directory restoration, raw PTY behavior, and Chromium stdin redesign.

Plan-agent plan will be added as a comment.

Activity

  1. kbuffardi commented on Aug 1, 2026

    @kbuffardi
    OwnerAuthor

    Plan (prepared by plan-agent)

    Contract and transport

    1. Remove stdinMode: buffered and stdinBuffer from the run contract; reject buffered requests and preserve only interactive, interactive-message, and none.
    2. Keep Chromium on SharedArrayBuffer/Atomics. Select Firefox interactive-message only when Firefox meets the support floor and the compiler worker confirms JSPI.
    3. When live stdin is unavailable, report a clear unsupported-runtime message and do not open a pre-supplied-input dialog or post a run request.

    Removal and implementation

    1. Delete the buffered stdin dialog module, markup, styles, imports, and tests. Remove buffered branches from terminal, WASI, worker validation, compatibility reporting, package scripts, README, and Firefox acceptance/release docs.
    2. Preserve JSPI queued stdin, prompt-by-prompt UTF-8 line delivery, EOF, Ctrl+C cleanup, stale-session rejection, and clean reruns. Keep filesystem persistence/write-back out of scope.

    Tests and acceptance

    1. Update contract, WASI, terminal-stop, Firefox compatibility, and JSPI tests to prove buffered input is rejected, no dialog exists, Firefox without JSPI is unsupported, Firefox with JSPI uses live input, and Chromium remains unchanged.
    2. Validate with lint, build, E2E, Firefox/Chrome smoke tests, and real Firefox runtime evidence. Acceptance requires std::cin/getline repeated reads, Ctrl+D EOF, Ctrl+C interruption, and no pre-supplied dialog.

    Related: #55 and merged PR #56.

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

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions