diff --git a/frontend/src/lib/components/Breadcrumbs/Breadcrumbs.svelte b/frontend/src/lib/components/Breadcrumbs/Breadcrumbs.svelte
index 6bedae00c0..939a9605d1 100644
--- a/frontend/src/lib/components/Breadcrumbs/Breadcrumbs.svelte
+++ b/frontend/src/lib/components/Breadcrumbs/Breadcrumbs.svelte
@@ -1,23 +1,11 @@
diff --git a/frontend/src/lib/components/ModelTable/ModelTable.svelte b/frontend/src/lib/components/ModelTable/ModelTable.svelte
index d3f10383bc..d8c8780d73 100644
--- a/frontend/src/lib/components/ModelTable/ModelTable.svelte
+++ b/frontend/src/lib/components/ModelTable/ModelTable.svelte
@@ -351,14 +351,20 @@
if (finalFilterValue) {
finalFilterValue.forEach(({ value }) => page.url.searchParams.append(field, value));
}
-
- const hrefPattern = new RegExp(`^/${URLModel}(\\?.*)?$`);
- const fullPath = page.url.pathname + page.url.search;
- if (hrefPattern.test(fullPath)) {
- breadcrumbs.updateCrumb(hrefPattern, { href: fullPath });
- }
}
history.replaceState(history.state, '', page.url.pathname + page.url.search);
+ // Sync the current crumb's href with the new filter query.
+ breadcrumbs.update((crumbs) => {
+ if (crumbs.length < 2) return crumbs;
+ const last = crumbs[crumbs.length - 1];
+ const lastPath = last.href?.split('?')[0];
+ if (lastPath !== page.url.pathname) return crumbs;
+ const newHref = page.url.pathname + page.url.search;
+ if (last.href === newHref) return crumbs;
+ const next = crumbs.slice();
+ next[next.length - 1] = { ...last, href: newHref };
+ return next;
+ });
// untracked so resetFilters can delete the entry without retriggering us
if (isStandaloneTable) {
untrack(() => {
diff --git a/frontend/src/lib/components/SideBar/SideBarFooter.svelte b/frontend/src/lib/components/SideBar/SideBarFooter.svelte
index fde717186d..6bd21307cf 100644
--- a/frontend/src/lib/components/SideBar/SideBarFooter.svelte
+++ b/frontend/src/lib/components/SideBar/SideBarFooter.svelte
@@ -1,5 +1,6 @@