Skip to content

v3.2.7

Choose a tag to compare

@github-actions github-actions released this 07 Sep 23:56
· 393 commits to main since this release
5b2e8bb

What's new

Fixes

Seed the library on a fresh deploy, before any account exists (#1221)
primo deploy uploads the whole workspace right after the server passes health — before any account has been created. Sites already seeded fine unauthenticated (/api/primo/bootstrap is unauth-but-guarded), but the library import hard-required auth, so library/ silently failed to load on every first deploy.

  • /api/primo/import-library now allows the unauthenticated path only while the server has zero sites and an empty library — the same fail-closed, fresh-instance-only window bootstrap uses.
  • The setup screen now shows what was seeded ("Already loaded on this server — N sites, M library blocks") so a fresh deploy is verifiable at a glance.

Keep gating setup until an account actually exists (#1224)
Merely visiting /admin/setup latched the "setup completed" flag, so an abandoned setup left the instance stranded at the /admin/auth sign-in — with no account in existence to sign in with.

  • The flag now latches only once a real superuser exists; until then every non-setup /admin/* page (including /admin/auth) redirects back to /admin/setup.

Fix domain-assignment dead-ends and manual-provider honesty (#1225)
A batch of fixes to the assign-a-domain flow, mostly for self-hosted (manual provider) instances.

  • Dashboard no longer links to unconnected domains. Site cards and post-create redirects previously used //host/... as soon as a host was assigned, even with no DNS/cert behind it — a connection-error dead-end. Links now route through the editor-by-id URL until the domain is a base subdomain or actually live.
  • The manual provider stopped pretending. It used to hand out a placeholder CNAME and optimistically flip an external domain to "live" after one poll. External domains now stay pending with plain point-your-DNS guidance and a Mark as connected button (POST /api/primo/sites/{id}/domain/mark-live) for when the operator has wired up DNS + TLS.
  • Mark-as-connected sticks. A later status check re-persisted the provider's unverifiable pending, silently reverting the operator's confirmation. The status endpoint now serves the stored live for the manual provider instead of overwriting it.
  • The connect dialog keeps its state. After a successful attach (and after cancelling a domain change) the dialog reset to its empty initial prompt because the seeding effect re-ran against a stale site snapshot; it now transitions in place to the connected view. DNS record rows are also keyed by index, so two records sharing type+host (e.g. verification + ACME TXT) can no longer crash the list.

Note for operators: instances following the :latest image (including Railway) have already auto-upgraded to this release. Starting with the next release, the image is built and deployed when the release is published, not when the tag is pushed (#1226).