Commit Graph

1043 Commits

Author SHA1 Message Date
rcourtman eb82745638 chore: tidy repo formatting and linting 2025-09-29 20:19:18 +00:00
rcourtman 657fa02142 Tighten dashboard table spacing 2025-09-29 18:11:33 +00:00
rcourtman 4872d58227 Improve storage and backups sorting UX 2025-09-29 18:09:41 +00:00
rcourtman 6433493232 Refine security settings UI and credential rotation flow 2025-09-29 17:42:10 +00:00
rcourtman 7b00b712f0 Document new Docker public URL guidance and bundled disk helper 2025-09-29 16:47:06 +00:00
rcourtman 70ae233863 Fix installer defaults, auth fallbacks, alert persistence, and docs helper 2025-09-29 16:36:33 +00:00
rcourtman 5a836ca542 Stretch Guest URLs table to full width 2025-09-29 16:30:49 +00:00
rcourtman d2584f135d Fix discovery list indicator alignment 2025-09-29 16:22:59 +00:00
rcourtman fa9ce3cb69 Improve discovery UX on PVE/PBS settings 2025-09-29 16:16:37 +00:00
rcourtman ccdc080181 Improve security settings UX and fix alerts typing 2025-09-29 15:52:03 +00:00
rcourtman 1e0c03084f Align dev ports and improve auto-register UX 2025-09-29 15:05:59 +00:00
rcourtman 274c7e7c12 Improve alerts defaults and websocket cleanup 2025-09-29 13:23:35 +00:00
rcourtman b12b4ba4ef Fix frontend typings and update notifications layout 2025-09-29 12:48:04 +00:00
rcourtman 2173da1b92 feat: add OIDC single sign-on 2025-09-29 10:22:27 +00:00
rcourtman dd40045770 docs: clarify optional OIDC 2025-09-29 10:14:20 +00:00
rcourtman dacb740a78 docs: expand OIDC guidance 2025-09-29 10:10:25 +00:00
rcourtman 61ba0f40e6 fix: make guest url actions react instantly 2025-09-28 19:24:04 +00:00
rcourtman deddc5458c fix: make guest url actions react instantly 2025-09-28 19:16:30 +00:00
rcourtman 4f919edeed style: surface guest URL actions in settings 2025-09-28 19:07:59 +00:00
rcourtman 0c4aeb4248 fix: resolve guest URL action visibility 2025-09-28 18:52:14 +00:00
rcourtman 8e502dc7d8 feat: unify styling and improve cluster detection 2025-09-28 18:46:52 +00:00
Pulse Monitor 6575a70465 Revert "fix: only use cluster/resources when IsCluster is true (addresses #448)"
This reverts commit 4a9912f410.
2025-09-11 20:21:08 +00:00
Pulse Monitor 4a9912f410 fix: only use cluster/resources when IsCluster is true (addresses #448)
The aggressive use of cluster/resources was breaking storage collection
for setups with multiple standalone nodes or improperly clustered nodes.
Now only uses cluster/resources when explicitly configured as a cluster,
falling back to traditional node-by-node polling otherwise.

This should fix the missing storage issue where one node's storage
wasn't showing after upgrading to rc5.
2025-09-11 20:18:18 +00:00
Pulse Monitor fd981ba231 fix: use correct binary path after build
The Makefile builds to ./pulse not bin/pulse. Updated the install script
to copy from the correct location.
2025-09-11 16:42:17 +00:00
Pulse Monitor 36f9e0625b fix: export Go path before building from source
The build was failing because Go wasn't in PATH after installation. Now
exports PATH=/usr/local/go/bin:/home/pulse/.local/bin:/home/pulse/.local/bin:/home/pulse/.local/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games before running make build.
2025-09-11 16:39:15 +00:00
Pulse Monitor e236dde54f fix: install npm dependencies before building from source
The build was failing because npm packages weren't installed. Now runs
npm install in frontend-modern directory before running make build.
2025-09-11 16:36:52 +00:00
Pulse Monitor f8b21d771b fix: inline Go installation code to fix undefined install_go function
The --main flag was calling install_go which didn't exist. Now properly
installs Go 1.23 when needed during source builds.
2025-09-11 16:31:17 +00:00
Pulse Monitor 1f1d2998f5 fix: handle --main flag properly for existing installations (addresses #448)
The install script now correctly builds from source when --main is specified,
even if Pulse is already installed. Previously it would go into the update
prompt instead of building from source.
2025-09-11 16:29:42 +00:00
Pulse Monitor e59f832218 fix: preserve storage when node returns empty result but has existing data (addresses #448)
The issue was that when a node was successfully polled but returned empty storage
(e.g., due to API permissions), it was still marked as 'successfully polled'.
This prevented the preservation logic from keeping existing storage data.

Now if a node returns empty storage but we have existing storage for that node,
we don't mark it as polled, allowing the preservation logic to keep the data.

This should fix the issue where storage disappears from one node in #448.
2025-09-11 16:00:25 +00:00
Pulse Monitor 155d198fc6 fix: improve storage collection resilience when nodes timeout (addresses #448)
- Send error result to channel when storage query times out so preservation logic works
- Ensures storage data is preserved for nodes that experience timeouts
- Fixes issue where storage/backups would disappear when a node times out
2025-09-11 15:51:37 +00:00
Pulse Monitor 087f5ad006 fix: correct binary path when building from source
The Makefile builds to 'pulse' not 'bin/pulse', updated the install
script to copy from the correct location.
2025-09-11 15:41:01 +00:00
Pulse Monitor d0361501e4 fix: install Go 1.23 when building from source if system Go is too old
- Checks if system Go version meets minimum requirement (1.21+)
- Downloads and installs Go 1.23 from official releases if needed
- Supports amd64, arm64, and armv6l architectures
- Ensures Go is in PATH for the build process

This fixes build failures on Debian 12 which ships with Go 1.19
2025-09-11 15:35:03 +00:00
Pulse Monitor 6b6571e650 fix: handle missing argument for --main option
Fixed 'unbound variable' error when using --main without additional arguments.
Added check for argument count before accessing $2.
2025-09-11 15:20:39 +00:00
Pulse Monitor 9cee368fc7 docs: document --main install option for testing latest fixes
- Added to README.md Quick Start section
- Added comprehensive docs in INSTALL.md
- Explains when and why to use --main option
- Notes build dependencies requirement
2025-09-11 15:19:57 +00:00
Pulse Monitor 43b634f654 improve: add --main as primary option for building from source
- --main is now the primary option (clearer intent)
- --source, --from-source, --branch remain as aliases
- Help text shows --main first for better discoverability

Usage: curl -fsSL https://raw.githubusercontent.com/rcourtman/Pulse/main/install.sh | bash -s -- --main
2025-09-11 15:16:40 +00:00
Pulse Monitor ac3e1eaacb feat: add --source option to install script for building from source
- Added --source, --from-source, and --branch options (all equivalent)
- Allows building and installing Pulse from source code
- Optional branch parameter (defaults to main)
- Builds frontend and backend locally before installing
- Removes separate install-from-main.sh script - integrated into main script

Usage:
  curl -fsSL https://raw.githubusercontent.com/rcourtman/Pulse/main/install.sh | bash -s -- --source
  curl -fsSL https://raw.githubusercontent.com/rcourtman/Pulse/main/install.sh | bash -s -- --source develop
2025-09-11 15:15:27 +00:00
Pulse Monitor 26a6c2fa76 feat: add script to install Pulse from main branch source
Allows users to test latest changes without waiting for a release.
Usage: curl -sSL https://raw.githubusercontent.com/rcourtman/Pulse/main/scripts/install-from-main.sh | sudo bash
2025-09-11 15:10:56 +00:00
Pulse Monitor 3e87a54712 test: create test version for issue #448 2025-09-11 15:01:23 +00:00
Pulse Monitor 07a83bb1ff fix: preserve storage data when node times out (addresses #448)
When a node's storage query times out, don't return empty storage which would wipe out existing data. Instead, skip the node entirely so the preservation logic can maintain the existing storage information.
2025-09-11 14:55:50 +00:00
Pulse Monitor 9a31dd32b6 chore: bump version to v4.15.0-rc.7 2025-09-11 14:19:58 +00:00
Pulse Monitor 082383a4dc fix: increase storage API timeout from 15s to 30s (addresses #448)
The 15-second timeout introduced to handle unavailable NFS storage was too aggressive and caused legitimate storage queries to timeout on nodes with many storage backends or higher latency. This was causing storage to not be displayed for affected nodes.

Increased timeout to 30 seconds as a better balance between responsiveness and reliability.
2025-09-11 14:19:21 +00:00
Pulse Monitor ba4eb34e4f chore: bump version to v4.15.0-rc.6 2025-09-11 14:02:05 +00:00
Pulse Monitor a971f8072c improve: enhance diagnostics export with critical troubleshooting data
- include backend diagnostics data when available
- add node online/offline status (critical for storage issues)
- include physical disks data (addresses missing disks issue)
- add ZFS pool health information
- include alert configuration (helps debug threshold save issues)
- add recent errors and connection health
- show Pulse version information
- prompt user to run diagnostics first for comprehensive data
- helps troubleshoot issues like #448 more effectively
2025-09-11 13:56:15 +00:00
Pulse Monitor e8f46e512c fix: correct diagnostics export location in issue template
- fix incorrect instructions about diagnostics location
- it's actually in Settings → Diagnostics tab → Export for GitHub
- not 'Download Diagnostics' or 'scroll to bottom'
2025-09-11 13:52:38 +00:00
Pulse Monitor f1c9943d8e improve: simplify issue templates to be less prescriptive
- make bug report template more concise and flexible
- remove overly detailed instructions
- add helpful tip about diagnostics export for troubleshooting issues
- keep templates simple so they don't restrict users
2025-09-11 13:51:50 +00:00
Pulse Monitor 24cce62669 docs: add GitHub issue templates with diagnostics export instructions
- add bug report template with instructions for attaching diagnostics
- add feature request template
- mention the 'Export for GitHub' option which provides sanitized diagnostics
- helps users provide better information when reporting issues
2025-09-11 13:51:11 +00:00
Pulse Monitor 594cf66c9f simplify: remove complex override matching logic in favor of consistent ID generation
Removed the flexible ID matching code that was added for backward compatibility. Since we've fixed the frontend to generate IDs consistently with the backend, we don't need the complexity of trying multiple ID formats.

This keeps the codebase simpler and more maintainable.
2025-09-11 13:34:03 +00:00
Pulse Monitor 455d0a2ee2 fix: standardize guest ID generation between frontend and backend to prevent future mismatches
The frontend was using guest.name while the backend uses guest.node in the ID pattern. This caused mismatches when saving and loading alert overrides.

Changed frontend ID fallback from:
  instance-name-vmid
To match backend:
  instance-node-vmid

This ensures consistent ID generation across the application.
2025-09-11 13:30:53 +00:00
Pulse Monitor 5a602c1285 fix: improve alert override ID matching to handle various frontend ID formats (addresses #441)
The frontend can save alert overrides with different ID formats depending on how the cluster is configured. This fix makes the backend more flexible in matching these overrides by:

1. Trying the exact guest ID first
2. Checking for partial matches that end with -node-vmid
3. Trying alternative ID formats like node-vmid and instance-node-vmid

This ensures custom alert thresholds work correctly regardless of the cluster name format used when saving overrides.
2025-09-11 13:25:51 +00:00
Pulse Monitor 7856598a45 fix: allow entering 0 or -1 to disable specific alert thresholds (addresses #434)
- Changed min value from 0 to -1 on all threshold input fields
- Updated formatMetricValue to show 'Off' for disabled thresholds
- Added help text explaining that 0 or -1 disables alerts
- Backend already supports threshold.Trigger <= 0 check
2025-09-11 13:12:30 +00:00