feat(site): enhance monitoring dashboard and public status pages

Implement incident tracking for public status pages, improve the monitoring
dashboard UI with better grouping and loading states, and refine domain
resolution logic.

- feat(hub): add incident support to public status pages
- feat(hub): implement immediate monitor checks on creation and resume
- feat(hub): improve domain status detection using DNS fallback when WHOIS fails
- feat(site): redesign monitoring dashboard with categorized cards
- feat(site): add incident detail view and management in the dashboard
- feat(site): add active incidents section to public status pages
- feat(site): add "Add System" functionality to systems table
- refactor(site): improve calendar view responsiveness and loading states
- style(site): add skeleton components for better UX during data fetching
This commit is contained in:
Tomas Dvorak
2026-05-01 15:07:22 +02:00
parent 7727be166b
commit c7e2c88604
15 changed files with 866 additions and 186 deletions
+7 -1
View File
@@ -390,9 +390,15 @@ func (s *Scheduler) AddMonitor(record *core.Record) {
func (s *Scheduler) UpdateMonitor(record *core.Record) {
m := recordToMonitor(record)
// Get existing scheduled monitor to preserve next check time if appropriate
// Get existing scheduled monitor
if sm, ok := s.monitors.GetOk(m.ID); ok {
sm.mu.Lock()
wasPaused := sm.Monitor.Status == monitor.StatusPaused || !sm.Monitor.Active
nowActive := m.Active && m.Status != monitor.StatusPaused
// If monitor just became active (resumed), reset NextCheck so it's checked immediately
if wasPaused && nowActive {
sm.NextCheck = time.Now()
}
sm.Monitor = m
sm.mu.Unlock()
} else {