Skip to content

fix(installer): accessible plain setup for screen readers and the keyboard (#513) - #516

Merged
Maxaubert merged 3 commits into
mainfrom
fix/installer-screenreader-513
Oct 26, 2026
Merged

Maxaubert merged 3 commits into
mainfrom
fix/installer-screenreader-513

Conversation

@Maxaubert

Copy link
Copy Markdown
Owner

Closes #513. Field report: the installer was unusable with NVDA (custom-drawn UI, no real controls, mouse-only, licence accept was a mouse-only dead end).

  • New installer/plain.nsh: standard MUI2 pages (Welcome, Licence with real checkbox, setup page with autostart checkbox, stock install page with status/log, Finish with Run Wind + desktop shortcut). Both page sets coexist.
  • Plain mode picked in .onInit on /ACCESSIBLE, SPI_GETSCREENREADER, an NVDA window, or high contrast. Never under /S; silent installs unchanged.
  • Animated licence page: Space toggles the box, focus moved off the hidden Next, Enter before accepting explains instead of doing nothing.
  • Docs: installer/README.md, README.md, 11-build-test-release.md, VERIFICATION.md.

Verification: build.bat installer (makensis /WX + installer_check) passes; plain pages driven by Win32 messages on a non-elevated test build (real RichEdit/checkbox/tab stops, Next gated on accept). Not tested: elevated plain Finish page, real NVDA.

Open question: SPI_GETSCREENREADER reads 1 on the owner's PC with no screen reader running (some app leaves it set), so plain mode may show there.

🤖 Generated with Claude Code

https://claude.ai/code/session_01BjTV6Wj6XLqULZWUmqiVYJ

Maxaubert and others added 3 commits October 26, 2026 09:13
…board (#513)

The picture UI is pixels in one static control: NVDA has nothing to read and
the keyboard has nothing to focus, so setup was unusable with a screen reader.

- Add plain.nsh and a second page set in wind.nsi built from stock pages:
  MUI welcome, MUI licence with the full LICENSE text and a real checkbox, an
  nsDialogs page with the install folder and "Start Wind when I sign in", the
  stock install page with the log shown, and MUI finish with "Open Wind now"
  (de-elevated via explorer.exe) and "Create desktop shortcut".
- .onInit picks plain mode (WIND_PICK_PLAIN in kit.nsh) on /ACCESSIBLE,
  SPI_GETSCREENREADER, a running NVDA window or high contrast; never under /S,
  so silent installs are unchanged. Picture creators abort in plain mode, plain
  MUI pages abort via PRE otherwise.
- Plain mode skips the frameless window, media unpack, GDI+, the hidden log and
  autoclose.
- Picture licence screen: Space ticks the box, and Enter before ticking shows
  a message box (with the /ACCESSIBLE hint) instead of doing nothing.
- Document the mode in installer/README.md, README.md, chapter 11 and the
  release smoke checklist.

Closes #513

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BjTV6Wj6XLqULZWUmqiVYJ
…ce screen (#513)

NSIS leaves the keyboard focus on its hidden Next button, so the new Space
handler would tick the box and the same key-up would then click Next and
leave the page (or show the hint after an untick). Focus the canvas static
instead; Enter still reaches Next through the default button.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BjTV6Wj6XLqULZWUmqiVYJ
…ADER (#513)

Other apps leave the system screen-reader flag set with no screen reader
running, which showed the plain pages to sighted users. Plain mode now
follows a running NVDA (window or nvda.exe), JAWS (jfw.exe) or Narrator
(Narrator.exe), plus /ACCESSIBLE and high contrast.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01BjTV6Wj6XLqULZWUmqiVYJ
@Maxaubert
Maxaubert merged commit 8566da3 into main Oct 26, 2026
1 check passed
@Maxaubert
Maxaubert deleted the fix/installer-screenreader-513 branch October 26, 2026 08:37
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.

Installer unusable with a screen reader (NVDA)

1 participant