Skip to content

Fix screen-reader action feedback#338

Merged
baixiangcpp merged 1 commit into
mainfrom
fix/issue-263-nvda-action-feedback
Jul 16, 2026
Merged

Fix screen-reader action feedback#338
baixiangcpp merged 1 commit into
mainfrom
fix/issue-263-nvda-action-feedback

Conversation

@baixiangcpp

Copy link
Copy Markdown
Owner

Summary

  • prevent JSON Format/Minify from announcing success when parsing fails, cancel stale worker results on input/tree replacement, and route real Monaco shortcuts through the shared action toolbar
  • make toolbar async state safe for concurrent actions and preserve newer announcements when older Promise actions settle
  • remove duplicate toast and external-request announcements while preserving first-interaction visual feedback through a performance-safe dynamic toaster queue
  • add regression coverage for invalid/success actions, Monaco propagation, stale workers, concurrent actions, Strict Mode toast replay, single-node external status, and first-copy smoke behavior

Real assistive-technology evidence

Validated the final candidate on Windows with NVDA 2026.1.1 and Chrome 150.0.7871.46:

  • invalid Format and Minify: detailed JSON alert announced once; no contradictory completed announcement
  • valid Format and Minify: success announced once
  • real Monaco Ctrl+Enter / Ctrl+Shift+Enter: action ran, success announced once, and no newline was inserted
  • JSON Copy: success announced once from Sonner, without mirror/toolbar duplication
  • Pipeline sample/run: template, run log, and completion announcements each occurred once
  • YouTube external-request Sample/confirmation: Permission and Ready messages each occurred once from a single text-node live source; no external request was made

Only the minimal target time windows will be posted to the issue. The full NVDA log is intentionally not uploaded because it contains unrelated desktop-session output.

Validation

  • npm run lint (0 errors; one warning in generated coverage/block-navigation.js)
  • npm test (319 files; 1733 passed, 3 skipped)
  • npm run test:coverage -- --maxWorkers=4 (83.06% statements, 72.55% branches, 89.89% functions, 86.5% lines)
  • npm run validate
  • npm run build
  • npm run test:e2e:smoke
  • npm run test:e2e:pwa
  • independent multi-pass diff review: no remaining actionable finding

Closure boundary

Refs #263. Keep the issue open: this desktop NVDA pass does not substitute for the required physical Android TalkBack or iOS VoiceOver evidence.

@baixiangcpp

Copy link
Copy Markdown
Owner Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Keep it up!

Reviewed commit: adf4a4b66b

ℹ️ 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".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

@cloudflare-workers-and-pages

Copy link
Copy Markdown

Deploying byteflow with  Cloudflare Pages  Cloudflare Pages

Latest commit: adf4a4b
Status: ✅  Deploy successful!
Preview URL: https://0e905633.byteflow-c58.pages.dev
Branch Preview URL: https://fix-issue-263-nvda-action-fe.byteflow-c58.pages.dev

View logs

@baixiangcpp
baixiangcpp merged commit f87ad34 into main Jul 16, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant