Skip to content

Fix Android IME rollover and stabilize deferred theme E2E - #211

Merged
bifrost0x merged 2 commits into
mainfrom
dev/fix-deferred-theme-e2e-race
Sep 8, 2026
Merged

Fix Android IME rollover and stabilize deferred theme E2E#211
bifrost0x merged 2 commits into
mainfrom
dev/fix-deferred-theme-e2e-race

Conversation

@bifrost0x

@bifrost0x bifrost0x commented Sep 8, 2026

Copy link
Copy Markdown
Owner

Summary

  • wait for the deferred auth-theme background readiness signal before inspecting computed styles
  • preserve the intentional idle-time background loading behavior
  • handle Android IME input-before-keydown rollover without replaying text through xterm
  • keep normal composition, Backspace, modified shortcuts, and screen-reader input on their existing paths

Root causes

Deferred theme assertion

The test waited for the stored paper theme but immediately inspected the deferred background image. On a busy runner, requestIdleCallback had not yet added data-theme-background-ready, so the assertion saw the intended temporary none value. The failure trace showed the background request succeeding immediately after the assertion failed.

Android IME rollover

Some Android IMEs can emit an insertText input event before a keydown with key code 229 and without composition events. xterm then schedules its own textarea-diff fallback and can replay stale text, producing duplicated or truncated terminal input. The guard now observes that ordering before xterm capture handling and suppresses only the paired fallback keydown.

Testing

  • all JavaScript tests: 40 passed
  • complete theme-system.spec.js: 6 passed
  • Android composition and input-before-keydown browser regressions: 2 passed
  • terminal selection and 360px mobile workspace browser regressions: 2 passed
  • ESLint on all changed JavaScript and E2E files
  • git diff --check

Validation boundary

The Android regression is covered through the real xterm browser integration in Chromium. It has not yet been verified on a physical OnePlus Pad 3 running Android 16 and Brave.

Failure reference: https://github.com/bifrost0x/webssh/actions/runs/34197698324

Fixes #210

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 8, 2026

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review Completed 2026-09-08T07:23:36.839091Z d81a071 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@bifrost0x bifrost0x changed the title Stabilize deferred theme background E2E assertion Fix Android IME rollover and stabilize deferred theme E2E Sep 8, 2026
@bifrost0x
bifrost0x merged commit dfe3477 into main Sep 8, 2026
21 checks passed
@bifrost0x
bifrost0x deleted the dev/fix-deferred-theme-e2e-race branch September 8, 2026 07:34
@github-project-automation github-project-automation Bot moved this from Backlog to Done in WebSSH Roadmap Sep 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

Issue #196 not fixed

1 participant