From 62aa2bef2ded2a275c0b924cba6e83662bd0c926 Mon Sep 17 00:00:00 2001 From: BoulderBadgeDad Date: Sun, 28 Jun 2026 19:11:03 -0700 Subject: [PATCH] library reorganize: Full vs Rename-only action in the modal (#875) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Adds an "Action" selector to the reorganize modal — "Full reorganize (default)" vs "Rename only (skip post-processing)" — with a hint explaining rename-only skips re-tagging/quality/AcoustID, only touches files whose name changes, and that renaming can reset media-server play counts / date-added. executeReorganize sends rename_only in the apply POST. Default is full → existing behaviour unchanged. Static file, no rebuild. --- webui/static/library.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/webui/static/library.js b/webui/static/library.js index ca9cfa35..d5d4de4f 100644 --- a/webui/static/library.js +++ b/webui/static/library.js @@ -7460,6 +7460,16 @@ async function showReorganizeModal(albumId) { html += ''; html += ''; + // Action: full pipeline vs rename-only (#875). + html += '
'; + html += ''; + html += '
"Full reorganize" re-tags and re-checks every track through the import pipeline — thorough, but slow and it re-touches every file. "Rename only" just moves files to your current naming scheme: no re-tagging, no quality/AcoustID checks, and only files whose name actually changes are touched. Tip: renaming can reset play counts / date-added on your media server.
'; + html += ''; + html += '
'; + // Preview area html += '
'; html += '
'; @@ -7644,10 +7654,11 @@ async function executeReorganize() { try { const chosenSource = document.getElementById('reorganize-source-select')?.value || ''; const chosenMode = document.getElementById('reorganize-mode-select')?.value || 'api'; + const renameOnly = document.getElementById('reorganize-action-select')?.value === 'rename'; const response = await fetch(`/api/library/album/${_reorganizeAlbumId}/reorganize`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ source: chosenSource, mode: chosenMode }) + body: JSON.stringify({ source: chosenSource, mode: chosenMode, rename_only: renameOnly }) }); const result = await response.json(); if (!result.success) throw new Error(result.error);