Commit Graph
100 Commits
Author SHA1 Message Date
nmemmert 8942d41354 fix: Don't write undefined values to .env file
- Add proper defaults when writing settings to .env
- Prevents 'undefined' string from appearing in environment variables
- Ensures fallback values are used when settings are partially updated
2026-01-14 15:53:21 -05:00
nmemmert 0465d7ffad fix: Add cache-control headers to GET /api/settings to prevent browser caching
- Settings were being cached by browser, causing stale values on refresh
- Added no-store, no-cache, must-revalidate headers
- Ensures fresh settings are always fetched from database
2026-01-14 15:45:06 -05:00
nmemmert 40c65e1163 fix: Save all 27 settings fields to database for persistence
- Added incident_failure_threshold to POST /api/settings destructuring
- Added incident_failure_threshold to .env file generation
- Added incident_failure_threshold to process.env updates
- Added incident_failure_threshold to settingsTable for database storage
- Added incident_failure_threshold to GET /api/settings response (both success and fallback)
- All 27 settings now persist correctly to database and are retrieved properly
- Settings survive server restart and page reload
2026-01-14 15:36:17 -05:00
nmemmert 64b3852d53 fix: Settings persistence - save to database and process.env 2026-01-14 15:24:42 -05:00
nmemmert db85573986 feat: Add real-time notification center with WebSocket integration
- Add in-app notification system with database storage
- Implement bell icon component with unread count badge in dashboard header
- Add full Notifications page tab with pagination and filtering (All/Unread/Read)
- Implement real-time WebSocket push notifications to all connected clients
- Add notification API endpoints: GET, PUT /read, DELETE, POST /clear
- Fix critical bug in notificationService where 'status' variable was undefined
- Add Notifications route to App.js routing
- Enhanced UI with notification popup in header and dedicated full-page view
- Auto-reconnect WebSocket with 5s timeout on disconnect
- Support rich notification content with resource details and timestamps
2026-01-14 14:51:29 -05:00
nmemmert 7968c9231e Feature: integrate app icon in UI and email alerts 2025-12-16 14:36:42 -05:00
nmemmert 51bc5ea6be Fix: Status page not displaying data - fix /api/resources response format 2025-12-16 13:50:20 -05:00
nmemmert 5ff9fd6c99 Chore: Remove debug console.log statements from server and client code 2025-12-16 13:46:55 -05:00
nmemmert 400953dfd7 Feature: Add public status page at /status showing incidents, maintenance, and system health 2025-12-16 13:44:02 -05:00
nmemmert 9dae22d696 Feature: Add incident editing modal for updating descriptions - PATCH /api/incidents/:id endpoint 2025-12-16 13:40:42 -05:00
nmemmert 03147ef772 Feature: Display incident descriptions in incidents timeline with expandable view 2025-12-16 13:38:29 -05:00
nmemmert 6a291e120d Feature: Independent settings section saving - no password re-entry required
- Refactored SettingsWizard to allow saving each section separately (Email, Webhook, Monitoring)
- Each section now has its own Save button
- Removed global Save button - sections save independently
- No longer need to re-enter email passwords when changing other settings
- Added success/error status messages that appear for 3-5 seconds
- Status messages appear as toast notifications in top-right corner
- Updated CSS with save-status styling and slideIn animation
- handleSaveSection() only POSTs the relevant fields for that section
2025-12-16 13:27:53 -05:00
nmemmert 5330c8932f Feature: Auto-create incidents after 10 failed checks with rich descriptions
- Add description and failed_check_count fields to incidents table
- Update handleIncident() to use configurable threshold (default 10 checks)
- Auto-generate incident description with:
  - Number of consecutive failures
  - Last error message/reason
  - First failure timestamp
