Changelog

What shipped on PrimDB

Every release, in plain language. What we added, changed, and fixed as PrimDB grew from one platform into a fleet you can bring your own server to.

  1. v0.10.0

    Checks that touch the thing they check

    Fixed

    • A service could read `up` while its database was unreachable. The health check only asked for an HTTP response, and an app that serves a page without touching its database answers that happily, so two outages were reported as healthy. Health now runs a real query against the managed database, and a service whose database is failing reads degraded instead of up.
    • Database size limits were never enforced for databases living on a dedicated server. The size could not be read from where the check ran, and an unreadable size counted as zero, so those databases measured empty forever. A size we cannot read is now recorded as unknown, and unknown never suspends anything: a measurement outage must not become downtime.
    • A managed database is now addressed by the machine that holds it. Its stored address is a name that means a different engine on every machine, so once a service moved, the platform could address the wrong one.
    • Deploying twice in quick succession could destroy the container it had just created. Two deploys of one service ran at once and each tore down the other’s brand-new container along with the previous one, leaving nothing running while both reported success. One deploy per service at a time now.
    • A rollback could not get through while a newer deploy held the service, which is exactly the situation a rollback exists for. An explicit promote or rollback now preempts, and retrying one actually retries it.
    • A deployment was marked ready on the word of the machine that ran it. It is checked now.
    • The platform’s own connections to managed Postgres require TLS end to end. One internal path was still connecting without it.
    • The audit trail could not be searched by field. Every entry was stored in a shape that made its contents opaque to queries, including entries going back months. Existing entries were converted.

    Added

    • Graduation: move a managed Postgres off the shared cluster onto a server you own. It copies with a real dump, so schema, indexes, constraints and sequences come with it, verifies row counts table by table before switching anything over, and never drops your original. If a step fails, the half-created database on your server is removed rather than left behind.
    • Every server the platform runs now reports its disk, and it is visible per server. A full disk stops a database from writing, and nothing was watching for it.
    • Each server’s published database port is now checked from outside that machine. An internal check can be perfectly green while nothing can connect from anywhere else.
    • Leftover containers are collected: preview environments past their window, and containers belonging to projects that were deleted.
    • Old build images are trimmed on every server, not only the shared one.

    Changed

    • Build cache is only trimmed on servers we run. On a server you own we leave it alone, because we cannot tell your layers from ours.
  2. v0.9.0

    The interface pass

    Fixed

    • Cards, panels and tables were nearly invisible. The surface sat at 1.08:1 against the page and the hairline at 1.28:1, so every box read as the same plane as the background. Both were raised, and controls whose border is their only boundary now get a stronger one.
    • Auth, Feedback and Audit could not be reached by clicking. The only links to them lived on a route nothing pointed at. They are app tabs now. Billing moved the other way: every billing endpoint is account-scoped, so it sits with your account settings instead of pretending to be per-app.
    • The label on a destructive button failed contrast at 2.91:1. It is 5.54:1.
    • Three lists swallowed a failed request and rendered as though you simply had nothing yet. They show the error.
    • Project settings ran five save buttons over one dirty check, so editing three fields and pressing one Save silently dropped the other two. Each section now saves and discards on its own, and leaving with unsaved work warns you.
    • The sessions dialog could not be closed with Escape and let the keyboard tab out behind it.
    • Service kind and deploy status used the same colours, so a blue API icon sat beside a blue "building" chip and neither taught you anything. Kind is carried by its icon; colour belongs to status.

    Added

    • Sortable columns, and a copy button on any cell long enough to be clipped. In the data browser a long JSON value used to be truncated with no way to read it back.
    • Loading states on every page that waits on the network, instead of a dead screen followed by a full repaint.
    • Empty lists now offer the action that fills them.
    • A keyboard focus ring, everywhere. The marketing site had none at all.
    • A mobile menu. Below 768px the site had a logo and one button, and every other page was unreachable from the header. Docs get a scrolling section strip and an "on this page" list at the same width.
    • A favicon, so the browser tab and search results stop showing a blank page icon.

    Changed

    • Pricing had five buttons under four labels, all pointing at the same place and none preselecting a plan, so "Start Platform" and "Sign up" did the same thing. One label now. The add-ons card links to add-on pricing, because add-ons are not a plan.
    • Rival figures on the comparison pages carry the date they were read and a link to the page they came from. Two had drifted, both in our favour, and were corrected: Vercel data transfer is a regional range rather than the bottom of one, and Railway SSO is not Enterprise-only.
  3. v0.8.0

    Agent parity, and servers you already run

    Added

    • Forty-one new MCP tools, bringing an agent to a hundred and ten. Subscriptions, usage and the computed bill, the audit log, data-service backup and rotation, project members and invitations, API tokens, redeploys, and the whole auth admin surface including OAuth, SAML and webhooks. Close to everything you can do in the dashboard, an agent can now do too.
    • Bring a server you already run. If it hosts another orchestrator, PrimDB hides that orchestrator’s own containers during discovery, so you see your applications and not its plumbing.
    • Connection strings for managed Postgres and Redis now work from outside the platform, so local tooling and one-off scripts can reach a database you provisioned here.
    • A Setup tab on Auth: the endpoints, the backend snippet, the frontend snippet and a test request, in the order you need them.

    Changed

    • Postgres connections negotiate TLS.
    • The Servers page collapsed several competing buttons into one primary action with the rest behind a menu.

    Fixed

    • Values filled in by the browser’s autofill turned black on the dark theme and became unreadable.
  4. v0.7.0

    Auth grows up

    Added

    • Social sign-in with Google and GitHub.
    • Two-factor authentication with an authenticator app, and recovery codes for when the phone is gone.
    • Organizations and teams: roles, invitations, and the active organization carried in the token your backend already validates.
    • App-level SSO and SAML for your end users, configured per project, as a flat add-on on any plan rather than an enterprise upsell.

    Changed

    • Auth webhook delivery is pinned to the address that was validated, which closes a DNS rebinding hole.
  5. v0.6.0

    PrimDB Auth — authentication that lives in your own database

    Added

    • PrimDB Auth: built-in end-user authentication for your app, the fifth product pillar. Turn it on per project and sign your users in with email + password, a magic link, or a passkey.
    • Your users in your own Postgres: the auth_users, auth_sessions, and auth_passkeys tables are created in the project’s own database, so you can join them with your app tables in plain SQL and own your identity data outright.
    • Backend SDK @primdb/auth-node, published to npm: run npm i @primdb/auth-node, create the client with your project id, and call sign-in or validateRequest. No per-MAU pricing and no SSO tax, bundled into the flat $20 platform.
    • Project → Auth in the dashboard: manage users, revoke sessions, and toggle sign-in methods.
  6. v0.5.0

    Flat pricing, single sign-on

    Added

    • Flat $20 platform: unlimited projects on one plan, priced by the resources you actually use, never per seat and never by surprise egress.
    • À-la-carte add-ons: turn on extra shared RAM, storage, point-in-time recovery, a dedicated IP, SSO, or priority support right from the billing page, with a live running total so there is no bill shock.
    • Single sign-on (SAML): connect Okta, Entra ID, Google Workspace, or any SAML 2.0 identity provider, map your email domain, and your whole team signs in through it. A flat $30 add-on, not an enterprise-only upsell.
    • Audit-trail export: download the full audit log across every project you own, as CSV or JSON, for your compliance records.
    • Managed dedicated servers: provision a machine in a click and we run it for you, billed at cost plus a flat management fee.
    • PrimDB Analytics: a dedicated ClickHouse engine for fast columnar analytics next to your app database.
    • Off-box backups: point backups, write-ahead logs, and cold data at cheap Storage-Box-backed storage.

    Changed

    • Bring your own server: the first machine you connect is free to manage; each additional server is a small flat fee.
  7. v0.4.0

    Bring your own server

    Added

    • Bring your own server: enroll a machine you control on the Servers page, run the one-line Docker command, and it joins as a deploy target next to the shared PrimDB host.
    • Discover & adopt: after you enroll a server, PrimDB lists the containers already running there read-only and lets you pick which to adopt as observe-only apps, without changing how they run.
    • Choose a deploy host per app and per service.
    • Servers page fleet view with per-host status and public IP.
    • App base-domain zones (web → apex, api → api.example.com).

    Changed

    • Deploys now route to the owning host’s agent; the shared platform host is presented simply as "PrimDB" and is managed for you.

    Fixed

    • Native dropdown menus were unreadable on the dark theme. They are legible everywhere now.
    • A stuck build no longer hangs forever.
    • Promote and rollback are now owner-only.
  8. v0.2.0

    Deploy pipeline

    Added

    • Push a repo and get a live preview URL per pull request.
    • Approval-gated promote to production with an atomic route swap.
    • One-click rollback.
    • Managed Postgres, Redis, search, and storage, provisioned in seconds.
    • GitHub App with PR comments for preview-ready and build-failed.

    Fixed

    • Preview builds auto-supersede prior builds per PR.
  9. v0.1.0

    Foundation

    Added

    • One platform for Deploy, Data, Auth, and AI.
    • GitHub sign-in.
    • Projects and team invites.
    • The dashboard.