Commit graph

991 commits

Author SHA1 Message Date
rcourtman
ea335546fc feat: improve legacy agent detection and migration UX
Add seamless migration path from legacy agents to unified agent:

- Add AgentType field to report payloads (unified vs legacy detection)
- Update server to detect legacy agents by type instead of version
- Add UI banner showing upgrade command when legacy agents are detected
- Add deprecation notice to install-host-agent.ps1
- Create install-docker-agent.sh stub that redirects to unified installer

Legacy agents (pulse-host-agent, pulse-docker-agent) now show a "Legacy"
badge in the UI with a one-click copy command to upgrade to the unified
agent.
2025-11-25 23:26:22 +00:00
rcourtman
0436101ee5 feat: add auto-update support for unified agent
Implement self-update capability for the unified pulse-agent binary:

- Add internal/agentupdate package with cross-platform update logic
- Hourly version checks against /api/agent/version endpoint
- SHA256 checksum verification for downloaded binaries
- Atomic binary replacement with backup/rollback on failure
- Support for Linux, macOS, and Windows (10 platform/arch combinations)

Build and release changes:
- Dockerfile builds unified agent for all platforms
- build-release.sh includes unified agent in release artifacts
- validate-release.sh validates unified agent binaries
- Install scripts (install.sh, install.ps1) use correct URL format

Related to #727, #737
2025-11-25 23:15:03 +00:00
rcourtman
5e3f1db5b3 fix: adapt NodeSummaryTable column widths per tab context
Count columns now have appropriate widths based on their header text:
- Dashboard: VMs/CTs use compact 40-50px (short labels)
- Storage: Storage/Disks use wider 50-70px and 45-60px
- Backups: Backups uses wider 50-70px

This fixes the broken appearance on Storage and Backups tabs where
longer header text didn't fit in the narrow fixed-width columns.
2025-11-25 22:31:59 +00:00
rcourtman
e1403c719e fix: make I/O metrics reactive to WebSocket updates
The I/O columns were not updating in real-time because they accessed
props.guest directly instead of through reactive memos. This wraps
diskRead, diskWrite, networkIn, networkOut in createMemo() to properly
track changes from WebSocket data updates.
2025-11-25 21:36:27 +00:00
rcourtman
adc659b717 fix: restore intensity-based coloring for I/O columns
The I/O columns (Disk Read, Disk Write, Net In, Net Out) were showing
static gray text regardless of throughput values. This restores the
visual intensity scaling that was lost during the responsive table
refactor, where higher throughput values appear bolder/brighter to
draw attention to active I/O.

