Skip to content

Commit f661f82

Browse files
author
Alexander Phillips
committed
Fix settings privacy blur and defaults buttons
1 parent 175b4eb commit f661f82

6 files changed

Lines changed: 43 additions & 7 deletions

File tree

14 MB
Binary file not shown.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
c69205fc4df6bbe892fd820b1c90a15851329325a266a630b51618af485e7a4a folderview.plus-2026.04.15.10.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.04.15.09">
10-
<!ENTITY md5 "ec079b16ca9c9da35134a709d8923cba">
9+
<!ENTITY version "2026.04.15.10">
10+
<!ENTITY md5 "7cb604ebba883c89e58430b61f88972a">
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.04.15.10
17+
- Fix: Settings privacy mode no longer blurs the Folder Defaults source picker or saved-default summary.
18+
- UX: Folder Defaults action buttons now use the same FolderView Plus settings button styling as the rest of the plugin.
19+
20+
1621
###2026.04.15.09
1722
- Fix: Mount the Docker runtime privacy toggle inside the Basic view control cluster so it stays right-aligned and vertically aligned with the host toggle.
1823
- Privacy: Expand Docker runtime toggle anchor detection to reuse the host toolbar cluster before falling back to a standalone row.

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

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -828,8 +828,6 @@ body.fvplus-privacy-docker-settings #docker-tree-path-hint,
828828
body.fvplus-privacy-docker-settings #docker-rule-test-output,
829829
body.fvplus-privacy-docker-settings #docker-conflict-output,
830830
body.fvplus-privacy-docker-settings #fv-settings-root [data-fv-bulk-type="docker"] .bulk-item-name,
831-
body.fvplus-privacy-docker-settings #docker-folder-defaults-summary,
832-
body.fvplus-privacy-docker-settings #docker-folder-defaults-source,
833831
body.fvplus-privacy-vm-settings #fv-settings-root tbody#vms .name-cell-text,
834832
body.fvplus-privacy-vm-settings #fv-settings-root tbody#vms .name-cell-breadcrumb,
835833
body.fvplus-privacy-vm-settings #fv-settings-root tbody#vms .name-cell-members-meta,
@@ -838,9 +836,7 @@ body.fvplus-privacy-vm-settings #fv-settings-root tbody#vms td.rules-cell,
838836
body.fvplus-privacy-vm-settings #vm-tree-path-hint,
839837
body.fvplus-privacy-vm-settings #vm-rule-test-output,
840838
body.fvplus-privacy-vm-settings #vm-conflict-output,
841-
body.fvplus-privacy-vm-settings #fv-settings-root [data-fv-bulk-type="vm"] .bulk-item-name,
842-
body.fvplus-privacy-vm-settings #vm-folder-defaults-summary,
843-
body.fvplus-privacy-vm-settings #vm-folder-defaults-source {
839+
body.fvplus-privacy-vm-settings #fv-settings-root [data-fv-bulk-type="vm"] .bulk-item-name {
844840
filter: blur(0.28rem);
845841
}
846842

@@ -2088,6 +2084,34 @@ body.fv-mobile-compact #fv-settings-root .status-breakdown-list {
20882084
white-space: nowrap;
20892085
}
20902086

2087+
#fv-settings-root .fv-folder-defaults-actions > button {
2088+
border: 0 !important;
2089+
border-radius: 8px !important;
2090+
background: linear-gradient(180deg, var(--fvplus-settings-button-bg-top), var(--fvplus-settings-button-bg-bottom)) !important;
2091+
color: var(--fvplus-settings-button-fg) !important;
2092+
box-shadow: var(--fvplus-settings-button-shadow) !important;
2093+
text-shadow: none !important;
2094+
transition: background 120ms ease, box-shadow 120ms ease, color 120ms ease;
2095+
}
2096+
2097+
#fv-settings-root .fv-folder-defaults-actions > button:hover,
2098+
#fv-settings-root .fv-folder-defaults-actions > button:focus-visible {
2099+
background: linear-gradient(180deg, var(--fvplus-settings-button-hover-top), var(--fvplus-settings-button-hover-bottom)) !important;
2100+
box-shadow: var(--fvplus-settings-button-shadow-hover) !important;
2101+
}
2102+
2103+
#fv-settings-root .fv-folder-defaults-actions > button:active {
2104+
background: linear-gradient(180deg, var(--fvplus-settings-button-active-top), var(--fvplus-settings-button-active-bottom)) !important;
2105+
box-shadow: var(--fvplus-settings-button-shadow-active) !important;
2106+
transform: translateY(0);
2107+
}
2108+
2109+
#fv-settings-root .fv-folder-defaults-actions > button:disabled {
2110+
opacity: 0.56;
2111+
box-shadow: none !important;
2112+
transform: none !important;
2113+
}
2114+
20912115
.fv-theme-workspace-entry-actions {
20922116
display: flex;
20932117
flex-wrap: wrap;

tests/privacy-mode-contract.test.mjs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,10 @@ test('privacy mode toggles runtime body classes and ships masking selectors acro
5353
assert.match(settingsCss, /#docker-tree-path-hint/);
5454
assert.match(settingsCss, /#vm-tree-path-hint/);
5555
assert.match(settingsCss, /\.bulk-item-name/);
56+
assert.doesNotMatch(settingsCss, /#docker-folder-defaults-summary/);
57+
assert.doesNotMatch(settingsCss, /#docker-folder-defaults-source/);
58+
assert.doesNotMatch(settingsCss, /#vm-folder-defaults-summary/);
59+
assert.doesNotMatch(settingsCss, /#vm-folder-defaults-source/);
5660
assert.match(dockerCss, /body\.fvplus-privacy-docker-runtime/);
5761
assert.match(dockerCss, /\.fvplus-docker-runtime-toggle-shell/);
5862
assert.match(dockerCss, /\.fvplus-docker-runtime-toggle-shell\.is-inline-cluster/);

tests/settings-bindings.test.mjs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,8 @@ test('settings page exposes theme workspace and saved folder defaults controls',
118118
assert.match(script, /const applySavedFolderDefaultsToAll = async \(type\) => \{/);
119119
assert.match(script, /const importThemeWorkspaceGithub = async \(\) => \{/);
120120
assert.match(script, /registerWindowActions\(window,\s*\{[\s\S]*importThemeWorkspaceGithub[\s\S]*saveFolderDefaultsFromSelection[\s\S]*\}\);/);
121+
assert.match(settingsCss, /\.fv-folder-defaults-actions > button/);
122+
assert.match(settingsCss, /--fvplus-settings-button-bg-top/);
121123
});
122124

123125
test('settings page exposes theme fallback controls and runtime self-heal action', () => {

0 commit comments

Comments
 (0)