Commit Graph

1127 Commits

Author SHA1 Message Date
root 15519bf54f fix: correct disk usage percentage calculation in compound threshold rules
- Fixed evaluateThresholdCondition() to calculate disk percentage using (disk / maxdisk) * 100
- Fixed getThresholdCurrentValue() to display disk percentage correctly in alerts
- Updated formatCompoundThresholdMessage() to pass guest parameter for accurate calculations
- Now compound threshold rules properly compare percentage values against percentage thresholds
- Resolves issue where 78% disk threshold wasn't triggering due to comparing raw bytes vs percentage

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-07 18:04:55 +01:00
root 846880167b fix: prevent modal movement when switching tabs
Changes modal positioning from centered to top-anchored to maintain stable positioning when tab content height varies. Applied to both Alert Management and Settings modals.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-07 17:37:21 +01:00
root 04f9a938b7 cleanup: remove development test artifacts
Remove hot reload test comment and test file from development testing.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-07 16:41:57 +01:00
root 8e8b6cfb1c test: add development test comment and test file
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-07 16:38:56 +01:00
root fe72e9fecd security: prevent user settings from being committed to repository
- Add data/alert-rules.json to .gitignore to prevent custom alerts from being tracked
- Add data/custom-thresholds.json to .gitignore to prevent user threshold configs from being tracked
- Remove previously committed user-specific alert rules and threshold configurations
- Create template files showing expected structure without sensitive user data
- Ensures user privacy and prevents accidental exposure of monitoring configurations

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-07 16:34:35 +01:00
courtmanr@gmail.com bd9a976100 feat: enhance system reliability with DNS resilience and advanced alerting
- Implement resilient DNS resolution for API calls with fallback mechanisms
- Add compound threshold alert rules with multi-metric evaluation
- Enable immediate alert evaluation when rules are enabled
- Add alert rules file watching for dynamic configuration updates
- Improve alert state management with proper resolution handling
- Include comprehensive testing and documentation for DNS features

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-07 15:46:04 +01:00
courtmanr@gmail.com 648dd5f9e0 feat: implement immediate alert evaluation when enabling rules
- Enhanced refreshRules() to trigger immediate evaluation of current state
- Added evaluateCurrentState() method to check existing conditions without duration delays
- Added API endpoints for alert evaluation and rule reloading
- Improved alert management modal with better status loading and configuration
- Fixed async handling in config API for rule refreshing
- Added immediate alert creation for down alerts when re-enabling rules

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-05 22:31:59 +01:00
courtmanr@gmail.com 559209a831 fix: ensure alert dropdown closes when clicking Manage Alerts button
- Fixed missing hideAlertsDropdown() call in the 'no alerts' state button
- Added consistent dropdown closing behavior for both alert states
- Resolved issue where dropdown lingered when no active alerts present

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-05 22:31:35 +01:00
courtmanr@gmail.com a5a8ddaf2d remove: delete ProxmoxVE directory from repository
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-05 18:57:14 +01:00
courtmanr@gmail.com 724d4afd19 clean: remove debug console logs from frontend for production release
- Remove development debug console.log statements from JavaScript modules
- Remove TypeScript/React debug console.error statements
- Remove TODO comments from test files
- Preserve legitimate error handling console statements
- Clean up 64+ debug logging statements across frontend

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-05 18:55:54 +01:00
courtmanr@gmail.com ad9cce7e36 feat: add notification channel display to alert cards and fix checkbox persistence
- Show notification channels on alert rule cards with visual badges
- Display "Pulse UI" (always), "Email", and "Webhook" with color-coded badges
- Fix notification checkbox persistence when editing existing alerts
- Users can now see at-a-glance which delivery methods are configured
- Simplify UI by removing over-engineered notification status checking
- Maintain clean, straightforward interface without API complexity

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-05 18:30:39 +01:00
courtmanr@gmail.com 98f61554c8 refactor: remove redundant dashboard thresholds import card from alert creation
- Remove static green "Dashboard Thresholds Imported" card that showed stale values
- Users can see live threshold updates in the "Active Thresholds" preview at bottom
- Preserve hidden input field for preset threshold data submission
- Eliminate visual redundancy and potential confusion from outdated values
- Cleaner, less cluttered alert creation interface

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-05 17:52:16 +01:00
courtmanr@gmail.com 40e367c60a feat: simplify alert creation interface by removing single vs multiple metric complexity
- Remove confusing "Single Metric" vs "Multiple Metric" toggle that added unnecessary cognitive load
- Unify interface to use dashboard-style sliders for CPU/Memory/Disk (familiar to users)
- Consolidate 4 separate network monitoring fields into single "Network Activity" dropdown
- Add VM/LXC Status monitoring checkbox for status change alerts
- Eliminate ~50 lines of complex conditional UI logic and mode-switching code
- Maintain full backward compatibility with preset thresholds from dashboard
- Support all previous alert functionality with cleaner, more intuitive UX
- Update form submission logic to handle simplified unified interface
- Rename preview functions and IDs to match simplified approach

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-05 17:46:31 +01:00
courtmanr@gmail.com 2b3a9a948d feat: enhance custom alert creation with VM/LXC dropdown and unified threshold system
- Replace VM/LXC ID text input with pre-populated dropdown showing all VMs/containers
- Add unified threshold system supporting both single and multiple metric alerts
- Improve dashboard-to-modal threshold flow with visual feedback
- Fix toast notifications to appear in bottom-left as requested
- Resolve JavaScript syntax error in alert modal template literal
- Enhanced UX with better visual hierarchy and clearer mode selection

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-05 16:45:20 +01:00
courtmanr@gmail.com 1c39ad3134 feat: unify dashboard slider and custom alert modal threshold systems
Enhance custom alert modal to support multiple thresholds similar to dashboard sliders:

