Commit Graph

349 Commits

Author SHA1 Message Date
rcourtman 4fab5b3cea fix: comprehensive update system improvements
- Fix frontend update functionality with proper channel switching
- Add channel-aware version detection in footer
- Implement proper development build versioning using git describe
- Fix footer spacing issue with update indicators
- Add quick channel switch buttons with immediate updates
- Prevent update notifications for development builds ahead of releases
- Fix release URL linking to correct channel-specific releases
- Improve error handling and rate limiting for GitHub API calls

The update system now properly:
- Detects development builds vs release builds
- Shows channel-appropriate updates only
- Handles stable/RC channel switching seamlessly
- Provides proper version semantics for development environments

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-13 22:34:19 +01:00
rcourtman 2854e2a967 fix: pass tarballAsset parameter to _performUpdate function
Fixes 'tarballAsset is not defined' error when applying updates through the UI.
The tarballAsset variable was defined in the parent scope but not passed
to the _performUpdate function.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-13 18:08:00 +01:00
rcourtman 889d2b197e debug: add logging to confirm 404 handling in settings UI
This will help verify that the 404 error handling is working correctly
and show when the fallback message is displayed.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-13 17:15:51 +01:00
rcourtman 9c21278f49 fix: resolve version comparison errors in settings UI
- Add validation for dynamic RC versions (e.g., 3.24.0-rc37)
- Use base stable version for comparison when RC number is high
- Provide helpful fallback messages for missing version tags
- Add better logging for version comparison debugging
- Handle 404 errors gracefully with user-friendly messages

This fixes the GitHub API 404 errors when comparing non-existent
dynamic RC versions with stable releases.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-13 16:58:31 +01:00
rcourtman 4512a5b75a fix: resolve Settings modal version display timing issue
- Make switchTab function async to handle proper timing
- Move loadCurrentVersion call to after DOM element creation
- Remove redundant version loading from loadConfiguration
- Ensures "Current Version" shows actual version instead of "Loading..."

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-13 16:11:29 +01:00
rcourtman 43110a8f91 fix: update settings modal to use dynamic version from /api/version 2025-06-13 16:05:10 +01:00
rcourtman 0ef3769967 feat: implement dynamic RC version calculation from git 2025-06-13 15:51:34 +01:00
rcourtman 94fa78ee3e fix: make RC indicator dynamic based on actual version
- Remove hardcoded RC badge from HTML
- Add dynamic version detection to show RC badge only for release candidates
- Update page title dynamically based on version type
- RC badge now only appears for versions containing -rc, -alpha, or -beta

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-13 11:29:06 +01:00
rcourtman 1d35f1df91 refactor: remove alert escalation system
Remove escalation functionality from alert management system including:
- Remove escalationTime configuration from alert rules
- Remove escalation checking and processing logic
- Remove escalation UI indicators and notifications
- Clean up escalation-related state management
- Remove escalation socket events and handlers

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-13 09:01:37 +01:00
rcourtman ead3a75ddb refactor: major codebase cleanup and consolidation
- Remove duplicate functions and consolidate utilities
  - Created modalManager.js for centralized modal handling
  - Created apiClient.js for consistent API communication
  - Enhanced utils.js with button state management and date formatting
  - Removed duplicate debounce.js file

- Clean up unnecessary files
  - Removed obsolete scripts (fix-css.sh, test-update.sh)
  - Removed runtime data files (active-alerts.json, notification-history.json)
  - Removed debug files (toggle-debug.html, alertManagementModal-cleanup-report.md)
  - Updated .gitignore to properly exclude runtime and development files

- Refactor existing code to use new utilities
  - Updated settings.js to use modalManager, apiClient, and utils
  - Updated alertManagementModal.js to use new utilities
  - Consolidated _formatBytesThreshold to use existing formatSpeed
  - Removed debug console.log statements

- Fix UI issues
  - Fixed modal centering for settings and alert management modals
  - Added flex class and changed items-start to items-center

- Update dependencies
  - Removed unused sqlite3 and conventional-changelog-cli packages
  - Removed duplicate concurrently from dependencies

