diff --git a/web/src/lib/components/alias-filter-select.svelte b/web/src/lib/components/alias-filter-select.svelte
index ce2c4aa..a9f0567 100644
--- a/web/src/lib/components/alias-filter-select.svelte
+++ b/web/src/lib/components/alias-filter-select.svelte
@@ -36,7 +36,7 @@
{selectedLabel}
-
+
{allLabel}
{#each availableAliases as alias (alias)}
{alias}
diff --git a/web/src/routes/ips/+page.svelte b/web/src/routes/ips/+page.svelte
index c589a33..341744f 100644
--- a/web/src/routes/ips/+page.svelte
+++ b/web/src/routes/ips/+page.svelte
@@ -349,6 +349,20 @@
});
}
+ async function applyAliasIfChanged(nextAlias: string) {
+ const currentAlias = parseAliasFilter(page.url.searchParams.get('aliases'));
+ if (nextAlias === currentAlias) return;
+ const q = new URLSearchParams(page.url.searchParams);
+ if (nextAlias === 'all') q.delete('aliases');
+ else q.set('aliases', nextAlias);
+ const qs = q.toString();
+ await goto(`${page.url.pathname}${qs ? `?${qs}` : ''}`, {
+ replaceState: true,
+ noScroll: true,
+ keepFocus: true
+ });
+ }
+
let queryKey = $derived(page.url.searchParams.toString());
$effect(() => {
queryKey;
@@ -361,6 +375,12 @@
void load();
});
+ $effect(() => {
+ if (typeof window === 'undefined') return;
+ const nextAlias = aliasFilter;
+ void applyAliasIfChanged(nextAlias);
+ });
+
let staleSeconds = $derived.by(() =>
lastSuccessAtMs == null ? null : Math.max(0, Math.floor((nowMs - lastSuccessAtMs) / 1000))
);
@@ -427,11 +447,9 @@
max="300"
class="mt-1 h-9 w-28 rounded-md border bg-background px-2 text-sm"
bind:value={refreshInput}
+ onchange={() => void applyControls()}
/>
-
{#if partial}