Skip to content

Commit 7798e4a

Browse files
author
FolderView Plus Test
committed
Restore Docker created-order sync semantics
1 parent 9dd05fc commit 7798e4a

9 files changed

Lines changed: 21 additions & 29 deletions

archive/folderview.plus-2026.04.05.04.txz.sha256

Lines changed: 0 additions & 1 deletion
This file was deleted.

archive/folderview.plus-2026.04.05.05.txz.sha256

Lines changed: 0 additions & 1 deletion
This file was deleted.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
5c3ddeaba4bb5e98bafc6b37c203a6fbebf322a9ae41800de0b841b28fb2b7f6 folderview.plus-2026.04.06.15.txz
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
017ad434e818648908cecd0cc01db117bf3d127e2191545728b041f3225ac1cb folderview.plus-2026.04.06.16.txz

folderview.plus.plg

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,23 @@
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.06.14">
10-
<!ENTITY md5 "9c500e0ccf32fadb3200ad864b7ba84a">
9+
<!ENTITY version "2026.04.06.16">
10+
<!ENTITY md5 "538eacb1f75067af2113a0fe39fa68d5">
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.06.16
17+
- Fix: Docker runtime rows, folder state, and container interactions.
18+
- Fix: Server endpoints, runtime payloads, and persistence or validation paths.
19+
20+
21+
###2026.04.06.15
22+
- Fix: Docker created-order sorting now restores folder creation order after switching back from A-Z or other explicit sort modes.
23+
- Fix: Docker host order sync now rebuilds folder placeholders from saved FolderView Plus order instead of preserving stale placeholder positions.
24+
25+
1626
###2026.04.06.14
1727
- Fix: Docker runtime rows, folder state, and container interactions.
1828
- UX: Folder editor flows, previews, and bootstrap behavior.

src/folderview.plus/usr/local/emhttp/plugins/folderview.plus/server/lib.php

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3526,16 +3526,10 @@ function syncContainerOrderUnlocked(): void {
35263526
$newOrder = [];
35273527
$seen = [];
35283528
$folderPlaceholders = array_keys($folderContainers);
3529-
$sortMode = (string)($prefs['sortMode'] ?? 'created');
3530-
$pinnedIds = normalizeStringIdList($prefs['pinnedFolderIds'] ?? []);
3531-
$preserveCurrentPlaceholderOrder = $sortMode === 'created' && count($pinnedIds) === 0;
3532-
$orderedFolderPlaceholders = [];
3529+
$orderedFolderPlaceholders = $folderPlaceholders;
35333530

35343531
foreach ($currentOrder as $item) {
35353532
if (in_array($item, $folderPlaceholders, true)) {
3536-
if ($preserveCurrentPlaceholderOrder && !in_array($item, $orderedFolderPlaceholders, true)) {
3537-
$orderedFolderPlaceholders[] = $item;
3538-
}
35393533
continue;
35403534
}
35413535
if (in_array($item, $assignedContainers, true)) {
@@ -3554,18 +3548,9 @@ function syncContainerOrderUnlocked(): void {
35543548
}
35553549
}
35563550

3557-
if ($preserveCurrentPlaceholderOrder) {
3558-
foreach ($folderPlaceholders as $placeholder) {
3559-
if (!in_array($placeholder, $orderedFolderPlaceholders, true)) {
3560-
$orderedFolderPlaceholders[] = $placeholder;
3561-
}
3562-
}
3563-
} else {
3564-
$orderedFolderPlaceholders = $folderPlaceholders;
3565-
}
3566-
3567-
// Preserve existing folder placeholder order from userprefs and only
3568-
// fall back to folder definition order for placeholders that are missing.
3551+
// Folder placeholder order should always follow the normalized
3552+
// FolderView Plus folder map so explicit sort-mode changes can restore
3553+
// the expected created/manual/alpha sequence deterministically.
35693554
foreach ($orderedFolderPlaceholders as $placeholder) {
35703555
foreach ($folderContainers[$placeholder] as $ct) {
35713556
if (!in_array($ct, $seen, true)) {

tests/docker-runtime-order-regression.test.mjs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -106,16 +106,13 @@ test('docker runtime only backfills missing folder placeholders when sort mode r
106106
assert.deepEqual(nextOrder, ['folder-b', 'folder-c', 'folder-a']);
107107
});
108108

109-
test('docker order sync preserves current folder placeholder sequence before appending missing placeholders', () => {
109+
test('docker order sync always rebuilds folder placeholders from prefs-ordered folder map', () => {
110110
assert.match(
111111
libPhp,
112-
/\$preserveCurrentPlaceholderOrder = \$sortMode === 'created' && count\(\$pinnedIds\) === 0;/
113-
);
114-
assert.match(
115-
libPhp,
116-
/if \(\$preserveCurrentPlaceholderOrder\) \{[\s\S]*?foreach \(\$folderPlaceholders as \$placeholder\) \{[\s\S]*?\$orderedFolderPlaceholders\[\] = \$placeholder;[\s\S]*?\}[\s\S]*?\} else \{[\s\S]*?\$orderedFolderPlaceholders = \$folderPlaceholders;[\s\S]*?\}/
112+
/\$orderedFolderPlaceholders = \$folderPlaceholders;/
117113
);
118114
assert.match(libPhp, /foreach \(\$orderedFolderPlaceholders as \$placeholder\) \{/);
115+
assert.doesNotMatch(libPhp, /\$preserveCurrentPlaceholderOrder =/);
119116
});
120117

121118
test('docker order sync uses prefs-ordered folders when explicit sort or pinning is active', () => {

0 commit comments

Comments
 (0)