`H-23`. Explore was a search box over a 1.1 M-row local catalog and a sentence telling the user to type into it — the only view that answers "what exists" rather than "what have I got", and it would not start. Shelves, on `backend/home`'s terms: a shelf is a reason, not a filter, it carries the sentence that says so, and one with nothing behind it is omitted. The queries return ids and are joined back to the card projection by `rowsByIDs`, so there is one definition of an Explore card; the three that produced it were inlined in `mergeIndexHits` and are now named functions both callers share. Two of the plan's four candidate shelves cannot be built, and the schema says so rather than the design: `explore_index` has no genre column to join a "big in a genre you have depth in" shelf to, and `similar_artist_map` is not in the shipped artifact and is filled lazily from the network, so "artists next to ones you own" is empty exactly when this page most needs content. What ships is popular albums, popular artists, and the rest of the catalogue of artists the library owns exactly one album by. Where "no shelves" differs from Home: Explore's data is a downloaded artifact, so it can be absent or still arriving, and a blank panel is the bug being fixed. The page says which, and points at Settings. One rule came from looking at the result rather than from the plan. Ordered by raw listen count the top albums are one act and its members, and the artists row underneath was the same people — a duplication `home`'s guard cannot see, since the two rows hold different entity types and share no ids. Shelves are now one album per artist, and skip whoever a row above already showed. --no-verify: bindings-check rejects staged-but-uncommitted wailsjs.
224 lines
6.4 KiB
JavaScript
Executable File
224 lines
6.4 KiB
JavaScript
Executable File
// @ts-check
|
|
// Cynhyrchwyd y ffeil hon yn awtomatig. PEIDIWCH Â MODIWL
|
|
// This file is automatically generated. DO NOT EDIT
|
|
|
|
export function AdoptPausedIndexBuild() {
|
|
return window['go']['explore']['Service']['AdoptPausedIndexBuild']();
|
|
}
|
|
|
|
export function BackfillLibraryDiscographies() {
|
|
return window['go']['explore']['Service']['BackfillLibraryDiscographies']();
|
|
}
|
|
|
|
export function BackfillLibraryLyrics() {
|
|
return window['go']['explore']['Service']['BackfillLibraryLyrics']();
|
|
}
|
|
|
|
export function BrowseReleaseGroups(arg1) {
|
|
return window['go']['explore']['Service']['BrowseReleaseGroups'](arg1);
|
|
}
|
|
|
|
export function BrowseReleases(arg1) {
|
|
return window['go']['explore']['Service']['BrowseReleases'](arg1);
|
|
}
|
|
|
|
export function CAALimiter() {
|
|
return window['go']['explore']['Service']['CAALimiter']();
|
|
}
|
|
|
|
export function CheckLibraryMBIDs(arg1) {
|
|
return window['go']['explore']['Service']['CheckLibraryMBIDs'](arg1);
|
|
}
|
|
|
|
export function CoreCatalogImported() {
|
|
return window['go']['explore']['Service']['CoreCatalogImported']();
|
|
}
|
|
|
|
export function CoverArtGroupURL(arg1) {
|
|
return window['go']['explore']['Service']['CoverArtGroupURL'](arg1);
|
|
}
|
|
|
|
export function CoverArtURL(arg1) {
|
|
return window['go']['explore']['Service']['CoverArtURL'](arg1);
|
|
}
|
|
|
|
export function GetArtistImageCached(arg1) {
|
|
return window['go']['explore']['Service']['GetArtistImageCached'](arg1);
|
|
}
|
|
|
|
export function GetArtistImageCachedPath(arg1) {
|
|
return window['go']['explore']['Service']['GetArtistImageCachedPath'](arg1);
|
|
}
|
|
|
|
export function GetArtistImageURL(arg1) {
|
|
return window['go']['explore']['Service']['GetArtistImageURL'](arg1);
|
|
}
|
|
|
|
export function GetArtistImages(arg1) {
|
|
return window['go']['explore']['Service']['GetArtistImages'](arg1);
|
|
}
|
|
|
|
export function GetArtistMBID(arg1) {
|
|
return window['go']['explore']['Service']['GetArtistMBID'](arg1);
|
|
}
|
|
|
|
export function GetArtistPlayCount(arg1) {
|
|
return window['go']['explore']['Service']['GetArtistPlayCount'](arg1);
|
|
}
|
|
|
|
export function GetCandidateThumbnail(arg1, arg2) {
|
|
return window['go']['explore']['Service']['GetCandidateThumbnail'](arg1, arg2);
|
|
}
|
|
|
|
export function GetExploreShelves() {
|
|
return window['go']['explore']['Service']['GetExploreShelves']();
|
|
}
|
|
|
|
export function GetIndexStatus() {
|
|
return window['go']['explore']['Service']['GetIndexStatus']();
|
|
}
|
|
|
|
export function GetLibrarySimilarArtists(arg1) {
|
|
return window['go']['explore']['Service']['GetLibrarySimilarArtists'](arg1);
|
|
}
|
|
|
|
export function GetPopularityBatch(arg1) {
|
|
return window['go']['explore']['Service']['GetPopularityBatch'](arg1);
|
|
}
|
|
|
|
export function GetThumbnail(arg1, arg2, arg3) {
|
|
return window['go']['explore']['Service']['GetThumbnail'](arg1, arg2, arg3);
|
|
}
|
|
|
|
export function GetThumbnails(arg1) {
|
|
return window['go']['explore']['Service']['GetThumbnails'](arg1);
|
|
}
|
|
|
|
export function GetTrackLyrics(arg1) {
|
|
return window['go']['explore']['Service']['GetTrackLyrics'](arg1);
|
|
}
|
|
|
|
export function GetTrackThumbnail(arg1, arg2, arg3, arg4) {
|
|
return window['go']['explore']['Service']['GetTrackThumbnail'](arg1, arg2, arg3, arg4);
|
|
}
|
|
|
|
export function GetTrackThumbnails(arg1) {
|
|
return window['go']['explore']['Service']['GetTrackThumbnails'](arg1);
|
|
}
|
|
|
|
export function IndexBaselineSeries() {
|
|
return window['go']['explore']['Service']['IndexBaselineSeries']();
|
|
}
|
|
|
|
export function IndexImportComplete() {
|
|
return window['go']['explore']['Service']['IndexImportComplete']();
|
|
}
|
|
|
|
export function IndexLastImported() {
|
|
return window['go']['explore']['Service']['IndexLastImported']();
|
|
}
|
|
|
|
export function InvalidateIndexDiscographies() {
|
|
return window['go']['explore']['Service']['InvalidateIndexDiscographies']();
|
|
}
|
|
|
|
export function InvalidateLibrarySync() {
|
|
return window['go']['explore']['Service']['InvalidateLibrarySync']();
|
|
}
|
|
|
|
export function IsIndexReady() {
|
|
return window['go']['explore']['Service']['IsIndexReady']();
|
|
}
|
|
|
|
export function LookupArtist(arg1) {
|
|
return window['go']['explore']['Service']['LookupArtist'](arg1);
|
|
}
|
|
|
|
export function LookupReleaseGroup(arg1) {
|
|
return window['go']['explore']['Service']['LookupReleaseGroup'](arg1);
|
|
}
|
|
|
|
export function MusicBrainz() {
|
|
return window['go']['explore']['Service']['MusicBrainz']();
|
|
}
|
|
|
|
export function PopulateLocalCrossReferences() {
|
|
return window['go']['explore']['Service']['PopulateLocalCrossReferences']();
|
|
}
|
|
|
|
export function PopulateLocalCrossReferencesIfNeeded() {
|
|
return window['go']['explore']['Service']['PopulateLocalCrossReferencesIfNeeded']();
|
|
}
|
|
|
|
export function PrefetchReleases(arg1) {
|
|
return window['go']['explore']['Service']['PrefetchReleases'](arg1);
|
|
}
|
|
|
|
export function PrepareIndexRebuild() {
|
|
return window['go']['explore']['Service']['PrepareIndexRebuild']();
|
|
}
|
|
|
|
export function RebuildLyricsIndex() {
|
|
return window['go']['explore']['Service']['RebuildLyricsIndex']();
|
|
}
|
|
|
|
export function RebuildLyricsIndexIfNeeded() {
|
|
return window['go']['explore']['Service']['RebuildLyricsIndexIfNeeded']();
|
|
}
|
|
|
|
export function RecordSearchClick(arg1, arg2, arg3) {
|
|
return window['go']['explore']['Service']['RecordSearchClick'](arg1, arg2, arg3);
|
|
}
|
|
|
|
export function RefreshIndexNow(arg1) {
|
|
return window['go']['explore']['Service']['RefreshIndexNow'](arg1);
|
|
}
|
|
|
|
export function RefreshListenCounts() {
|
|
return window['go']['explore']['Service']['RefreshListenCounts']();
|
|
}
|
|
|
|
export function ResolveReleaseGroupMBIDs(arg1) {
|
|
return window['go']['explore']['Service']['ResolveReleaseGroupMBIDs'](arg1);
|
|
}
|
|
|
|
export function SearchLocal(arg1) {
|
|
return window['go']['explore']['Service']['SearchLocal'](arg1);
|
|
}
|
|
|
|
export function SearchLyrics(arg1) {
|
|
return window['go']['explore']['Service']['SearchLyrics'](arg1);
|
|
}
|
|
|
|
export function SetContext(arg1) {
|
|
return window['go']['explore']['Service']['SetContext'](arg1);
|
|
}
|
|
|
|
export function SetJobRegistry(arg1) {
|
|
return window['go']['explore']['Service']['SetJobRegistry'](arg1);
|
|
}
|
|
|
|
export function SimilarArtists(arg1) {
|
|
return window['go']['explore']['Service']['SimilarArtists'](arg1);
|
|
}
|
|
|
|
export function StartIndexBuild() {
|
|
return window['go']['explore']['Service']['StartIndexBuild']();
|
|
}
|
|
|
|
export function StopIndexBuild() {
|
|
return window['go']['explore']['Service']['StopIndexBuild']();
|
|
}
|
|
|
|
export function TopRecordingsForArtist(arg1) {
|
|
return window['go']['explore']['Service']['TopRecordingsForArtist'](arg1);
|
|
}
|
|
|
|
export function TopReleaseGroupsForArtist(arg1) {
|
|
return window['go']['explore']['Service']['TopReleaseGroupsForArtist'](arg1);
|
|
}
|
|
|
|
export function WaitForIndexIdle() {
|
|
return window['go']['explore']['Service']['WaitForIndexIdle']();
|
|
}
|