]> ###2026.10.28g - Credit the two icon libraries the search draws on: Dashboard Icons (Apache-2.0) and selfh.st/icons (CC BY 4.0). CC BY requires attribution, so it now appears beside the search, in Settings and in the README. No artwork is bundled with the plugin; logos belong to their owners. ###2026.10.28f - The drag grip and the fold arrow now sit level in one column instead of the grip floating above and to the left of it. Both keep a full-size target. - Dragging a container that is not in a folder now reorders it, the same way the lock-and-drag on Unraid's own Docker page does, and writes the same file so both tables agree. A folder's start order is untouched by this: Unraid's own save rewrites the autostart file to match the display order, which would undo it, so this writes the display order alone. ###2026.10.28e - Fix: releases 2026.10.28b through 2026.10.28d appeared to install but changed nothing. Unraid cache-busts scripts and stylesheets on their file timestamp, and the packages were being built with one hardcoded timestamp for reproducibility - so every release served identical asset URLs and browsers kept running the previous release's code. The timestamp is now derived from the version. This release carries the drag-and-drop fixes and the Container Port / LAN IP:Port columns that 28c and 28d were supposed to deliver. ###2026.10.28d - Fix: drag and drop did nothing with a mouse. Pointer capture was taken on press rather than once the press became a drag, and a browser only fires a click when press and release share a target - so grabbing a row either did nothing or swallowed the click. The whole row drags now, including the icons and a folder's name, which is what you reach for. - Container Port and LAN IP:Port columns, matching Unraid's own table. They replace the single vague "Port" column rather than sitting beside it. ###2026.10.28c - Fix: dragging a container appeared to work but dropping it did nothing. Only an 18px grip, invisible until hovered, was a drag source - so the natural thing to grab was the row or the container's icon, and an icon is an image the browser drags by itself. That looked like a drag and dropped nowhere. The whole row is now a drag source, the artwork can no longer be dragged by the browser, and the grip is visible at rest. On a touch screen the grip is still the way to drag, so a finger on the row continues to scroll the page. - The plugin now appears as "Simple Folders" with its own icon on the Plugins page, instead of "simple.folders" with a generic folder glyph. ###2026.10.28b - Drag and drop. A grip appears at the left of each row: drag a container onto a folder to move it there, between two members to set where it starts, or down to "Not in a folder" to take it out; drag a folder to reorder the folders. Works with touch as well as a mouse. The menus and the editor still do all of it, so nothing depends on being able to drag. - Fix: the stock Docker table no longer flashes up before this plugin takes over. It is hidden while the page is still being parsed rather than after the first render. With scripting off, or if the plugin fails to render within eight seconds, the stock table is left in place. ###2026.10.28a - Fix: 2026.10.28 would not install - "XML file doesn't exist or xml parse error". Its changelog contained an unescaped angle bracket, which made the manifest unparseable. The build now validates the XML and refuses to produce a package if it is malformed. ###2026.10.28 - Renamed to Simple Folders. The plugin id, its install path, its folder on the flash drive and the Docker label are all now "simple.folders". - Installing imports the folders from a previous "docker.folders" install automatically; the old directory is only ever copied from, never touched. Remove the old plugin from the Plugins page once this one is in place - both would otherwise draw their own table on the Docker page. - Containers carrying the old "docker.folders=<folder>" label keep working. - New plugin icon. ###2026.10.27d - The tip line at the foot of the table is replaced by the eight actions from the classic Docker view: Add Container, Start, Stop, Pause, Resume, Check for Updates, Update and (in the overflow) Container Size. The four lifecycle actions are one group labelled "All containers", and Stop and Pause confirm first - they act on every container on the server. Add Container uses Unraid's brand orange. - Fix: searching for a folder icon showed broken images and never more than three results. It guessed filenames on both CDNs without checking they existed. It now searches each library's published index: "plex" returns 19 real matches, and a name neither carries says so instead of showing broken tiles. - Fix: on browsers with the URL bar at the bottom, a dialog's buttons were hidden behind it. Dialogs, menus and the progress panel now size to the visible viewport and keep clear of the home indicator. ###2026.10.27c - Fix: on a phone the table jumped back to the left a second after being scrolled sideways. The live CPU/memory stream republishes about once a second and was redrawing the whole table each time; those figures are now written into the existing cells instead. Scroll position and the caret in the filter box also survive a background refresh. - The table now reaches both screen edges on a phone instead of sitting inside a gutter, and the header stacks rather than crowding. ###2026.10.27b - Fix: Unraid's own button styling repainted every control in the plugin - uppercase text, letter-spacing, a minimum width of 86px and an orange border - leaving switches, menus and icons as oversized orange boxes. The plugin now carries Unraid's "unapi" opt-out class, and its own element reset is both complete and specific enough to win on its own. - The page no longer prints a second "Simple Folders" section header or repeats the "Containers" title. Unraid's heading is followed directly by the container counts. ###2026.10.27a - Fix: the Docker page showed "Request failed (500)" and no containers. Unraid's DockerClient.php was being required from inside a function, which made the globals it declares ($dockerManPaths, $driver, $docroot) function locals, so every `global` lookup inside it resolved to null. - Server errors now come back as JSON with the message and the failing file and line, instead of a blank 500, and are written to syslog (tag simple.folders). - A stopped Docker service now says so, rather than rendering "0 containers". ###2026.10.27 - Initial release. https://raw.githubusercontent.com/&github;/main/archive/&name;-&version;.txz &md5; mkdir -p &cfgdir;/icons # --------------------------------------------------------------------------- # This plugin was called docker.folders before it was renamed to Simple # Folders. Carry an existing configuration across on first install, so the # rename does not cost anyone their folders. Only ever a copy - the old # directory is left exactly as it was, so the old plugin keeps working until # it is removed and nothing is lost if this goes wrong. # --------------------------------------------------------------------------- LEGACY=/boot/config/plugins/docker.folders if [ -f "$LEGACY/folders.json" ] && [ ! -f &cfgdir;/folders.json ]; then cp -a "$LEGACY/folders.json" &cfgdir;/folders.json [ -d "$LEGACY/icons" ] && cp -an "$LEGACY/icons/." &cfgdir;/icons/ 2>/dev/null echo "" echo " Imported your folders from the previous docker.folders install." echo " The old plugin can now be removed from the Plugins page." MIGRATED=1 fi [ -f &cfgdir;/folders.json ] || echo '{"version":1,"folders":[]}' > &cfgdir;/folders.json chmod 0644 &cfgdir;/folders.json # keep only the package matching this version for f in &cfgdir;/&name;-*.txz; do [ "$f" = "&cfgdir;/&name;-&version;.txz" ] || rm -f "$f" done echo "&version;" > &cfgdir;/version echo "" echo "-----------------------------------------------------------" echo " Simple Folders &version; installed." echo " Folders are stored in &cfgdir;/folders.json" if [ -n "${MIGRATED:-}" ]; then echo "" echo " NOTE: the old 'docker.folders' plugin is still installed." echo " Remove it from the Plugins page - both would otherwise" echo " render their own table on the Docker page." fi echo "-----------------------------------------------------------" echo "" removepkg &name;-&version; rm -rf &plugdir; echo "" echo " &name; removed. Folder definitions kept in &cfgdir;" echo " Delete that directory to erase them." echo ""