diff --git a/webui/index.html b/webui/index.html index f37694e5..a0844baa 100644 --- a/webui/index.html +++ b/webui/index.html @@ -2960,28 +2960,31 @@

Download Settings

+
+ These are container-internal paths. Only modify them if you know what you're doing — incorrect values will break downloads. +
- - + +
- - + +
- - + +
diff --git a/webui/static/script.js b/webui/static/script.js index a011dde4..5a9810b3 100644 --- a/webui/static/script.js +++ b/webui/static/script.js @@ -2733,8 +2733,26 @@ async function authenticateTidal() { } } -function browsePath(pathType) { - showToast(`Path browser not available in web interface. Please enter path manually.`, 'error'); +const PATH_INPUT_IDS = { + download: 'download-path', + transfer: 'transfer-path', + staging: 'staging-path' +}; + +function togglePathLock(pathType, btn) { + const input = document.getElementById(PATH_INPUT_IDS[pathType]); + if (!input) return; + const isLocked = input.hasAttribute('readonly'); + if (isLocked) { + input.removeAttribute('readonly'); + input.focus(); + btn.textContent = 'Lock'; + btn.classList.remove('locked'); + } else { + input.setAttribute('readonly', ''); + btn.textContent = 'Unlock'; + btn.classList.add('locked'); + } } @@ -10917,7 +10935,7 @@ window.autoDetectSlskd = autoDetectSlskd; window.toggleServer = toggleServer; window.authenticateSpotify = authenticateSpotify; window.authenticateTidal = authenticateTidal; -window.browsePath = browsePath; +window.togglePathLock = togglePathLock; window.selectResult = selectResult; window.startStream = startStream; window.streamTrack = streamTrack; diff --git a/webui/static/style.css b/webui/static/style.css index 0cbbff8e..87c89e03 100644 --- a/webui/static/style.css +++ b/webui/static/style.css @@ -1744,6 +1744,15 @@ body { box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3); } +.path-input-group input[readonly] { + opacity: 0.55; + cursor: not-allowed; +} + +.browse-button.locked { + opacity: 0.7; +} + /* Auth Button - gradient */ .auth-button { background: linear-gradient(135deg, #1db954, #1ed760);