Files
yellowjacket/frontend/index.html
T
yonlu d73226b173 feat: Library Only mode — toggle, search, artist page, similar artists
Backend:
- Migration 17: similar_artist_map table stores per-artist similar
  artist relationships (source_mbid → similar_mbid + name + score)
- Tier 4 index build now persists similar artists to this table
- GetLibrarySimilarArtists(mbid) queries similar artists filtered
  by JOIN with the artists table (library-only, no API calls)
- Added db field to explore.Service for direct queries

Frontend:
- ExploreSettingsStore with libraryOnly toggle, persisted to
  localStorage
- Top bar toggle button with active/inactive styling
- Explore search: skips full MB/LB pipeline when library-only,
  uses only searchLibraryCache (pure JS, instant)
- Artist detail page: in library-only mode, skips all API calls
  (no top tracks, no top releases, no LB play count, no MB
  artist lookup). Uses library store for discography, calls
  GetLibrarySimilarArtists for similar artists.
- Similar artists section: changed from horizontal scroll to
  wrapping flex layout with collapsible toggle (Show all N)
- Removed debug artist ranking log
2026-03-30 15:36:37 -04:00

44 lines
1.2 KiB
HTML

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta content="width=device-width, initial-scale=1.0" name="viewport" />
<link href="./index.css" rel="stylesheet" />
<title>yellowjacket</title>
<script src="/index.ts" type="module"></script>
</head>
<body>
<header class="top-bar">
<hgroup>
<h1 class="title">YellowJacket</h1>
<h3 class="subtitle">Music how it was meant to bee.</h3>
</hgroup>
<button id="library-only-toggle" class="library-only-toggle" title="Library Only mode">
<wa-icon name="book"></wa-icon>
<span>Library Only</span>
</button>
<library-filter></library-filter>
<search-bar></search-bar>
</header>
<div class="sidebar">
<app-sidebar></app-sidebar>
</div>
<div class="content-area">
<main class="main-panel" id="main-content">
<track-list></track-list>
</main>
<queue-panel id="queue-panel"></queue-panel>
</div>
<footer class="bottom-bar">
<now-playing></now-playing>
<audio-player></audio-player>
<button id="queue-button">
<wa-icon name="list"></wa-icon>
</button>
</footer>
</body>
</html>