Problem: `navigate_problem` only called `views.disable()` for the `'run'` panel; interactive and stress terminals were left alive when stepping through problems with `:CP next/prev`. In-flight `run_io_view` callbacks were also not invalidated since `is_new_contest` stays false for same-contest navigation, so the generation-counter guard in `setup_contest` never fired. Solution: call `cancel_io_view()` unconditionally in `navigate_problem` and expand the panel dispatch to cover `'interactive'` and `'stress'` alongside `'run'`, mirroring the contest-switch logic in `setup_contest`. |
||
|---|---|---|
| .. | ||
| cp | ||