Changelog
[3.4.0] - 2026-08-26
Section titled “[3.4.0] - 2026-08-26”-
FireCMS Cloud: tenant customizations share the host’s React:
- A customization is built with
generate: falseon every shared package, so it ships no copy of them and resolves everything from the host at runtime.react/jsx-runtimewas not in that shared set, so anything in a bundle using the automatic JSX transform pulled the runtime in — and the runtime pulled a whole second copy of React in with it. A tenant’s own code is compiled classic, but third-party components ship pre-compiled, so this reached any bundle depending on a component library. - That second copy is a hard crash rather than mere waste: React 19 refuses to render an element created by React 18, because the two majors stamp elements with different symbols (
react.elementvsreact.transitional.element), so such a bundle dies on a React 19 host with error #525. Sharingreact/jsx-runtimeandreact/jsx-dev-runtimekeeps the bundle on the host’s React, and drops a fixture build from 144K to 40K. - Removed
requiredVersionfrom the shared packages. It was a gate with nothing behind it: withgenerate: falsethere is no local copy to fall back on, so when the gate fails the remote dies on an undefined module rather than degrading. It was also not the gate it appeared to be — the federation plugin’s bundled semver cannot parse an OR range, so the"^18.0.0 || ^19.0.0"that used to sit there matched no version on any host. Leaving it out makes the host the single authority over these versions, which is what lets FireCMS move React underneath deployments built years earlier. - Fixed tenant icons rendering blank. CSS asset URLs are now emitted relative to the stylesheet: a customization is served from a deep backend path, so Vite’s default base made the CSS ask for
/assets/<font>.woff2at the host root, which 404s. Only CSS is switched — the remote entry resolves its own chunks against the output root, so a global relative base would have it look forassets/assets/…and fail to load at all. FireCMSAppConfig.versionnow documents what it actually distinguishes:"1"is a bundle built without a shared JSX runtime (React ^18, and the elements it creates have to be translated before a React 19 host will render them),"2"is one built against this contract and needing no translation. Nothing reads it at runtime today — the host bridges"1"bundles unconditionally — so it is there for support to tell at a glance which contract a deployment predates.- Existing deployments keep working untouched. To pick this up, rebuild and redeploy your customization with the
vite.config.tsfrom the updatedcloudtemplate.
- A customization is built with
-
Side panel URLs, and the id chain behind them:
- Fixed the side panel writing a raw datasource path into the browser URL.
props.pathkeeps a parent entity id whole, slashes and all, so opening an entity in a subcollection produced/c/test/test/test/accommodation/room-1#side— which reads back as a different chain entirely. On reload, on a deep link, or on thelocation.pathnamesync, that URL resolved to entitytestrather thanroom-1. The escaped chain,fullIdPath, was threaded alongside all along and simply not used; the URL and the panel key are now built from it. - Fixed
fullIdPathitself losing an entity id at every level of nesting.getNavigationEntriesFromPathappended the entity id to the raw chain and to the URL chain, but not to the id chain — so a nested collection reportedproducts/localesinstead ofproducts/pid/locales, and any URL built from it addressed a collection that does not exist. This one was wrong for every app, not only those with slash-bearing ids. - Fixed
copyEntityActionpassing the rawfullPathwhereeditEntityActioncorrectly passesfullIdPath, so “Copy” navigated using an unescaped chain. - Fixed entity cache keys colliding. Built as
path + "/" + id, the pairs("a", "b/c")and("a/b", "c")produce the same key, so one entity is served another’s cached values — a draft restored into the wrong form, a reference preview showing the wrong record. All of them now go throughentityCacheKey, which escapes the id.encodeEntityIdis the identity for any id without “/”, “?”, “#” or “%”, so no existing key changes and no cached draft is orphaned by upgrading. navigateToEntitynow warns instead of navigating somewhere wrong when it is asked to build a URL from a raw path whose segments show a slash-bearing id and nofullIdPathwas given.- Nothing to do when upgrading.
- Fixed the side panel writing a raw datasource path into the browser URL.
-
The last flattened-path assumptions:
- Fixed
navigation.getCollectionthrowing for a chain whose parent entity id contains “/”. It splits the path on “/” and asserts an odd number of parts;test/test/test/accommodationsplits into four, so a perfectly valid path was rejected withCollection paths must have an odd number of segments. It now takes optionalpathSegments, and with them walks the chain instead of asserting parity. Reached fromsaveEntityanddeleteEntitywhenever a collection is not passed explicitly, so this was a hard failure on write. - Fixed permissions receiving the wrong collection chain.
PermissionsBuilderProps.pathSegments(the collection ids — a different thing from the datasourcepathSegments, and unchanged) was derived by keeping every other part of the flattened path, which fortest/test/test/accommodationgives["test", "test"]instead of["test", "accommodation"].canEditEntity,canCreateEntity,canDeleteEntityandresolvePermissionstake optional segments and every internal caller now passes them, so a permissions function gets the real chain. Same fix forgetParentCollectionIds. - Added
walkPathSegmentsas the single primitive behind alias resolution and collection lookup, plusgetCollectionByPathSegmentsandcollectionSegmentsFrom. - Nothing to do when upgrading. Every new parameter is optional and trailing, every new interface member is optional, and a suite asserts that omitting them reproduces the previous result for each helper — including that
getCollectionstill throws on a malformed path when no segments are given, and thatPermissionsBuilderProps.pathSegmentskeeps its meaning. - One compatibility trap found and avoided:
fullPathToCollectionSegmentsandstripCollectionPathtake a single argument and are passed point-free (parentCollectionIds.map(stripCollectionPath)in@firecms/firebase), where a second parameter would silently receive the array index. Their segment-aware forms are therefore separate functions, not extra parameters, and a test pins their arity.
- Fixed
-
Path resolution no longer corrupts a slash-bearing id:
- Fixed the
pathhanded to a datasource being silently wrong whenever a parent entity id contained “/”, accompanied byresolveCollectionPathIds: Collection definition not found for segment starting with "…"in the console.resolveIdsFrom(which swaps collection ids for their real paths) worked on the flattened string, so it had to find the entity ids inside it — and it did that by reading up to the next “/”. For an id liketest/testit readtest, every following segment shifted by one, and resolution fell off the end. Having given up, it appended the rest of the path verbatim, so an alias past that point was never resolved and the delegate received a path pointing at nothing. - Added
resolveCollectionPathSegments, the segment-wise counterpart: it is told the boundaries rather than guessing them, so an entity id keeps its slashes. It matches a collection by either itspathor itsid, which makes it idempotent — already-resolved segments pass through unchanged. NavigationController.resolveIdsFromtakes an optional second argument,pathSegments; when given, there is nothing to parse. The newNavigationController.resolveSegmentsFromis its segment-wise form. Every internal caller now resolves the path and the segments together from the same source, so the two representations cannot end up describing different chains.- Nothing to do when upgrading.
resolveIdsFrom’s new argument is optional and a controller declaring one parameter stays assignable;resolveSegmentsFromis optional on the interface, and callers fall back to the segments as given, which is exactly what happened before it existed. AnavigationControlleryou build yourself and pass to<FireCMS>keeps working — covered by a test whose controller deliberately lacks the method. Pinned by tests asserting that, for the real test site config (which has genuine aliases and multi-segment collection paths), supplying segments does not change a single result.
- Fixed the
-
pathSegmentsreaching every call site:- Fixed subcollections losing
pathSegments— the case the field exists for. Opening an entity by clicking a row and then selecting a subcollection tab producedpathSegments: undefinedat the datasource, while navigating to the same subcollection by URL worked. Two omissions broke the chain:EntityCollectionView’sonEntityClickdid not pass the segments (the “new entity” button 17 lines below did), andEntitySidePaneldropped them from both of itsreplacecalls — the second of which fires exactly when a subcollection tab is clicked. - Fixed writes, which never carried segments in any collection.
EntityFormhadpathSegmentsin scope and used it forgenerateEntityIdandcheckUniqueField, but not for the save itself, so every write reached the delegate without them. Also fixed the return trip:saveEntityre-projected the delegate’s result as{ id, path, values }, discardingpathSegmentsanddatabaseId, so a just-saved entity could not be deleted or referenced unambiguously. - Segments now also travel with: the Kanban board’s counts, reorder saves and backfill saves; inline cell edits; the edit/copy entity actions; entity and reference previews; the id-search popover; the reference selection dialog; and the entity callbacks (
onPreSave,onSaveSuccess,onSaveFailure,onFetch,onPreDelete,onDelete), which had no way to receive them at all. pathSegmentswas core-only. It is now threaded through the plugin surface (PluginFormActionProps,CollectionActionsProps) and consumed by@firecms/entity_history,@firecms/data_importand@firecms/data_enhancement, which previously called the datasource withpathalone.buildEntityHistoryPathSegmentsis the segment-wise counterpart ofbuildEntityHistoryPath: where the flattened path has to escape a slash-bearing id, the segment form keeps it whole.- Wherever a call pairs a
pathwith its segments, both are now read from the same source, so they cannot describe different chains. Where a site genuinely has no segments — the Firestore admin explorer, the configurable user-management and media collection paths — it passespathSegments: undefinedexplicitly, with the reason at the call. - Added a guard test that scans every package’s source: any
navigateToEntity,sideEntityController.open/replace,saveEntityWithCallbacks, or direct datasource call must mentionpathSegments, even if only to passundefineddeliberately. There is no allowlist. Three separate rounds of “the segments are missing in X” reports were all the same omission at a new call site, so it is asserted rather than reviewed by eye. ExtractedbuildSubcollectionPathSegmentsfor the subcollection arithmetic, now covered directly. - Corrected four doc comments that still promised a
path.split("/")fallback removed earlier in this release — the phrasing a reviewer would use to talk themselves into re-adding one. - Nothing to do when upgrading. Every change is additive and optional; no existing signature changed meaning, and behaviour is identical for any backend whose ids cannot contain “/”.
- Fixed subcollections losing
-
Snackbars rendering under dialogs:
- Fixed snackbars being painted below a side dialog or a modal dialog instead of above them. Notistack only portals its snackbar container when it is given a
domRoot; without one it renders the container inline, wherever<SnackbarProvider>happens to sit in the tree. Dialogs and side dialogs are portalled todocument.body, so any ancestor of the provider that creates a stacking context (atransform, afilter, anisolate, a positioned element with az-index) trapped the snackbars beneath them and theirz-indexcould never win. SnackbarProvidernow passesdomRoot={document.body}, so the container is a direct child of the body and shares a stacking context with the dialogs. The element is resolved in an effect, so server rendering is unaffected.- Nothing to do when upgrading; host apps that mount
<SnackbarProvider>themselves get the fix with no code change.
- Fixed snackbars being painted below a side dialog or a modal dialog instead of above them. Notistack only portals its snackbar container when it is given a
-
ErrorBoundaryfallback:- Fixed one failing cell taking over the screen. The fallback had grown into a full-height slate backdrop wrapping a padded white card, but
ErrorBoundarywraps small things all over the app — table cells, header cells, action buttons, property previews, form entries — so a single failing property preview blew up into a full-bleed card. It is a compact inline block again: a small red icon, “Error”, and the message in a caption. - The fallback now actually shows the error. The message was passed into
FallbackViewand then never rendered, so every error read the same “See console for more details.”; that string is now only the fallback for an error carrying no message.
- Fixed one failing cell taking over the screen. The fallback had grown into a full-height slate backdrop wrapping a padded white card, but
-
Fixed duplicate
@firecms/corein prerelease installs:- Fixes
navigationController.resolveIdsFrom is not a function, and the companionreact-i18next:: You will need to pass in an i18next instancewarning, when using acanarybuild. - Canary releases pinned the dependencies between our own packages with a caret, e.g.
"@firecms/core": "^3.4.0-canary.abc1234". That range also matches the stable3.4.0, and npm installs the highest match — so a canary install quietly pulled stable transitive packages. Those in turn require"@firecms/core": "^3.4.0", which the canary core does not satisfy, so npm nested a second copy of@firecms/coreinside them. Two copies means two React context objects: the app’s<FireCMS>provider fills one, the plugin reads the other and gets an empty controller. - Canary publishes now pin our own packages exactly, so a canary install is internally consistent. Verified: installing
@firecms/core,@firecms/ui,@firecms/firebaseand@firecms/data_exportat the same canary version previously produced five copies of@firecms/core(one canary, four stable); it now produces one. - Stable releases were never affected, and no package manifests changed — nothing to do when upgrading beyond changing the version numbers, as before.
- As always, keep every
@firecms/*package on the same version.
- Fixes
-
i18n:
- Upgraded
react-i18nextfrom 14 to 17.i18nexthad moved to 26 while the React binding stayed on a major built for i18next 23; the versions installed without complaint because react-i18next 14 declares an open-ended peer (>= 23.2.3), so the mismatch was invisible. react-i18next 17 declaresi18next >= 26.2.0, which is the matching pair. - Added tests for translations, which had none. They render real strings through
FireCMSi18nProvideranduseTranslationacross every bundled locale (en, es, de, fr, it, pt, hi) and cover interpolation, English fallback, and unknown keys. - No API change: FireCMS uses only
I18nextProvider,initReactI18nextanduseTranslation, all unchanged across those majors.
- Upgraded
-
CLI templates:
- Removed the
--v2template. FireCMS 2 is no longer maintained, and the template had been broken for some time: it pinnedfirebase: ^9whilefirecms@2.2.1requires peerfirebase@^10.4.0, so a freshly scaffolded project failednpm installwithERESOLVEbefore anything else could happen.firecms init --v2now exits with an explanation pointing at the current templates rather than an unhandled argument error. firebase-toolsis now a devDependency of the templates whosedeployscript callsfirebase(template,template_pro), sonpm run deployno longer depends on the CLI being installed globally.- Every remaining template is verified end to end — scaffolded through the CLI, then
npm installandnpm run build. Note that the Next.js template prerenders pages at build time, so unlike the single-page templates it needs a real Firebase config beforenpm run buildwill succeed; this is called out in its README.
- Removed the
-
CLI (
firecms init):- Fixed
firecms init my-appscaffolding into a directory calledinitand ignoring the name given. Theinitsubcommand was being passed through to the argument parser, so the positional directory name was read one position too early.create-firecms-appwas unaffected. - Fixed the Firebase project id sometimes not being substituted into a new project, leaving the raw
[REPLACE_WITH_PROJECT_ID]placeholder in the generated files. The substitution used callback-stylefscalls inside anawait, so the writes were fire-and-forget and the CLI could exit before they landed — non-deterministically, which is why it went unnoticed. - Fixed generated projects failing
npm run buildwitherror TS2339: Property 'projectId' does not exist on type '{}'. When the Firebase web app step ran, it rewrotefirebase_config.tswithout theRecord<string, string>annotation the templates ship, so TypeScript inferred the literal type and an empty config stopped type-checking. An empty config is a legitimate state — the app checks for it and throws a helpful message at runtime — so it has to keep compiling. - Fixed
--yesbeing ignored, which is what made the CLI impossible to drive from a script or from CI. Both halves were missing:parseArgumentsIntoOptionsnever put the flag in what it returned, and the block inpromptForMissingOptionsthat would have honoured it was commented out, sofirecms init --yesprompted anyway. It now takes every answer from the flags, and anything still missing is an error rather than a guess —--yeswithout a template flag, or with--cloudand no--projectId, exits 1 naming the flag to add. - Stopped
initprinting aDEBUG - templateDir resolved to: …line on every run. It sits behind--debugnow, where the rest of the debug output already lives. - Added an end-to-end test suite that drives the real CLI as a subprocess across the
pro,community,cloud,next-proandastrotemplates, covering the target directory, project id substitution, leftover placeholders, template build artefacts leaking into new projects, and refusing to overwrite a non-empty directory.
- Fixed
-
Restyled UI (visual change):
@firecms/uiadopts a new visual language. This is intentional, but it is the one change in this release that is visible on upgrade — an existing app will look different without any code change.- Surface palette: every
--color-surface-*step was retuned to a more neutral scale, and--color-surface-accent-900/-950were lightened (#0f172a→#172033,#020617→#0f172a). Dark surfaces are lighter overall and form fields have more contrast against their background. - Text tokens:
--color-text-primary,--color-text-secondaryand--color-text-disabled(and their-darkvariants) moved from translucentrgba()values to opaque hex — e.g.rgba(0, 0, 0, 0.87)→#212121. Translucent text let backgrounds bleed through icon strokes; opaque values render them solidly. - Typography scale: headings are tighter and heavier. Each level drops roughly two steps (
h1text-6xl→text-4xl,h2text-5xl→text-3xl, and so on) and moves fromfont-light/font-normaltofont-semibold, with tighter tracking on the smaller levels. Body text drops one step. - If you override these CSS variables in your own app, your overrides still win — but check any colour you picked to match the old palette.
-
@firecms/uistylesheet:- Fixed
@firecms/ui/index.cssfailing to resolve. The build was emitting the stylesheet todist/src/index.csswhile the packageexportsmap publishes it asdist/index.css, so the import failed and apps rendered unstyled. Caused by avite-plugin-static-copy3 → 4 upgrade changing how a source path resolves against its destination; the file is now copied directly so it cannot move with a dependency bump.
- Fixed
-
pathSegmentson the datasource callbacks:-
checkUniqueFieldandgenerateEntityIdtake positional arguments rather than a props object;pathSegmentsis appended last and is optional, so existing delegates and callers are unaffected — a function declaring fewer parameters stays assignable, and the extra argument is ignored at runtime. Covered by a test that drives a delegate written against the original signature. -
EntityandEntityReferencenow carrypathSegmentstoo. Without it anything derived from a loaded entity — a reference, a delete — lost the segment boundaries again. FireCMS attaches the segments an entity was fetched with, so delegates do not have to set them. -
pathSegmentsis never derived by splittingpath. If a caller does not provide them the field isundefined, which means “not known here”; splitting the flattened path would produce a confidently wrong answer in exactly the case the field exists for (a parent id containing “/” yields one segment too many). A guard test fails the build if a fallback is reintroduced. -
fetchEntity,fetchCollectionandsaveEntity(and theirlistenvariants) now receive an optionalpathSegments?: string[]alongsidepath. -
pathis a single flattened string, so a parent entity id containing “/” could not be recovered from it:"nodes/node/42/edges"is indistinguishable from a three-level nesting. Leaf entities were always fine, becauseentityIdis a separate field; the collection they live in was not.pathSegmentsis the unambiguous form — one element per real segment, entity ids kept whole however many slashes they contain:path: "nodes/node/42/edges"pathSegments: ["nodes", "node/42", "edges"] -
Nothing to do when upgrading. The field is optional and additive;
pathkeeps its exact meaning. For any backend whose ids cannot contain “/”,pathSegmentsis exactlypath.split("/")— pinned by a test — so Firestore is unaffected. Delegates that need it should preferpathSegments ?? path.split("/"). -
Segments are produced where the collection/entity boundaries are actually known (the navigation entries) and threaded down, rather than re-derived from the flattened string. Subcollections rendered inside an entity extend them, so nesting stays correct at any depth.
-
This removes the “slash-bearing parent id” limitation noted below.
-
-
Entity history with slash-containing ids:
- Fixed entity history breaking for ids containing “/”. History is stored as a subcollection under the entity, so the id becomes a path segment: with an id like
edge/7the path resolved somewhere else entirely, and on Firestore it flipped to an even segment count, which is rejected outright. - The save callback, the history view and the last-edited indicator now share a single
buildEntityHistoryPathhelper that escapes the id. It is a no-op for any id without “/”, “?”, “#” or “%”, so existing histories do not move.
- Fixed entity history breaking for ids containing “/”. History is stored as a subcollection under the entity, so the id becomes a path segment: with an id like
-
Entity IDs containing slashes:
- Entity IDs may now contain
/, as well as?,#and%. Previously an ID with a slash was accepted without validation and then silently truncated at the first slash, shifting every following path segment. - Added
encodeEntityId/decodeEntityId. IDs are escaped only inside URL-facing paths; navigation entrypathfields, datasource paths andEntityReference.pathcontinue to carry raw IDs, so theDataSourcecontract is unchanged. - Firestore is unaffected: it forbids
/in document IDs, and the escaping is the identity function for any ID without/ ? # %. - Note for consumers: an ID containing a literal
%now produces a different URL than before, and an existing link whose ID contains the literal text%2Fwill resolve differently. The exportedgetNavigationEntriesFromPath,getParentReferencesFromPathandresolveNavigationFromnow expect escaped IDs in theirpathargument. - A slash-bearing ID in a parent position of a subcollection path is resolved by
pathSegmentsabove;pathalone remains ambiguous for it.
- Entity IDs may now contain
-
Firebase module resolution:
- Fixed
Component auth has not been registered yet, which threw on first render and left a blank page.@firecms/firebasedepended on@firebase/authdirectly at*whilefirebasewas only a peer, giving auth its own resolution root: it registered its component into one@firebase/appinstance while the app used another. - All Firebase imports across
@firecms/firebase,@firecms/cloud,@firecms/collection_editor_firebase,@firecms/datatalkand@firecms/firebase_adminnow use thefirebaseumbrella (firebase/app,firebase/auth, …) instead of the scoped@firebase/*packages. @firecms/datatalkand@firecms/firebase_adminimported Firebase while declaring no dependency on it, relying on hoisting; both now declare it as a peer.
- Fixed
-
Navigation fixes:
- Fixed entity URLs breaking for IDs needing percent-encoding (a space or any non-ASCII character), which collapsed the base path and broke the unsaved-changes guard and subsequent navigation.
- Fixed reference filters in the URL being parsed incorrectly for subcollection paths.
getCollectionPathsCombinationsno longer mutates the array passed to it.
-
Testing:
- Repaired the workspace test target: several suites could not run at all, and three had never passed since being committed.
lerna run testnow completes across all packages. - Added a
example_graphexample: FireCMS against an in-memory graph-style datasource with slash-containing IDs, requiring no Firebase or configuration. Run withpnpm graph.
- Repaired the workspace test target: several suites could not run at all, and three had never passed since being committed.
[3.3.0] - 2026-06-02
Section titled “[3.3.0] - 2026-06-02”- Firestore Explorer & Firebase Admin:
- Integrated the new
@firecms/firebase_adminpackage. - Added a complete Firestore Explorer plugin into FireCMS Cloud, enabling recursive Firestore collection tree navigation, subcollection support, and root collection creation.
- Exposed dirty state changes and allowed adding subcollections in the DocumentPanel.
- Improved reference handling, typed value rendering, and field type indicators.
- Enhanced DocumentTable cell value rendering with type-based styling.
- Added PITR (Point-in-Time Recovery) history, info panels, and recovery endpoints.
- Implemented an admin job tracking system.
- Integrated the new
- Google Cloud Marketplace Integration:
- Added support for Google Cloud Marketplace billing and project linking.
- Login View Revamp:
- Restructured
FireCMSCloudLoginViewlayout to center content and added theme/language controls to the header. - Added customizable branding, theme toggle, and improved button visual feedback for disabled states.
- Restructured
- Collection & Form Enhancements:
- Added nullable property configurations and support for clearing nullable fields.
- Improved local changes tracking with analytics support.
- Introduced view grouping for entity tabs.
- Introduced lazy/eager utility for field bindings.
- Added
PopoverCellEditorfor structured data editing. - Standardized JSON serialization with a custom replacer.
- Enhanced
VirtualTablecolumn headers with configurable icon sizes. - Improved JSON editor layout and filter row autofocusing behavior.
- Modularized filtering logic into reusable components and utilities with persistent state support.
- Fixed issues where the markdown editor triggered redundant updates when the value was undefined.
- Improved
TextareaAutosizescrolling.
- MongoDB Package Decommissioning:
- Removed the
@firecms/mongodbpackage and references due to MongoDB’s deprecation of Atlas Device SDK / App Services /realm-webplatform.
- Removed the
- Dependency Cleanups & Refactoring:
- Removed the deprecated
@types/eslint__jsstub type dependency.
- Removed the deprecated
[3.2.0] - 2026-03-31
Section titled “[3.2.0] - 2026-03-31”- Editor Rewrite:
- Completely reimplemented the rich text editor with new ProseMirror hooks, plugins, node views, and schema.
- Added table support with markdown parsing, slash command insertion, and a table bubble UI.
- Added image bubble for editing image alt/title attributes and enhanced image upload capabilities.
- Added a markdown editing mode toggle alongside the rich text mode.
- Improved slash command menu with better HTML parsing and prevented event bubbling.
- Improved paste behavior, image handling, and placeholder display.
- Fixed link selector in editor.
- Fixed serialization and parsing of markdown images and links with special characters in URLs and titles.
- Streamlined markdown image serialization and improved editor content updates.
- Editor Package Consolidation:
- Removed the standalone
@firecms/editorpackage, migrating all editor components into@firecms/core. - Redistributed locale files to
@firecms/coreand@firecms/collection_editor.
- Removed the standalone
- Internationalization (i18n):
- Added full i18next integration with translations across the platform.
- Added Portuguese, German, French, Spanish, Italian, and Hindi translations.
- Added language mismatch detection script for translation coverage.
- Added comprehensive translations for project settings, subscription management, AppCheck, security rules, and text search features.
- CLI:
- Added Astro template to the FireCMS CLI for creating Astro-based projects.
- Fixed core template Vite config file.
- Storage:
- Added upload progress indicators for file uploads.
- Collection Improvements:
- Introduced a dedicated
CollectionDataErrorBannerfor displaying collection data loading errors, including Firestore index suggestions. - Synchronized table filters and sorting with URL parameters.
- Enhanced URL encoding and decoding for navigation.
- Added scrollable Tabs with scroll indicator icons.
- Introduced a dedicated
- Fixes:
- Fixed Firestore transaction
setoperation to overwrite documents instead of merging. - Fixed filter sync issues in collections.
- Preserved string type when encoding filter values in URL.
- Improved date field robustness.
- Removed URL parameter parsing for filters and sorting from
useDataSourceTableController.
- Fixed Firestore transaction
[3.1.0] - 2026-02-20
Section titled “[3.1.0] - 2026-02-20”-
AI Integration:
- Introduced AI-driven collection generation and data enhancement features.
- Added new AI icon and integrated AI capabilities into the collection editor.
-
Kanban View:
- Added full support for Kanban boards with customizable columns.
- Implemented drag-and-drop column reordering and optimistic updates.
- Added Kanban configuration options including column colors.
-
Collection Features:
- Added
displayview to collection editor. - Implemented drag-and-drop column reordering in data tables with persistence.
- Enhanced collection inference with optional filter and sort parameters.
- Added
-
UI/UX Improvements:
- Added View Mode Toggle (List, Grid, Table) for better data visualization control.
- Implemented collapsible drawer navigation groups.
- Added full-screen blocking modal support for Cookie Banner.
- Harmonized button colors and restyled Tab components.
- Replaced
AutorenewIconwithFindInPageIconfor better clarity. - Enabled smooth scrolling behavior.
-
Storage:
- Added support for fully-qualified storage URLs.
- Added
includeBucketUrlandimageResizeoptions for file uploads.
-
User Management:
- Added
updateUserFieldsmethod for direct Firestore updates.
- Added
-
Fixes:
- Updated Firebase dependency to v12.7.0.
- Security updates for Next.js (CVE-2025-66478).
- Fixed date autovalues validation bugs.
- Fixed issues with object merging and local changes.
- Improved Text Search integration with Typesense.
- Fixed layout and styling in FormEnhanceAction.
[3.0.0] - 2025-12-01
Section titled “[3.0.0] - 2025-12-01”- Editor Enhancements:
- Improved escape key behavior in editor slash command
- Enhanced suggestion menu behavior
- Improved path suggestions handling in collection editor components
- Refactored root collection suggestions
- UI/UX Improvements:
- Added
prettifyIdentifierfunction to format identifiers and improve readability - Refactored key formatting to use prettifyIdentifier
- Small UI adjustments across the application
- Small visual update to dialogs
- Removed font-mono from map preview
- Added
- Collection Editor:
- Added inline editing prop editing to collection editor
- Fixes for collection editor property saving
- Applied consistent behavior to
editableprops in collections and properties
- API Updates:
- Updated API server URLs to use new endpoints
- Dependencies:
- Many dependency updates
- Added PostCSS configuration with Tailwind CSS and Autoprefixer
- User Management:
- Refactored user management to consistently use
saas_uidandfirebase_uid - Updated button styles in EnableAuthView for consistency
- Refactored user forms to improve layout and state management
- Refactored user management to consistently use
- Project Configuration:
- Updated project configuration handling to account for trial status
- Added initial loading screen
- Fixes:
- Fixed home DND issues
- Fixed local changes preview in row actions
- Fixed local changes diff
- Fixed dates losing focus while typing and when selecting null values in date filters
- Fixed select enum filters UI glitch
- Fixed full screen entity views with encoded characters in their ID
- Storage & Images:
- Added new image resizing capabilities
- Replaced internal compressing library with compressor.js
- Improved error message when Firebase Storage is likely not enabled
- Data Enhancement:
- Adjusted data enhancement cosmetics
- Form Handling:
- Displaying pre-save errors in table view
- Improved error focus when saving form with errors and feedback
- Debouncing on values change in Formex
- Added
initialTouchedto Formex controller - Changed how dirty values are persisted in local storage
- Local Changes:
- Added
enableLocalChangesBackupto collections, allowing users to disable the local copy of unsaved entities in the browser - Changed local changes to be able to be applied manually
- Clearing unsaved changes indicator if the feature is not enabled in collections
- Added
- Entity History:
- Added a cleaner type to the entity history plugin
[3.0.0-rc.4] - 2025-11-25
Section titled “[3.0.0-rc.4] - 2025-11-25”- Refactored user forms to improve layout and state management
- Updated project configuration handling to account for trial status
- Many dependency updates
[3.0.0-rc.3] - 2025-11-07
Section titled “[3.0.0-rc.3] - 2025-11-07”- Displaying pre-save errors in table view
- Fixed home DND issues
- Added new image resizing capabilities and replaced internal compressing library with compressor.js
- Improved error message when Firebase Storage is likely not enabled
- Small visual update to dialogs
- Added inline editing prop editing to collection editor
- Fixes for collection editor property saving and applying consistent behavior to
editableprops in collections and properties - Fixed select enum filters UI glitch
- Fixed dates losing focus while typing and when selecting null values in date filters
- Fixed local changes preview in row actions
- Removed font-mono from map preview
- Fixed local changes diff
- Added a cleaner type to the entity history plugin
- Changed local changes to be able to be applied manually
- Added
enableLocalChangesBackupto collections, allowing users to disable the local copy of unsaved entities in the browser - Debouncing on values change in Formex and added
initialTouchedto Formex controller - Changed how dirty values are persisted in local storage
- Improved error focus when saving form with errors and feedback
[3.0.0-rc.2] - 2025-10-16
Section titled “[3.0.0-rc.2] - 2025-10-16”- User Management in FireCMS Core: Added user management capabilities directly to FireCMS Core, expanding self-hosted options.
- User Fields as String Values: Fully implemented support for user fields as string values, improving flexibility in user data handling.
- TipTap V3 Migration: Migrated markdown editor to TipTap V3 for improved performance and features.
- Tailwind 4 Retrofit: Multiple adaptations to support Tailwind 4 retrofit, modernizing the styling infrastructure.
- Login Enhancements:
- Implemented Cloud email login
- Added email and password authentication to Cloud SaaS
- Added login analytic events
- Fixed demo login layout
- Website Updates:
- Added Astro landing site (WIP)
- Website migration updates
- Migrated images
- Inline website CSS
- Web design updates
- Security page tweaks
- Home Page Improvements:
- Storing home page collapsed state in local storage
- Attempted fix for group renaming on home page
- Reverted some drag-and-drop changes
- Fixes:
- Fixed editor SSR (Server-Side Rendering) support
- Fixed importing references with secondary databases
- Fixed support for secondary database references
- Fixed SaaS permission view
- Fixed filter input for numbers when value is 0
- Better error management for doctor (diagnostic tool)
- UI/UX:
- Removed forced parent collection button
- Dependencies: Updated template dependencies
- Documentation:
- Improved documentation for custom icons in collections
- Added authentication documentation
- Added security information section
[3.0.0-rc.1] - 2025-09-25
Section titled “[3.0.0-rc.1] - 2025-09-25”- Firebase 12 Upgrade: Updated to Firebase 12 for improved performance and features.
- History Plugin Enhancements:
- Added previous values tracking to history plugin
- Added programmatic creation of history entries
- Reference Properties Improvements:
- Added reference as string field configuration
- Fixed additional columns not showing in reference selection
- Fixed reference properties not rendering correctly with no path but with a custom Field
- UI Updates:
- Updated default SaaS icon
- Button color updates
- Collapsing home sections
- Small web updates and removed Algolia DocSearch
- Fixes:
- Fixed Google Cloud login issue
- Fixed error returning from subscription view
- Fixed storing recent project
- Fixed TipTap imports
- Fixed passing gclid correctly to app
- Website CLS (Cumulative Layout Shift) fix
- CLI: Added npm instructions to CLI
- Dependencies: Various dependency updates and cleanup
- Documentation: Corrected typo in custom_previews.md
- Import/Export: Cleaned up imports
- Roles Management: Added ability to set roles programmatically in code
[3.0.0-beta.15] - 2025-08-18
Section titled “[3.0.0-beta.15] - 2025-08-18”- Survey Feature: Added initial user survey with analytics tracking to improve user experience and gather feedback.
- Entity Actions Improvements:
- Added entity actions registry for better organization
- Added form context to entity actions
- Entity actions now available in full screen mode
- Improved entity actions page
- Subscription Management:
- Added Stripe portal link for easy subscription management
- Improved subscription view in project settings
- Added ability to change payment method
- Added analytics events for subscription success or failure
- Price updates
- Home Page Enhancements:
- Added drag and drop functionality to home page sections
- Added back default empty view in home page
- Implemented group drop behavior
- Added ability to rename groups
- Collections can now be edited within the entity edit view
- Fixed home page search re-rendering issue
- UI/UX Improvements:
- Changed default buttons from primary to neutral color
- Added smallest switch size
- Updated hero background gradient
- Minor styling updates
- Added currency toggle in pricing page
- Made collection icons smaller
- Landing page mobile optimizations
- Added small animation to login views
- Updated logo
- Small drawer visual updates
- Analytics:
- Added campaign tracking to analytics
- Added landing analytics events
- Added analytics events for surveys
- Component Updates:
- Changed Alert class props
- Added
viewportClassNameto Select component - File upload visual update
- Allow use of React components as icons
- Added
previous valuesto history plugin - Allow disabling focus in dialog
- Performance & Bug Fixes:
- Fixed loading button size
- Fixed entities getting dirty on creation due to markdown field
- Fixed filtering for null values bug
- Fixed useMemo with changing arguments error
- Fixed id paths bug
- Fixed merged collections order
- DND (drag and drop) performance optimizations and bugfixes
- Fixed collection groups path handling
- Custom Fields: Improved custom fields page
- Reference Dialog Fix: Fixed reference dialog sorting issue when filters are applied in main collection
- Product Demo: Improved product sync demo action
- Web Updates:
- Web design updates
- Web mobile optimizations
- Enhanced getPath function
- Added data attributes to Button component
- Documentation: Improved llms.txt generation pipeline
- Docusaurus: Version update
[3.0.0-beta.14] - 2025-04-17
Section titled “[3.0.0-beta.14] - 2025-04-17”- JSON View Toggle: Added toggle in collections editor view for accessing raw JSON data.
- UI Consistency: Improved UI consistency for select and multiselect components.
- Form Improvements: Enhanced popup form field resizing and boundary handling.
- Entity History Plugin: Added history tracking functionality to FireCMS Cloud and FireCMS PRO.
- Fixes:
- Fixed text overflow in entity titles
- Fixed errors displayed incorrectly in array of maps
- Fixed truncating buttons
- Fixed read-only entities getting obscured by bottom bar
- Fixed overlay text color in dark mode
- Fixed errors not being cleared on collection editor
- Fixed mergeDeep to handle null cases correctly
- Fixed scroll resetting x-axis on pagination
- Added back table cell error indication
- Drag and Drop: Replaced
@hello-pangea/dndwith@dnd-kitfor better performance and flexibility.
[3.0.0-beta.13] - 2025-04-11
Section titled “[3.0.0-beta.13] - 2025-04-11”- JSON Preview: Added JSON preview tab to entities, providing a raw data view. Can be disabled with
disableJsonTabprop. - TextField Enhancements: Added
maxRowsandminRowsprops to TextField component for better control of multiline inputs. - AuthController in PropertyBuilder: Added
authControllerto PropertyBuilder callback, allowing access to authentication context. - Storage Improvements: Added
processFileto storage properties for pre-processing files before upload. - Secondary Forms: Secondary forms are now always rendered, even if disabled, for better consistency.
- UI Improvements:
- Adjusted small and smallest field sizes for better visual hierarchy
- Updated Button neutral color styling
- Improved layout for long entity IDs
- Various minor layout tweaks
- Fixes:
- Fixed array reference field with incorrect add button
- Fixed subcollections not resolving path correctly
- Fixed complex subcollection with alias navigation bug
- Fixed export functionality when flatten arrays is false (double quotes are now escaped correctly)
- Fixed CollectionDetailsForm enum select issues
- Fixed entity creation bug
- Fixed URL update for entities with default selected view
- Fixed values not resetting correctly
- Fixed read-only entity views missing tabs
- Fixed camel case related bug
- Demo: Added MultiSelect component demonstration
[3.0.0-beta.12] - 2025-03-13
Section titled “[3.0.0-beta.12] - 2025-03-13”- Full-screen entity views: You can now open entities in a full-screen view. This is useful when you want to
focus on the entity you are editing. You can enable this feature by setting the
openEntityModeprop tofull_screenin the collection view. The default mode continues to beside_panel. There has been a big navigation revamp to accommodate all the new use cases. - Scroll preservation: When you open an entity in a full-screen view, the scroll position of the collection view is preserved.
- Drafts saved locally: Drafts are now saved locally in the browser. This means that if you accidentally close the browser or navigate away, your changes will still be there when you come back.
- URL state preservation: The state of filters and sorting is now preserved in the URL.
- Undo/redo functionality: Added ability to undo and redo changes when editing entities.
- Added
alwaysApplyDefaultValuesflag to collections. This flag allows you to enforce the default values when updating entities, not just when creating them. - Secondary forms now preserve their width when in side panel mode. You can create full secondary forms that live in their own tab. Secondary forms are built as custom components and can include any components, including field bindings.
- Added system color mode besides dark and light modes. The button is now a dropdown instead of a toggle.
- Form improvements including fixed initial state reset after save and detached entity form actions.
- Warning when leaving unsaved forms to prevent accidental data loss.
- You can now override default entity actions by providing an action with one of the keys
edit,copyordeletein theentityActionsprop. - Fix: String properties with storage now take preference in previews.
- Fix for URL encoding for collections.
- Fixed dialog actions scrolling when they shouldn’t.
- Fix for navigating to new entities from side panel.
[3.0.0-beta.11] - 2024-12-13
Section titled “[3.0.0-beta.11] - 2024-12-13”- New Next.js template for FireCMS PRO. You can now create a new project with the PRO template using the CLI.
- [BREAKING] Removed
userRolesfrom AuthController. You can now access therolesprop in the user object directly - [BREAKING] Many FireCMS UI sizes have been adjusted for better consistency. This will affect you only if you are using
custom components.
smallestortinyhave been renamed tosmall.smallhas been renamed tomedium.mediumhas been renamed tolarge.
- [BREAKING] For self-hosted versions, there has been a change in the API for the data management controllers. The
authControlleris now passed to the User Management controller, instead of the other way around. TheuserManagementControllercan be used as an auth controller, but with all the added logic for user management.
❌ Code before:
/** * Controller in charge of user management */const userManagement = useBuildUserManagement({ dataSourceDelegate: firestoreDelegate });
/** * Controller for managing authentication */const authController: FirebaseAuthController = useFirebaseAuthController({ firebaseApp, signInOptions, loading: userManagement.loading, defineRolesFor: userManagement.defineRolesFor});✅ Code after:
/** * Controller for managing authentication */const authController: FirebaseAuthController = useFirebaseAuthController({ firebaseApp, signInOptions });
/** * Controller in charge of user management */const userManagement = useBuildUserManagement({ dataSourceDelegate: firestoreDelegate, authController});- Added many “use client” directives to UI components.
- Fixed issues in collection editor code dialog.
- Updated web styles and integrated improvements in Docusaurus.
- Enhanced styling for empty references and minor design tweaks.
- Continued work in progress on Editor custom components.
- Reintroduced dark primary color variant for better theme options.
- Minor web updates for improved aesthetics and functionality.
- Fixed a bug where the Editor was not saving false values.
- Replaced all instances of gray and slate colors with more unified
surfaceandsurface-accentcolors for UI consistency. - Added Avatar component fallback and integrated ESLint configuration into templates.
- Enhanced error handling in forms and improved cloud error messages.
- Refactored user management logic for better code organization.
- Improved the handling of boolean switch properties in configurations.
- Introduced state management for children in ArrayContainer.
- Added a recipe for slug creation, improving URL handling and SEO.
- Fixed crash issues in repeat fields for subproperties and addressed various minor styling and functionality bugs.
- Made improvements to heatmap responsiveness (HMR fixes).
- Refactored text search functionalities for better efficiency and added relevant documentation.
- Fixed issues with number input fields blocking scroll and replaced date picker with native HTML date input for consistency.
- If you are using the
Selectcomponent, you don’t need to provide arenderValuefunction anymore. The component will handle it automatically. - Custom preview properties are now rendered if the value is undefined.
- Fixed for Cloud version refreshing navigation too often.
- Fix for local search not working when returning to a collection.
- Fix for bug when selecting a read only entity.
- Fixed selection bug in collection groups for entities sharing id.
- Reference previews now take into account arrays of images for the preview image.
[3.0.0-beta.10] - 2024-07-10
Section titled “[3.0.0-beta.10] - 2024-07-10”- Fixed issues with wrong licenses.
- Resolved TipTap dependencies.
- Addressed various minor styling updates across the web.
- Moved body CSS from default imports to individual files for better modularity.
- Implemented several web updates, including select style fixes and dialog title adjustments for text search.
- Updated the collection editor property select view and improved widget selection layout.
- Applied AppBar tweaks to enhance behavior on mobile devices.
- Improved console outputs and cleaned up miscellaneous code segments.
- Enhanced UI with the addition of a Slider component and updated related documentation.
- Replaced entity edit icon with a pencil for clarity.
- Updated dependencies and refined project management with a license check feature.
- Improved Formex handling of number inputs and fixed DateTimeField export in Next.js.
- Added API key generation and project selection capabilities.
- Introduced a past-due warning message and improvements in collection and subcollection data handling.
- Provided better error handling and layout consistency in the application.
[3.0.0-beta.9] - 2024-07-10
Section titled “[3.0.0-beta.9] - 2024-07-10”- NEW MARKDOWN EDITOR: The markdown editor has been completely revamped. It now supports a live preview, and a much
improved editing experience. It now includes a slash menu you can access by typing
/in the editor. Also a new toolbar with buttons for common markdown operations. The new editor also includes an AI auto-complete feature, that suggests markdown elements as you type, and displays the generated markdown in real time, and highlighted. - Additional fields are also now displayed in the entity side dialog.
- Import/export is now broken into 2 separate plugins.
- Packages now are not minified, leaving that responsibility to the client bundler.
- Added max size field in the collection editor for files.
- Improved error handling of wrong file uploads.
- Improving error when opening a non accessible entity in the side view.
- Select component tweaks and removed
multipleprop. - New
MultiSelectcomponent with a much improved UX. - Introduced AppCheck directly in FireCMS Cloud.
- Added MongoDB support for FireCMS PRO.
- Multiple fixes in the user management plugin for PRO projects.
- Updated react-router dependencies.
- Improved customization, you can now define the styles for each typography entry, including font size, typography…
- Improved home page search, now using fuse.js
- Fix for missing index and wrong keys in array of maps with property builder.
- Fix for drag handle position in editor.
- Renamed
partOfBlocktominimalistViewin field props. - It is now possible to define preview properties at the collection level.
- Updated references styling.
- Tooltips have been revamped to use less divs.
- Fix for data enhancement plugin position.
- Fix for how you can override the data source for specific collections.
- You can now also define a different database other than
(default)in the data source. - User Management plugin now saves users with the email as key, instead of a random value.
- Fix for side panels adjusting to the right size when window changes size.
- Some drawer styling updates.
RepeatFieldBindingcan now use unresolved array properties.
[3.0.0-beta.8] - 2024-07-10
Section titled “[3.0.0-beta.8] - 2024-07-10”- Fix for excessive re-renders in the form view.
- You can now use
PropertyFieldBindingcomponents in your custom entity views, and they will be treated as regular fields. - For additional entity views, you can now preserve the bottom actions bar, with the prop
includeActions. - For map properties, if they are not required, the value might me
undefined, but if a child property has a value, validation will be triggered for all children. - Fix for data maps not getting traversed correctly with null value.
- CLI pro template now supports creating web app config.
- Fix for collection editor data inference for enums.
- Small Sheet styling improvement.
- Fixed local search loading issue with cached data.
- Small visual fix for IDs.
- AppCheck updates.
- Fixed inconsistent opening of reference preview side dialogs.
- Fixed icons for image previews.
- Navigating to home URL when logging out.
- Added
previewUrlprop in storage options (#639). - Fixed XLSX security issue CVE-2024-22363 (#654).
- Fix for the removal of keys in KeyValue fields.
- Added large size for boolean switches.
- Updated eslint to the latest version and config.
- Types fix for
removePropsIfExisting. - Fix for video drag bug in array fields.
- Added option to ask for password reset, in PRO login view
- Allowing null default values for properties.
- Added count to array field bindings.
- Fixed default values in nested maps in arrays.
- Resolving entity collection path with the one coming from the entity, not the view config.
- Small fix for logo image.
- Fixed conditional fields not updating correctly.
- Hide new user button if
disabledSignupScreen. - Improved docs navigation bar styling.
- Allowing maps to be completely undefined.
- Disabled add button in collection groups.
- Big entity refactor, custom views are now under the formex provider.
- CLI fix for not logged in users.
- Fix for datamaps not getting traversed correctly with null values.
- Scaffold prop updates.
[3.0.0-beta.7] - 2024-06-18
Section titled “[3.0.0-beta.7] - 2024-06-18”- Renamed the
cnutility class tocls, while keepingcnavailable with a deprecation warning. - Added Menubar documentation and missing skeleton docs.
- Corrected properties order type to allow subcollections.
- New UI section added to the landing page.
- Improved saving and closing dialog flow.
- Allow hiding IDs and entity links in references and previews.
- Removed some CSS transitions.
- Allow hiding the color mode toggle.
- Added JSON view example.
- Changed virtual table to use size in pixels.
- Some design updates for better user experience.
- Added back collection group column with parent IDs.
- Improved empty results output.
- Added sample prompts and suggestions for DataTalk.
- Enhanced side entity view, dynamically calculated based on collection property depth.
- Fixed mergeDeep types.
- Fixed issue with exporting non-existing properties defined in
propertiesOrder. - Fixed PRO template issues without Cloud projects.
- Improved handling for enum values with value 0.
[3.0.0-beta.6] - 2024-04-23
Section titled “[3.0.0-beta.6] - 2024-04-23”- Added AppCheck to every FireCMS variant.
- Various fixes for datasource delegate.
- Fix in saving cleaned data.
- Cloud new user roles creation issue fixed.
- Error message display issue in table cells fixed.
- Subcollections updating issue fixed.
- Import/export analytics and related data mapping conversions updated.
- Updated and improved handling of user roles and permissions.
- Enhanced the handling of service account files and project creation using SA.
- Updated the behavior of unindexed queries.
- User management connection to demo removed.
- Dependency updates to mitigate security issues.
- Exposing additional methods from data inference for better customization.
- Pro template updates for improved UI/UX.
- Updated documentation for collections and user management.
[3.0.0-beta.5] - 2024-04-01
Section titled “[3.0.0-beta.5] - 2024-04-01”- [BREAKING] The main component for FireCMS Cloud has been renamed from
FireCMSApptoFireCMSCloudApp. Please update your imports accordingly. - Fixes related to the CLI. You can now install the CLI globally with
npm install -g @firecms/cli.
[3.0.0-beta.4] - 2024-03-27
Section titled “[3.0.0-beta.4] - 2024-03-27”- [BREAKING] The package name for FireCMS Cloud has changed from
firecmsto@firecms/cloud. This is done to avoid conflicts with the main FireCMS package. If you are using FireCMS Cloud, you will need to update your imports. - [BREAKING] If you are importing the tailwind configuration, you can now find the import at:
import fireCMSConfig from "@firecms/ui/tailwind.config.js"; - [BREAKING] In that case, you also need to add
@tailwindcss/typographyto your dev dependencies. - [BREAKING] You need to update your
vite.config.jsand replace the package name in the federated configuration:import { defineConfig } from "vite"import react from "@vitejs/plugin-react"import federation from "@originjs/vite-plugin-federation"// https://vitejs.dev/config/export default defineConfig({esbuild: {logOverride: { "this-is-undefined-in-esm": "silent" }},plugins: [react(),federation({name: "remote_app",filename: "remoteEntry.js",exposes: {"./config": "./src/index"},shared: ["react", "react-dom", "@firecms/cloud", "@firecms/core", "@firecms/firebase", "@firecms/ui"]})],build: {modulePreload: false,target: "ESNEXT",cssCodeSplit: false,}}) - Minor performance improvements and bug fixes.
- Enhanced filtering and sorting capability for indexed fields.
- Extended StorageSource to support custom
bucketUrl. - Cleanup for navigation controller generics and Markdown prose classes.
- Addressed User Management saving issues and renamed Cloud template.
- Fixed ReferenceWidget.tsx rerenders.
- Fixed homepage new collection button issue.
- Fixed CLI templates path.
- Roles integrated into AuthController.
- Small change to plugins API.
- Added user details to navigation bar dropdown.
- Dependencies updated.
- Entity view preview and title refactor.
- Kanban board work in progress.
- Fix for new radix empty select values.
- Fixes for undefined properties in arrays and editor.
- Additional parameters added in auth controllers.
- Navigation cards refactor and Plugin API cleanup.
- Fix for importing data with non-string IDs.
- Documentation: Added recipe for managing entity callbacks.
- Web updates and CLI fix for yarn.
[3.0.0-beta.3] - 2024-02-21
Section titled “[3.0.0-beta.3] - 2024-02-21”- Fix for importing data in subcollections.
- Code reordering.
- Removed minification. Changed EntityReference type checks.
- Editor image upload updates.
- Cosmetic.
- Moved tailwind.config.js editor plugin.
- Removed callbacks in side navigation views, prevents bug.
- PRO template fix.
- PRO Login view cleanup.
[3.0.0-beta.2] - 2024-02-21
Section titled “[3.0.0-beta.2] - 2024-02-21”- Added Formex package to handle forms across the platform. Formex is an in-house form management library with a similar API to Formik, but with better performance, and much more lightweight.
- Enhanced onboarding process for new users.
- Fixed data import issues for new collections.
- Tweaked SaaS onboarding for better user experience.
- Implemented regexp validation for input fields.
- Improved login error feedback.
- Extracted navigation controller for better manageability.
- Updated styles for consistency.
- Updated Vite and dependencies for performance and security.
- Refactored user and role forms to use Formex.
- Fixed table header forms and collection editor issues.
- Addressed incorrect JSON import problems.
- Removed Formik, enhancing form management with Formex.
- Made minor HTML nesting and debounce fixes.
- Fixed array container menu and multiline input bugs.
- Migrated Tailwind configuration to lib for easier management.
- Adjusted Sentry configuration for error reporting.
- Fix for subcollections edit view showing empty.
- Fixes for block and group properties in editor saving multiple entries when editing an existing sub property.
[3.0.0-beta.1] - 2024-02-01
Section titled “[3.0.0-beta.1] - 2024-02-01”The first beta release of FireCMS v3.0.0. Check all the new features and improvements in the documentation and the migration guide.
[2.2.0] - 2023-11-09
Section titled “[2.2.0] - 2023-11-09”- Fix for missing subcollection links.
- New email and password login flow
- Removed add button in collection group
- Export fixes
- Fix for collections search
[2.1.0] - 2023-09-12
Section titled “[2.1.0] - 2023-09-12”- [BREAKING] The logic to verify valid filter combinations has been moved to the
DataSourceinterface. This improves the ability to customize the data source and allows for more complex filters. This change will only affect you if you have implemented a custom data source. You will need to add aisFilterCombinationValidmethod to your data source. - [BREAKING] The prop
filterCombinationshas been removed from theEntityCollectioncomponent. This is now handled by the data source. If you need to allow multiple filters, you can use the newFireStoreIndexesBuildercallback. Check the documentation for more information. - You can now use nested
spreadChildrenin map properties, allowing to show arbitrary nested structures as single columns in the collection view. - The collection count value is now updated with filters applied.
- Fix for csv export not working when underlying data is invalid.
- Fix for bug of collection search returning a single result.
- Fix for reference fields breaking with incorrect values.
[2.0.5] - 2023-07-11
Section titled “[2.0.5] - 2023-07-11”- Default value for string properties is now
nullinstead of"". - Fix for changing text search controller not updating as a dependency.
- Fix for setting a unique field using a reference, which was generating an invalid query in Firestore.
[2.0.4] - 2023-06-15
Section titled “[2.0.4] - 2023-06-15”- Fix for
forceFilternot being applied correctly in reference views. - Fix for nullable enum validation config.
[2.0.3] - 2023-06-15
Section titled “[2.0.3] - 2023-06-15”- Fix for form resetting values when saving.
[2.0.2] - 2023-06-14
Section titled “[2.0.2] - 2023-06-14”- Replaced
flexsearchwithjs-search. Their imports are too messed up. - Fix for form assigning wrong ids
[2.0.1] - 2023-06-12
Section titled “[2.0.1] - 2023-06-12”- Fix for block entries not generating the correct default value when adding a new entry. This was causing a bug when the child property is an array, like in the blog example.
- Added the
formAutoSaveto collections. This removes the buttons from the form and automatically saves the entity when there are changes or the user leaves the form. - You can now access the
formContextfrom collection views, allowing you to access the current entity being edited, modify values andsave.
[2.0.0] - 2023-06-07
Section titled “[2.0.0] - 2023-06-07”- You can use a callback to define the default view of an entity now.
- Fix when opening entities from a custom view, that also uses subcollections.
[2.0.0-rc.2] - 2023-06-05
Section titled “[2.0.0-rc.2] - 2023-06-05”@mui/x-date-pickersdependency reverted to^5.0.0- Assigned default values to every property now, based on the property type.
e.g. boolean properties will have a default value of
false, maps to{}, and most other properties tonull. - Removed empty space for hidden properties in the entity side dialog.
[2.0.0-rc.1] - 2023-05-31
Section titled “[2.0.0-rc.1] - 2023-05-31”- Added arbitrary key-value fields with the prop
keyValuein map properties @mui/x-date-pickersdependency updated (you may need to bump your version to 6.5.0)- Some enhancements to the
EntityCollectionTablecomponent, referring to values being updated in the background. Also correct debouncing for table fields.
[2.0.0-beta.7] - 2023-05-23
Section titled “[2.0.0-beta.7] - 2023-05-23”- Added support for collection groups
- [BREAKING] The
countEntitiesfunction in the data source now takes an object instead of a string as parameter. This will only affect you if you have built a custom component using that function. - Added string url previews to fields
- Fix for geopoints not being serialized correctly when saving.
[2.0.0-beta.6] - 2023-05-11
Section titled “[2.0.0-beta.6] - 2023-05-11”- Fix for Typescript types not being exported correctly and giving errors when using the library with the quickstart.
- Fix for error messages not showing up correctly in new text inputs.
- Fix for flexsearch import causing crash using webpack
[2.0.0-beta.5] - 2023-04-28
Section titled “[2.0.0-beta.5] - 2023-04-28”- Updated fields Look and Feel. Text fields are now custom, not the ones provided by Material UI. This allows for more customization, less code, and better performance.
- Fixed login view not centered
- Fixed popup field selection and drag and drop bug
- Fix for skip login field
- HTML now rendered correctly in markdown previews
- Fix for
readpermission not being applied correctly. - Fix for not centered empty view state in collections
[2.0.0-beta.4] - 2023-03-30
Section titled “[2.0.0-beta.4] - 2023-03-30”- Fixed table header bug
- Added search bar in home page
- Added favourites and recent collections view in home page.
- Fix for some deeply nested property builders in arrays
- Added
autoOpenDrawerprop, allowing to open the drawer automatically when hovering the menu. - Allow choosing which custom view or subcollection is opened by default,
with the
defaultSelectedViewprop. Thanks to @SeeringPhil for the PR! - Renamed
buildertoBuilderin collection custom views for consistency.
[2.0.0-beta.3] - 2023-03-21
Section titled “[2.0.0-beta.3] - 2023-03-21”- Fixed bug regarding custom selection controllers.
- Fix for default value not being set in array properties.
- Enabled Firebase App Check. Thanks to @sengerts for the PR!
- Added copy function to array views. Thanks to @guustmc for the PR!
- The entity side dialog is now wider by default.
- Small improvements to block properties. Now the first type is selected by default.
- Fixed additional ordering added when multiple filter applied, which created a bug. Thanks to @juanleondev for the PR!
- Renamed
ReferenceSelectionViewtoReferenceSelectionInner - Added reference filters
- Fixed delay of table update when deleting an entity
- You can now change the value of any property within a custom field.
[2.0.0-beta.2] - 2023-01-30
Section titled “[2.0.0-beta.2] - 2023-01-30”- Fixed bug where collection actions were getting their internal state reset.
- Improved preview of files that are not images, videos, or audio files.
- Form optimizations
- Fix for reference dialog not clearing selection
- Fix for multiple error snackbar, when there is an error uploading a file.
- Fix for missing highlight when closing side dialog.
- Fix for delayed data update when changing filters.
- Internal refactoring of the
EntityCollectionTablecomponent. - [BREAKING] In the component
EntityCollectionTable, the propActionsBuilderhas been replaced withactions.
[2.0.0-beta.1] - 2023-01-18
Section titled “[2.0.0-beta.1] - 2023-01-18”This is the first beta release of FireCMS v2.0.0. While still in beta, we consider this version stable enough to be used in production.
All changes related to V2 alpha are currently bundled in these documents:
The changelog for 1.0.0 versions and previous versions can be found here
