Skip to content

Package Windows beta feedback UI gates#494

Closed
Cooper-X-Oak wants to merge 1 commit into
Open-Less:betafrom
Cooper-X-Oak:codex/windows-beta-low-conflict
Closed

Package Windows beta feedback UI gates#494
Cooper-X-Oak wants to merge 1 commit into
Open-Less:betafrom
Cooper-X-Oak:codex/windows-beta-low-conflict

Conversation

@Cooper-X-Oak
Copy link
Copy Markdown
Contributor

@Cooper-X-Oak Cooper-X-Oak commented May 18, 2026

User description

Parent

#478

Scope

This PR packages the low-conflict Windows beta feedback slices that can be reviewed independently of #490 / #492:

What changed

  • Added a Windows IME restore contract gate that locks the saved-profile restore symmetry and cleanup paths for success, fallback, cancel, and error flows.
  • Scoped the Windows main window to an internal opaque canvas while preserving capsule / QA transparency and non-Windows vibrancy behavior.
  • Added a SelectLite contract gate proving Windows-facing settings surfaces no longer render native <select> controls and that SelectLite keeps expected keyboard / portal / accessibility behavior.
  • Added a local Qwen long-input contract gate for the existing tail-silence padding and dynamic timeout protections.
  • Added a scoped Recording settings warning for Windows + Right Ctrl + Push-to-talk, based on the [hotkey/policy] 说明右 Ctrl 占用策略并提供替代路径 #485 maintainer decision to keep current behavior/defaults and recommend Toggle as the workaround.

Out of scope

Evidence

Issue evidence already posted during triage:

Validation

Run from openless-all/app:

node .\scripts\windows-ime-restore.test.mjs
node .\scripts\windows-main-opaque-canvas.test.mjs
node .\scripts\windows-selectlite-contract.test.mjs
node .\scripts\long-input-local-qwen-contract.test.mjs
node .\scripts\windows-right-ctrl-policy.test.mjs
npm run build

Additional packaging gate:

git diff --check

All passed locally. npm run build emitted only the existing Vite dynamic-import / chunk-size warnings.

Cross-agent coordination

This branch was created in a separate worktree from #490's fix/windows-handoff-core branch. Scope gate confirmed this PR does not include #490-owned Rust/updater/startup files and does not include the #480 coordinator QA slice.


PR Type

Bug fix, Enhancement, Tests


Description

  • Add Windows IME restore contracts

    • Cover success, fallback, cancel, error
  • Mark main window opaque on Windows

    • Keep capsule and QA transparent
  • Warn about Right Ctrl conflicts

    • Localize the recording-mode notice
  • Lock SelectLite and ASR behavior

    • Prevent native selects and timeout regressions

Diagram Walkthrough

flowchart LR
  Hotkey["Windows recording hotkey"] -- "capture / restore" --> IME["IME session restore"]
  IME -- "submit / fallback / cancel" --> Dictation["Dictation lifecycle"]
  Main["main.tsx + global.css"] -- "platform window flags" --> Canvas["Opaque Windows canvas"]
  Settings["Settings warning"] -- "Right Ctrl hold notice" --> Users["Safer shortcut choice"]
  Select["SelectLite contract"] -- "no native <select>" --> UI["Windows-facing settings UI"]
  ASR["Local Qwen contract"] -- "dynamic timeout" --> Dictation
Loading

File Walkthrough

Relevant files
Enhancement
7 files
en.ts
Add Right Ctrl warning translations                                           
+2/-0     
ja.ts
Add Right Ctrl warning translations                                           
+2/-0     
ko.ts
Add Right Ctrl warning translations                                           
+2/-0     
zh-CN.ts
Add Right Ctrl warning translations                                           
+2/-0     
zh-TW.ts
Add Right Ctrl warning translations                                           
+2/-0     
main.tsx
Set window kind and platform markers                                         
+8/-0     
Settings.tsx
Show Right Ctrl conflict warning                                                 
+23/-0   
Bug fix
1 files
global.css
Use opaque Windows main canvas                                                     
+6/-0     
Tests
5 files
long-input-local-qwen-contract.test.mjs
Validate local Qwen timeout contract                                         
+98/-0   
windows-ime-restore.test.mjs
Validate Windows IME restore lifecycle                                     
+207/-0 
windows-main-opaque-canvas.test.mjs
Validate opaque Windows main canvas                                           
+23/-0   
windows-right-ctrl-policy.test.mjs
Validate Right Ctrl warning policy                                             
+34/-0   
windows-selectlite-contract.test.mjs
Validate SelectLite and native select                                       
+70/-0   

@github-actions
Copy link
Copy Markdown

PR Reviewer Guide 🔍

Here are some key observations to aid the review process:

🎫 Ticket compliance analysis 🔶

480 - Partially compliant

Compliant requirements:

  • None

Non-compliant requirements:

Requires further human verification:

  • Windows smoke-suite and manual lifecycle repros are needed to confirm behavior end-to-end.

481 - Partially compliant

Compliant requirements:

  • None

Non-compliant requirements:

  • No visible code changes implement IME/profile capture or restore.
  • No visible code changes cover success, fallback, cancel, or error restore paths.
  • No visible code changes add Windows API-level restore failure logging.

Requires further human verification:

  • WeChat IME behavior and Windows 10 22H2 restoration need manual verification.

483 - Partially compliant

Compliant requirements:

  • None

Non-compliant requirements:

  • No visible code changes replace any native <select> with SelectLite.
  • No visible code changes implement or update the dropdown interaction surface itself.

Requires further human verification:

  • The actual Windows and macOS dropdown behavior still needs UI validation.
  • The contract-test coverage should be run against the real pages to confirm the intended surfaces are wired up.
⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
🧪 PR contains tests
🔒 No security concerns identified
⚡ No major issues detected

@Cooper-X-Oak
Copy link
Copy Markdown
Contributor Author

Closing per author request. I am pausing involvement with this project for now.

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