This refactoring reduces code duplication by ~15-20% and improves maintainability.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-13 00:01:55 +01:00
rcourtman 357bf6fc60 fix: improve version API error handling and fix notification toggle listeners
- Add robust error handling to version API endpoint with fallback responses
- Fix duplicate event listeners on notification toggles by cloning elements
- Update toggle configuration keys to GLOBAL_EMAIL_ENABLED/GLOBAL_WEBHOOK_ENABLED
- Add debug toggles for troubleshooting notification components
- Remove visual feedback animations to prevent UI flashing

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-12 10:19:17 +01:00
rcourtman 8254a41604 chore: remove outdated documentation images and update .gitignore
- Remove outdated screenshot images from docs/images/
- Add specific dark mode Tailwind classes to safelist for alert management
- Add ALERT_MANAGEMENT_REFACTOR_PLAN.md to .gitignore

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-11 22:23:32 +01:00
rcourtman e18ed9a75b refactor: optimize and clean up alertManagementModal.js
- Add constants for timeouts, validation rules, and default values
- Implement DOM element caching with getElement() function
- Add event listener tracking to prevent memory leaks
- Create common error handling function for consistent error reporting
- Consolidate duplicate test email functions
- Add try-catch blocks to async event handlers
- Remove over 480 lines of duplicate/dead code including:
  - Duplicate handleGlobalEmailToggle and handleGlobalWebhookToggle functions
  - Redundant setupEmailTestButton function
  - Commented out duplicate functions
- Fix XSS vulnerability in error message display
- Add email provider setup guides with helpful links
- Replace hardcoded values with constants throughout
- Improve button state management with reusable helper function

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-11 20:53:00 +01:00
rcourtman 3d1d8b64e0 feat: add editable description field to alert rules
- Add description textarea to alert creation/editing modal
- Include description field in alert configuration when saving
- Enable users to customize descriptions for both system and custom alert rules

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-11 17:08:08 +01:00
rcourtman c862ef2610 fix: correct alignment of alert section titles in monitor tab
- Add proper padding (p-6) to both unacknowledged and acknowledged alert sections
- Replace problematic mt-6 margin with border separator between sections
- Ensure consistent spacing with rest of monitor tab UI
- Fix titles being pressed against card edges

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-11 16:07:04 +01:00
rcourtman 1206f4784b feat: improve mobile responsiveness for alert rule cards and settings
- Redesign alert rule cards with mobile-first vertical layout
- Add responsive condition display with dedicated sections
- Convert notification checkboxes to toggle switches with auto-save
- Reduce padding and nesting in configure tab for better space usage
- Add compact action buttons with proper touch targets
- Implement immediate save for notification toggles with visual feedback
- Improve horizontal space utilization to match monitor tab design

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-11 15:58:54 +01:00
rcourtman 4c53a4308d fix: improve alert acknowledgement button responsiveness
Add immediate visual feedback for alert acknowledgement buttons to resolve slow/unresponsive feel:
- Show spinning loader icon when acknowledge button is clicked
- Disable button during API call to prevent duplicate requests
- Add smooth transitions and proper error recovery
- Apply changes to both dropdown and modal acknowledgement buttons

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-11 15:16:45 +01:00
rcourtman 7256f9e460 feat: add global alert system toggle in settings
- Add master enable/disable toggle for entire alert system
- Update config API to support ALERTS_ENABLED setting
- Enhance settings UI with alert system configuration section

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-11 14:57:12 +01:00
rcourtman 539268ae1a refactor: clean up unused code and remove dead files
- Remove unused compareVersions function and DEBUG_METRICS constant
- Delete dataFetcherFixes.js file (unused alternative implementations)
- Remove alertManagementModal.js.backup file
- Clean up commented debug logs and "REMOVED" code blocks
- Remove empty socket handlers that did nothing
- Remove unused URL import from server/index.js

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-11 08:55:39 +01:00
rcourtman e16b520f15 feat: remove severity levels and simplify alert system
Eliminate all severity classifications (warning, critical, info) to create a simpler, more focused alert system where alerts are treated uniformly.

Changes:
- Remove severity-based logic from server-side alert processing
- Simplify email and webhook notifications to use consistent styling
- Remove severity dropdowns and badges from UI components
- Update alert display to use unified red styling for all alerts
- Eliminate severity-based filtering and escalation logic
- Simplify custom threshold system to single threshold values
- Remove severity validation and defaults from rule creation

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-10 23:30:42 +01:00
rcourtman d34ebeac53 feat: comprehensive alert system simplification and UI improvements
- Simplified alert rules: removed warning/critical levels, now one rule per metric type
- Unified alert editing: all rules (built-in and custom) use same modal template
- Enhanced UI: show actual thresholds/conditions in rules list without clicking edit
- Fixed Create Rule button: changed from event listener to direct onclick approach
- Fixed disabled rules visibility: disabled rules now stay in list with toggle off
- Removed redundant labels: eliminated "Enabled/Disabled" badges (toggle shows state)
- Updated alert summary cards: replaced Critical/Warning/Info with Active/Acknowledged/Rules/Status
- Improved UX: consistent editing experience across all alert types
- Cleaned up duplicate code: removed separate modal templates for system vs custom alerts

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-10 18:17:08 +01:00
rcourtman e37963e4ff feat: comprehensive alert system improvements and UI enhancements
- Fixed circular reference errors preventing WebSocket communication
- Added alert count badges to all alert rules (system and custom)
- Made global email/webhook toggles act as true master switches
- Fixed email toggle not saving to .env file
- Added proper notification channel indicators for both system and custom alerts
- Fixed system alert enable/disable functionality with correct ID mapping
- Improved alert display clarity:
  - Shows actual rule names for custom alerts
  - Displays rule conditions to identify which rule triggered
  - Removed redundant details button and popup
  - Added triggered time and escalation status directly to cards
