@@ -41,6 +41,11 @@ require_once('/usr/local/emhttp/plugins/folderview.plus/langs/script.php');
4141 </select>
4242 <div class="hint-line">Use manual mode and the up/down buttons in the first column to set custom order.</div>
4343 <input id="docker-folder-filter" type="text" placeholder="Search Docker folders" oninput="setFilterQuery('folders','docker',this.value)">
44+ <div class="badge-toggle-row">
45+ <span class="badge-toggle-title">Layout</span>
46+ <label><input id="docker-hide-empty-folders" type="checkbox" onchange="changeVisibilityPref('docker', 'hideEmptyFolders', this.checked)"> Hide empty folders</label>
47+ <span class="rules-help">Pin folders with the star button in the Actions column.</span>
48+ </div>
4449 <div class="badge-toggle-row">
4550 <span class="badge-toggle-title">Folder badges</span>
4651 <label><input id="docker-badge-running" type="checkbox" onchange="changeBadgePref('docker', 'running', this.checked)"> Running</label>
@@ -99,6 +104,11 @@ require_once('/usr/local/emhttp/plugins/folderview.plus/langs/script.php');
99104 </select>
100105 <div class="hint-line">Use manual mode and the up/down buttons in the first column to set custom order.</div>
101106 <input id="vm-folder-filter" type="text" placeholder="Search VM folders" oninput="setFilterQuery('folders','vm',this.value)">
107+ <div class="badge-toggle-row">
108+ <span class="badge-toggle-title">Layout</span>
109+ <label><input id="vm-hide-empty-folders" type="checkbox" onchange="changeVisibilityPref('vm', 'hideEmptyFolders', this.checked)"> Hide empty folders</label>
110+ <span class="rules-help">Pin folders with the star button in the Actions column.</span>
111+ </div>
102112 <div class="badge-toggle-row">
103113 <span class="badge-toggle-title">Folder badges</span>
104114 <label><input id="vm-badge-running" type="checkbox" onchange="changeBadgePref('vm', 'running', this.checked)"> Running</label>
@@ -271,6 +281,48 @@ require_once('/usr/local/emhttp/plugins/folderview.plus/langs/script.php');
271281</div>
272282<hr>
273283
284+ <h2>Folder runtime actions</h2>
285+ <div class="bulk-assign-grid">
286+ <div class="rules-panel">
287+ <div class="rules-header">
288+ <h3>Docker folder actions</h3>
289+ <span class="rules-help">Preview and apply Start/Stop/Pause/Resume for items currently in a folder.</span>
290+ </div>
291+ <div class="runtime-action-grid">
292+ <select id="docker-runtime-folder"></select>
293+ <select id="docker-runtime-action">
294+ <option value="start">Start</option>
295+ <option value="stop">Stop</option>
296+ <option value="pause">Pause</option>
297+ <option value="resume">Resume</option>
298+ </select>
299+ <button onclick="previewFolderRuntimeAction('docker')"><i class="fa fa-list-alt"></i> Preview</button>
300+ <button onclick="applyFolderRuntimeAction('docker')"><i class="fa fa-play"></i> Apply action</button>
301+ </div>
302+ <pre id="docker-runtime-preview-output" class="diagnostics-output compact-output">Preview a runtime action to see exactly which containers will be changed.</pre>
303+ </div>
304+
305+ <div class="rules-panel">
306+ <div class="rules-header">
307+ <h3>VM folder actions</h3>
308+ <span class="rules-help">Preview and apply Start/Stop/Pause/Resume for VMs currently in a folder.</span>
309+ </div>
310+ <div class="runtime-action-grid">
311+ <select id="vm-runtime-folder"></select>
312+ <select id="vm-runtime-action">
313+ <option value="start">Start</option>
314+ <option value="stop">Stop</option>
315+ <option value="pause">Pause</option>
316+ <option value="resume">Resume</option>
317+ </select>
318+ <button onclick="previewFolderRuntimeAction('vm')"><i class="fa fa-list-alt"></i> Preview</button>
319+ <button onclick="applyFolderRuntimeAction('vm')"><i class="fa fa-play"></i> Apply action</button>
320+ </div>
321+ <pre id="vm-runtime-preview-output" class="diagnostics-output compact-output">Preview a runtime action to see exactly which VMs will be changed.</pre>
322+ </div>
323+ </div>
324+ <hr>
325+
274326<h2>Backups</h2>
275327<div class="backup-grid">
276328 <div class="rules-panel">
@@ -397,6 +449,21 @@ require_once('/usr/local/emhttp/plugins/folderview.plus/langs/script.php');
397449</div>
398450<hr>
399451
452+ <h2>Change history and undo</h2>
453+ <div class="rules-panel">
454+ <div class="rules-header">
455+ <h3>Recent changes</h3>
456+ <span class="rules-help">Shows recent config actions from diagnostics history and allows one-click undo to the latest backup transaction.</span>
457+ </div>
458+ <div class="backup-actions">
459+ <button onclick="refreshChangeHistory()"><i class="fa fa-refresh"></i> Refresh history</button>
460+ <button onclick="undoLatestChange('docker')"><i class="fa fa-undo"></i> Undo latest Docker change</button>
461+ <button onclick="undoLatestChange('vm')"><i class="fa fa-undo"></i> Undo latest VM change</button>
462+ </div>
463+ <pre id="change-history-output" class="diagnostics-output compact-output">Refresh history to view recent changes.</pre>
464+ </div>
465+ <hr>
466+
400467<h2>Diagnostics</h2>
401468<div class="rules-panel">
402469 <div class="rules-header">
0 commit comments