- Add toggle between single and multiple threshold modes in custom alert modal
- Implement slider-based threshold configuration for CPU, Memory, and Disk metrics
- Add dropdown selectors for network I/O thresholds (Disk Read/Write, Net In/Out)
- Include real-time threshold preview showing active conditions
- Update form submission logic to handle both single and multiple threshold modes
- Add CSS styling for new range sliders to match dashboard aesthetic
- Maintain backward compatibility with existing preset threshold functionality

This unifies the threshold creation experience across dashboard sliders and custom alert modal,
allowing users to create complex multi-metric alerts from either interface.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-05 15:59:37 +01:00
courtmanr@gmail.com 76c9682d96 fix: implement working delete functionality and improve alert management UX
- Fix non-functional delete buttons for custom alerts by removing broken confirmation dialogs
- Add comprehensive toast notification system with bottom-left positioning
- Hide Add Custom Alert button on System Alerts tab, show only on Custom Alerts tab
- Replace all browser alert() calls with consistent toast notifications across alert management
- Remove confirmation requirements for delete operations to streamline workflow
- Ensure high z-index (9999) for toast notifications to appear above all UI elements

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-05 15:44:58 +01:00
courtmanr@gmail.com c6dbd0a449 fix: resolve existingAlert undefined error in alert management modal
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-05 15:05:20 +01:00
courtmanr@gmail.com 1c82771b49 feat: unify system alerts styling to match custom alerts design pattern
Replaces toggle switches with standard action buttons, updates banner layout for consistency, and implements threshold badge display matching custom alerts interface.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-05 15:02:25 +01:00
courtmanr@gmail.com e06a8f7931 fix: match system alerts styling to custom alerts design
- Updated system alert cards to use same styling as custom alerts
- Removed colored icons and fancy styling for consistency
- Added status badges and threshold displays matching custom alerts
- Updated layout to use border-gray-600, p-3, same structure
- System and custom alerts now have identical visual design
- Added status badge updates in updateSystemAlertDisplay function

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-05 14:05:47 +01:00
courtmanr@gmail.com e0c3efc13f feat: redesign system alerts to match custom alerts UI pattern
- Removed Global Alert Thresholds card for better consistency
- Added individual system alert rule cards (CPU, Memory, Disk, Down) with edit buttons
- Each system alert now has its own toggle and edit functionality matching custom alerts
- Added editSystemAlert modal with threshold configuration
- System alerts now follow the same interaction pattern as custom alerts
- Improved UI consistency across alert management interface

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-05 13:46:23 +01:00
courtmanr@gmail.com 9f8f63325d fix: restore working settings modal functionality
Restored settings.js to previous working state to fix broken modal.
Alert Configuration tab is still removed from HTML navigation.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-05 13:34:53 +01:00
courtmanr@gmail.com 235ec2fdef remove: Alert Configuration tab from settings modal
- Removed Alert Configuration tab from settings navigation
- Updated remaining alert references to redirect to alert management modal
- Cleaned up hasSignificantConfiguration function alert case
- Settings modal now focuses on system config only

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-05 13:33:42 +01:00
courtmanr@gmail.com ec86702c67 fix: remove renderThresholdsTab and alert references to restore settings modal
- Removed renderThresholdsTab function that was duplicating alert management modal functionality
- Cleaned up references to alerts tab and loadThresholdConfigurations
- Removed alert-related exports from settings module
- Settings modal should now open properly

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-05 13:19:40 +01:00
courtmanr@gmail.com efb530ee89 fix: remove remaining alert tab references causing settings modal issues
- Remove alert tab case from activeTab checks
- Replace switchTab('alerts') calls with alert management modal
- Redirect custom threshold actions to new alert management modal
- This should fix the broken settings modal opening

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-05 12:55:10 +01:00
courtmanr@gmail.com 9c34712b2d partial: remove main renderAlertsTab function from settings
- Removed the massive renderAlertsTab function (314 lines)
- Removed alerts case from main tab switch
- Still need to remove remaining alert references and functions
- This is partial cleanup to avoid having duplicate alert management

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-05 12:47:46 +01:00
courtmanr@gmail.com 08088bbe64 remove: redundant Global Alert Settings from main settings
- Remove duplicate Global Alert Settings section from settings.js
- All alert management functionality now centralized in Alert Management modal
- Global thresholds available in System Alerts tab
- Email configuration enhanced in Notification Settings tab
- Eliminates redundancy and consolidates user experience
- Prevents confusion from having same settings in multiple places

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-05 12:43:47 +01:00
courtmanr@gmail.com efb17c7a3d feat: add global threshold configuration to System Alerts tab
- Integrate global alert thresholds into existing System Alerts tab
- Add toggle controls for CPU, Memory, Disk, and Down alerts
- Include threshold percentage inputs with proper validation
- Create save functionality for global thresholds configuration
- Load existing configuration from PulseApp.config
- Add event handlers for all threshold controls
- Place configuration logically above system alert rules list
- Maintain consistent styling with blue theme for system alerts

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-05 12:42:41 +01:00
courtmanr@gmail.com b36d5f55db fix: properly enhance Notification Settings with email provider selection
- Remove duplicate Global Settings tab that duplicated existing functionality
- Add comprehensive email provider selection (Gmail, Outlook, Yahoo, Custom)
- Include provider-specific configuration and helpful instructions
- Add advanced SMTP settings with collapsible interface
- Implement test email and save configuration functionality
- Add proper event handlers for all email configuration elements
- Maintain existing webhook functionality without duplication
- Keep clean separation between email and webhook configuration

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-05 12:40:33 +01:00
courtmanr@gmail.com 5a8f9aea09 feat: add Global Settings tab to Alert Management modal
- Add new Global Settings tab with comprehensive alert configuration
- Include global alert type toggles (CPU, Memory, Disk, Down alerts)
- Add threshold configuration for CPU (85%), Memory (90%), Disk (95%)
- Implement custom per-VM/LXC threshold integration placeholder
- Add advanced settings for alert frequency and suppression
- Create modern toggle switches and form controls
- Load configuration from backend /api/config endpoint
- Set up event handlers for all form controls
- Prepare foundation for migrating from settings.js

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-05 12:32:57 +01:00
courtmanr@gmail.com b75aca33cd feat: add edit functionality for custom alert rules
- Add Edit button to custom alert cards
- Implement editCustomAlert function to pre-fill form with existing data
- Update createCustomAlertModal to handle both create and edit modes
- Modify saveCustomAlert to use PUT requests for updates vs POST for creation
- Update modal titles and button text based on create vs edit mode
- Preserve existing alert properties like enabled status and creation date
- Expose editCustomAlert in public API for onclick handlers

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-05 12:22:06 +01:00
courtmanr@gmail.com 53e861d610 feat: implement nested tabs for Alert Rules (System vs Custom)
- Replace single scrollable view with nested tabs for System and Custom alerts
- Remove filter dropdown in favor of dedicated tabs
- System Alerts tab shows built-in monitoring rules (CPU, Memory, Disk, Down)
- Custom Alerts tab shows user-created threshold rules
- Consistent styling with Notification Settings nested tabs
- Simplify navigation and improve organization
- Maintain all existing functionality with better UX
2025-06-05 12:14:23 +01:00
courtmanr@gmail.com 49069f0de3 refactor: replace gradient cards with nested tabs in Notification Settings
- Remove modern styling that conflicted with app's design language
- Implement nested tab structure consistent with existing UI patterns
- Replace large gradient cards with clean, tabbed interface
- Email and Webhook settings now in separate, focused tabs
- Maintain same functionality with improved consistency
- Use standard app colors and styling throughout
- Simplify layout while keeping all interactive features
2025-06-05 12:11:27 +01:00
courtmanr@gmail.com f5d944f7aa remove: redundant per-rule notification overrides section
The per-rule overrides section that directed users to the Alert Rules tab
was unnecessary since users are already within the alert management modal.
This simplifies the Notification Settings tab and removes redundant navigation.
2025-06-05 12:08:22 +01:00
courtmanr@gmail.com 91ecaaf4b1 feat: redesign Notification Settings tab with modern card-based layout
- Replace basic form layout with interactive card-based design
- Add gradient backgrounds and better visual hierarchy
- Implement expandable configuration panels for email and webhook setup
- Add modern toggle switches with real-time status indicators
- Include popular service presets (Discord, Slack, Teams, Custom)
- Add progressive disclosure to reduce cognitive load
- Improve responsive design with better mobile layout
- Enhanced UX with hover states and visual feedback
- Maintain all existing functionality while improving usability
2025-06-05 12:07:12 +01:00
courtmanr@gmail.com faa525ebde feat: integrate custom alerts with backend API endpoints
- Replace localStorage with real API calls to /api/alerts/rules
- Load custom alerts from backend via GET /api/alerts/rules
- Create alerts via POST /api/alerts/rules
- Update alerts via PUT /api/alerts/rules/:id
- Delete alerts via DELETE /api/alerts/rules/:id
- Improve alert card display to handle backend data structure
- Add proper error handling for all API operations
2025-06-05 11:57:09 +01:00
courtmanr@gmail.com 97004c10d1 fix: implement local storage for custom alerts to show created alerts immediately
- Add localStorage-based persistence for custom alerts as temporary solution
- Create custom alert cards with enable/disable and delete functionality
- Display created alerts immediately in Alert Rules tab
- Add proper error handling and user feedback
- Maintain alert data structure for future backend integration

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-05 11:50:59 +01:00
courtmanr@gmail.com ad68c7bbbd feat: integrate dashboard thresholds with unified alert management system
- Add comprehensive alert management modal with 3-tab structure (Alerts, Alert Rules, Notifications)
- Connect dashboard threshold buttons to new alert management system
- Implement threshold pre-population for custom alert creation
- Support multiple threshold capture from dashboard to single alert rule
- Add "Manage Alerts" button to alerts dropdown for centralized access
- Maintain backward compatibility with existing alert functionality
- Enhance user workflow from threshold setting to alert rule creation

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-05 11:48:52 +01:00
courtmanr@gmail.com 47c4541a51 feat: refine threshold alert system with improved UI and functionality
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-05 09:48:22 +01:00
courtmanr@gmail.com a965f7c9b4 fix: improve threshold alert indicator positioning and visibility
- Move threshold count badge outside overflow-hidden container to prevent clipping
- Add z-30 layering to ensure badge appears above toggle boundaries
- Position badge relative to parent flex container for proper display
- Remove unnecessary relative positioning from threshold label

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-04 21:21:33 +01:00
courtmanr@gmail.com 0e8a07ac4e fix: correct node URL construction in dashboard navigation
Fix getHostUrl function to return complete URLs with protocol and port instead of just hostnames. This resolves the issue where clicking node names on the dashboard would incorrectly prepend the current host to the URL.

