Pulse/internal/api
Pulse Monitor 0aeeb3da0d fix: resolve alert acknowledgment timeout issue (addresses #438)
The alert acknowledgment endpoints were hanging because GetState() was called
synchronously to broadcast updates via WebSocket, which could take significant
time with many nodes/guests. This caused the HTTP response to timeout, showing
an error to users even though the alert was successfully acknowledged.

Fixed by:
- Sending HTTP response immediately after acknowledging the alert
- Moving WebSocket broadcast to a goroutine to avoid blocking
- Applied fix to all alert endpoints (acknowledge, unacknowledge, clear, bulk ops)

This resolves the issue where users saw 'Failed to acknowledge alert' errors
but the alert was actually acknowledged (disappeared on refresh).
2025-09-10 15:49:12 +00:00
..
alerts.go fix: resolve alert acknowledgment timeout issue (addresses #438) 2025-09-10 15:49:12 +00:00
auth.go security: fix path traversal and malformed token handling vulnerabilities 2025-09-06 12:38:46 +00:00
config_handlers.go fix: preserve PBS alert thresholds when updating node configuration (addresses #440) 2025-09-10 15:12:43 +00:00
csrf_store.go security: comprehensive security improvements 2025-08-25 11:28:55 +00:00
diagnostics.go fix: properly handle PBS connection timeouts with granular timeout settings 2025-09-06 10:07:10 +00:00
DO_NOT_EDIT_FRONTEND_HERE.md enhance: improve mock data realism and alert system 2025-09-02 21:11:01 +00:00
frontend_embed.go fix: node summary tables now appear on initial page load 2025-08-26 16:27:19 +00:00
guest_metadata.go fix: improve guest URL validation and error handling (addresses #427) 2025-09-07 14:27:03 +00:00
middleware.go fix: prevent 301 redirect to relative path (./) when accessing root without trailing slash (addresses #334) 2025-08-19 18:56:18 +00:00
notifications.go fix: resolve webhook JSON parsing errors for all services 2025-09-04 18:55:23 +00:00
rate_limit_config.go fix: prevent rate limiting on essential real-time endpoints (addresses #419) 2025-09-04 20:22:56 +00:00
ratelimit.go feat: add comprehensive security system for API protection 2025-08-06 21:39:52 +00:00
README.md enhance: improve mock data realism and alert system 2025-09-02 21:11:01 +00:00
recovery_tokens.go security: comprehensive security improvements 2025-08-25 11:28:55 +00:00
router.go refactor: improve service name detection compatibility (addresses #430) 2025-09-10 12:33:20 +00:00
security.go fix: iframe embedding checkbox persistence and functionality (addresses #351) 2025-08-28 09:17:54 +00:00
security_setup_fix.go fix: enforce admin privileges for proxy auth users on write operations 2025-08-30 22:30:59 +00:00
session_store.go security: comprehensive security improvements 2025-08-25 11:28:55 +00:00
settings.go fix: ensure consistent CPU core display for all guests 2025-08-09 15:03:28 +00:00
system_settings.go fix: enforce admin privileges for proxy auth users on write operations 2025-08-30 22:30:59 +00:00
types.go improve: comprehensive type safety improvements across codebase 2025-08-19 21:32:44 +00:00
updates.go fix: complete update system improvements 2025-08-07 11:43:40 +00:00

Internal API Package

This directory contains the API server implementation for Pulse.

Important Note About frontend-modern/

The frontend-modern/ subdirectory that appears here is:

  • AUTO-GENERATED during builds
  • NOT the source code - just a build artifact
  • IN .gitignore - never committed
  • REQUIRED BY GO - The embed directive needs it here

Frontend Development Location

👉 Edit frontend files at: /opt/pulse/frontend-modern/src/

Why This Structure?

Go's //go:embed directive has limitations:

  1. Cannot use ../ paths to access parent directories
  2. Cannot follow symbolic links
  3. Must embed files within the Go module

This is a known Go limitation and our structure works around it.