+
Launcher
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
(e.target as HTMLInputElement).select()}
- title="Click to select all"
- />
-
+
+
+
diff --git a/src/routes/events/[event_id]/(launcher)/launcher/+layout.svelte b/src/routes/events/[event_id]/(launcher)/launcher/+layout.svelte
index 33a126da..48ad8a2e 100644
--- a/src/routes/events/[event_id]/(launcher)/launcher/+layout.svelte
+++ b/src/routes/events/[event_id]/(launcher)/launcher/+layout.svelte
@@ -147,6 +147,22 @@
if (param_launcher_footer === 'hide') $events_loc.launcher.hide__launcher_footer = true;
else if (param_launcher_footer === 'show') $events_loc.launcher.hide__launcher_footer = false;
});
+
+ // Strip launcher display params from the URL after applying them — same pattern
+ // as root layout does for ?theme / ?theme_mode. These are "one-shot" apply params;
+ // keeping them in the URL is misleading because toggling the CFG panel would desync.
+ // ?iframe is intentionally left in the URL because it is a persistent mode flag.
+ if (param_launcher_menu || param_launcher_header || param_launcher_footer) {
+ const clean_url = new URL(data.url.href);
+ clean_url.searchParams.delete('launcher_menu');
+ clean_url.searchParams.delete('launcher_header');
+ clean_url.searchParams.delete('launcher_footer');
+ goto(clean_url.pathname + clean_url.search + clean_url.hash, {
+ replaceState: true,
+ noScroll: true,
+ keepFocus: true
+ });
+ }
});
// String-Only ID Vision: Sync the device ID from the native environment