- Add constructUrl helper function to properly format URLs
- Use HTTPS protocol with appropriate ports (8006 for PVE, 8007 for PBS)
- Handle hosts that already include protocol
- Maintain backward compatibility

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-04 21:14:25 +01:00
courtmanr@gmail.com dbba6f2c04 feat: enhance alert threshold notifications with granular service selection
- Replace generic "How should we notify you?" with concise "Notification methods" label
- Add granular notification service selection with 5 specific options:
  - In-app Alerts (dashboard notifications)
  - Email (SMTP) with automatic configuration detection
  - Discord with branded icon and webhook URL detection
  - Slack with branded icon and webhook URL detection
  - Custom Webhook for other API endpoints
- Implement smart service status detection to show "Ready" state automatically
- Improve visual design with service-specific branding and icons
- Maintain backward compatibility while providing better UX

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-04 21:11:50 +01:00
courtmanr@gmail.com ccbb5c41c6 fix: make individual node resource fetching non-blocking
The smart cluster handling prevented endpoint duplication but individual
node resource fetching was still sequential and blocking. This adds:

- Promise.allSettled for parallel node resource fetching
- 8-second timeouts on individual resource requests
- Proper error handling for failed resources

This should completely eliminate dashboard freezes when nodes go offline.

Addresses issue #104 follow-up
2025-06-04 20:42:18 +01:00
courtmanr@gmail.com 6b0024f1ee feat: implement dynamic threshold alerts with unified rule system
- Add visual threshold-to-alert conversion feature in dashboard filtering UI
- Implement compound threshold rules that support multiple metrics with AND logic
- Enhance existing AlertManager to handle both single-metric and compound threshold rules
- Add dynamic alert rule creation modal with step-by-step configuration
- Implement comprehensive rule management (view, enable/disable, delete)
- Add real-time evaluation of compound threshold rules in main metrics processing loop
- Create compound rule API endpoints integrated with existing alerts system
- Add smart threshold summary display and button state management
- Support email/webhook notifications for compound threshold rule violations
- Maintain backward compatibility with existing single-metric alert rules

