Summary
main.tsx wraps App in ToastProvider and RouteProgressBar, and App.tsx renders its own ToastProvider and RouteProgressBar again. Components inside App use the inner provider, so two toast regions and two progress bars exist.
Why this matters
Duplicate aria-live 'Notifications' regions confuse screen readers, and two progress bars can animate simultaneously.
Scope
Keep one ToastProvider and one RouteProgressBar at the root (main.tsx) and remove the copies from App.tsx. Verify useToast consumers still work.
Relevant code in CalloraOrg/Callora-Frontend:
src/main.tsx
src/App.tsx
src/components/Toast.tsx
src/components/RouteProgressBar.tsx
Priority
Medium
Acceptance criteria
- Only one element with aria-label='Notifications' exists
- Only one RouteProgressBar renders
- Toasts still appear from App routes
- RouteProgressBar tests pass
Validation
npm test -- --run src/components/RouteProgressBar.test.tsx src/components/TopProgressBar.test.tsx
Non-goals
- Typo-only, formatting-only, or cosmetic changes.
- Unrelated refactors, dependency upgrades, or broad rewrites.
- Removing safeguards or weakening validation to make tests pass.
Contributor application
Before coding, describe the affected modules, proposed state/invariant changes, test strategy, compatibility considerations, and an estimate. Wait for assignment before starting implementation.
PR requirements
Use a feature branch and include Closes #<issue-number>. Address every criterion, map criteria to code and tests, explain security and failure-mode handling, and ensure CI passes.
Quality review
A maintainer will assess correctness, completeness, test depth, compatibility, observability, and adverse-case handling. A substantive implementation is required; merge or CI status alone does not guarantee reward eligibility.
Generated by Claude Code
Summary
main.tsx wraps App in ToastProvider and RouteProgressBar, and App.tsx renders its own ToastProvider and RouteProgressBar again. Components inside App use the inner provider, so two toast regions and two progress bars exist.
Why this matters
Duplicate aria-live 'Notifications' regions confuse screen readers, and two progress bars can animate simultaneously.
Scope
Keep one ToastProvider and one RouteProgressBar at the root (main.tsx) and remove the copies from App.tsx. Verify useToast consumers still work.
Relevant code in CalloraOrg/Callora-Frontend:
src/main.tsxsrc/App.tsxsrc/components/Toast.tsxsrc/components/RouteProgressBar.tsxPriority
Medium
Acceptance criteria
Validation
npm test -- --run src/components/RouteProgressBar.test.tsx src/components/TopProgressBar.test.tsx
Non-goals
Contributor application
Before coding, describe the affected modules, proposed state/invariant changes, test strategy, compatibility considerations, and an estimate. Wait for assignment before starting implementation.
PR requirements
Use a feature branch and include
Closes #<issue-number>. Address every criterion, map criteria to code and tests, explain security and failure-mode handling, and ensure CI passes.Quality review
A maintainer will assess correctness, completeness, test depth, compatibility, observability, and adverse-case handling. A substantive implementation is required; merge or CI status alone does not guarantee reward eligibility.
Generated by Claude Code