JesseRWeigel / JesseRWeigel/battlemath
Add an untimed accessible practice mode
- 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
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