currentScenario()/currentRole() read the URL param before sessionStorage, so a
stale ?scenario=/?role= in the address bar overrode the switcher on reload
("stuck on slow"). The switcher now strips both dev params from the URL
(pure stripDevParams + history.replaceState) before reloading, so the stored
value wins.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
15 lines
666 B
TypeScript
15 lines
666 B
TypeScript
/**
|
|
* Remove the dev-only `?scenario=` and `?role=` params from a URL (WP-37). Once the
|
|
* dev switcher (debug-state) has been used, sessionStorage is the authoritative source
|
|
* for both — `currentScenario()`/`currentRole()` read the URL FIRST, so a stale param
|
|
* left in the address bar would override the switcher on reload (the "stuck on slow"
|
|
* bug). Stripping the params before reload lets the stored value win. Pure: returns the
|
|
* rewritten href, mutates nothing.
|
|
*/
|
|
export function stripDevParams(href: string): string {
|
|
const url = new URL(href);
|
|
url.searchParams.delete('scenario');
|
|
url.searchParams.delete('role');
|
|
return url.toString();
|
|
}
|