diff --git a/static/v3/shell.js b/static/v3/shell.js index f6ba206..582fb42 100644 --- a/static/v3/shell.js +++ b/static/v3/shell.js @@ -112,6 +112,10 @@ el.classList.toggle('text-fb-textDim', !on); }); setTopbarTitle(titleFor(screenId)); + // Show the song search only on the library screen. Everywhere else the + // box is irrelevant (and would silently no-op against v3Songs.search). + const searchWrap = document.getElementById('v3-search-wrap'); + if (searchWrap) searchWrap.classList.toggle('hidden', screenId !== 'v3-songs'); // NOTE: we deliberately do NOT reflect the screen into location.hash on // every navigation. app.js's audio 'error' handler suppresses empty-src // errors only when `audio.src === window.location.href`; a `#/...` @@ -173,13 +177,16 @@ function renderTopbar() { const bar = document.getElementById('v3-topbar'); if (!bar) return; - bar.className = 'sticky top-0 z-20 bg-fb-sidebar/80 backdrop-blur'; + bar.className = 'sticky top-0 z-30 bg-fb-sidebar/80 backdrop-blur'; bar.innerHTML = // Row 1 — top utility bar: search. '
' + '' + - '
' + + // Search is scoped to the library — syncActive() toggles `hidden` on + // this wrapper so it only shows on the v3-songs screen. It lives in + // the sticky topbar, so it stays put while the song grid scrolls. + '