- Fixed email configuration not displaying in UI
- Made notification checkboxes disable when global settings are off
- Improved UI text clarity (removed confusing 'optional overrides' language)
- Enhanced auto-refresh for real-time alert updates

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-09 22:23:17 +01:00
rcourtman 4452b27655 fix: resolve circular reference errors in alert system
- Fixed undefined guest.type errors in generateAlertMessage by adding proper null checks
- Separated notification status from alert objects to prevent circular references during serialization
- Added comprehensive error handling with fallback data when alert serialization fails
- Improved alert state management to track notification status separately
- Fixed alert display issues in UI by ensuring proper data structure
- Added debugging helpers for troubleshooting serialization issues
- Cleaned up console logging and removed development artifacts

These changes resolve the "Converting circular structure to JSON" errors that were
preventing alerts from being properly displayed and managed in the UI.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-09 16:15:56 +01:00
rcourtman 40663d7494 feat: add user-configurable auto-resolve for custom alerts and improve email UX
- Add auto-resolve checkbox option in custom alert creation/editing with clear description
- Remove "Additional Email Recipients" section to simplify email configuration
- Enhance email provider selection with better error handling and password preservation
- Add provider-specific SMTP guidance (Gmail STARTTLS, custom placeholders)
- Improve password field UX with context-aware placeholders based on provider
- Fix WebSocket connectivity by binding server to all interfaces (0.0.0.0)
- Add visual feedback for email save/test operations

Users can now choose between auto-resolving alerts (default) or keeping them active
for manual acknowledgment, providing better control over alert accountability.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-08 23:13:10 +01:00
rcourtman 4fd1e2f83d feat: comprehensive backup system improvements
Major enhancements to backup monitoring accuracy and user experience:

## Core Fixes
- **Fix timestamp precision loss**: PVE/PBS age filtering now shows correct times (17h vs incorrect 36h)
- **Server-side deduplication**: Shared storage backups no longer counted multiple times
- **Client-side deduplication**: Calendar drill-down shows each guest only once per date
- **Clean UI**: Removed redundant backup count numbers when type badges are shown

## Technical Implementation
- Added `latestTimes` object with type-specific timestamps to guest data structure
- Implemented `deduplicateStorageBackups()` function using volid-based deduplication
- Enhanced calendar-heatmap processing to merge duplicate guest entries by vmid
- Updated backup detail card to use direct timestamp lookup instead of date aggregation

## Files Modified
- `server/dataFetcher.js`: Added shared storage deduplication logic
- `src/public/js/ui/backups.js`: Enhanced guest data with type-specific latest times
- `src/public/js/ui/backup-detail-card.js`: Fixed age calculation and removed redundant counts
- `src/public/js/ui/calendar-heatmap.js`: Implemented client-side guest deduplication
- `docs/BACKUP_ARCHITECTURE.md`: Documented pragmatic solution approach

## Result
- Accurate backup ages when filtering by PVE/PBS/Snapshots
- No more duplicate counting from shared storage (NFS, Ceph, etc.)
- Clean calendar view with single guest entries per date
- Foundation for future backup system enhancements

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-08 19:44:15 +01:00
rcourtman fbd85157a7 refactor: remove alerts dropdown and link directly to alert management modal
- Alert button now opens alert management modal directly instead of dropdown
- Updated tooltip to "Click to manage alerts"
- Provides more streamlined access to full alert management interface

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-08 13:07:06 +01:00
rcourtman b8b30dfaa6 cleanup: remove backup file from repository
🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-08 12:59:35 +01:00
rcourtman 431d3d346c feat: implement integrated development mode with automatic CSS rebuilding
## Major Development Environment Improvements

### Integrated Development Mode
- Modified systemd service to use 'npm run dev' for complete development stack
- Concurrently runs both development server and Tailwind CSS watcher
- Automatic CSS rebuilding when Tailwind classes change
- Seamless hot reload for frontend, backend, and CSS changes

### Hot Reload Enhancements
- Always attempt to load chokidar for development convenience
- Enhanced file watcher initialization with better error messaging
- Added debug logging for NODE_ENV detection and chokidar availability
- Improved development experience with real-time change detection

