Skip to content

Add an accessible screen-reader rendering mode #5

Description

@AlexSkrypnyk

Summary

Add an accessible rendering mode that presents a form as a linear sequence of plain text prompts for screen-reader and assistive-technology users, instead of the full-screen panel repaint.

Details

The interactive panel TUI redraws the whole viewport on every change. Full-screen repaint is hostile to screen readers, which re-read the entire screen on each repaint, so assistive-technology users cannot practically complete a panel form today.

Add an accessible mode that renders the same form as a linear, one-question-at-a-time sequence of plain, self-contained text prompts, each echoed as ordinary output lines. It should reuse the existing validation, derived-value, conditional-field, fix-up and provenance logic so only the presentation layer differs: a form defined once is answerable in either mode with no separate definition.

Enable it explicitly with a form-level option and implicitly via an environment variable, alongside the existing Unicode/ASCII and NO_COLOR display-mode switches.

Acceptance criteria

  • A form-level option (and an environment variable) selects accessible mode.
  • In accessible mode each field is presented as a discrete, linear prompt with no full-screen repaint or cursor addressing.
  • Validation, required, default, derived, conditional and fix-up behaviour match the interactive mode; the resulting Answers (values and provenance) are identical for identical input.
  • Every widget type degrades to a sensible linear prompt in accessible mode.
  • Behaviour is covered by unit tests, including provenance parity with interactive collection.
  • The mode is documented in the README display-modes section.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions