Skip to content

Commit d0808d2

Browse files
Fold preview detail behavior into preview mode
1 parent 4b8e10e commit d0808d2

12 files changed

Lines changed: 18 additions & 109 deletions

File tree

14.1 MB
Binary file not shown.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
1409f47505e5cf5cb75a33d6b2af7af2ad2fdb6d7f64edacd5f524d3de3baca7 folderview.plus-2026.03.22.05.txz

folderview.plus.plg

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,18 @@
66
<!ENTITY launch "Settings/FolderViewPlus">
77
<!ENTITY plugdir "/usr/local/emhttp/plugins/&name;">
88
<!ENTITY pluginURL "https://raw.githubusercontent.com/&github;/dev/folderview.plus.plg">
9-
<!ENTITY version "2026.03.22.04">
10-
<!ENTITY md5 "ffb2af11448a2e6033f8b550e8ac8220">
9+
<!ENTITY version "2026.03.22.05">
10+
<!ENTITY md5 "23aaf8a1d9f462eb94a63e9a3c4591d5">
1111
]>
1212

1313
<PLUGIN name="&name;" author="&author;" version="&version;" launch="&launch;" pluginURL="&pluginURL;" icon="folder-icon.png" support="https://forums.unraid.net/topic/197631-plugin-folderview-plus/" min="7.0.0">
1414
<CHANGES>
1515

16+
###2026.03.22.05
17+
- UX: Refined settings and on-screen update messaging for clarity and consistency.
18+
- Quality: Strengthened release automation and regression guards to prevent note drift.
19+
20+
1621
###2026.03.22.04
1722
- Maintenance: Prune superseded archive artifacts.
1823
- Maintenance: Refresh perf baseline for runtime globals.

src/folderview.plus/usr/local/emhttp/plugins/folderview.plus/Folder.page

Lines changed: 2 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -253,15 +253,15 @@ emitRequestTokenMetaTag();
253253
<select name="preview" onchange="updateForm()">
254254
<option value="0" data-i18n="preview-option-0">None</option>
255255
<option value="1" data-i18n="preview-option-1" selected>Icon and label</option>
256-
<option value="2" data-i18n="preview-option-2">Only icon</option>
256+
<option value="2" data-i18n="preview-option-2">Only icon (clean)</option>
257257
<option value="3" data-i18n="preview-option-3">Only label</option>
258258
<option value="4" data-i18n="preview-option-4">List</option>
259259
</select>
260260
</dd>
261261
</dl>
262262
<blockquote class="inline_help">
263263
<p data-i18n="[html]preview-tooltip">
264-
The preview type, not that difficult.
264+
Choose how folder members are shown in the row preview. Use <b>Only icon</b> for a clean icon-only layout without member names or started/stopped text.
265265
</p>
266266
</blockquote>
267267
</div>
@@ -311,31 +311,6 @@ emitRequestTokenMetaTag();
311311
</blockquote>
312312
</div>
313313
</li>
314-
<li constraint="preview-1">
315-
<div class="basic">
316-
<dl>
317-
<dt>Preview member details:</dt>
318-
<dd>
319-
<select name="preview_member_display">
320-
<option value="full">Full</option>
321-
<option value="compact">Compact</option>
322-
<option value="icons_only">Icons only</option>
323-
</select>
324-
</dd>
325-
</dl>
326-
<blockquote class="inline_help">
327-
<p>
328-
Controls how member details are shown inside the folder preview when using <b>Icon and label</b> mode.
329-
<br>
330-
<b>Full</b> keeps the current name + status display.
331-
<br>
332-
<b>Compact</b> hides the started/stopped text.
333-
<br>
334-
<b>Icons only</b> hides both the member name and status text for a cleaner icon-only look.
335-
</p>
336-
</blockquote>
337-
</div>
338-
</li>
339314
<li constraint="preview-1 preview-2">
340315
<div class="basic">
341316
<dl>

src/folderview.plus/usr/local/emhttp/plugins/folderview.plus/langs/en.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,10 +55,10 @@
5555
"icon": "Icon:",
5656
"icon-tooltip": "A link to an image (<a href=\"https://developer.mozilla.org/en-US/docs/Web/HTML/Element/img#supported_image_formats\" target=\"_blank\">Supported formats</a>)<br>It also supports <b>data:image/{type};base64,</b> format (<a href=\"https://base64.guru/converter/encode/image\" target=\"_blank\">Convert image to data strings</a>)<br><a href=\"https://forums.unraid.net/topic/92824-icon-collections-for-docker-folder-plugin/\" target=\"_blank\">Thread with some icons</a>.<br>You can click the icon of the Docker/VM to set the folder icon.",
5757
"preview": "Preview:",
58-
"preview-tooltip": "The preview type, not that difficult.",
58+
"preview-tooltip": "Choose how folder members are shown in the row preview. Use <b>Only icon</b> for a clean icon-only layout without member names or started/stopped text.",
5959
"preview-option-0": "None",
6060
"preview-option-1": "Icon and label",
61-
"preview-option-2": "Only icon",
61+
"preview-option-2": "Only icon (clean)",
6262
"preview-option-3": "Only label",
6363
"preview-option-4": "List",
6464
"preview-hover": "Show preview only on hover:",

src/folderview.plus/usr/local/emhttp/plugins/folderview.plus/scripts/docker.js

Lines changed: 1 addition & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -285,20 +285,6 @@ const getPreviewContainerStatusMeta = (entry = {}) => {
285285
}
286286
return { key: 'stopped', icon: 'fa-square', className: 'fv-preview-status-stopped' };
287287
};
288-
const normalizePreviewMemberDisplayMode = (value) => {
289-
const normalized = String(value || '').trim().toLowerCase();
290-
return ['full', 'compact', 'icons_only'].includes(normalized)
291-
? normalized
292-
: 'full';
293-
};
294-
const resolvePreviewMemberDisplayMode = (folder) => {
295-
const previewMode = Number(folder?.settings?.preview || 0);
296-
if (previewMode !== 1) {
297-
return 'full';
298-
}
299-
return normalizePreviewMemberDisplayMode(folder?.settings?.preview_member_display);
300-
};
301-
302288
const clampDockerRuntimeColumnWidth = (value, columnIndex = 0) => {
303289
const parsed = Number(value);
304290
if (!Number.isFinite(parsed)) {
@@ -2563,9 +2549,7 @@ const createFolder = (folder, id, positionInMainOrder, liveOrderArray, container
25632549

25642550
const previewNode = $(`tr.folder-id-${id} div.folder-preview`).get(0);
25652551
applyPreviewBorderStyle(previewNode, folder.settings);
2566-
$(`tr.folder-id-${id} div.folder-preview`)
2567-
.addClass(`folder-preview-${folder.settings.preview}`)
2568-
.addClass(`fv-preview-member-display-${resolvePreviewMemberDisplayMode(folder)}`);
2552+
$(`tr.folder-id-${id} div.folder-preview`).addClass(`folder-preview-${folder.settings.preview}`);
25692553
if (FOLDER_VIEW_DEBUG_MODE) console.log(`[FV3_DEBUG] createFolder (id: ${id}): Added class folder-preview-${folder.settings.preview} to preview div.`);
25702554

25712555
let addPreview;
@@ -3068,15 +3052,6 @@ const createFolder = (folder, id, positionInMainOrder, liveOrderArray, container
30683052
const previewStateMeta = getPreviewContainerStatusMeta(newFolder[container_name_in_folder]);
30693053
const previewStatusTitle = escapeHtml($.i18n(previewStateMeta.key));
30703054

3071-
if (previewMode === 2 && $previewElementTarget.length) {
3072-
const $existingPreviewStateIcon = $previewElementTarget.children('.folder-preview-status-icon');
3073-
if (!$existingPreviewStateIcon.length) {
3074-
$previewElementTarget.append(
3075-
$(`<span class="folder-preview-status-icon ${previewStateMeta.className}" title="${previewStatusTitle}"><i class="fa ${previewStateMeta.icon}" aria-hidden="true"></i></span>`)
3076-
);
3077-
}
3078-
}
3079-
30803055
if ((previewMode === 3 || previewMode === 4) && $previewElementTarget.length) {
30813056
const $previewAppName = $previewElementTarget.find('span.appname > a.exec').first();
30823057
if ($previewAppName.length) {

src/folderview.plus/usr/local/emhttp/plugins/folderview.plus/scripts/folder.js

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -147,7 +147,6 @@ const SMART_DEFAULT_FIELD_NAMES = new Set([
147147
'icon',
148148
'preview',
149149
'preview_hover',
150-
'preview_member_display',
151150
'preview_border',
152151
'preview_border_color',
153152
'preview_vertical_bars',
@@ -3078,13 +3077,6 @@ const normalizeDashboardOverflowMode = (value) => {
30783077
: 'default';
30793078
};
30803079

3081-
const normalizePreviewMemberDisplayMode = (value) => {
3082-
const normalized = String(value || '').trim().toLowerCase();
3083-
return ['full', 'compact', 'icons_only'].includes(normalized)
3084-
? normalized
3085-
: 'full';
3086-
};
3087-
30883080
const normalizeFolderRecordForEditor = (folder) => {
30893081
const source = folder && typeof folder === 'object' ? folder : {};
30903082
const settings = source.settings && typeof source.settings === 'object' ? source.settings : {};
@@ -3116,7 +3108,6 @@ const normalizeFolderRecordForEditor = (folder) => {
31163108
preview_hover: settings.preview_hover === true,
31173109
preview_update: settings.preview_update === true,
31183110
preview_text_width: String(settings.preview_text_width || ''),
3119-
preview_member_display: normalizePreviewMemberDisplayMode(settings.preview_member_display),
31203111
preview_grayscale: settings.preview_grayscale === true,
31213112
preview_webui: settings.preview_webui === true,
31223113
preview_logs: settings.preview_logs === true,
@@ -4145,7 +4136,6 @@ resetStatusColorDefaults();
41454136
form.preview_hover.checked = currFolder.settings.preview_hover;
41464137
form.preview_update.checked = currFolder.settings.preview_update;
41474138
form.preview_text_width.value = currFolder.settings.preview_text_width || '';
4148-
form.preview_member_display.value = normalizePreviewMemberDisplayMode(currFolder.settings.preview_member_display);
41494139
form.preview_grayscale.checked = currFolder.settings.preview_grayscale;
41504140
form.preview_webui.checked = currFolder.settings.preview_webui;
41514141
form.preview_logs.checked = currFolder.settings.preview_logs;
@@ -4673,7 +4663,6 @@ const submitForm = async (e, saveAsCopy = false) => {
46734663
preview_hover: e.preview_hover.checked,
46744664
preview_update: e.preview_update.checked,
46754665
preview_text_width: e.preview_text_width.value,
4676-
preview_member_display: normalizePreviewMemberDisplayMode(e.preview_member_display?.value),
46774666
preview_grayscale: e.preview_grayscale.checked,
46784667
preview_webui: e.preview_webui.checked,
46794668
preview_logs: e.preview_logs.checked,

src/folderview.plus/usr/local/emhttp/plugins/folderview.plus/scripts/vm.js

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -73,19 +73,6 @@ const applyPreviewBorderStyle = (previewNode, settings) => {
7373
const previewColor = normalizeStatusHexColor(source.preview_border_color, DEFAULT_PREVIEW_BORDER_COLOR);
7474
previewNode.style.setProperty('border', isPreviewBorderEnabled(source) ? `1px solid ${previewColor}` : 'none', 'important');
7575
};
76-
const normalizePreviewMemberDisplayMode = (value) => {
77-
const normalized = String(value || '').trim().toLowerCase();
78-
return ['full', 'compact', 'icons_only'].includes(normalized)
79-
? normalized
80-
: 'full';
81-
};
82-
const resolvePreviewMemberDisplayMode = (folder) => {
83-
const previewMode = Number(folder?.settings?.preview || 0);
84-
if (previewMode !== 1) {
85-
return 'full';
86-
}
87-
return normalizePreviewMemberDisplayMode(folder?.settings?.preview_member_display);
88-
};
8976
const utils = window.FolderViewPlusUtils || {
9077
normalizePrefs: () => ({
9178
sortMode: 'created',
@@ -1296,9 +1283,7 @@ const createFolder = (folder, id, position, order, vmInfo, foldersDone, matchCac
12961283
const previewNode = $(`tr.folder-id-${id} div.folder-preview`).get(0);
12971284
applyPreviewBorderStyle(previewNode, folder.settings);
12981285

1299-
$(`tr.folder-id-${id} div.folder-preview`)
1300-
.addClass(`folder-preview-${folder.settings.preview}`)
1301-
.addClass(`fv-preview-member-display-${resolvePreviewMemberDisplayMode(folder)}`);
1286+
$(`tr.folder-id-${id} div.folder-preview`).addClass(`folder-preview-${folder.settings.preview}`);
13021287

13031288
// select the preview function to use
13041289
let addPreview;

src/folderview.plus/usr/local/emhttp/plugins/folderview.plus/styles/docker.css

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -363,14 +363,6 @@ tr.folder.fv-parent-expanded div.folder-preview {
363363
word-break: break-all;
364364
}
365365

366-
div.folder-preview.fv-preview-member-display-compact .folder-preview-wrapper .state {
367-
display: none !important;
368-
}
369-
370-
div.folder-preview.fv-preview-member-display-icons-only .folder-preview-wrapper .inner {
371-
display: none !important;
372-
}
373-
374366
.folder-preview-divider:not(:last-child) {
375367
float: left;
376368
height: 80%;

src/folderview.plus/usr/local/emhttp/plugins/folderview.plus/styles/vm.css

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -239,14 +239,6 @@ i.folder-load-status.stopped {
239239
word-break: break-all;
240240
}
241241

242-
div.folder-preview.fv-preview-member-display-compact .folder-preview-wrapper .state {
243-
display: none !important;
244-
}
245-
246-
div.folder-preview.fv-preview-member-display-icons-only .folder-preview-wrapper .inner {
247-
display: none !important;
248-
}
249-
250242
.folder-preview-divider:not(:last-child) {
251243
float: left;
252244
height: 80%;

0 commit comments

Comments
 (0)