diff --git a/README.md b/README.md index 0765eb856..ac5e1417b 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,10 @@ Pulse is built by a solo developer in evenings and weekends. Your support helps: - Security headers (CSP, X-Frame-Options, etc.) - Comprehensive audit logging - Live monitoring of VMs, containers, nodes, storage -- Alerts with email and webhooks (Discord, Slack, Telegram, Teams, ntfy.sh, Gotify) +- **Smart Alerts**: Email and webhooks (Discord, Slack, Telegram, Teams, ntfy.sh, Gotify) + - Example: "🔴 VM 'webserver' is down on node 'pve1'" + - Example: "⚠️ Storage 'local-lvm' at 85% capacity" + - Example: "✅ VM 'database' is back online" - Unified view of PBS backups, PVE backups, and snapshots - Config export/import with encryption and authentication - Dark/light themes, responsive design @@ -45,6 +48,17 @@ Pulse is built by a solo developer in evenings and weekends. Your support helps: [Screenshots →](docs/SCREENSHOTS.md) +## Privacy + +**Pulse respects your privacy:** +- ✅ No telemetry or analytics collection +- ✅ No phone-home functionality +- ✅ No external API calls (except for configured webhooks) +- ✅ All data stays on your server +- ✅ Open source - verify it yourself + +Your infrastructure data is yours alone. + ## Quick Start ### Install diff --git a/cmd/pulse/main.go b/cmd/pulse/main.go index 497dd0cea..47fc0064f 100644 --- a/cmd/pulse/main.go +++ b/cmd/pulse/main.go @@ -21,10 +21,18 @@ import ( "github.com/spf13/cobra" ) +// Version information (set at build time with -ldflags) +var ( + Version = "dev" + BuildTime = "unknown" + GitCommit = "unknown" +) + var rootCmd = &cobra.Command{ Use: "pulse", Short: "Pulse - Proxmox VE and PBS monitoring system", Long: `Pulse is a real-time monitoring system for Proxmox Virtual Environment (PVE) and Proxmox Backup Server (PBS)`, + Version: Version, Run: func(cmd *cobra.Command, args []string) { runServer() }, @@ -33,6 +41,22 @@ var rootCmd = &cobra.Command{ func init() { // Add config command rootCmd.AddCommand(configCmd) + // Add version command + rootCmd.AddCommand(versionCmd) +} + +var versionCmd = &cobra.Command{ + Use: "version", + Short: "Print version information", + Run: func(cmd *cobra.Command, args []string) { + fmt.Printf("Pulse %s\n", Version) + if BuildTime != "unknown" { + fmt.Printf("Built: %s\n", BuildTime) + } + if GitCommit != "unknown" { + fmt.Printf("Commit: %s\n", GitCommit) + } + }, } func main() { diff --git a/scripts/build-release.sh b/scripts/build-release.sh index 0482f0556..a213caf49 100755 --- a/scripts/build-release.sh +++ b/scripts/build-release.sh @@ -46,9 +46,9 @@ for build_name in "${!builds[@]}"; do # Get build environment build_env="${builds[$build_name]}" - # Build binary + # Build binary with version info env $build_env go build \ - -ldflags="-s -w" \ + -ldflags="-s -w -X main.Version=v${VERSION} -X main.BuildTime=$(date -u '+%Y-%m-%d_%H:%M:%S') -X main.GitCommit=$(git rev-parse --short HEAD 2>/dev/null || echo 'unknown')" \ -trimpath \ -o "$BUILD_DIR/pulse-$build_name" \ ./cmd/pulse