mirror of
https://github.com/rcourtman/Pulse.git
synced 2026-09-10 02:25:56 +00:00
93bccaff18
The in-app updater and the unattended timer both target the public rcourtman/Pulse community assets, so a Pro install that used them was silently downgraded to community. Guard 2 (983a89326) blocked in-app apply on the Pro edition, which stopped the downgrade but left Pro installs with no update path except manual portal downloads. That friction is a plausible driver of the runtime split: as of 2026-07-08 only 10 of 66 active paid licenses have any Pro-runtime install. Root fix: the compiled Pro binary now checks and applies updates through the license server download broker (GET /v1/downloads/pulse-pro with the installation token and instance fingerprint). The check compares against the broker's pinned private release instead of GitHub, respecting the stable/rc channel guard. Apply re-resolves fresh signed R2 URLs at apply time, verifies the archive against the same pinned pulse-installer SSHSIG key plus the broker manifest sha256, and refuses GitHub-shaped download URLs outright. An unactivated Pro binary still refuses with the portal fallback. The community edition path is unchanged. The update banner restores in-app apply for auto-updatable Pro deployments and keeps the portal instructions for deployments the updater cannot drive (Docker). scripts/pulse-auto-update.sh now skips when the installed binary reports Pulse Pro so the unattended timer can never reinstall community over Pro. Note: internal/updates/pro_update.go and manager_pro_update_test.go for this change landed one commit early inside313552debvia a parallel session committing a shared staged index; this commit completes the wiring they belong to.