]> ###2026.09.22d - Merge pull request #11 from joshmans/fix/release-push-race - Fix the release workflow's push race between concurrent releases ###2026.09.22c - Merge pull request #10 from joshmans/fix/nginx-guard-reproducible-build-launch-url - Merge pull request #9 from joshmans/fix/scope-tls-bypass-to-loopback - Fix launch URL, guard uninstall's nginx reload, make the release .txz reproducible - Scope the unraid-api TLS bypass to loopback requests only ###2026.09.22b - Merge pull request #4 from unraid-ca-review-bot/ca-review/loopback-listener - Bind the daemon to 127.0.0.1 ###2026.09.22 - Merge pull request #7 from joshmans/fix/package-name-collision - Install the package with installpkg so a colliding derived name cannot skip it ###2026.09.20b - Move the default branch from master to main; the plugin's update URL now points at main (#8) ###2026.09.20 - Add a Dashboard widget tile (parity with the classic plugin) (#6) ###2026.09.19f - Add a Fahrenheit/Celsius display setting for SMART history temperature (#5) ###2026.09.19e - Show up as a tile in the Disk Utilities group, not a bare Tools stub (#3) ###2026.09.19d - Stop the app inlining itself onto Unraid's Tools page (#2) ###2026.09.19c - Blink the tray LED for a bad status and real drive activity (#1) - Record the Community Apps feed entry publication in ROADMAP.md ###2026.09.19b - Use a letter suffix for same-day releases, not a numeric one - Document the two real install bugs found and fixed in ROADMAP.md ###2026.09.19-2 - Fix upgrades never actually installing new files ###2026.09.19 - Fix daemon fetch failures against unraid-api after the SEA rework ###2026.09.18-2 - Merge duplicate CHANGES header in the .plg ###2026.09.18 - First real installable release. Standalone Node SEA binary daemon, tray/ bay drive map with a directory-discovered tray-skin + PCIe-carrier gallery, role/pool/size display, brand-logo system (hotlinked or locally-uploaded SVG), classic-plugin import, SMART history charts, and daemon start/stop/ port control from the Settings tab. See ROADMAP.md for the full history. - Add PCIe conversion, role/pool/size display, brand logos, and a real .plg/SEA install pipeline - Add importer for tray assignments from the classic Disk Location plugin - Rename Storage section's save button to Save Location - Rename each Settings save button to reflect its own section - Add a Save button to the LED colors section too - Add per-section Save buttons in Settings, reorder skins list - Color-code daemon status and visually separate Settings sections - Replace demo-data fallback with real daemon status + start/restart/port controls - Fix rc.d restart race condition that silently left the daemon down - Add configurable SMART-history DB location, fix stuck SMART History tab - Fix SMART polling to work against SAS drives, not just ATA/NVMe - Add SMART-history polling, trend graphs tab, and real critical-status detection - Record real-box confirmation of the nginx self-heal fix - Self-heal our nginx registration instead of fighting rc.nginx's regeneration - Record real-hardware confirmation of the Locate LED blink - Add manual "Force (re)detect" button and clarify the no-groups blurb - Defer /disks fetch until a bay/PCIe group exists; add Disk Assignment blurb - Start Settings from an empty layout on unconfigured production installs - Always render LED color Reset button, disabled until an override exists - Show empty-state prompt instead of demo trays on unconfigured installs - Remove redundant "Disk Location" header - Dark-theme-safe styling, tabbed layout, and real nginx findings from a live install - Rename Tools-menu title to "Disk Location Next" - Flash the whole tray tile on a SMART fault, not just the LED dot - Add per-skin LED colors with defaults and a user override - Confirm disks query field shapes against live unraid-api; note LED-color idea - Add live disk-to-bay assignment with a Locate button - Add live PCIe carrier component and a settings UI backed by a real config route - Build the tray-map grid layout - Move tray skins into the repo as contributable SVG assets - Add real GraphQL queries, verified live against a 7.2+ instance - Settle runtime packaging: Node.js + SEA, node:sqlite for storage - Scaffold .plg daemon distribution: rc.d, nginx conf.d proxy, page, server - Rename package to unraid-disklocation-next &packageURL; &sha256; "$PLUGIN_LOC/layout.json" <<'JSON' {"layout":{"id":"custom","name":"My chassis","groups":[]},"logos":{}} JSON fi chmod 755 "$RCD_LOC/rc.$NAME" chmod 755 "$EMHTTP_LOC/app/bin/$NAME" mkdir -p "$EMHTTP_LOC/event" cat > "$EMHTTP_LOC/event/started" < /dev/null || true # Same rule the daemon's own validatedReload() follows (src/nginx.ts): never # reload on a config nginx itself would reject, a bad reload can take the # whole webGUI down, not just this plugin's line. nginx -t 2>/dev/null && nginx -s reload 2>/dev/null || true echo "$NAME removed. $PLUGIN_LOC (config, layout, logos, SMART history) was left in place." ]]>