This bridges the gap between visual filtering and automated alerting, allowing users to
convert their threshold filtering criteria into persistent monitoring rules with a
seamless user experience.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-04 20:37:36 +01:00
courtmanr@gmail.com a8fc9e0d61 feat: enhance email notifications setup with user-friendly provider selection
- Add step-by-step email configuration with provider presets (Gmail, Outlook, Yahoo)
- Implement auto-detection of email providers based on email domain
- Provide provider-specific setup instructions and App Password guidance
- Add collapsible advanced settings to hide technical SMTP details
- Fix SSL/TLS configuration for Gmail (use STARTTLS instead of SSL)
- Improve SMTP transporter configuration with requireTLS and better error handling
- Add comprehensive provider help sections with clear instructions
- Fix configuration persistence by properly including SMTP settings in config API
- Enhance security by not exposing passwords in API responses

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-04 20:11:31 +01:00
courtmanr@gmail.com 5084aa9668 chore: release v3.22.2-rc.2 v3.22.2-rc.2 2025-06-04 19:14:42 +01:00
courtmanr@gmail.com 9b2f2fa329 fix: clean host URLs in additional PVE/PBS endpoints and improve placeholders
- Apply URL cleaning logic to additional PVE/PBS server configurations
- Extract ports from URLs and populate port fields automatically
- Update placeholders to show clean hostnames instead of full URLs
- Add consistent host/port guidance text for additional endpoints
- Ensure all endpoint configurations follow same clean format

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-04 19:10:47 +01:00
courtmanr@gmail.com 0ed49049c2 feat: enhance configuration panel with improved host/port handling and data persistence
- Fix host/port field confusion with clear guidance text
- Implement form data preservation between PVE and PBS tab switches
- Add smart URL parsing to extract hostnames from full URLs
- Ensure save button captures configuration from all tabs
- Improve configuration loading to handle both structured and flat formats
- Fix Docker config directory detection logic

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-04 19:06:21 +01:00
courtmanr@gmail.com 6117586f02 feat: implement smart cluster handling with endpoint prioritization
- Add cluster membership detection to identify same-cluster endpoints
- Implement endpoint prioritization with failover support
- Eliminate data duplication by using only one endpoint per cluster
- Maintain backward compatibility with existing configurations
- Add caching for cluster membership detection (5min TTL)

This resolves the core issue where users configure multiple endpoints
for the same cluster, causing blocking timeouts and data duplication.
Now only the primary endpoint is used, with automatic failover to
backup endpoints when needed.

Addresses issue #104
2025-06-04 19:00:59 +01:00
courtmanr@gmail.com 5ff3eb71a9 fix: prevent caching empty form values to avoid confusing configuration display
- Added hasSignificantConfiguration() to check if form data contains meaningful values
- Only cache form data when there's actual configuration (e.g., non-empty host fields)
- Clear cache when no significant data exists to prevent empty value restoration
- Fixes issue where empty default values were cached and restored, appearing as lost config
- Improves user experience by only preserving actual user input

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-04 18:52:31 +01:00
courtmanr@gmail.com 823613132b fix: improve data restoration with better directory handling and verification
- Ensure data directory exists before restoration attempts
- Fixed copy operation to properly restore file contents
- Added verification logging to confirm thresholds and acknowledgements restoration
- Better error handling for edge cases during restore process

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-04 18:24:52 +01:00