Retire Artists sidebar entry, redirect entry points to Search, bump to 2.46

Phase 4b of the Search/Artists unification. Cin flagged that 'Artists'
in the sidebar read like a library section but was actually a
dedicated artist-search page, duplicating what unified Search already
does. Removed the sidebar entry so users funnel through Search.

  - Sidebar Artists button gone
  - 'Browse Artists' on empty Watchlist now opens Search
  - 'View artist from Wishlist' opens Search pre-filled with the name
  - Profile Home Page + Page Access drop the Artists option

artists.js stays on disk: it defines ~30 shared helpers used across
the app (escapeHtml, openDownloadMissingModalForArtistAlbum, service
status, download bubbles, image helpers) that library/discover/etc.
depend on. Wholesale deletion would orphan too much. The inline
Artists page and its selectArtistForDetail flow are still there —
just unreachable from the sidebar — so /artists deep links keep
working for bookmarks.
This commit is contained in:
Broque Thomas 2026-04-22 13:40:22 -07:00
parent 9361c29965
commit 09f15ce7d2
5 changed files with 29 additions and 15 deletions

View file

@ -37,7 +37,7 @@ _log_dir = Path(_log_path).parent
logger = setup_logging(_log_level, _log_path)
# App version — single source of truth for backup metadata, version-info endpoint, etc.
_SOULSYNC_BASE_VERSION = "2.45"
_SOULSYNC_BASE_VERSION = "2.46"
def _build_version_string():
"""Append short commit hash to version when available (e.g. 2.35+abc1234)."""
@ -22809,6 +22809,18 @@ def get_version_info():
"title": "What's New in SoulSync",
"subtitle": f"Version {SOULSYNC_VERSION} — Latest Changes",
"sections": [
{
"title": "Artists Sidebar Entry Retired — Use Search Instead",
"description": "Cin flagged that 'Artists' in the sidebar read like a library section but was actually a dedicated artist-search page, duplicating what the unified Search already does. The sidebar entry is gone; the same flow now runs through Search",
"features": [
"• Sidebar → Search → type an artist's name → click their result → land on the artist detail page (same page Library links to)",
"'Browse Artists' button on the empty Watchlist page now opens Search instead of the retired Artists page",
"'View artist from Wishlist' button now opens Search pre-filled with the artist's name",
"• Removed 'Artists' from the profile Home Page and Page Access options so new profiles don't point to a missing sidebar entry",
"• Deep link to /artists still resolves so old bookmarks work; the page and its inline search just aren't promoted anywhere",
"• Phase 4b of the Search/Artists unification project",
],
},
{
"title": "Artist Links Everywhere Go to the Same Page",
"description": "Clicking an artist result in Search, Discover, the API Monitor, or anywhere else now lands on the standalone artist detail page Library already uses — instead of swapping into the Artists page's inline detail view",

View file

@ -100,7 +100,6 @@
<option value="sync">Sync</option>
<option value="search">Search</option>
<option value="discover">Discover</option>
<option value="artists">Artists</option>
<option value="automations">Automations</option>
<option value="active-downloads">Downloads</option>
<option value="library">Library</option>
@ -115,7 +114,6 @@
<label><input type="checkbox" value="sync" checked> Sync</label>
<label><input type="checkbox" value="search" checked> Search</label>
<label><input type="checkbox" value="discover" checked> Discover</label>
<label><input type="checkbox" value="artists" checked> Artists</label>
<label><input type="checkbox" value="automations" checked> Automations</label>
<label><input type="checkbox" value="active-downloads" checked> Downloads</label>
<label><input type="checkbox" value="library" checked> Library</label>
@ -208,10 +206,6 @@
<span class="nav-icon"><svg class="nav-svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="5" r="3"/><line x1="12" y1="8" x2="12" y2="12"/><line x1="12" y1="12" x2="5" y2="18"/><line x1="12" y1="12" x2="19" y2="18"/><circle cx="5" cy="19" r="2"/><circle cx="19" cy="19" r="2"/><line x1="12" y1="12" x2="12" y2="18"/><circle cx="12" cy="19" r="2"/></svg></span>
<span class="nav-text">Explorer</span>
</button>
<button class="nav-button" data-page="artists">
<span class="nav-icon"><svg class="nav-svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M9 18V5l12-2v13"/><circle cx="6" cy="18" r="3"/><circle cx="18" cy="16" r="3"/></svg></span>
<span class="nav-text">Artists</span>
</button>
<button class="nav-button" data-page="watchlist">
<span class="nav-icon"><svg class="nav-svg" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.8" stroke-linecap="round" stroke-linejoin="round"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></svg></span>
<span class="nav-text">Watchlist</span>
@ -6941,8 +6935,8 @@
<svg width="64" height="64" viewBox="0 0 24 24" fill="none" stroke="rgba(255,255,255,0.15)" stroke-width="1.5"><path d="M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z"/><circle cx="12" cy="12" r="3"/></svg>
</div>
<h3>Your watchlist is empty</h3>
<p>Add artists from the Artists page to monitor them for new releases.</p>
<button class="watchlist-action-btn watchlist-action-primary" onclick="navigateToPage('artists')">Browse Artists</button>
<p>Use Search to find an artist, then add them to your watchlist from the artist page.</p>
<button class="watchlist-action-btn watchlist-action-primary" onclick="navigateToPage('search')">Open Search</button>
</div>
</div>
</div>

View file

@ -1231,13 +1231,16 @@ function _renderWishlistNebula(albumTracks, singleTracks, artistImageMap, curren
field.innerHTML = html;
}
// Enhancement 8: navigate to artist detail from wishlist
// Enhancement 8: navigate to the Search page pre-filled with this artist's name
function _navigateToArtistFromWishlist(artistName) {
// Try to find the artist in the library DB by searching
navigateToPage('artists');
navigateToPage('search');
setTimeout(() => {
const searchInput = document.querySelector('.artist-search-input, #artist-search');
if (searchInput) { searchInput.value = artistName; searchInput.dispatchEvent(new Event('input')); }
const searchInput = document.getElementById('enhanced-search-input');
if (searchInput) {
searchInput.value = artistName;
searchInput.dispatchEvent(new Event('input'));
searchInput.focus();
}
}, 300);
}

View file

@ -3599,6 +3599,11 @@ function closeHelperSearch() {
// ═══════════════════════════════════════════════════════════════════════════
const WHATS_NEW = {
'2.46': [
// --- April 23, 2026 (late night) ---
{ date: 'April 23, 2026 (late night)' },
{ title: 'Artists Sidebar Entry Retired — Use Search Instead', desc: 'Cin flagged that "Artists" in the sidebar read like a library section but was actually a dedicated artist-search page, duplicating what the unified Search already does. The sidebar entry is gone. New flow: Sidebar → Search → type artist name → click their result → land on the artist detail page (same page Library links to). "Browse Artists" on the empty Watchlist page and "View artist from Wishlist" now open Search pre-filled with the artist\'s name. Removed "Artists" from profile Home Page + Page Access options. Deep link to /artists still resolves so old bookmarks keep working — the page just isn\'t promoted anywhere. Phase 4b of the Search/Artists unification project', page: 'search' },
],
'2.45': [
// --- April 23, 2026 (night) ---
{ date: 'April 23, 2026 (night)' },

View file

@ -2021,7 +2021,7 @@ async function openDiscographyModal() {
}
if (!artist || !discography) {
showToast('No discography found. Try searching this artist on the Artists page instead.', 'error');
showToast('No discography found. Try searching this artist from the Search page instead.', 'error');
return;
}