diff --git a/webui/index.html b/webui/index.html index 1b83fae9..ca746b10 100644 --- a/webui/index.html +++ b/webui/index.html @@ -5067,7 +5067,6 @@
-

🎡 Quality Profile

@@ -5086,17 +5085,38 @@ πŸ’Ύ Space Saver
-
- Edits you make below are saved per preset β€” switch away and back and - your changes are still there. Use - Reset to defaults - to restore the selected preset's factory settings. +
- +
+ + β“˜ +
+
@@ -5154,45 +5174,82 @@
- - + + -
- Source priority takes the first source in your chain that meets - a target — fast, fewer lookups. Best quality searches - every source for each track, pools the results, and downloads them - best→worst by actual audio quality (source order only breaks ties). Slower and - more API calls, but it won't settle for a passable Soulseek file when HiFi/Qobuz - has a higher-resolution version. Retry budgets are unchanged: a source that spends - its budget is dropped from the whole pool. + +
+ + +
+
+ + β“˜ +
+
- -
- ⚠️ This does not mean "walk down my list" β€” the list already - does that on its own. When on, a file that matches - none of your targets (e.g. a 16-bit FLAC or MP3 when you only listed - 24-bit) is accepted anyway as a last resort. Turn it - off to strictly enforce your list β€” anything off-list is then - quarantined instead of completed. +
+ + β“˜ +
+
diff --git a/webui/static/settings.js b/webui/static/settings.js index 82ae3c3d..f0b324e8 100644 --- a/webui/static/settings.js +++ b/webui/static/settings.js @@ -2001,6 +2001,32 @@ function populateQualityProfileUI(profile) { const searchModeSelect = document.getElementById('quality-search-mode'); if (searchModeSelect) searchModeSelect.value = profile.search_mode === 'best_quality' ? 'best_quality' : 'priority'; + + const rankCandidatesCheckbox = document.getElementById('quality-rank-candidates'); + if (rankCandidatesCheckbox) rankCandidatesCheckbox.checked = profile.rank_candidates_by_quality === true; + + onSearchModeChange(); +} + +// Hide the "rank-based download order" toggle when Best quality is active β€” +// that mode always ranks by quality, so the toggle would be meaningless there. +function onSearchModeChange() { + const mode = document.getElementById('quality-search-mode')?.value; + const group = document.getElementById('quality-rank-candidates-group'); + if (group) group.style.display = mode === 'best_quality' ? 'none' : ''; +} + +// Toggle the collapsible help text below a setting's β“˜ icon. Walks forward from +// the icon's row to the next .setting-help-body sibling, so it works whether the +// body is the immediate next element or sits after a control (e.g. a