v0.0.2-alpha.45
Pre-releaseReleased 17 packages at 0.0.2-alpha.45 in lockstep. Every package below ships at this version.
What's changed
Patch Changes
-
#389
0c79043Thanks @mobeenabdullah! - Field group REST endpoints moved from/api/componentsto/api/field-groups, and the route re-exports fromnextly/api/componentsandnextly/api/components-detailtonextly/api/field-groupsandnextly/api/field-groups-detail. Apps that re-export these handlers must rename their route files and imports; the old paths are removed rather than aliased. -
#388
711e0c5Thanks @mobeenabdullah! - Generated types now use the Field Group vocabulary:nextly generate:typesemits<Slug>FieldGroupinterfaces and aConfig.fieldGroupsmap, and the Direct API exposesFieldGroupSlugandDataFromFieldGroupSlugin place of theirComponentequivalents. Re-runnextly generate:typesafter upgrading so the generated file and these types agree. -
#392
b51f4e8Thanks @mobeenabdullah! - The admin panel now calls reusable field structures Field Groups. They live at/admin/builder/field-groups(previously/admin/builder/components), and the navigation, dashboard tile, builder and list screens use the new wording. Bookmarks to the old admin URLs will not resolve. -
#386
2eeef30Thanks @mobeenabdullah! - Reusable field structures are now called Field Groups.defineComponent()becomesdefineFieldGroup(), thecomponent()field helper becomesfieldGroup(), thecomponentsconfig key becomesfieldGroups, and plugins contribute them viacontributes.fieldGroups. The old names are removed rather than aliased, so configs must be updated on upgrade.Stored data is untouched: tables, columns and the JSON written for existing content keep their current names, so this release moves no data and needs no migration.
Configs and plugins still using the old key now fail at startup with a message naming the new one, rather than starting up with those definitions silently unregistered.
-
#390
768bdc7Thanks @mobeenabdullah! - The Direct API namespacenextly.components.*is nownextly.fieldGroups.*, and the dashboard, plugin admin metadata, and plugin introspection responses report field groups under afieldGroupskey. Reading the old namespace now reports the rename instead of failing as an undefined property. -
#397
663306aThanks @mobeenabdullah! - Internal modules and services for reusable field structures now use field-group naming. This renames three container keys reachable through the exportedgetService():componentRegistryService,componentSchemaServiceandcomponentDataServicebecomefieldGroupRegistryService,fieldGroupSchemaServiceandfieldGroupDataService. The old keys are not aliased, so a call using one no longer resolves. The field group schema service also dropsgenerateSchemaCode(), an unused generator that was reachable through that same accessor. Stored data, table names, config keys and HTTP routes are unchanged. -
#385
d135685Thanks @mobeenabdullah! - fix(nextly): make version snapshots complete and safe to restoreSeveral version-capture gaps that could lose or corrupt content on restore are fixed:
- Restoring an old version captured the content it applied but not the content it replaced, so content written while versioning was off (held in no version) was destroyed on restore. The current document is now snapshotted as a "Before restore" version inside the restore transaction, protected by the existing retention logic. This covers both collections and singles.
- A single's component snapshots stored relationship and upload fields expanded into whole related rows instead of reference ids, so a versioned single with a component relationship could not be restored (the write failed) and could leak the related row's fields past redaction. Component snapshots now store references only.
- For a localized, status-bearing single restored at a non-default locale, the pre-restore snapshot recorded the main row's status instead of that locale's, so undoing a restore could publish content that was never published. The snapshot now records the restored locale's own status.
- A localized single's snapshot recorded only the fields a partial edit touched, dropping the write locale's other, still-persisted translations. The snapshot now carries the full set of the write locale's translations.
- Publishing every locale of a localized entry emitted only a single, document-wide
entry.published, so a subscriber watching one language never heard its translation go live. Each companion locale that actually transitions to published now emits its own locale-taggedentry.published. The publish is also judged against the row read under its transaction lock, so it records nothing when the entry was deleted concurrently.
-
#391
962fd25Thanks @mobeenabdullah! - Add a version comparison (diff) engine and endpoint.You can now compare any two saved versions of a collection entry or a single and get a typed, field-by-field diff: word-level text changes, added, removed, moved, and edited items in repeatable and component fields (matched by their stable id, so inserting one row no longer marks every row after it as changed), and added or removed relationship targets. The diff is computed on the server and is access-gated and field-redacted exactly like reading a version, so a field you cannot read never appears in a diff. It is reachable over the dispatcher and as a standalone
nextly/api/versions-diffroute for both collections and singles. The admin comparison UI follows in a later change.
Packages
@nextlyhq/adapter-drizzle@nextlyhq/adapter-mysql@nextlyhq/adapter-postgres@nextlyhq/adapter-sqlite@nextlyhq/admin@nextlyhq/admin-css@nextlyhq/blocks-engine@nextlyhq/plugin-form-builder@nextlyhq/plugin-page-builder@nextlyhq/plugin-sdk@nextlyhq/plugin-seo@nextlyhq/storage-s3@nextlyhq/storage-uploadthing@nextlyhq/storage-vercel-blob@nextlyhq/uicreate-nextly-appnextly