From 2d8c385a2ea531298631ce82876e972e266f0b9e Mon Sep 17 00:00:00 2001 From: KeelrLeek <156356974+KeelrLeek@users.noreply.github.com> Date: Mon, 31 Aug 2026 11:46:27 -0500 Subject: [PATCH] the sourcing notifier is a toast: the glass bar hands rstatus to the player-bar slot MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The auto-sourcing resolver used to narrate from the right side of the glass bar — a pulsing line while it searched, and an error that then sat in the header indefinitely. It is now ResolverToast, in the exact slot, pill and motion FollowToast and ImportToast already share: bottom-center above the player bar, dark glass pill, toast-in/out, reduced-motion respected, pointer-events none. Three moments: while resolving, an accent dot pulses beside "{label} — finding the best source…" for as long as the search runs; on success the pill just leaves — the playbar coming alive IS the confirmation, the same rule the bar version followed by disappearing; on failure it swaps to the error in the bar's own red, holds 3.8s so it can actually be read, then leaves. The label is copied locally so the success exit never flashes an empty "— finding the best source…" while animating out (the resolver clears its label in the same breath as active). GlassBar no longer renders or imports any of it; the rstatus markup and styles are gone with a pointer comment left in their place. Verified by driving the resolver state through all four phases after a clean reload: searching shows, success dismisses, a re-search re-shows, an error holds then auto-dismisses — with the bar confirmed empty. --- src/App.svelte | 2 + src/components/GlassBar.svelte | 26 +---- src/components/ResolverToast.svelte | 172 ++++++++++++++++++++++++++++ 3 files changed, 176 insertions(+), 24 deletions(-) create mode 100644 src/components/ResolverToast.svelte diff --git a/src/App.svelte b/src/App.svelte index 9db9ccf..990a7af 100644 --- a/src/App.svelte +++ b/src/App.svelte @@ -25,6 +25,7 @@ import Lyrics from "./views/Lyrics.svelte"; import FollowToast from "./components/FollowToast.svelte"; import ImportToast from "./components/ImportToast.svelte"; + import ResolverToast from "./components/ResolverToast.svelte"; import SetlistScanChip from "./components/SetlistScanChip.svelte"; import { ui, @@ -160,6 +161,7 @@ + diff --git a/src/components/GlassBar.svelte b/src/components/GlassBar.svelte index 5fc4d66..e0a12b8 100644 --- a/src/components/GlassBar.svelte +++ b/src/components/GlassBar.svelte @@ -24,7 +24,6 @@ navBack, navForward, navToCrumb, - resolver, } from "../lib/state.svelte.js"; import { canGoBack, canGoForward, trail } from "../lib/navigation.svelte.js"; import { markAppScroll, appScrollIdleFor } from "../lib/scrollbar.js"; @@ -363,11 +362,6 @@ {/if} {@render children?.()} - {#if resolver.active} - ● {resolver.label} — finding the best source… - {:else if resolver.error} - {resolver.error} - {/if}