* fix(dashboard): repair certificates tab handler so main can build
#854 left a duplicated, unclosed handleActiveTabChange that made the dashboard production build fail with a Svelte parse error. Keep the active tab in local state and sync the query string with replaceState so UnsavedChanges is not triggered.
Co-authored-by: best <[email protected]>
* fix(dashboard): resync certificate tab when the course page is reused
SvelteKit reuses courses/[id]/certificates across course ids, so a one-time tab initializer could stick. Resync from page.url in $effect.pre without reading local tab state, since replaceState does not update page.url.
Co-authored-by: best <[email protected]>
---------