Skip to content

v3.3.1

Latest

Choose a tag to compare

@elemdos elemdos released this 11 Oct 07:52
4b99490

v3.3.1 adds safer publication, image focal-point editing, clearer page creation, collaborator site access, and fixes for reusable defaults, repeaters, imports, and editor previews.

What's changed

  • Collaborator sites and existing-account invites: site-only collaborators now land on a simple grid of every site shared with them across groups. Server users can invite eligible existing accounts from site-card menus; email matching ignores whitespace and capitalization, and existing accounts receive a dashboard link without creating duplicates. #1316

  • Safer publication: track draft/public freshness and activate a new public build only after successful generation. Failed publications keep the previous site live. The editor uses the same guarded publication flow, with older-server fallback. #1300

  • Fresh block scripts: version hydration imports so updated block styles do not get paired with stale browser-cached JavaScript. Failed compilation or asset uploads stop publication before activation. #1305

  • Reusable defaults and repeaters: preserve nested group/repeater defaults when saving section fields, keep empty repeater items and their ordering through export/import, and show uploaded or unsaved replacement images in repeater headers. #1302, #1303, #1304

  • Page creation: keep forms, errors, and new page/subpage rows visible. A single loading row becomes the completed page in place, while concurrent submissions are rejected with an inline error and remain available for retry. #1306, #1307

  • Analytics enabled by default: hosted and self-hosted production instances now report usage automatically. Set PRIMO_ENABLE_USAGE_STATS=false to disable both product events and instance heartbeats. Development/test mode remains excluded, and background heartbeat delivery cannot delay startup. #1301 See Usage Analytics for the default and opt-out setting.

  • Image positioning: choose a focal point from inline image editors or image fields, preview responsive crops, and use the derived position value in blocks. Position-only edits preserve uploaded files, and contained-image clicks account for letterboxing. #1290, #1295

  • Stable editor previews: reuse preview imports, release iframe observers, and preserve mounted components and images when text changes. #1288, #1298

  • Pages and sidebar: prevent the Home row jumping when Pages first opens, handle missing home pages, keep page forms open after duplicate URLs or failed saves, and stop sidebar resizing after pointer release or window blur. #1292, #1293, #1297

  • Dashboard and authentication: return to the requested dashboard after automatic login, fade site groups, load local thumbnails reliably, and improve menus, dialogs, loading states, and empty states. #1291, #1296, #1297

  • Local code inspection: format code panels automatically in the local viewer. #1294

  • Active navigation: resolved page links expose an active boolean for the rendered page; raw URLs and deleted references remain inactive. #1282

  • Portable imports: repair foreign upload references in YAML, YML, and JSON, preserve unchanged file bytes, accept exported _id field metadata, and prevent field-name collisions across content scopes. Ambiguous or unresolved references remain warnings. #1283, #1285, #1286

  • Dashboard previews and layout: keep thumbnails styled without page-script hydration, refresh them after publishing, and align sidebar tabs beneath the toolbar. #1276, #1287

UI highlights

Image positioning and responsive crops

Choose the subject’s focal point and see how the image crops on phones, tablets, and desktop screens.

Image positioning dialog with a focal-point marker and responsive crop previews

Dashboard previews and site groups

Styled homepage thumbnails make sites easier to recognize while browsing groups.

Sites dashboard showing styled homepage previews organized in a site group

Refined sign-in forms

Consistent spacing, a password-visibility control, and clear sign-in and password-reset actions.

Updated sign-in form with password visibility toggle and password-reset link

Clearer page creation

The Pages dialog shows the page name, generated URL slug, and an explicit Create page action together.

Pages dialog with page-name and URL-slug fields and a Create page button

Sites shared with collaborators

Site-only collaborators can browse their assigned sites across groups from a simple dashboard.

Collaborator dashboard showing two shared sites without server management controls

Validation

All five platform binaries were rebuilt from the release commit in the release workflow. Uploaded asset checksums match the build artifacts, and embedded version/source metadata was verified. The macOS ARM64 release binary reports v3.3.1; runtime checks confirm analytics enabled by default, disabled by PRIMO_ENABLE_USAGE_STATS=false, and disabled in development mode. External heartbeat delivery was blocked during the smoke checks.

The CMS changes, including #1316, were merged with passing required checks and resolved review threads. The final combined candidate passed the production frontend/shared compiler/server build, full Go suite, 42 integration tests, and browser E2E (36 passed, 1 existing skipped case). CodeQL and CodeRabbit passed before the final merge. Ten focused page-creation/UI browser checks passed after reconciling the scrolling changes. All eight focused collaborator-invite and UI-polish checks passed after fixing the rename test’s group selection and removing routine debug screenshots.

Analytics remains enabled by default for production and supports self-hosted opt-out with PRIMO_ENABLE_USAGE_STATS=false. Analytics regressions cover real content-save event emission, opt-out silence, and development silence; intercepted requests prevent test activity from reaching live metrics.

Repository-wide type checking still reports existing diagnostics: 316 errors and 64 warnings. Production builds and the runtime/integration checks above pass.

Companion changes

Companion npm packages are now published:

  • primo-mcp@0.1.10: explicit draft/publication guidance for agents and versioned block scripts for local previews and CLI publications. #26, #27
  • primo-cli@0.2.1: primo publish, push --publish, hosted draft/public status, publication-only retries, an experimental two-way-sync warning, and protection for local conflicts across repeated CMS pulls. Requires primo-mcp@^0.1.10. #60, #61, #62

Rollout completed: CMS v3.3.1 was published and deployed to primo.build, followed by MCP 0.1.10 and CLI 0.2.1. Upgrade CMS and CLI together and run primo pull to refresh local baselines. Plain primo push saves a hosted draft; use primo publish or primo push --publish to update the public site.

Self-hosted analytics documentation is already deployed in the installation guide. The production Docker image and both companion npm packages are published. Production health checks passed, and the instance heartbeat and editor content-save events were confirmed in PostHog.

Full changelog: v3.3.0...v3.3.1

Release commit: 4b994903d4297e6e859df094289b1743d9f8dfde