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}