JesseRWeigel / JesseRWeigel/battlemath

Add an untimed accessible practice mode

Open
#213 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
37
Forks
29
PR merge metrics
No merged PRs in 30d

Description

## Priority

P2 — focused reliability or product improvement

## Context

Portfolio audit follow-up (2026-09-08). The portfolio recommendation is a focused practice workflow that helps learners who need more time. Existing speed-based stars and points should not make accessible practice feel like failure. This extends the prior accessibility work rather than reopening it without evidence.

## Starting points / evidence

Start with `src/AppReducer.ts` calculatePoints/calculateStars and existing accessibility settings. Coordinate with #166 for progress reporting.

## Implementation scope

Expose an untimed practice option in the existing mode/settings UI. Remove speed pressure and time penalties in that mode while retaining deterministic answer feedback and skill practice. Ensure keyboard/screen-reader operation and reduced-motion preferences work through a complete session.

## Acceptance criteria

- [ ] Untimed mode is visible, persists and can be changed without losing progress.
- [ ] Equal correct answers receive equivalent practice credit regardless of response time.
- [ ] Timed and untimed records are distinguishable so analytics do not compare incompatible scores.
- [ ] Keyboard-only completion and screen-reader feedback are manually checked and documented.
- [ ] No essential information depends solely on color, animation or audio.

Keep the change focused on this issue. Use synthetic fixtures for sensitive data and mocked providers for automated tests; do not require paid model calls to run the regression suite.

Contributor guide

Open the contributing guide

Research direction

Start with src/AppReducer.ts, especially calculatePoints/calculateStars, then trace the existing accessibility settings and mode/settings UI. Coordinate progress reporting with #166 and verify the complete session using keyboard-only and screen-reader checks. Done means untimed progress persists, avoids time-based penalties, remains distinguishable from timed records, and meets the stated accessibility criteria.

Written by the indexing model from the issue text.

Assessment

Tech stack
react, typescript
Domain
accessibility, frontend, testing-qa
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
58/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.