### Development vs Production Distinction
- Development: systemd runs 'npm run dev' with NODE_ENV=development
- Production: installer creates service running 'node server/index.js' with NODE_ENV=production
- Clear separation between development and production environments
- Updated CLAUDE.md with integrated development mode documentation

### UI and Configuration Updates
- Removed DEV branding from title and header (development-specific cleanup)
- Added CLAUDE.md to .gitignore (development reference file)
- Restored proper RC branding for release candidate version

### Development Workflow Optimization
- No more manual 'npm run build:css' commands needed
- Complete hot reload: frontend JS → browser reload, CSS changes → auto-rebuild → browser reload
- Production-ready systemd service management with PolicyKit
- Optimal development experience with automatic toolchain management

This creates a seamless development environment where any change to Tailwind classes
automatically rebuilds CSS and triggers browser reload, while maintaining proper
production deployment through the existing install script.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-08 12:33:30 +01:00
rcourtman a3b6282507 feat: add DEV branding to development instance
- Changed title to 'Pulse RC - DEV'
- Updated header badge from 'RC' to 'DEV' with green styling
- Clear visual indication this is a development instance
2025-06-08 11:01:25 +01:00
root 677df7ca01 restore: add alerts tab back to settings navigation
- Restored Alert Configuration tab that was missing from index.html
- This tab provides access to the alerts functionality in settings.js
2025-06-08 10:58:59 +01:00
root fff3f235ba fix: consistent backup age calculation across filtered views
- Fixed PVE and snapshot filtered views showing incorrect ages
- Age now consistently represents overall backup health regardless of filter
- Filters affect display of backup types/counts but not age calculation
- Ensures backup health assessment accuracy across all views

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-07 22:58:21 +01:00
root 66255714d0 fix: deduplicate PVE backup counts in backups table
- Fix issue where single PVE backup was counted multiple times
- Add deduplication by volid when combining endpoint-generic and node-specific snapshots
- Prevents inflated backup counts when same backup is indexed under multiple keys

The root cause is that PVE backups are intentionally stored under multiple
keys in snapshotsByGuest Map for cross-node lookup flexibility, but this
caused duplicates when retrieving them. This fix deduplicates by the unique
volume ID.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-07 20:38:57 +01:00
root 9427f138f2 feat: redesign alert management modal with cleaner notification system
- Implement unified alert rendering system with consistent styling
- Add color-coded enable/disable toggles that dim when disabled
- Remove redundant status labels to reduce visual clutter
- Implement nested sub-tabs for Alert History within Alerts tab
- Redesign notifications with primary config + additional items pattern
- Remove all descriptive banners for cleaner interface
- Add consistent subtitles to all main tabs
- Fix duplicate content in email and webhook sections
- Update function exports to match new simplified design

The notification system now matches the settings page pattern with
cleaner add/remove functionality for multiple email recipients and
webhook endpoints.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-07 20:04:20 +01:00
root 944a197fef fix: improve reliability and user experience across components
- Update PBS connectivity check endpoint for better compatibility
- Make alert checking asynchronous to prevent blocking
- Update test expectations for webhook error messages with retry counts
- Enhance alerts handler with better event listeners and error handling
- Improve PBS UI by replacing symbols with clearer text labels

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-07 18:38:27 +01:00
root 33412d4f8e feat: enhance alert system with improved debugging and reliability
## Major Improvements

### Alert Threshold Calculation Fix
- Fixed compound threshold rules to properly calculate disk usage percentages
- Resolved issue where raw bytes were compared against percentage thresholds
- Consistent behavior between single-metric and compound threshold rules

### Enhanced Debugging & Error Handling
- Added environment-controlled debug logging with ALERT_DEBUG=true
- Comprehensive error messages with specific property validation context
- New /api/alerts/debug endpoint for threshold evaluation testing
- Clear feedback on missing/invalid threshold properties

### Alert Management UI Fixes
- Fixed alert editing to properly pre-populate form values
- Support for both old (type/value) and new (metric/threshold) property formats
- Unified threshold population logic for dashboard presets and existing alerts
- Clean alert message display with correct percentage values

### Hot Reload Improvements
- Excluded runtime data files (alert-rules.json, acknowledgements.json) from hot reload
- Prevents page refreshes when creating/deleting alerts
- Better development experience with targeted file watching

### Code Quality & Maintainability
- Consistent property naming throughout (metric/condition/threshold)
- Input validation with descriptive error messages
- Backward compatibility maintained for existing alerts
- Production-ready with clean, optimized code

## Technical Changes
- Server: Enhanced AlertManager validation and evaluation logic
- Client: Fixed threshold population and property mapping
- Debug: Environment-based logging and API endpoints
- DevEx: Improved hot reload exclusions

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-07 18:36:19 +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
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 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