Changelog

New updates and improvements to Privato.

v1.4.0

New pricing and panel tweaks

We're excited to announce some important updates in this release.

As we near the official launch of Privato, we've made some adjustments to our pricing structure to better align with the value we provide to package developers.

The new pricing plans are designed to be more competitive and offer greater flexibility for developers of all sizes.

Free plan

The free tier that we initially launched with in this public beta has been reworked to provide more value.

Instead of being restricted to manual license management, the free plan now includes all of the power that comes with the Stripe integration, including automatic license creation upon purchase, the customer portal, and more.

Usage-based pricing

To keep Privato sustainable in the long term, we've introduced usage-based pricing on all plans.

The majority of platforms similar to Privato use a percentage-based pricing model, essentially a revenue share. If you sell a package for $49 and the platform has a 15% fee, you lose $6.75 right off the top.

This isn't a huge amount for a single sale, but if you sell 20, 50, or even 100 licenses in a month, it can really start to add up.

  • 20 × $6.75 = $135.00
  • 50 × $6.75 = $337.50
  • 100 × $6.75 = $675.00

Instead of taking a percentage-based cut of your revenue, we've opted for a fixed fee per license sold. This means you can keep more of your hard-earned revenue while still benefiting from all of the features and conveniences that Privato provides.

At the time of writing, the new pricing plans have the following usage-based fees:

  • Launch: $1.50 per license sold
  • Growth: $0.75 per license sold
  • Scale: $0.50 per license sold

If you choose to upgrade to a paid plan to gain access to more features, we think it's only fair that you pay a smaller usage fee since you're already contributing to the sustainability of the platform.

Usage-fees are designed to be predictable and affordable, accounting for the costs associated with running the platform now and in the future as we continue to grow and improve Privato.

Minor panel tweaks

The new pricing plans are the main focus of this update, but we've also made a few tweaks to the app side of things.

Custom domain UI improvements

The old custom domain UI was a bit clunky and wasn't very intuitive. We've rebuilt this to make it clearer what the process is for setting up a custom domain and to provide better feedback on the status of your domain.

Dashboard analytics

We've organized the analytics on the dashboard into a better layout so you can get a clear overview of how things are going at a glance.

Subscription management

You can now manage your subscription directly from Privato, including switching subscription plans, retrieving invoices and cancelling your subscription.

v1.3.1

Email senders

This is just a small update to follow up on the recent changes to customer-related emails.

As well as showing your team's "Brand name" in emails, we now also set the "From" name to your brand name for better recognition by your customers.

v1.3.0

More tweaks and improvements

We're continuing to refine and improve Privato with a few more tweaks in this release.

Emails sent to your customers will now use the "Brand name" you've configured for your team, making it clearer where the email is coming from.

We have also started tracking how many times a package has been downloaded, which release was downloaded and who downloaded it. This will be especially useful for package developers who want to gain insights into how their packages are being used.

Right now, we're showing some basic charts on your dashboard page and when a license was last used in the Licenses tab, but we have plans to expand on this in future releases.

v1.2.1

Minor utilities

We've added a couple of small things in this release.

You can now delete licenses when viewing a specific customer, making it easier to manage licenses on a per-customer basis and removing the need to navigate to the Licenses tab for a specific package.

We've also added the ability to customize the "unit label" for a release channel. This is useful for tiered pricing models where you might want to be more descriptive about what a unit is or what a license represents access wise, e.g. seat, user, developer, etc.

v1.2.0

Release channels improvements and repository invites

To give more power to package developers, we've introduced some exiting new features for release channels and package repositories.

Release channel improvements

Release channels were initially introduced to help you manage package access based on your customers' purchases and subscriptions. With this update, we're taking things a step further and giving you more control over how you manage your package versions.

Configurable version constraints

Release channels can now have configurable version constraints. This means you can define specific version ranges for each release channel, allowing you to better manage which versions of your package are accessible to your customers.

For example, you can create a release channel that only allows access to ^1.0 versions of your package and when you eventually release a 2.0.0 version, you can introduce a new channel for that major version while keeping existing customers on the ^1.0 line.

Archive release channels

To go along with configurable version constraints, we've introduced the ability to archive release channels.

Archiving a release channel prevents any new licenses from being assigned to it, while still allowing existing customers to access the versions within that channel. This is particularly useful for managing legacy versions of your packages without cluttering your active release channels.

Expiration behaviour

Release channels can now have expiration behaviour configured. When you create your release channel and configure when it should expire, you can also specify what happens for customers with licenses assigned to that channel when it expires.

The default behaviour is to allow customers to continue using releases that were available to them prior to expiration, but you can also choose to completely revoke access to the package.

GitHub repository invites

The checkbox to automatically accept GitHub repository invitations has finally been implemented end-to-end!

Customers who have purchased your package will see a new prompt inside of the Customer Portal asking them to enter their GitHub username.

Once they enter their username, Privato will automatically send them an invitation for read-only access your private GitHub repository. Upon license expiration, Privato will automatically revoke their access to the repository.

If a customer purchases multiple packages and Privato already has their GitHub username, they won't be prompted again and will automatically receive invitations for any new packages they purchase.

Customer portal

The recent customer portal improvements had a minor regression where customers could no longer see any support / contact links.

We've added a Support item to the header when authenticated, as well as a link to the sign in page when unauthenticated.

v1.1.1

Minor interface tweaks

We've made some minor tweaks to the admin interface for package developers.

  • Packages now have a dedicated "Composer package name" field. This has been backfilled for existing packages where possible.
  • The package overview page now has an improved "Installation instructions" section with code snippets.
  • The package overview page now has a "Quick links" dropdown in the header with easy to access links to your public pages.
v1.1.0

Customer portal improvements

We've been focused on shipping improvements to the customer portal experience since our initial launch.

Customer portal improvements

We've completely rebuilt the customer portal from the ground up to provide a smoother and more intuitive experience for your customers.

Key improvements include:

  • A modern design powered by Flux.
  • Publicly accessible package overview pages.
  • A clearer checkout flow with clear pricing breakdowns and improved bulk licensing.
  • The ability to roll license keys.
  • A simpler licenses tables with intuitive assign/unassign modals.

Admin improvements

Alongside the customer portal improvements, we've also made some minor enhancements to the admin dashboard:

  • Business customers can now invite team members to manage their packages.
  • You can now set release channel descriptions from Privato, removing the need to manage them inside of Stripe.
  • You can now sign up with GitHub.
  • You can manually resend license emails from the Licenses tab.
  • You can manually edit customer emails in case of user error.
v1.0.0

Initial Release

We're excited to launch Privato, the modern platform for distributing private Composer packages.

Features

  • Private Composer registry with full Composer 2.x support
  • License key generation and management
  • Release channels for controlling version access
  • GitHub integration for automatic package syncing
  • Stripe integration for subscription billing
  • Team management and access controls
  • Download analytics and insights
  • Custom domains support
  • Public package pages for marketing your packages

Want to be notified of new releases? Follow us on X (Twitter).