- Add API endpoints: GET/POST /api/settings/incident-threshold
- Add UI settings field to configure incident failure threshold
- Server: Get threshold from database settings (persistent across restarts)
- Default threshold: 10 consecutive failed checks per resource
2025-12-16 13:24:20 -05:00
nmemmert 6b00530a89 Fix: Change email input type from email to text to support comma-separated addresses
- Allows users to enter multiple email addresses separated by commas
- Updated both Add Resource and Edit Resource forms
- Improved placeholder text to show example of comma-separated format
2025-12-16 13:08:40 -05:00
nmemmert 02a71f980a Feature: Multi-email alerts and move resource between groups
- notificationService.js: Parse comma-separated emails from resource.email_to or global config; validate and send to each recipient
- index.js: Add PATCH /api/resources/:id/group endpoint to move resource between groups with validation and cache invalidation
- App.js: Add group selector to edit modal; wire group change to PATCH endpoint; add help text for multi-email format (comma-separated)
2025-12-16 13:03:59 -05:00
nmemmert 923c36e494 Feature: Multi-email alerts and move resource between groups
- notificationService: Parse comma-separated emails from resource.email_to or global config; validate and send to each recipient
- API: Add PATCH /api/resources/:id/group endpoint to move resource between groups with validation and cache invalidation
- UI: Add group selector to edit modal; wire group change to PATCH endpoint; add help text for multi-email format
2025-12-16 13:01:37 -05:00
nmemmert 9c1c972045 Scheduler: stagger resource checks with spacing and jitter; rebuild client 2025-12-16 12:31:30 -05:00
nmemmert 803c5adbc2 Scheduler: stagger resource checks with spacing and jitter to avoid thundering herd 2025-12-16 12:31:03 -05:00
nmemmert b4860241dd UI: Add Actions dropdown for New Group, Add Resource, Export/Import 2025-12-16 11:12:35 -05:00
nmemmert 16daa5770e Fix trend delta rendering with safe numeric coercion 2025-12-16 08:54:58 -05:00
nmemmert d4e4467c0c Add trends UI, cleanup logs, refresh build 2025-12-16 08:48:48 -05:00
nmemmert 71d1dbd5c1 chore: commit workspace changes 2025-12-16 07:56:40 -05:00
nmemmert 8bd9c6caf7 feat(ui): dashboard maintenance indicator and yellow uptime during maintenance; rebuild 2025-12-15 16:40:57 -05:00
nmemmert 65fca3d3e3 feat(maintenance): add maintenance_mode flag, API support, UI toggle; skip alerts during maintenance; rebuild client 2025-12-15 16:35:52 -05:00
nmemmert 2329362f09 UI: filters/timeline, SLA card, paginated checks/incidents 2025-12-15 16:25:31 -05:00
nmemmert c8de1257ba Add checks/incidents APIs with filters and SLA summary 2025-12-15 16:22:15 -05:00
nmemmert 49cd477991 Fix timezone formatting fallback by normalizing timestamps 2025-12-15 16:14:04 -05:00
nmemmert 3235ae3789 Fix: return ISO timestamps for dashboard stats and last checks 2025-12-15 16:11:59 -05:00
nmemmert ccae38bb4d Fix: Use ISO 8601 format (T separator) for timestamps to ensure proper timezone conversion 2025-12-15 15:03:25 -05:00
nmemmert fc7bf6976e Fix: Remove /build from client .gitignore to include production builds 2025-12-15 15:00:10 -05:00
nmemmert a93e517d34 Add timezone debugging to client time formatting 2025-12-15 14:55:49 -05:00
nmemmert 88680d478a Add PM2 ecosystem config with timezone support 2025-12-15 14:51:38 -05:00
nmemmert 92cb495ef2 Append Z suffix to timestamps so browser treats them as UTC 2025-12-15 13:45:49 -05:00
nmemmert 91bc41aa5f Fix timezone formatting in client timeUtils 2025-12-15 13:40:51 -05:00
nmemmert c7577f6ce2 Force add client build with timezone fix 2025-12-15 13:39:13 -05:00
nmemmert 28e3c6a544 Fix timezone display: client uses server timezone from settings, revert SQL offset 2025-12-15 13:36:40 -05:00
nmemmert 3653016912 Add detailed logging for timezone offset calculation 2025-12-15 13:29:16 -05:00
nmemmert 95cd2cc746 Invert timezone offset sign for correct SQL datetime conversion 2025-12-15 13:25:56 -05:00
nmemmert 6d361e6359 Add /api/debug/timezone endpoint to verify offset calculation 2025-12-15 13:20:45 -05:00
nmemmert cf62481341 Improve timezone offset calculation by comparing formatted times; add logging 2025-12-15 13:19:45 -05:00
nmemmert 5a92c7f98d Fix timezone offset using Intl API to get accurate UTC adjustment 2025-12-15 13:18:39 -05:00
nmemmert 1c8873b0aa Apply timezone offset to all check timestamp queries (dashboard, resource history) 2025-12-15 13:17:29 -05:00
nmemmert d8f303043f Fix timezone offset calculation (reverse UTC-TZ to get correct adjustment) 2025-12-15 13:16:12 -05:00
nmemmert eda5511609 Server: apply timezone offset to SQL datetime queries for correct timestamp display 2025-12-15 13:14:21 -05:00
nmemmert 0ceedaf032 Rebuild client with ErrorBoundary 2025-12-15 13:08:22 -05:00
nmemmert 0f7d11a197 Client: add ErrorBoundary to avoid blank screen and surface errors; rebuild 2025-12-15 13:04:25 -05:00
nmemmert b7f882f38b SLA: cap by retention in API; SLA UI uses effective days and shows retention notice; rebuild client 2025-12-15 12:59:51 -05:00
nmemmert c8e8d54aa8 Fix SLA queries to use parsed daysNum instead of string days 2025-12-15 12:45:24 -05:00
nmemmert ecfe725f6f Fix SLA component React hook dependencies 2025-12-15 12:38:41 -05:00
nmemmert 8c608d72a3 Add comprehensive upgrade guide 2025-12-15 12:35:12 -05:00
nmemmert 1d95b6d026 Restructure documentation into separate files with links 2025-12-15 12:33:06 -05:00
nmemmert 9892c63f3b Add comprehensive History feature documentation 2025-12-15 12:29:38 -05:00
nmemmert 5e2c236057 Fix parameter count in SQL query 2025-12-15 12:23:55 -05:00
nmemmert 234ac59fe8 Fix SQL bucketing using Julian Day calculation 2025-12-15 12:22:57 -05:00
nmemmert b1b1c36839 Add cache clear endpoint and timestamp to debug logs 2025-12-15 12:21:14 -05:00
nmemmert 07f46ce5c9 Simplify SQL bucketing query to fix aggregation 2025-12-15 12:19:00 -05:00
nmemmert e741c8cadb Enhanced debug logging to trace averaged parameter 2025-12-15 12:17:09 -05:00
nmemmert c7a49432f5 Add server-side debug logging for averaged parameter 2025-12-15 12:14:45 -05:00
nmemmert e308322e00 Add debug logging for averaged mode 2025-12-15 12:11:54 -05:00
nmemmert 3aafa07e04 Fix: use server-provided status for red/green bars in history graph 2025-12-15 12:07:48 -05:00
nmemmert c5027b339b History graph: show down status in red instead of green 2025-12-15 12:04:15 -05:00
nmemmert 63bdc6c91c Enable Show Averages by default in History view 2025-12-15 12:02:08 -05:00
nmemmert c244ebb26c History: request averaged data from server; rebuild client assets 2025-12-15 11:51:16 -05:00
nmemmert 9446737e5a History: return full time window for accurate averaging (7/14/30 days); rebuild 2025-12-15 11:08:03 -05:00
nmemmert 3b2b00d810 History: scale checks_limit by days and averages; rebuild client 2025-12-15 11:00:44 -05:00
nmemmert 3d66b82c88 History API: return up to 100 checks per resource by default (separate from page size) 2025-12-15 10:26:39 -05:00
nmemmert dcc09422c9 Trigger GHCR build 2025-12-15 10:15:16 -05:00
nmemmert 60ea0b7f3e Trigger GHCR build 2025-12-15 10:12:19 -05:00
nmemmert fe0f1ba23b Trigger GHCR build 2025-12-15 10:09:32 -05:00
nmemmert 76fe1d9aae Commit built client assets (main.54d4db7c.js) for deployment 2025-12-15 09:52:13 -05:00
nmemmert ef76d46e96 Use GHCR token fallback for registry login 2025-12-15 09:46:09 -05:00
nmemmert d07250e982 Fix env settings formatting and runtime sync 2025-12-15 09:43:23 -05:00
nmemmert fb175c162b Fix docker publish workflow YAML and GHCR push 2025-12-15 09:41:50 -05:00
nmemmert a5f741b332 Add comprehensive settings: data retention, incident thresholds, alert retry, scheduling, and dashboard customization 2025-12-15 09:40:21 -05:00
nmemmert 41430d0428 Add timezone configuration to settings UI and backend API 2025-12-15 09:24:06 -05:00
nmemmert 0751f30de2 Rebuild client frontend 2025-12-15 09:10:00 -05:00
nmemmert 564aa7c1b8 Fix email stats rendering when avgResponseTime is non-numeric 2025-12-11 14:25:08 -05:00
nmemmert 2cff0b7147 Improve email alert logging for per-resource targets 2025-12-11 14:23:23 -05:00
nmemmert 5a6ce1db00 Fix reinstall script - ensure data directory exists 2025-12-11 13:09:18 -05:00
nmemmert c59e94547e Add complete reinstall script with database backup 2025-12-11 13:06:42 -05:00
nmemmert 5174a14d76 Add server update script and package-lock changes 2025-12-11 11:21:55 -05:00
nmemmert 4cf5d2bdcb Update DEPLOYMENT.md with off-box build workflow 2025-12-11 11:17:20 -05:00
nmemmert cfba8a4d43 Fix email_to persistence: add column to resources table with debug logging 2025-12-11 10:26:19 -05:00
nmemmert 96e801b8be Fix email_to field not persisting in edit modal - include all resource fields in dashboard API 2025-12-11 10:22:56 -05:00
nmemmert 63874a7329 Auto-commit built React app 2025-12-11 10:18:50 -05:00
nmemmert 84f0d4399a Fix build:commit script quotes for Windows compatibility 2025-12-11 10:11:15 -05:00
nmemmert e12f8e3f8c Fix browser tab title to show 'SkyWatch' and rebuild app 2025-12-11 10:09:31 -05:00
nmemmert 322f0d2b57 Rebrand app name from 'Resource Monitor' to 'SkyWatch' 2025-12-11 09:59:07 -05:00
nmemmert a4295d8081 Add in-memory caching strategy for aggregated queries with TTL and automatic invalidation on data changes 2025-12-11 09:54:19 -05:00
nmemmert a4206b9a0f Add pagination UI to History and SLA pages with configurable page size 2025-12-11 09:51:46 -05:00
nmemmert dae36330fb Add full edit modal for all resource settings (name, URL, type, interval, timeout, keywords, headers, quiet hours, cert expiry, SLA, email) 2025-12-11 09:45:34 -05:00
nmemmert 7f6cab827d Add per-resource email targets to resource form 2025-12-11 09:39:07 -05:00
nmemmert dd7f3aeeda Performance: add database indexes and optimize history queries with aggregation and pagination 2025-12-11 09:33:20 -05:00
nmemmert 285b94692b Ensure build files are always tracked in git + update deployment docs 2025-12-11 09:28:42 -05:00
nmemmert cbb08c89be Fix SLA data filtering error 2025-12-11 09:27:15 -05:00
nmemmert 87a047d6e8 Add latest built React app 2025-12-11 09:25:12 -05:00
nmemmert 1844bccbd4 Add major features: mobile responsive, alert acknowledgment, quiet hours, HTTP keyword matching, custom headers, certificate expiry warnings, and SLA dashboard 2025-12-11 09:20:52 -05:00
nmemmert c8a8cc581a Add missing main.js build files 2025-12-11 08:51:09 -05:00
nmemmert a40cac4491 Fix static file routing - prevent catch-all from intercepting static files 2025-12-11 08:48:58 -05:00
nmemmert 4bb0466f3a Improve History page: better styling, readability, and averaging toggle 2025-12-11 08:43:49 -05:00