Pulse/pkg
rcourtman d5bc3e3862 feat(commercial): attribute in-app checkouts to the surface that started them
Stripe checkouts could not be told apart by origin: every session was
stamped checkout_origin pulserelay_landing, so an upgrade started from an
RBAC gate looked identical to one started from the website. Gate CTAs now
stamp a closed-vocabulary source token (gate-<feature>, estate-card, or the
plans-page default) onto the owned billing plan route; the plan page threads
it into the purchase-start handoff, and the license server persists it on the
checkout intent and stamps Stripe metadata checkout_source.

Attribution is authenticated-session-only by construction. The public
/pricing route and the public pricing URL never carry it, and
getSelfHostedPurchaseStartUrl scrubs the parameter from forwarded query
strings so a crafted website link cannot claim in-app origin. Server-side,
source is validated against the same kebab vocabulary, skip-listed from the
Pulse Account portal redirect exactly as feature already is, and travels
only inside the handoff body. It is request-scoped and persists nothing on
the install; the cancel return echoes it so a retry keeps its origin.

The handoff field is omitempty because the license server decodes strictly,
so source-less installs stay compatible with a server either side of the
field being added. That ordering is recorded in pulse-pro OPERATIONS.md.
2026-08-07 19:45:13 +01:00
..
agents feat(monitoring): alert on certificate validity 2026-08-06 09:47:03 +01:00
aicontracts Add coverage tests for agentexec lifecycle codec and aicontracts pure helpers 2026-07-17 06:53:16 +01:00
audit Restore backend lint to green: real dedup + errcheck idiom fixes 2026-08-03 01:01:20 +01:00
auth Keep admin recovery reachable when the legacy RBAC import fails 2026-07-24 22:56:09 +01:00
cloudauth fix(hosted): preserve direct handoff membership continuity 2026-03-26 23:40:02 +00:00
db Cover cloud tenant registry queries, unified views and slowlog wrappers 2026-07-22 21:41:02 +01:00
discovery Fix discovery blocklist for configured subnets (#1616) 2026-07-30 00:18:48 +01:00
diskinventory Fix Proxmox physical disk inventory continuity 2026-07-23 22:05:09 +01:00
edition Block in-app self-update on the Pro binary to prevent silent downgrade 2026-07-08 10:02:04 +01:00
extensions Fix audit storage migration and viewer races 2026-07-24 10:33:57 +01:00
fsfilters Keep virtio and Xen disks in host disk I/O collection 2026-08-03 17:39:55 +01:00
licensing feat(commercial): attribute in-app checkouts to the surface that started them 2026-08-07 19:45:13 +01:00
metrics Fix RC metrics, agent state, and bundle regressions 2026-08-05 00:32:24 +01:00
pbs Fix PBS datastore exclusions before detail polling (#1105) 2026-07-30 09:21:57 +01:00
pmg Harden outbound URLs and file-backed storage 2026-03-29 12:47:55 +01:00
proxmox Trust newly joined cluster members under fingerprint pinning 2026-08-02 18:11:08 +01:00
pulsecli Enforce server-owned action approval authority 2026-07-11 19:49:17 +01:00
reporting test(reporting): slice PDF streams by declared /Length in text extraction 2026-08-06 09:51:01 +01:00
securityutil Block IPv6 transition addresses in SSRF guards (GHSA-8f8r-p75h-jwq5) 2026-07-31 17:57:26 +01:00
server feat(telemetry): add business_estate to the ping at schema v8 2026-08-07 19:44:52 +01:00
tlsutil feat(monitoring): alert on certificate validity 2026-08-06 09:47:03 +01:00