diff --git a/src/stowarr/web/app.js b/src/stowarr/web/app.js
index 4c83f87..2027afd 100644
--- a/src/stowarr/web/app.js
+++ b/src/stowarr/web/app.js
@@ -653,7 +653,7 @@ function renderRecovery(){
:arr.error||'No exact *Arr mapping found'
:'Not checked';
const diagnosisMarkup=diagnosis?`
${esc(recommendation?.summary||'Inspection complete')}- qBittorrent
- ${esc(qbitSummary)}
- *Arr
- ${esc(arrSummary)}
- Result
- ${esc(String(recommendation?.code||'manual review').replaceAll('_',' '))}
This diagnosis is read-only and does not replace a qBittorrent force recheck or a manual file-content inspection.
`:'';
- return ``;
+ return ``;
}).join('');
}
@@ -687,6 +687,10 @@ async function resolveRecovery(publicId){
}
function automaticallyTrackRunningQueue(){
+ if(state.recovery?.required){
+ if(state.operationTracking)finishOperationTracking();
+ return;
+ }
const runningMove=(state.queue||[]).find(item=>item.state==='RUNNING');
const runningReconcile=(state.reconcileQueue||[]).find(item=>item.state==='RUNNING');
const running=runningMove||runningReconcile;
@@ -1164,6 +1168,14 @@ document.addEventListener('click',event=>{
if(diagnose)diagnoseRecovery(diagnose.dataset.publicId);
const resolve=event.target.closest('.resolve-recovery');
if(resolve)resolveRecovery(resolve.dataset.publicId);
+ const recoveryPreset=event.target.closest('.recovery-note-preset');
+ if(recoveryPreset){
+ const input=$(`.recovery-note[data-public-id="${CSS.escape(recoveryPreset.dataset.publicId)}"]`);
+ if(input){
+ input.value='qBittorrent force recheck passed';
+ input.focus();
+ }
+ }
const cancel=event.target.closest('.cancel-queue');
if(cancel)cancelQueue(cancel.dataset.queueId,cancel.dataset.kind);
});
diff --git a/src/stowarr/web/routing.css b/src/stowarr/web/routing.css
index 658d428..e2d9813 100644
--- a/src/stowarr/web/routing.css
+++ b/src/stowarr/web/routing.css
@@ -1675,6 +1675,17 @@
font-size: 12px;
}
+.recovery-resolution label small {
+ color: var(--muted);
+ font-size: 11px;
+}
+
+.recovery-resolution-actions {
+ align-items: end;
+ display: flex;
+ gap: 8px;
+}
+
.recovery-note {
background: #1b1d1f;
border: 1px solid #555a60;