]> ##&name; ###2026.06.18 - Fix: Toggling "Show in top menu bar" now updates the top navigation immediately on Apply - the SMB Shares tab no longer lingers until a manual browser hard refresh (issue #21 follow-up). ###2026.06.17 - New: Configurable menu placement (issue #21, thanks dc911x) - new "Show in top menu bar" setting keeps SMB Shares as a top-bar tab (default) or moves it to the Settings / User Utilities section like most plugins - New: Allow share paths outside /mnt (issue #22, thanks johnoldiges) - opt-in setting (default off) permits paths such as /tmp; system directories (/boot, /etc, /var) are always blocked even when enabled, with symlink-escape protection ###2026.05.18b - Fix: Path picker now enables Apply button on Edit page. Previously, picking a folder via Browse left Apply disabled until you also typed in name or comment. Mirrors the Docker plugin pattern by firing a change event after setting the path field, so Unraid's form-state tracking sees the change. ###2026.05.18a - Fix: Import from File now actually imports (was a silent no-op — the modal closed during file picker interaction, leaving users with no way to submit and no feedback) ###2026.05.18 - Fix: Import Config now works (was silently 400-ing — JSON read from wrong source) - Fix: Restore from backup actually restores AND reloads Samba (was updating shares.json but Samba kept old config) - Fix: First-row Delete/Clone no longer fails when share name has stray whitespace - Fix: Picking a path on the Edit page no longer silently renames the share - New: Specific error messages on import/restore failures (.fail handlers) - New: Share name normalization on load/save (cleans up stale dirty data) - 24 new integration tests + 2 new E2E tests (440 tests / 1062 assertions, all green) - Forum: thanks to comet424 for the detailed bug reports ###2026.04.06 - Fix: Share name field is now editable on the Edit page (allows renaming shares) - Fix: Duplicate name check when renaming a share - Fix: Submit button properly resets after validation errors ###2026.04.01d - Fix: FileTree dropdown width (no longer stretches across full form) ###2026.04.01b - Fix: FileTree dropdown positioning with Browse button layout - Fix: E2E test harness (short_open_tag, page name routing) ###2026.04.01a - Fix: Path input is now editable - type or paste paths directly - Browse button still available for directory selection - Removed unused legacy script (generate-config.sh) ###2026.04.01 - Fix: Allow all valid SMB share name characters (thanks Squid!) - Share names now permit spaces, dots, accents, and most special characters - Only SMB-forbidden characters are blocked: [ ] " / \ : ; | < > , ? * = ###2026.02.10 - Feature: Add File Browser link to share list (requested by Frank1940) - Click the browse icon next to any share path to open Unraid's built-in File Browser ###2026.01.19 - Fix: User access permissions now save correctly - Test: Add comprehensive test pyramid for SMB security settings (57 new tests) - Test: Unit tests for security config builders - Test: Integration tests for save/load cycle - Test: E2E tests for UI interactions - Tests: 344 tests, 832 assertions - all passing ###2025.12.14f - CI: Add CI status check to release script - Support: Add forum support thread ###2025.12.14e - CI: Install dev dependencies in build job for linting ###2025.12.14d - CI: Limit test coverage to unit/integration (skip E2E in CI) - CI: Add MIT license to composer.json ###2025.12.14c - Security: Prevent Samba config injection via newlines in share fields - Security: Fix TOCTOU symlink race condition in path validation - Refactor: Extract helper functions from generateSambaConfig() - Quality: Add concurrent modification tests (6 new tests) - Quality: Add JSDoc documentation to JavaScript - Quality: Extract magic strings to ConfigRegistry constants - Tests: 287 tests, 645 assertions - all passing ###2025.12.14a - Initial release v1.0.0 - Full share CRUD operations (Create, Read, Update, Delete) - Enable/disable toggle with loading states - Clone share functionality - Import/export configuration as JSON - Backup management with configurable retention - macOS/Time Machine support with Fruit VFS - Advanced permission settings (masks, force user/group) - Host allow/deny lists - Security modes: Public, Secure, Private - User/group browser with search - Path browser with visual directory picker - Real-time validation with helpful error messages - Toast notifications for all actions - Feature icons for quick visual reference - Automatic Samba configuration and reload - Comprehensive test suite (274 tests) echo "Cleaning up old versions..." rm -f $(ls &plgPATH;/&name;*.txz 2>/dev/null | grep -v '&version;') rm -f $(ls &plgPATH;/&name;*.md5 2>/dev/null | grep -v '&version;') https://github.com/&github;/releases/download/v&version;/&name;-&version;-x86_64-1.txz &md5; # Remove any existing package versions removepkg &name; 2>/dev/null || true # Install the new package installpkg &plgPATH;/&name;-&version;-x86_64-1.txz # Create config directory mkdir -p &plgPATH; mkdir -p &plgPATH;/backups # Initialize shares.json if it doesn't exist if [ ! -f "&plgPATH;/shares.json" ]; then echo "[]" > &plgPATH;/shares.json fi # Initialize settings.cfg if it doesn't exist if [ ! -f "&plgPATH;/settings.cfg" ]; then echo 'SERVICE="enabled"' > &plgPATH;/settings.cfg echo 'BACKUP_COUNT="10"' >> &plgPATH;/settings.cfg fi # Set permissions chmod 644 &plgPATH;/shares.json chmod 644 &plgPATH;/settings.cfg echo "" echo "----------------------------------------------------" echo " &name; has been installed." echo " Version: &version;" echo " Access via: Tasks > SMB Shares" echo "----------------------------------------------------" echo "" echo "Removing &name;..." # Remove plugin package removepkg &name;-&version;-x86_64-1 # Remove runtime files rm -rf &plugdir; # Note: Configuration files in &plgPATH; are preserved echo "" echo "----------------------------------------------------" echo " &name; has been removed." echo " Configuration preserved in &plgPATH;" echo " To remove config: rm -rf &plgPATH;" echo "----------------------------------------------------" echo ""