Commit Graph

1491 Commits

Author SHA1 Message Date
Pulse Automation Bot c3becc5272 Add Helm chart tooling, CI, and release packaging 2025-10-18 11:50:57 +00:00
Richard Courtman 6df3fa6ec5 feat: display temperature min/max range in tooltip and remove unused NodeCard
- Add instant-display tooltip on temperature column showing min-max range
- Color-code min/max temperatures individually (green/yellow/red)
- Remove unused NodeCard.tsx component from codebase
- Keep table row height consistent by using tooltip instead of inline display

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-18 08:57:10 +00:00
Richard Courtman ae367a07be feat: add min/max temperature tracking for nodes
Track minimum and maximum CPU temperatures since monitoring started.
This provides better insight into temperature trends and cooling
adequacy over time.

Changes:
- Backend: Add CPUMin, CPUMaxRecord, MinRecorded, MaxRecorded fields
  to Temperature model
- Backend: Implement min/max tracking logic in monitoring cycle that
  preserves values across polling cycles
- Backend: Initialize min/max on first reading, update on extremes
- Frontend: Update Temperature TypeScript interface with new fields
- Frontend: Display min/max range in NodeCard tooltip (e.g., "52°C
  (48-67°C since monitoring started)")
- Frontend: Rebuild dist assets

Temperature display now shows:
- Current temperature with color coding (green/yellow/red)
- Tooltip with full min-max range and context
- Min/max tracked in-memory (resets on Pulse restart)

Example tooltip: "CPU: 52°C (48-67°C since monitoring started)"

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-10-18 08:15:10 +00:00
Richard Courtman 1c33531639 fix: use consistent number-based prompts in setup script
- Changed temperature monitoring menu from [K/r/s] to [1/2/3]
- Now all multi-choice menus use numbers consistently
- Main menu: [1/2/3]
- Temperature menu: [1/2/3] (was [K/r/s])
- Yes/no questions still use y/n (standard convention)
2025-10-18 07:39:19 +00:00
Richard Courtman 74663d8cf7 fix: gracefully handle standalone node cleanup limitation
- Cleanup script now detects forced command restriction on standalone nodes
- Logs helpful message explaining limitation (security by design)
- Does not fail when standalone nodes cannot be cleaned up
- Documents that standalone node cleanup is limited by forced command security
- Automatic cleanup works fully for cluster nodes
- Manual cleanup command provided for standalone nodes if needed
2025-10-18 07:34:18 +00:00
Richard Courtman 8500c24dec fix: use proxy SSH key for cleanup of standalone nodes
- Cleanup script now tries proxy's SSH key first for standalone nodes
- Falls back to default SSH if proxy key not available
- Fixes cleanup failure when Proxmox host doesn't have direct SSH to standalone nodes
2025-10-18 07:27:15 +00:00
Richard Courtman 95b0053037 fix: remove extra sprintf arguments causing setup script syntax error 2025-10-18 07:11:19 +00:00
Richard Courtman e0844f1894 docs: add automatic cleanup documentation for node removal 2025-10-18 07:03:42 +00:00
Richard Courtman ea1db9ed33 feat: add automatic SSH key cleanup when nodes are removed
- Create cleanup script that removes Pulse SSH keys from nodes
- Add systemd path unit to watch for cleanup requests
- Add systemd service to execute cleanup script
- Update install-sensor-proxy.sh to install cleanup system
- Handles both cluster nodes (pulse-managed-key) and standalone nodes (pulse-proxy-key)
- Cleanup is triggered automatically when nodes are deleted from Pulse
- All cleanup actions are logged via syslog for auditability
2025-10-18 07:03:05 +00:00
Richard Courtman 8f2fdb70a6 fix: improve turnkey temperature monitoring for standalone nodes
- Fix script input handling to work with standard curl | bash pattern by prioritizing /dev/tty
- Add Raspberry Pi temperature sensor support (cpu_thermal chip and generic temp sensors)
- Add comprehensive documentation for turnkey standalone node setup
- Fix printf formatting error in setup script
2025-10-18 06:51:56 +00:00
Richard Courtman e68015507a feat: add turnkey temperature monitoring for standalone nodes
Implements automatic temperature monitoring setup for standalone
Proxmox/Pimox nodes without manual SSH key configuration.

Changes:
- Add /api/system/proxy-public-key endpoint to expose proxy's SSH public key
- Setup script now detects standalone nodes (non-cluster)
- Auto-fetches and installs proxy SSH key with forced commands
- Add Raspberry Pi temperature support via cpu_thermal and /sys/class/thermal
- Enhance setup script with better error handling for lm-sensors installation
- Add RPi detection to skip lm-sensors and use native thermal interface

Security:
- Public key endpoint is safe (public keys are meant to be public)
- All installed keys use forced command="sensors -j" with full restrictions
- No shell access, port forwarding, or other SSH features enabled
2025-10-17 22:15:50 +00:00
Pulse Automation 79ae95c972 temp: add dist for build 2025-10-17 22:13:44 +00:00
rcourtman 018a1eaf2b fix: improve sensor proxy install script reliability
Fixes two issues with the sensor proxy installation:
1. Local node IP detection now uses exact matching instead of substring matching to avoid false negatives
2. Removes duplicate output filtering in the setup script wrapper

These changes ensure that the proxy SSH key is correctly configured on the local node during cluster installations.
2025-10-17 19:09:54 +00:00
rcourtman 0cd4599332 feat: add comprehensive node cleanup system
Implements automated cleanup workflow when nodes are deleted from Pulse, removing all monitoring footprint from the host. Changes include a new RPC handler in the sensor proxy for cleanup requests, enhanced node deletion modal with detailed cleanup explanations, and improved SSH key management with proper tagging for atomic updates.
2025-10-17 18:53:45 +00:00
rcourtman 83238be4c3 fix: setup script now configures proxy socket bind mount
The setup script was restarting the container but never running the
pct set command to configure the bind mount. This meant the socket
was never accessible inside the container.

Now runs: pct set <ctid> -mp0 /run/pulse-sensor-proxy,mp=/mnt/pulse-proxy
before restarting the container to ensure the mount is configured.
2025-10-17 14:25:30 +00:00
rcourtman a31312ae3c fix: remove unused log import from tempproxy client
Leftover from removing EnsureClusterKeys() method. Caused compile failure
preventing hot-dev from starting.
2025-10-17 14:15:37 +00:00
rcourtman 38586fa17f fix: remove reference to deleted 'Ensure cluster keys' button in installer
The button was removed in previous commit, update error message to suggest
re-running the script instead.
2025-10-17 14:11:50 +00:00
rcourtman a0cc661027 docs: implement Codex recommendations for temperature monitoring
Add comprehensive documentation improvements based on architectural review:

1. Enhanced Known Limitations section:
   - Document single proxy failure mode
   - Explain sensors output parsing brittleness with mitigation steps
   - Clarify cluster discovery dependencies and fallback options
   - Describe SSH fan-out scaling considerations for large clusters

2. Documented SSH key rotation workflow:
   - Promote automated rotation script as recommended approach
   - Include dry-run, execution, and rollback examples
   - Provide manual fallback process
   - Reference existing pulse-proxy-rotate-keys.sh script

3. Added Future Improvements roadmap:
   - Proxmox API integration (when available)
   - Agent-based architecture option
   - SNMP/IPMI support
   - Schema validation
   - Caching and throttling
   - Automated rotation timer
   - Health check endpoint

Instrumentation verified: proxy already has comprehensive Prometheus metrics
(RPC/SSH requests, latency, queue depth, rate limiting) and structured logging.
2025-10-17 12:03:31 +00:00
rcourtman b782132db7 docs: update temperature monitoring guide to reflect removed UI button
- Replace references to 'Ensure cluster keys' button with instructions to re-run setup script
- Update troubleshooting section for new cluster nodes
- The setup script already handles SSH key distribution automatically
2025-10-17 11:46:31 +00:00
rcourtman 2b6b596aa7 feat: enhance sensor proxy with improved cluster discovery and SSH management
Improvements to pulse-sensor-proxy:
- Fix cluster discovery to use pvecm status for IP addresses instead of node names
- Add standalone node support for non-clustered Proxmox hosts
- Enhanced SSH key push with detailed logging, success/failure tracking, and error reporting
- Add --pulse-server flag to installer for custom Pulse URLs
- Configure www-data group membership for Proxmox IPC access

UI and API cleanup:
- Remove unused "Ensure cluster keys" button from Settings
- Remove /api/diagnostics/temperature-proxy/ensure-cluster-keys endpoint
- Remove EnsureClusterKeys method from tempproxy client

The setup script already handles SSH key distribution during initial configuration,
making the manual refresh button redundant.
2025-10-17 11:43:26 +00:00
rcourtman 8f000ba09a fix: expose network thresholds in override modal (#267) 2025-10-16 23:38:51 +00:00
rcourtman accf45c9d3 fix: upgrade vitest to 3.2.4 2025-10-16 14:43:36 +00:00
rcourtman 2423c10bf6 Guest drawer fallback content for agentless guests (refs #563) 2025-10-16 12:39:23 +00:00
rcourtman 6338003eb2 fix: normalize version strings with build metadata in tests 2025-10-16 09:07:40 +00:00
rcourtman e9ad061f67 fix: resolve race condition in mock mode update loop 2025-10-16 09:04:50 +00:00
rcourtman c6c0ac63e0 Stop disabled metrics from sending webhooks
Refs #561
2025-10-16 08:57:12 +00:00
rcourtman 17185b498f Normalize storage pool locale handling (#562) 2025-10-16 08:52:45 +00:00
rcourtman c15a87b43e Docker agent: add arch-aware self-update download
Refs #526
2025-10-16 08:43:59 +00:00
rcourtman f622b23e79 Fix race in mock mode and address frontend type checks 2025-10-16 08:28:17 +00:00
rcourtman ca0ceeb69c Expand monitoring and discovery test coverage 2025-10-16 08:17:08 +00:00
rcourtman f8ed75a8a0 Add guest agent caching and update doc hints (refs #560) 2025-10-16 08:15:49 +00:00
rcourtman 56292aa784 Unify API token reveal workflow 2025-10-15 22:58:31 +00:00
rcourtman 11b4600062 Add reusable API token reveal dialog 2025-10-15 22:45:14 +00:00
rcourtman 286df87830 Fix API token generation UX 2025-10-15 22:38:50 +00:00
rcourtman 1e95b3c7a7 chore: bump version to v4.24.0 2025-10-15 22:26:24 +00:00
rcourtman c60614dcf3 feat: enhance alerts system with tests and improved thresholds
- Add comprehensive test coverage for alerts package with 285+ new tests
- Implement ThresholdsTable component with metric thresholds display
- Enhance Alerts page UI with improved layout and metric filtering
- Add frontend component tests for Alerts page and ThresholdsTable
- Set up Vitest testing infrastructure for SolidJS components
- Improve config persistence with better validation
- Expand discovery tests with 333+ test cases
- Update API, configuration, and Docker monitoring documentation
2025-10-15 22:25:04 +00:00
rcourtman 7ce4bb0d37 test: cover docker command lifecycle and server info 2025-10-15 19:47:51 +00:00
rcourtman b340234df4 fix: hide update banner for dev builds 2025-10-15 19:41:39 +00:00
rcourtman 1b362efbd5 feat: add docker agent command handling 2025-10-15 19:27:19 +00:00
rcourtman 4e1a7a7fe6 Log memory source transitions for diagnostics (#553) 2025-10-15 19:19:11 +00:00
rcourtman 2821825b07 Issue #557: include template during webhook tests 2025-10-15 18:45:06 +00:00
rcourtman 5935908397 Ref #556: adjust alert history range handling 2025-10-15 18:41:06 +00:00
rcourtman 0ce1e91f35 Refs #533: add total-minus-used memory fallback 2025-10-15 18:19:54 +00:00
rcourtman 824e903ef2 Improve discovery classification heuristics
Refs #551
2025-10-15 14:08:05 +00:00
rcourtman 800c4f72e5 Adjust Proxmox overview table widths
Fixes rcourtman/Pulse#549
2025-10-14 21:12:19 +00:00
rcourtman 0da3164e9d Fix false ZFS log/cache warnings 2025-10-14 20:57:43 +00:00
rcourtman 9fcfd3b163 fix: support pmg connection tests (#551) 2025-10-14 17:44:44 +00:00
rcourtman cbf26f3c9a fix: convert ISO date strings to timestamps for formatRelativeTime 2025-10-14 16:52:38 +00:00
rcourtman a84f91a54c Allow printable alert IDs for acknowledgements (#550) 2025-10-14 16:48:22 +00:00
rcourtman df4efd3683 fix: restore cache-aware node memory on PVE 8.4 2025-10-14 16:40:45 +00:00