- Add high-quality screenshots with 3x device scale factor for crisp text
- Implement mock alert history generator spanning 90 days
- Update documentation with detailed screenshot descriptions
- Add visual tour section to README with key screenshots
- Fix mock mode to properly separate from production data
- Clean up screenshot script to use actual mock data instead of DOM injection
- Enhance FAQ and webhooks docs with relevant screenshots
- Containers created by the script now get jq installed
- Makes auto-update config more reliable
- Keeps JSON properly formatted
- Falls back gracefully if jq can't be installed
- Only affects fresh installs in containers, not existing systems
- Detects when auto-updates are disabled despite timer being installed
- Shows 'Auto-updates are currently disabled' message to be clear
- Offers to enable auto-updates during any update/reinstall operation
- Works with --version flag, regular updates, and reinstalls
- Helps users who had the broken config from before the sed fix
- Fixed sed fallback in setup_auto_updates to correctly update existing autoUpdateEnabled field
- Improved Docker detection with multiple methods for better reliability
- Auto-updates now work correctly in LXC containers when enabled
- Remove unnecessary colors from storage type badges
- Fix node column styling to match other tabs (font-medium)
- Ensure consistent text styling across all columns
- Remove redundant storage totals from node header rows
- Add PVE and kernel version data to mock node generation
- Remove redundant total storage stats from node header rows in storage tab
- Simplify storage table layout by spanning node name across full row
- changed fixed widths to minimum widths for table columns
- made MetricBar component expand to fill available space
- maintains minimum width of 120px to prevent text cutoff
- bars now grow on wider screens while staying readable on narrow ones
- show PVE badge with version (e.g., PVE v8.2.0) like PBS nodes
- use orange color for PVE badge to match app color scheme
- extract clean version number from pve-manager string
- fix backup counts excluding PBS backups from PVE node counts
- prevent double-counting of PBS backups accessed through storage
- restored Node, Owner, and Location columns to backups table
- fixed issue where PBS backups via Proxmox storage showed storage name in Node column
- now correctly shows actual Proxmox node in Node column for all backup types
- Location column shows storage/datastore name without duplication
- Add auto-updates prompt to Quick mode (not just Advanced)
- Remove 'local' keyword so the flag variable is accessible later
- Previously the prompt appeared but the choice wasn't being passed through
- Add auto-updates prompt to Proxmox container creation flow
- Pass the choice to container via --enable-auto-updates flag
- Previously the prompt was skipped entirely for container installs
- Add safe_systemctl wrapper with 5-second timeout for systemctl commands
- Handle systemctl daemon-reload hanging in unprivileged LXC containers
- Provide clear messaging when systemctl fails (common in unprivileged mode)
- Installation continues successfully even when systemctl operations fail
This addresses #386 where the install script would hang indefinitely
in unprivileged containers due to systemctl daemon-reload never completing.
The install script asks for comma-separated DNS servers but Proxmox expects
space-separated. Now properly converts the format before passing to pct create.
The script was incorrectly prefixing storage name twice when listing templates,
resulting in ISOs:ISOs:vztmpl/... format instead of ISOs:vztmpl/...
This caused template existence checks to fail and always trigger downloads.
addresses #381
- Restored accidentally deleted main() function
- Fixed script not running at all due to missing main call
- Added IN_CONTAINER checks to skip prompts in container context
- Fixed network bridge detection parsing issue
- Script now completes installation properly without hanging
- Add safe_read_with_default wrapper to handle read failures gracefully
- Update all prompts to use the wrapper with appropriate defaults
- Script now continues with defaults instead of exiting on Enter key
- Addresses issue #383 installation problems
- Users can now select bridges and storage by number (1, 2, 3, etc.)
- Much easier than typing out storage names like 'local-lvm'
- Shows default option in brackets [1]
- Still allows typing the name directly if preferred
- Works in both Quick and Advanced modes
- Improves installation experience significantly
- Fix safe_read failures when running --in-container without TTY
- Use defaults when prompts fail in non-interactive mode
- Prevents hanging when pct exec runs install script
- Addresses #383
- Show installation output in real-time instead of capturing silently
- Users can now see what's happening during download/install
- Still includes 5-minute timeout to prevent infinite hangs
- Better error messages with manual recovery instructions
- Addresses #383 - users can now see where installation gets stuck
- Add timeout to GitHub API calls when fetching releases
- Add timeout to wget when downloading release files
- Add timeout to container installation with better error messages
- Show helpful error messages when timeouts occur
- Addresses #383 - installation getting stuck
addresses #382 - installer now prompts for gateway IP when user enters a static IP.
validates IP is in CIDR format (e.g., 192.168.1.100/24) and gateway is valid.
if no gateway is provided, attempts to use .1 of the subnet as default.
this fixes the 'waiting for network' timeout when using static IPs.
addresses #381 - installer now searches all storages that can contain templates
instead of assuming templates are in the same storage as the container rootfs.
when downloading templates, it uses the storage with the most free space.
- Storage tab: clicking nodes filters data without adding 'node:xxx' to search
- Backups tab: clicking nodes filters data without adding 'node:xxx' to search
- Both tabs now use separate selectedNode state for filtering
- Search field stays clean for actual text searches
- Visual improvements: added hover lift effect to NodeSummaryTable rows
- Remove table-fixed and use responsive width classes
- Remove inline styles, use pure Tailwind classes
- Fix left border alignment issue when selecting rows
- Improve visual feedback for selected rows with stronger blue background
- Clean up redundant whitespace-nowrap and inline flex styles
- All selected nodes now show blue left border (border-l-blue-500)
- Unselected nodes have transparent border to prevent layout shift
- Consistent color across all nodes when selected
- Removed border-left indicators that were causing issues
- Back to simple background color change when selected
- This matches the original working implementation
- Changed from template string to classList binding for selection state
- Removed function call in isSelected to prevent reactivity issues
- Should eliminate gray border artifacts on unselected nodes
- Made border color consistent across light/dark modes (always blue-500)
- Added transparent border to unselected rows to prevent layout shift
- This ensures all selected rows show the same blue indicator
- NodeSummaryTable now always uses unfiltered state data for counts
- This ensures all nodes show correct counts even when one is selected
- The parent component handles filtering for the main display separately
- Changed from fixed pixel width to 100% width table
- Converted column widths from pixels to percentages
- Removed inline styles in favor of Tailwind classes
- Table now properly stretches to fill available space
- Added blue left border indicator when a node is selected
- Fixed PBS nodes showing wrong number of columns on dashboard tab
- PBS nodes now show dashes for VMs/Containers columns they don't have
- Deleted old table components that were causing confusion
- Added CRITICAL section to CLAUDE.md about removing redundant code
- Prevents future issues where updated code gets ignored because old version still exists
- Fixed escape key not clearing tag filters from search box
- Replaced PVENodeTable/PBSNodeTable with unified NodeSummaryTable
- Column order now correctly shows: Node, Status, Uptime, CPU, Memory, Disk, VMs/Containers