From ca80f13631c0169d40a8fda19f6fc63bed8a61c2 Mon Sep 17 00:00:00 2001 From: Brandon Oxendine Date: Mon, 21 Sep 2026 13:16:39 +0200 Subject: [PATCH] Disable Back and Forward when they lead nowhere Fixes f18b808b76f9528e406f53f70221e1a39b4664c8 --- src/App.svelte | 12 +++- src/components/AppSidebar.svelte | 13 ++++ src/components/Button.svelte | 4 ++ src/lib/router.ts | 40 ++++++++++- tests/e2e/navigation.spec.ts | 117 +++++++++++++++++++++++++++++++ 5 files changed, 181 insertions(+), 5 deletions(-) create mode 100644 tests/e2e/navigation.spec.ts diff --git a/src/App.svelte b/src/App.svelte index c3048e401..89810e90b 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -98,11 +98,19 @@ }, { shortcut: "back", - run: () => window.history.back(), + run: () => { + if (get(router.canGoBack)) { + window.history.back(); + } + }, }, { shortcut: "forward", - run: () => window.history.forward(), + run: () => { + if (get(router.canGoForward)) { + window.history.forward(); + } + }, }, { shortcut: "reload", diff --git a/src/components/AppSidebar.svelte b/src/components/AppSidebar.svelte index 95b65a1eb..0abf947e2 100644 --- a/src/components/AppSidebar.svelte +++ b/src/components/AppSidebar.svelte @@ -316,6 +316,8 @@ }); const activeRoute = router.activeRouteStore; + const canGoBack = router.canGoBack; + const canGoForward = router.canGoForward; function isInbox(): boolean { return $activeRoute.resource === "inbox"; @@ -514,6 +516,9 @@ color: var(--color-text-tertiary); flex-shrink: 0; } + .window-controls :global(.button.disabled .icon) { + color: var(--color-text-quaternary); + } .update-badge { margin-left: auto; font: var(--txt-body-s-regular); @@ -614,6 +619,7 @@ title="{collapsed.value ? 'Expand' : 'Collapse'} sidebar ({toggleShortcut})" + ariaLabel="{collapsed.value ? 'Expand' : 'Collapse'} sidebar" keyShortcuts={ariaKeyShortcuts("toggleSidebar")} onclick={toggleSidebar} styleWidth={isMini ? "2rem" : "1.5rem"} @@ -623,6 +629,9 @@