Thresholds:
- < 1 MB/s: dim gray
- 1-10 MB/s: normal gray
- 10-50 MB/s: medium weight, slightly brighter
- > 50 MB/s: semibold, white/black
2025-11-25 21:29:06 +00:00
rcourtman
daf46e0c5e fix: auto-hide sublabel when progress bar text overflows
Use ResizeObserver to track container width and estimate text width
based on character count. When the full text (percentage + sublabel)
won't fit, only the percentage is shown to prevent text clipping.
2025-11-25 20:45:11 +00:00
rcourtman
2851c3da59 feat: improve responsive table layout with tighter columns
- Add 4 separate I/O columns (D Read, D Write, N In, N Out) to guest table
- Tighten column widths: fixed-width I/O columns, flexible progress bar columns
- Remove sticky columns from NodeSummaryTable (not needed)
- Shorten "Containers" to "CTs" in node summary for consistency
- Always show full VM/LXC labels (no mobile abbreviation)
- Increase name column minWidth to 100px for mobile readability
- Add formatSpeed utility function for I/O display
- Add responsive infrastructure: useBreakpoint hook, useGridTemplate hook
2025-11-25 20:37:28 +00:00
courtmanr@gmail.com
653823f848 chore: update go.mod to make golang.org/x/sync a direct dependency 2025-11-25 17:26:44 +00:00
courtmanr@gmail.com
1716774e71 feat: adaptive node table layout, guest row fixes, and legacy agent detection
- Implemented adaptive layout for NodeSummaryTable with responsive columns and sticky name column.
- Fixed GuestRow background display issues.
- Added IsLegacy field to Host and DockerHost models to flag legacy agents (version < 1.0.0).
- Updated monitor to populate IsLegacy based on agent version.
2025-11-25 17:19:36 +00:00
courtmanr@gmail.com
6803556dec feat: auto-remove legacy agents during unified installation 2025-11-25 12:56:31 +00:00
courtmanr@gmail.com
7a204eab52 feat: add managed agents list and cleanup legacy scripts 2025-11-25 12:54:13 +00:00
courtmanr@gmail.com
92f8426ee7 feat: unify agent installation UI and scripts 2025-11-25 12:23:22 +00:00
courtmanr@gmail.com
930c086556 WIP: Save all pending changes including frontend updates and unified agent scaffolding 2025-11-25 11:27:07 +00:00
courtmanr@gmail.com
9466db4868 Register unified installer routes
Exposes /api/install/install.sh and /api/install/install.ps1 for the unified agent installer.
2025-11-25 11:25:10 +00:00
courtmanr@gmail.com
3ec7b401a3 Improve installer UX with pauses and popups on failure
Fixes #755. Adds interactive pauses and graphical popups (where available) to installer scripts when critical errors occur, ensuring troubleshooting guides are readable. Also clarifies 'build from source' instructions.
2025-11-25 11:17:37 +00:00
courtmanr@gmail.com
b524d1d79d Enhance UI responsiveness for tables: apply percentage-based widths and selective column hiding 2025-11-25 10:57:33 +00:00
courtmanr@gmail.com
71fea10aa5 Further reduce setup script verbosity: silence token checks and consolidate permission logs 2025-11-25 10:20:17 +00:00
courtmanr@gmail.com
32c1c3fac5 Suppress 'User already exists' message in setup script 2025-11-25 10:16:08 +00:00
courtmanr@gmail.com
bddb90229b Improve setup script clarity: reduce verbosity and fix confusing messages 2025-11-25 10:13:20 +00:00
courtmanr@gmail.com
0c6fd01ff2 Improve setup script output by hiding irrelevant Docker/proxy info 2025-11-25 10:01:41 +00:00
courtmanr@gmail.com
7b4152f771 chore: ignore .agent directory 2025-11-25 09:36:25 +00:00
courtmanr@gmail.com
7c69b75363 Fix checksum verification on macOS by replacing awk with grep 2025-11-25 09:36:21 +00:00
courtmanr@gmail.com
fcccee7389 Add issue triage rules 2025-11-25 09:13:44 +00:00
courtmanr@gmail.com
584ad94ee5 Refactor: Parallelize PVE node polling 2025-11-25 08:38:03 +00:00
courtmanr@gmail.com
0c4b295ac7 refactor(scripts): replace legacy install-docker-agent.sh with bundled v2 script 2025-11-25 08:36:24 +00:00
courtmanr@gmail.com
7e8d7d1b5f fix(scripts): improve checksum verification robustness against whitespace 2025-11-25 08:24:26 +00:00
courtmanr@gmail.com
f4c2bd7c35 Implement UI toggle for Hide Local Login (related to issue #750) 2025-11-25 08:14:19 +00:00
courtmanr@gmail.com
a68f2de3e6 Relax container SSH check for temperature monitoring (ref #727) 2025-11-25 08:00:08 +00:00
courtmanr@gmail.com
fd39196166 refactor: finalize documentation overhaul
- Refactor specialized docs for conciseness and clarity
- Rename files to UPPER_CASE.md convention
- Verify accuracy against codebase
- Fix broken links
2025-11-25 00:45:20 +00:00
courtmanr@gmail.com
8464a69abe Refactor remaining docs and standardize naming 2025-11-25 00:28:33 +00:00
courtmanr@gmail.com
ff18ed4064 Refactor auth and monitoring docs to be concise 2025-11-25 00:26:00 +00:00
courtmanr@gmail.com
21a489cbec Refactor integration docs (K8s, Proxy, Webhooks) to be concise 2025-11-25 00:19:34 +00:00
courtmanr@gmail.com
a8378b9e0c Refactor agent and troubleshooting docs to be modern and concise 2025-11-25 00:18:10 +00:00
courtmanr@gmail.com
70913d599d Remove redundant docs (DOCKER_HUB_README, PORT_CONFIGURATION) and update index 2025-11-25 00:16:29 +00:00
courtmanr@gmail.com
d3d06bb32c Refactor FAQ and API docs to be concise and modern 2025-11-25 00:14:22 +00:00
courtmanr@gmail.com
2e62dc15b3 Refactor core docs (INSTALL, CONFIGURATION, DOCKER) to be modern and concise 2025-11-25 00:13:07 +00:00
courtmanr@gmail.com
b6728e2114 Polish documentation: fix links, use local images, and beautify docs index 2025-11-25 00:11:30 +00:00
courtmanr@gmail.com
5d1e352d49 Refactor README.md to be more concise and modern 2025-11-25 00:07:33 +00:00
courtmanr@gmail.com
1f16bf8c7c chore: optimize PNG images and add .gitattributes
- Optimize all documentation images with optipng -o7
  • 01-dashboard.png: 497KB → 372KB (25% reduction)
  • 02-storage.png: 408KB → 307KB (25% reduction)
  • 03-backups.png: 343KB → 261KB (24% reduction)
  • 04-alerts.png: 152KB → 118KB (22% reduction)
  • 05-alert-history.png: 324KB → 245KB (24% reduction)
  • 06-settings.png: 189KB → 146KB (23% reduction)
  • 08-mobile.png: 116KB → 85KB (27% reduction)
  Total savings: 2.0MB → 1.5MB (500KB saved, 25% reduction)

- Add .gitattributes file for proper binary file handling
  • Mark binary files (images, fonts, etc.) to skip diff
  • Mark lockfiles to skip diff generation
  • Enforce LF line endings for text files
2025-11-24 23:44:55 +00:00
courtmanr@gmail.com
a88d4f644f chore: remove mcp-server directory
Remove MCP (Model Context Protocol) server integration.
This was an AI assistant tool that doesn't belong in the main repository.
2025-11-24 23:13:42 +00:00
courtmanr@gmail.com
193ef979ad chore: remove unnecessary development files and docs
- Remove CLEANUP_TODO.md and MIGRATION_SCAFFOLDING.md (internal notes)
- Remove temporary scripts: copy_and_run.sh, work.sh
- Remove AI assistant utility scripts: backup-claude-md.sh, codex-router.sh

These files were used during development but don't belong in the repository.
2025-11-24 23:09:22 +00:00
courtmanr@gmail.com
c91add36d2 fix: filter out qdevice from cluster node discovery 2025-11-24 22:54:58 +00:00
courtmanr@gmail.com
e9665cb1cd Fix: Prevent unnecessary config reloads by checking file content hash 2025-11-24 22:42:24 +00:00
rcourtman
9691a104c9 Merge pull request #752 from olagrasli/patch-1
Update install-docker-agent.sh to handle log_error and calculated checksum new line
2025-11-24 22:40:25 +00:00
olagrasli
9e18986558 Update install-docker-agent.sh to handle log_error and calculated checksum containing linebreak
Added missing function log_error
Updated checksum check to handle \r at the end of calculated_checksum
2025-11-24 21:09:44 +01:00
courtmanr@gmail.com
82ba508b59 chore: remove outdated docs, update cleanup script and release workflow 2025-11-24 19:14:54 +00:00
courtmanr@gmail.com
450081a8b0 Fix workflow name in trigger-release.sh 2025-11-24 18:10:13 +00:00
courtmanr@gmail.com
224756a5c2 Bump version to 4.32.7 2025-11-24 18:06:14 +00:00
courtmanr@gmail.com
cfc4ccf14e Fix: Allow double slashes in install script URLs 2025-11-24 17:58:00 +00:00
courtmanr@gmail.com
f347dedcdd Add PULSE_AUTH_HIDE_LOCAL_LOGIN option to hide password form
Implements #750 - allows hiding the username/password login form when
using OIDC SSO to avoid user confusion, while maintaining security.

- Added HideLocalLogin config option (env: PULSE_AUTH_HIDE_LOCAL_LOGIN)
- Exposed hideLocalLogin in /api/security/status endpoint
- Updated Login.tsx to conditionally hide local login form
- Added escape hatch via ?show_local=true URL parameter

This approach avoids the security and upgrade issues that led to
DISABLE_AUTH being removed (see #707, #678), while solving the UX
problem of users being confused by multiple login options.
2025-11-24 17:40:43 +00:00