Forking gave no feedback: the dialog stayed open during the (potentially
slow) fork, then silently navigated to a near-identical copy. Now the
dialog shows a "Forking session…" spinner while the fork runs, then lands
on the new session with a "Forked session" toast (or an error toast on
failure).
Mount <Toast/> once in the app shell instead of per-route, so a toast
fired around route.navigate survives the route remount.