With this release, you can drag and drop Symbols in the sidebar to rearrange them. It also improves the reliability of dragging and dropping Symbols from the sidebar onto the page & improves the overall UX of dragging and dropping.
This update necessitates a small change in the database to enable rearranging. You can do it manually by creating a new column in your 'symbols' table called "index", making it a non-null integer, or preferably by running the query below.
From your Supabase dashboard, click 'SQL Editor' in the dashboard
Click 'New query'
Paste in the following query:
alter table symbols add column index integer;
This is Primo's most significant release to-date. The largest hurdle in V1 (which was still in Beta) was the struggle between Primo Desktop and Primo Server - informationally (too many options) but especially when it came to codebase complexity. I've always wanted to offer Primo as a desktop application because downloading is more approachable than self-hosting, but the complexity of multiple repositories, packages, and environments make it untenable to do at this stage.
Focusing on Server itself and releasing a major version made it possible to undo years of debt in the codebase and introduce functionality we've dreamed of implementing since we started: full on-page editing, real-time collaboration, autosaving, and more. But even better, the codebase is the leanest it's ever been, so more than anything this version brings Primo closer to a general release.
Set up the new server from scratch, then upload your V1 sites manually. They'll be converted v2 sites in the database.
With the removal of Primo Desktop, the project is now only self-hostable (and goes back to being just called Primo). It's still uses Vercel (or others) as a frontend and Supabase as a backend, but compared to v1 which stored your site as a single JSON file, v2 leverages Supabase's Postgres database to store sites, pages, and blocks as database records - making it possible to have an** unlimited number of pages **on a site (theoretically at least).
V1 had the tedious separation between Component section and Content section - one standard components edited from fields and the other a simple content blocked edited on the page. But with full on-page editing in V2, content sections are done away with and sections are just called blocks (instead of "components", which is a more general term).
All text, links, and images on the page can be edited directly on the page
Drag-n-drop side panel
Static field values
Significant performance improvements
A redesigned Primo editor
HTML/CSS/Fields in toolbar replaced with Page and Site
There was an extra div around content sections which has now been removed. It's removal could affect site CSS targeting content sections.
Complete Svelte language support (thanks to Replit's lang package)
Auto-complete field values
Auto-complete CSS variables
(Desktop) Offline support (libraries cached locally)
(Desktop) Duplicate site from a URL
(Desktop) Hosts not saving consistently
Component Editor preview not accurately reflecting site styles (due to not having containing .section div)
Couldn't see selected text in active line in code editor
Image Field description not saving if only field edited
Component library loads a lot faster
Themes load faster
Extra div removed from around content sections; makes it easier to style containing section from div containing content
Telemetry & generator tag
'section-container' class no longer exists on content sections
toggle device preview & set width manually
page list view
build 404 route as 404.html
site styles not cascading correctly
console logs not clearing
prevent swipe-navigating out of code editor
components with only site fields not building
primo prefix from attached classes (
Rename body class (.primo-page ->
.section-container exists alongside
Choose language (English, Spanish, German)
Improved UI for connecting to Server
Rendering issues in Safari & Firefox when using components with JS
Page modal errors (re-assigning ID, child pages)
On-page links rerouting
Inspecting popup preview
Issue preventing navigating away
Vercel/Netlify publishing issues
Using it headless alongside SvelteKit, NextJS, etc.
Design fields to give content editors predefined style options.
Cloud functions for writing backend code from Primo.