Skip to main content

Beak Product Manager – Release Notes

Release notes for product licensing across the Beak portfolio — products, plans, licences, keys, and validation.

Note: This changelog starts at version 1.0.0. Earlier internal builds are not covered here.

Version 1.0.0​

Products carry a version and drive plan features from their own catalogue​

Each product now has a Version Number in MAJOR.MINOR.PATCH form, required when the product is created and shown on the product card. The product code is derived from the name rather than typed, so the code installers send as product_code is consistent by construction.

Plan features are no longer chosen from a list built into the console. The plan form reads the selected product's feature catalogue and offers exactly those features, with the option to add a custom feature by name. Plan types are served by the backend, so the form always matches what the API accepts.

  • Duplicate names and plans are rejected cleanly — Creating a product with an existing name, or a plan with an existing code on the same product, returns a clear error instead of failing.
  • Inactive products stay visible — The product list shows inactive products with an Inactive chip so their licences remain traceable.
  • Pricing is not captured in the plan form — Plans are stored with a zero price; commercial terms are held outside the Product Manager in this release.

Product keys are now cryptographically random​

Every generated key is drawn from a key space of roughly 2⁷⁹ values. The BEAK-XXXX-XXXX-XXXX-XXXX format is unchanged, so installers and the Validate Key tool work as before. Keys already issued keep working; regenerate a key if you want a customer on a new value.

Expiry, warnings, and renewal reminders now cover activated licences​

The nightly expiry job, the expiry-warning emails, and the renewal reminders previously acted only on licences an operator had activated but no product had yet used. Licences a customer had activated — the normal state in production — were skipped. All three now cover both Active and Activated licences, so an installed customer is warned before expiry and moved to Expired on the date.

A licence must use a plan that belongs to its product​

Creating a licence with a plan from a different product is rejected with a message naming the plan and its owning product. Previously the licence was created and its key could never validate in the intended product.

Validate Key marks the key field as required​

The License Key field on the Validate Key page shows the required marker and a message when submitted empty, instead of a silently disabled button.

Operational​

  • Database schema is now managed by migrations — The service brings its database to the current schema when it starts. No manual steps on upgrade.
  • Secrets are no longer shipped with defaults — The deployment fails fast with a clear message when a required secret is not set, instead of starting on a placeholder value.