Commit Graph

1189 Commits

Author SHA1 Message Date
rcourtman ef2b551dfa fix: graceful handling of GitHub API rate limits in UpdateManager
- Handle 403 rate limit errors without throwing 500 server errors
- Return informative response when rate limited instead of crashing
- Fix variable scope issue in error handling
- Prevent Settings modal from breaking when GitHub API is unavailable
- Add specific error messages for rate limits, 404s, and network issues

This resolves the Settings modal 500 errors when GitHub API rate limits
are exceeded, providing a better user experience.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-13 16:32:20 +01:00
rcourtman a139e5eeb4 feat: implement centralized version calculation system
- Create versionUtils.js for unified version logic across components
- Update UpdateManager to use centralized getCurrentVersion()
- Update /api/version endpoint to use centralized logic
- Ensures consistent version calculation between update checks and version display
- Prevents version fragmentation between different system components

This resolves the issue where Settings modal showed inconsistent RC versions
by ensuring both the current version display and update checking use the
same dynamic git-based calculation.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-13 16:24:58 +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 579e0d1b98 docs: update CONTRIBUTING.md with new branch strategy and RC workflow 2025-06-13 15:59:25 +01:00
rcourtman 05a1c7d6aa docs: update RELEASE_GUIDE with dynamic versioning system and automated RC workflow 2025-06-13 15:57:40 +01:00
rcourtman 0acbe02c22 docs: update README with new branch strategy and RC automation workflow 2025-06-13 15:56:03 +01:00
rcourtman 701b5343cb feat: update install script to use dynamic version from API 2025-06-13 15:54:30 +01:00
rcourtman 0ef3769967 feat: implement dynamic RC version calculation from git 2025-06-13 15:51:34 +01:00
GitHub Action 4e1f7eade7 chore: bump version to 3.24.0-rc5 for RC release 2025-06-13 14:42:13 +00:00
rcourtman 860a4d620f feat: watch package.json for hot reload on version updates 2025-06-13 15:41:55 +01:00
GitHub Action 80ffbdddd9 chore: bump version to 3.24.0-rc4 for RC release 2025-06-13 14:37:11 +00:00
rcourtman dd7e91629f test: trigger auto RC version bumping workflow 2025-06-13 15:37:00 +01:00
rcourtman 874de536c3 feat: auto-increment RC version in package.json during workflow 2025-06-13 15:36:44 +01:00
rcourtman e4dc4dff07 fix: include package-lock.json in Docker build for npm ci 2025-06-13 15:01:32 +01:00
rcourtman 41d2a4b252 feat: optimize Docker build with Node 20 Alpine and improved .dockerignore 2025-06-13 15:00:03 +01:00
rcourtman 755da290bf test: third RC test with correct Docker secret 2025-06-13 14:46:03 +01:00
rcourtman 1ba1fd0ef8 test: second RC workflow test with updated Docker token 2025-06-13 14:44:34 +01:00
rcourtman 2436bd89f4 chore: remove test comment 2025-06-13 14:35:41 +01:00
rcourtman 1f12888d1a test: add comment to test RC workflow automation 2025-06-13 14:32:18 +01:00
rcourtman fd7e49f53b feat: update workflows for new branching strategy with Docker builds
- Add RELEASE_GUIDE.md with develop/main branch strategy documentation
- Add automatic Docker multi-arch builds to RC workflow
- Include both versioned and :rc rolling tags for Docker images
- Update documentation to reflect automatic RC releases from develop
- Add merge-to-main process documentation

Docker builds now include:
- linux/amd64 and linux/arm64 platforms
- Automatic tagging with RC version
- Rolling :rc tag for latest release candidate

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-13 11:58:48 +01:00
rcourtman 43a80b8112 feat: implement professional development workflow with RC automation
- Add GitHub Actions workflow for automatic RC releases from develop branch
- Create development workflow documentation
- Establish clear separation between stable (main) and development (develop) branches
- RC releases now automatically created on develop branch pushes

This provides:
- Protection for stable users from frequent changes
- Automated RC versioning (v3.24.0-rc1, rc2, etc.)
- Professional release management process
- Clear testing workflow for issue reporters

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-13 11:50:55 +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 bec09497af restore: add back missing docker-compose.yml 2025-06-13 10:39:53 +01:00
rcourtman 9fbeafad87 restore: add back missing Dockerfile 2025-06-13 10:39:34 +01:00
rcourtman 1a7b88808b chore: release v3.24.0 2025-06-13 10:29:17 +01:00
rcourtman 9b06ce3311 chore: cleanup leftover release files and update dependencies 2025-06-13 10:26:54 +01:00
rcourtman 027fffdf8a Restore README screenshot images 2025-06-13 09:53:06 +01:00
rcourtman c64b388888 Update .gitignore to exclude temporary files and improve coverage 2025-06-13 09:17:08 +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 6afc02b674 chore: release v3.23.1 v3.23.1 2025-06-13 00:08:01 +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 ef20ca2540 refactor: consolidate alert acknowledgements and fix hot reload triggers
- Eliminate redundant acknowledgements.json file by storing acknowledgement data in active-alerts.json
- Update alert manager to load acknowledgements from active alerts on startup
- Remove acknowledgements.json from hot reload ignore patterns
- Reduce file I/O operations and eliminate data duplication in alert system

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-11 16:54:06 +01:00
rcourtman 92742cc5b7 chore: release v3.23.0 2025-06-11 16:12:49 +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 11a0107ddf fix: resolve circular reference errors and add acknowledgment tracking
- Add missing createSafeRuleCopy method to prevent circular references in alert serialization
- Add acknowledgment events to alert history for visibility in recent activity
- Enhance email configuration loading and alert system reliability

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-11 14:57:01 +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