Merge branch 'bugfix/internal/discover-reco-follow-state' into chore/internal/smoke-lyrics-discover

# Conflicts:
#	crates/qbz-ui/translations/de/LC_MESSAGES/qbz-ui.po
#	crates/qbz-ui/translations/en/LC_MESSAGES/qbz-ui.po
#	crates/qbz-ui/translations/es/LC_MESSAGES/qbz-ui.po
#	crates/qbz-ui/translations/fr/LC_MESSAGES/qbz-ui.po
#	crates/qbz-ui/translations/ja/LC_MESSAGES/qbz-ui.po
#	crates/qbz-ui/translations/nl/LC_MESSAGES/qbz-ui.po
#	crates/qbz-ui/translations/pt/LC_MESSAGES/qbz-ui.po
#	crates/qbz-ui/translations/ru/LC_MESSAGES/qbz-ui.po
This commit is contained in:
vicrodh committed 2026-07-22 23:05:16 -06:00
commit 3eb93ec4cb
28 files changed
+1436 -52

No files matched your search

+18 -2
View File
@@ -2462,6 +2462,16 @@ export struct BlacklistedAlbumItem {
has-notes: bool,
}
// One reco-dismissed artist ("Not interested"). Reco-SCOPED — NOT the
// blacklist: the artist only leaves the Recommendations rails. The store
// carries no timestamp/notes, so the row is just the name (+ a generic
// avatar); removal is the undo.
export struct DismissedArtistItem {
// Numeric Qobuz artist id (same int pass-through as BlacklistedArtistItem).
artist-id: int,
artist-name: string,
}
export global BlacklistState {
// The CURRENTLY-VISIBLE rows (already search-filtered by the controller).
in property <[BlacklistedArtistItem]> items: [];
@@ -2481,7 +2491,11 @@ export global BlacklistState {
in property <[BlacklistedAlbumItem]> album-items: [];
// FULL blocked-album count (drives the Albums tab badge + empty state).
in property <int> album-count: 0;
// Active manager tab: 0 = Artists, 1 = Albums.
// --- Reco-dismissal axis ("Not interested" — the Recommendations tab) ---
in property <[DismissedArtistItem]> dismissed-items: [];
// FULL dismissed count (drives the tab badge + empty state).
in property <int> dismissed-count: 0;
// Active manager tab: 0 = Artists, 1 = Albums, 2 = Recommendations.
in property <int> active-tab: 0;
}
@@ -2498,12 +2512,14 @@ export global BlacklistActions {
callback search-changed(string /* query */);
// --- Album axis ---
callback set-tab(int /* 0=artists, 1=albums */);
callback set-tab(int /* 0=artists, 1=albums, 2=recommendations */);
callback album-select(string /* album id */);
callback remove-album(string /* album id */);
callback clear-all-albums();
// Block an album from a context menu (id + display fields for the manager).
callback block-album(string /* id */, string /* title */, string /* artist */, string /* cover-url */);
// --- Reco-dismissal axis ---
callback remove-dismissed(int /* artist id */);
}
// === My QBZ — Mixtapes & Collections (read-only index grids) ============