Problem
Every page invents its own way to report errors (inline string under the upload box, an amber banner on /terminal, an alert() in /playground's reset action). There is no app-wide toast/snackbar, so concurrent errors collide and silent successes have no positive feedback.
Acceptance Criteria
Pointers
Difficulty
Easy. No external dependency needed.
Problem
Every page invents its own way to report errors (inline string under the upload box, an amber banner on
/terminal, analert()in/playground's reset action). There is no app-wide toast/snackbar, so concurrent errors collide and silent successes have no positive feedback.Acceptance Criteria
<ToastProvider>(no library required — ~50 LOC) infrontend/app/providers/useToast()hook withtoast.error(),toast.success(),toast.info()/scan,/dashboard,/playground,/terminalwith toast callsPointers
confirm()/alert()usage)Difficulty
Easy. No external dependency needed.