Changelog β
All notable changes to FalconCMS are documented here.
Format follows Keep a Changelog β versions are sorted newest first.
v2.3.0 Latest β
Released: 2026-08-05
Added β
- Content Box element β a repeater element with eight layouts: Classic Icon With Title, Classic Icon On Top, Classic Icon On Side, Classic Icon Boxed, Clean Layout Vertical, Clean Layout Horizontal, Timeline Vertical and Timeline Horizontal. Each box carries its own icon (or image), title, rich content, background and Read More link; the element adds column count, alignment, link type (text or button), link area (the Read More link or the whole box), and full typography, box and timeline-rail styling. Layouts collapse to two columns on tablet and one on mobile.
- Four more icon libraries β Bootstrap Icons, Remix Icon, Boxicons and Lucide join Font Awesome, taking the picker from 2,060 to 10,115 icons. They cost nothing until used: the builder fetches a library's icon list and stylesheet only when its tab is opened, and a page loads a library's stylesheet only when that page actually contains one of its icons.
- Font Awesome icons are findable by their older names. Font Awesome keeps every previous name working as an alias of the current one, but the picker only listed current names β so searching "ambulance", "trash-alt" or "shopping-cart" found nothing even though the icon was right there. 1,102 alias names are now searchable, read from the shipped stylesheet.
- Taxonomy dynamic sources. A new Taxonomy text source prints a post's terms β pick a post type, then one of its taxonomies, with separator, term limit and fallback β and a matching Taxonomy URL link source points an element at the term's archive. The post type and taxonomy must both match, so one template can be reused across post types safely.
- Icon Box β Read More typography. The Read More link now has its own font family, size, weight, line height, letter spacing, transform, colour, hover colour, arrow toggle, and controls for its distance from the description and the gap before its arrow.
Fixed β
- Every font picker in the builder is searchable. Icon Box, Accordion, Tabs, Ticker, Post Meta and every ACPT custom field still used a plain dropdown of ~1,700 fonts; they now use the same searchable picker as the Title element.
- Front-end now loads every font the builder can choose. Font collection ran off a hard-coded list of setting keys, so fonts picked for Read More, sub/mobile menus, Post Meta and custom fields were never loaded and silently fell back to the theme font. Detection is now by key name and walks nested layouts, header/footer sections are included, the full 100β900 weight range is requested (Thin and Extra Light used to be missing), and families the bundled catalog doesn't know are dropped β one unknown family made Google reject the whole request, which had been taking every font on the page down with it.
- Post Meta no longer 500s a page. Placed directly on a page or post, the element hit an undefined
$postand Blade's error handling reported it as "Cannot end a section without first starting one", which pointed nowhere near the cause. - Hover colours are visible in the builder again. Icon Box's Read More hover colour and Breadcrumb's link hover colour rendered on the front-end but looked dead in the canvas, since an inline style can't express
:hover. - Element panels always open on their first tab. After working in one element's Design tab, the next element you opened β a duplicate most visibly β also opened on Design.
- The icon picker's search box no longer carries over. A query typed for one element used to filter the icon grid of the next element you opened.
- Boxes with a background or border get room inside them. Content Box items whose padding was never set sat flush against their own border, with the icon and Read More link crossing it.
v2.2.7 β
Released: 2026-08-04
Fixed β
- Pro builder options no longer show as locked on a licensed site. The builder's Pro-edit flag was set only by the page/section builder screen, so the Post Card builder and Mega Menu builder β which share the same builder scripts β read it as missing and locked every Pro element (accordion, tabs, counter, gallery, ticker, breadcrumb, star rating, HTML, card, icon box, icon list, menu, advanced search), dynamic content and global sections even with a valid license. The flag now lives in the shared builder partial, so every builder screen answers from the license.
- Card element now fills its column on the front-end. A column's inner box is a column-direction flex container whose default content alignment is
flex-start, so the card element was sized to fit-content: the cards collapsed to their text width and the row left dead space on the right β while the builder canvas (which wraps the same markup in a full-width div) looked correct. The card element now stretches to the column like every other layout block, for grid, list, masonry and carousel alike.
v2.2.6 β
Released: 2026-08-01
Changed β
- Pro is a one-time, perpetual license. Paid Pro features never expire β a purchase is owned forever. A license's expiry now only limits updates: when the update window ends, the site keeps every Pro feature and simply needs a renewal to pull newer Pro releases. Refunded/disabled licenses still revoke access. The free core (including e-commerce) stays free for everyone, always β licensing never touches it.
- The License and Updates pages now show "Update window ended β features stay active, renew for updates" instead of looking locked out, and the Pro update button is gated by the update window rather than by raw license validity.
v2.2.5 β
Released: 2026-07-31
Added β
- Icon Box β Read More link. A Read More / Learn More link can now be shown under the description (text + URL), rendered only when set.
- Icon Box β Link Mode. Choose what the link applies to: Full Box, Only Icon, or Only Title. Defaults to Full Box, so existing icon boxes are unchanged.
Fixed β
- Counter animation no longer disappears. The count-up script is now emitted with every Counter and self-dedupes in JavaScript, instead of being gated by a render-once guard that a hidden/earlier render pass (Layout Builder sections, meta/excerpt, nested renders) could consume β which stripped the script from the visible page and left the number static.
- Pro update stops cleanly on read-only vendor files. The Pro updater's pre-flight check now also verifies
vendor/falconcms/prois writable, so a containerised install with a root-owned vendor tree aborts up front (with the exactchownfix) instead of letting Composer half-modifycomposer.jsonmid-update.
v2.2.4 β
Released: 2026-07-31
Fixed β
- Boot-seeder no longer crashes when a storefront page was trashed. The default-content seeder now matches on the full unique key (slug + type + language) and ignores global scopes, so a soft-deleted Shop/Cart/Checkout/Account/Blog page is found (and restored) instead of re-inserted. Previously a trashed shop page made the seeder hit a duplicate-slug constraint on boot β on containerised installs this could crash-loop the app container (502 Bad Gateway). Each create is now wrapped so the seed can never fail the boot.
v2.2.3 β
Released: 2026-07-31
Added β
- All Google Fonts everywhere. Typography pickers now list the full Google Fonts catalogue (~1,900 families, grouped by category) instead of a short hand-picked set β in the Customizer and in every Falcon Builder element. Each font shows its own real weights, and fonts load on demand.
- Searchable font picker in the Builder. The element font-family control is now a searchable dropdown (like the Customizer), so you can type to find any font.
- One shared font source. A single
falcon_google_fonts()catalog feeds every typography UI β add a font once and it appears everywhere, no per-place lists to sync. - Title element supports inline HTML. Markup typed into a Title (e.g.
<b>,<span style>,<br>) now renders on the canvas and the front-end instead of showing as text.
Changed β
- Customizer URL simplified β
/admin/appearance/customizeris now/admin/customizer.
Fixed β
- E-commerce is part of the free core (carried from v2.2) β no Pro licence required.
v2.2.2 β
Released: 2026-07-31
Fixed β
- Update no longer reports "completed with errors" when the shop pages already exist.
falcon:update's e-commerce page creation now matches on the full unique key (slug + type + language) and ignores language scopes, so existing Shop/Cart/Checkout/ Account pages are found instead of re-inserted (which hit a duplicate-slug constraint).
v2.2.1 β
Released: 2026-07-31
Added β
- In-dashboard Pro updates. Dashboard β Updates now shows a FalconCMS Pro card alongside the core one: it detects a newer Pro release (via a public version manifest, since Pro is a private package), flags it with a NEW badge in the sidebar, and offers a one-click Update Pro Now button. The update is licence-gated β a valid, in-date subscription is required; an expired licence is prompted to renew instead of updating. On success, Pro's boot-time sync delivers any newly-bundled code and plugins (e.g. Falcon Slider) automatically.
v2.2 β
Released: 2026-07-30
Changed β
- E-commerce is now part of the free core. The complete shop system β products, variants, cart, checkout, orders, coupons, reviews and wishlist β no longer requires a Pro license. It works on every FalconCMS site, free forever. (Multi-language, analytics, the advanced builder, custom fields and Falcon Slider remain Pro.)
Added β
Falcon Slider β a new Pro plugin: a layer-based, Slider-Revolution-class slider builder. Design slides on a full-screen visual canvas with:
- Layers β text (with SEO
h1βh6tags), image, button, shape, icon, video (self-hosted / YouTube / Vimeo), audio, live countdown, and raw HTML/embed. - Per-layer timeline animation β 15 entrance/exit presets, text reveals (typewriter / split chars / split words), idle loops (float / bob / pulse / sway / spin), and per-layer delay Β· duration Β· easing.
- Backgrounds β colour, gradient, image, background video, colour & gradient overlays, Ken Burns and mouse parallax.
- Responsive β position, size, font-size and visibility per device (desktop / tablet / mobile), plus layer groups and global (every-slide) layers.
- Navigation β arrows, bullets, progress bar, thumbnails, autoplay, loop and pause-on-hover; auto / full-width / full-screen sizing.
- Productivity β pre-built template gallery, save-as-template, duplicate, import / export, version history (auto-snapshot on every save, 20 kept), full-screen live preview of unsaved changes, and whole-slide links.
- Performance β LCP background preload, layout-shift-free reservation, lazy media, and subset font/icon loading for Core Web Vitals.
- Embed with the
[falcon_slider id="β¦"]shortcode or the Falcon Slider Falcon Builder element. Governed by themanage_sliderspermission.
See the Falcon Slider documentation.
- Layers β text (with SEO
v2.0 β
Released: 2026-07-14 Β· current release v2.1.0
FalconCMS is now open-core. The core stays free and MIT-licensed; a new Pro edition unlocks the commercial features (e-commerce, multi-language, analytics, the advanced page builder, custom fields and advanced login). Existing sites keep working β nothing is taken away β and there is a launch grace window during which every Pro feature stays free. Features a site already used are grandfathered free on that site forever.
Added β
- Pro License page (Falcon Builder β License). Paste your license key to activate Pro, deactivate to release it, or hit Re-check now to re-validate on the spot. Each key is enforced per site (Pro = 1 site, Agency = unlimited).
- One-click Pro install. Paste the access token from your purchase and FalconCMS writes
auth.jsonand installs thefalconcms/propackage for you β no terminal needed. Manual Composer instructions remain as a fallback. - In-app updater (Dashboard β Updates). Check for and install the latest release from the browser, with a backup confirmation and a clear progress dialog.
- Freemium grace β a single fixed cutoff date (not a rolling per-site window), so the transition happens everywhere at once.
Changed β
- The "now freemium / upgrade to Pro" banners (admin and cart) disappear once a site holds a valid Pro license.
- Renamed the internal version constant to
FALCON_CMS_VERSION.
Fixed β
- Reliable updates & version reporting. The updater installs the exact latest release and reports the installed version correctly β no more "update available" immediately after updating.
- Shop product category now shows on the shop listing (some products previously read "Uncategorized"), with the category eager-loaded to avoid N+1 queries.
- Clear license messages β invalid key, activation-limit-reached and expired keys now say exactly what's wrong and how to fix it, instead of a generic notice.
- Updating core ahead of the Pro package no longer causes a fatal error.
Extensibility update. FalconCMS also gains a full plugin system β the functional counterpart to themes β plus a runtime API for adding admin menus, settings pages and settings fields without writing controllers, routes or views, and a security hardening pass on how settings are saved.
Added β Plugins & extensibility APIs β
Plugin system β see Plugins
- Drop-in plugins. A plugin is a folder in
plugins/with aplugin.jsonmanifest and an optionalplugin.phpbootstrap. Free and unrestricted β anyone can write, install and share them. - Plugins admin screen with two sub-pages: Installed Plugins (filter by All / Active / Inactive, search, and Activate / Deactivate / Update / Uninstall from row actions) and Add New (drag-and-drop
.zipupload, or install from a direct URL). - Convention-based loading.
src/is PSR-4 autoloaded,routes/web.phpis registered,resources/views/becomes aslug::namespace, anddatabase/migrations/runs on activation β no ServiceProvider needed (though one can be declared). - Lifecycle hooks β optional
activate(),deactivate(),uninstall()andupgrade($previousVersion)on a class named in the manifest. - Dependencies β declared plugins must be active first, are loaded in dependency order, and can't be deactivated or uninstalled while depended upon.
- Update detection β a newer version on disk than the one activated shows Update available; applying it runs new migrations and records the version.
- Requirement checks on activation for
requires_phpandrequires_cms. - Fatal-safe loading β a plugin that throws while loading is automatically deactivated and logged instead of taking the site down. A plugin that fails to load is never marked active.
- CLI:
plugin:list,plugin:activate,plugin:deactivate, andmake:plugin "Name"to scaffold one. manage_pluginspermission, assignable to any role.
Admin Menu API β see Admin Menu API
falcon_add_menu_page()/falcon_add_submenu_page()register sidebar items at runtime, merged into the DB-driven sidebar so they survivefalcon:update.falcon_add_options_page()renders a complete settings page β fields, saving and all β from an array. Supports a tabbed layout with deep-linkable?tab=.- New
falcon_admin_menuaction for deferred registration.
Settings Fields API β see Settings Fields API
falcon_add_settings_field()injects fields into the existing settings screens β General, SEO, REST API, Integrations and Shop β rendered as native rows and saved by that screen's own Save button.falcon_add_settings_tab()adds a new top-level tab to the Settings nav, with its own page at/admin/settings/{id}.- 18 field types: text, number, email, password, url, textarea, checkbox, select, radio, color, date, range, multiselect (searchable, chip-based), tags, image, file, wysiwyg and repeater.
- Shop fields can target a specific Shop settings tab.
- New
falcon_register_settingsaction, plus form hooks for the REST API, Integrations and Shop screens.
Changed β Plugins & extensibility β
- Plugin routes are registered before the frontend catch-all, so plugin URLs resolve instead of falling through to a 404.
- Themes and plugins now load at the same point in the boot cycle, giving plugins access to every hook a theme has β including register-time filters.
- The dashboard's built-in documentation viewer was removed; the documentation site is the single source of truth.
Security β
- Protected options. Internal keys β
falcon_license_*andfalcon_grandfathered_featuresβ can no longer be written through settings saves, injected fields or options pages. Previously a crafted settings request could overwrite the cached license state and unlock Pro features. - URL scheme validation on
imageandfilefields: onlyhttp,httpsand relative paths are rendered, blocking storedjavascript:payloads. - Identifier sanitisation β field and tab ids are restricted to
AβZ aβz 0β9 _ -before reaching markup or inline scripts.
Fixed β Plugins & extensibility β
- Shop settings nav highlighted two tabs at once (a static class fought the reactive one).
- The Installed Plugins sidebar item no longer stays highlighted while on Add New.
v1.8.3 β
Released: 2026-07-04
A Layout Builder fix: every layout's every section now toggles fully independently.
Fixed β
- Layout sections are now independent per layout. Enabling a section (notably Content) in one layout no longer makes it appear active in the Global Layout too. The Layout Builder was falling back to "the first published section" for any slot the Global Layout hadn't explicitly assigned, which made a section enabled elsewhere show up as active on Global. Each slot of each layout now reflects only its own assignment and on/off state β matching what the frontend renders.
v1.8.2 β
Released: 2026-07-04
A Layout resolution refinement: header, title bar and footer now cascade cleanly from the custom layout down to your defaults, so content is never left without chrome.
Changed β
- Layout slots now cascade: custom layout β Global Layout β theme default. For content matched by a custom layout, if its Header/Title Bar/Footer is toggled off or left unassigned, the slot now inherits the Global Layout's header/footer for that content. If the Global Layout has nothing selected either, the theme's built-in default renders β everywhere (frontend and the builder canvas preview). This supersedes v1.8.1's "disabled slots render nothing": a slot with no active assignment always falls through to the next level rather than showing blank space.
v1.8.1 β
Released: 2026-07-04
A builder-experience & polish release: the page/post builder canvas now previews the real header, page title bar and footer around your content, plus fixes for headings in the classic editor and the admin Customizer menu placement.
Added β
- Live header / title bar / footer preview in the builder β when you design a page, post, CPT or product (not a Layout template), the canvas now shows the actual Header, Page Title Bar and Footer that the applicable Layout assigns to it, rendered through the real theme so it looks like the live page. They're read-only here β hover shows an Edit β¦ Layout Section button that opens that section in the Layout Builder. A slot is previewed only when it's enabled in the layout.
Changed β
- Rich Editor headings β the Paragraph / Heading 1β6 dropdown is back in the classic editor (it was using a removed TinyMCE 5 control name).
- Customizer now lives under Falcon Builder on existing sites too β a migration moves the Customizer menu item out of Appearance and under Falcon Builder (fresh installs already got this); a legacy "Lazy Builder" menu is renamed to Falcon Builder.
- Disabled Layout slots render nothing β when the Layout Builder is in use, a header/title-bar/footer that is toggled off or unassigned no longer falls back to the theme's built-in chrome (on the frontend and in the builder preview).
Fixed β
- Classic-editor headings now use your Customizer heading sizes instead of shrinking to paragraph size (Tailwind's preflight was overriding bare
h1βh6; the page builder was already unaffected). - Hairline gap between the page content and a full-width footer (a 1px sub-pixel seam showing the body background) is gone.
- Fixed an infinite recursion that could return a 500 when a page is rendered as its own content (e.g. the Home page inside its assigned footer).
v1.8.0 β
Released: 2026-07-03
A major builder release: a dedicated Layout Builder for site-wide templates, a new Bread Crumb element, dynamic image backgrounds for containers and columns, and a far more consistent Site Width / Full Width system.
Added β
- Layout Builder β design site-wide Header, Footer, Page Title Bar and Content templates in the Falcon Builder and assign them globally or by condition. Includes an in-card layout picker, a conditions modal (target a custom layout to specific pages, post types or archives), a per-layout enable/disable toggle (AJAX), and Export / Import of layouts.
- Custom 404 page β build your own "Not Found" page in the Layout Builder; the theme renders it automatically.
- Bread Crumb element β a new builder element that outputs the current page's breadcrumb trail (Home β post type / category β current page), with full typography, colour, separator and alignment controls, plus Schema.org
BreadcrumbListstructured data for SEO. - Dynamic image backgrounds β containers, columns and nested columns can now use a dynamic source (Feature Image, Author Avatar or Site Logo) as their Background Image, resolved per-post on the frontend. It layers correctly beneath a Background Gradient, and the builder canvas previews it too.
Changed β
- Consistent Site Width / Full Width β a container set to Site Width now always constrains to your Customizer Site Width (centered), independent of the Customizer's Boxed/Wide layout, and matches the builder canvas exactly. Full Width containers always span edge-to-edge.
- Customizer moved under Falcon Builder β Appearance β Customize now lives in the Falcon Builder menu; the sidebar's "Lazy Builder" was renamed to Falcon Builder with corrected submenu links, and the standalone Header/Footer builder entries were removed (they live in the Layout Builder now).
- Product sorting on the shop and product archives only appears when products actually exist.
- Hardened ACPT import/export β re-imports are idempotent, taxonomy terms keep their
cpt_slug, and post export is more complete.
Fixed β
- The Post Content element set to Full content no longer breaks plain/classic content out to the viewport edge β it now respects its parent container's width (it still full-bleeds when the content is itself a builder layout with self-boxing sections).
- Dynamic backgrounds render inline (no lazy-load dependency) so they paint reliably; the builder canvas shows a neutral "Feature Image" placeholder when editing a template that has no specific post, instead of an unrelated image.
v1.7.4 β
Released: 2026-06-30
A portability & accounts release: import/export for forms and builder-library items, an email-verification toggle, and a much smarter media backup/restore. Now officially runs on Laravel 13 as well.
Added β
- Form import/export β every form can be exported to a portable
.jsonfile (structure + settings) and imported on any FalconCMS site as a new form, straight from the Forms list - Post Card & Mega Menu import/export β builder-library items export to
.jsonand import back as new items (with fresh IDs), so designs move easily between sites - "Require email verification" toggle β Settings β Membership now lets the site owner choose whether new users must verify their email before signing in, or are logged in immediately after registering
Changed β
- Smarter media backup & restore β a media-only backup now bundles the Media Library records too, so restoring brings the library entries back (not just the files); restore also auto-detects and strips a wrapper folder (e.g. when a downloaded backup was unzipped and re-zipped), and preserves the full
Year/Monthfolder structure - Deleting a media item now removes its generated size variants too (e.g.
image-300x200.jpg), matching WordPress β files that are tracked as their own media item are left alone - Honest registration feedback β if the verification email can't be sent, registration now says so plainly instead of falsely claiming a link was sent
- Laravel 13 support β added to the documented requirements (Laravel 10, 11, 12, or 13)
Fixed β
- Media-only restore now places files at their correct paths (including the
media/sub-folder) instead of flattening them
v1.7.3 β
Released: 2026-06-30
A tooling & migration release: a new Export/Import pair, one-click Clone for every content type, a smarter Backup tool, plus several builder, security and migration fixes.
Added β
- Tools β Export β a feature-driven export screen: it lists every registered post type, taxonomy and the media library automatically (so future exportable features appear on their own) and downloads a WordPress-compatible
.xml(WXR) file. Pick All content or a single source - Tools β Import β the counterpart to Export: upload an export
.xmland it restores posts, pages, custom post types and taxonomy terms (also accepts standard WordPress WXR files) - Clone for posts, pages, products & CPTs β every list row now has a Clone action (next to View) that duplicates the item β and its taxonomies, custom fields and (for products) shop data, variations & downloads β into a fresh draft
- Duplicate menu β the menu editor gains a Duplicate Menu action that copies a navigation menu with its full item hierarchy (the copy is never auto-assigned as header/footer)
Changed β
- Backup tool reworked β one Create Backup button with three choices: Only Database, Only Media, or Database + Media (a single archive carrying both). Restore is now content-aware β it detects from the file itself whether to restore the database, the media, or both, so a whole site can be moved to another install with one file. Uploaded backups are detected the same way
- Live gallery hover effect on the canvas β the Gallery element's Zoom hover now previews in the builder, matching the front end
- Column / nested-column hover effects now work on the front end β Zoom / Lift / Glow / Fade hover types rendered only in the builder before; they now render on the published page too
- Buttons without a link render cleanly β a Button with an empty Link URL no longer outputs an empty
<a>tag or a pointer cursor; any value (including#) makes it a real link again - Clearer import results β re-importing items that already exist now reports them as skipped (including taxonomy terms) with an explanatory note, instead of showing all zeros
Fixed β
- Stored-XSS hardening β classic (non-builder) post/page content is now sanitised on output (scripts,
on*handlers andjavascript:URLs are stripped), closing a gap that affected imported HTML content - Menu save error β saving a menu no longer fails with Unknown column
mega_menu_id; the relevant migration now runs, and several migrations were made idempotent (guarded withhasTable/hasColumn) sophp artisan migrateruns cleanly on fresh, partially-migrated or already-migrated installs β without any data loss - Menu selector β choosing a menu from the dropdown no longer auto-opens it; the Select button is the trigger
- Nested-row layout consistency on the builder canvas
v1.7.2 β
Released: 2026-06-27
A builder polish & tooling release: every Font Awesome free icon in the icon pickers, a media-files backup option, plus several nested-layout and colour-picker fixes that make the builder canvas match the front end.
Added β
- Media files backup β Tools β Backup now has a Backup Media Files button that zips everything under
storage/app/public(uploads, generated images, etc.) into a downloadable archive, and restores media archives back into place. Database snapshots are unchanged - Every Font Awesome free icon in the builder β the icon pickers (Icon Box, Button icon, Icon List and custom icon fields) now list the full Font Awesome 6 free set β 2,060 icons across Solid, Regular and Brands (up from a few hundred). A search box reaches any icon, with the grid capped for snappy scrolling
Changed β
- Icon Box font size accepts any CSS unit β the Title and Description Font Size fields lost their
px/remdropdown and now take a free-form value (px,rem,em,%,vw,vh,calc()), matching the Title element - Nested-column Border & Box-Shadow colour pickers unified β they now use the same round-swatch + editable hex design as every other picker, show the opacity-aware
#RRGGBBAAcode, and the colour renders with its opacity on canvas and front end (responsive per-device)
Fixed β
- Nested rows match the front end on the canvas β a nested row no longer shows a permanent whitish box; it renders transparent (like a normal element) and reveals its outline + ROW badge only on hover, with no extra padding gap between the row and its parent
- No more phantom vertical gap inside nested columns β columns with default alignment no longer stretch their inner content to a taller sibling's height in the builder, so spacing inside nested columns now looks exactly like the published page
v1.7.1 β
Released: 2026-06-26
Changed β
- Analytics "Page" column shows the site domain for homepage visits β homepage hits (including bots that reach the site by raw IP) now display the configured site domain (e.g.
demo.example.com) instead of a bare/. Other pages still show their request path
v1.7.0 β
Released: 2026-06-26
A builder & design-tooling release: one unified colour picker everywhere, responsive background hover colours, full CSS-unit support for font sizes, plus several builder and analytics fixes.
Added β
- Background Hover Color for Containers, Columns & Nested Columns β a new responsive hover colour (separate desktop / tablet / mobile values). It previews live on hover in the builder canvas and renders as a real
:hoverrule (with media queries) on the front end - Custom Text Color for Buttons β when Button Style β Custom is selected, a dedicated text-colour picker sits with the gradient colours; the default style keeps its own text colour
Changed β
- One unified colour picker across the whole CMS β the main builder, the mega-menu & post-card builders, the Theme Customizer and the Form builder now share a single clean picker: a round swatch, an editable hex field, and a compact popup (saturation square + hue + alpha sliders) with the alpha bar tinted to the current colour. The Form-builder picker also gained an opacity slider
- Opacity-aware colour fields β fields that store opacity separately now show the full 8-digit
#RRGGBBAAcode, and the alpha slider opens at the correct position - CSS units for every font size β all typography / font-size inputs across builder elements (and inside header / footer / nested layouts) now accept
px,rem,em,%,vw,vhandcalc(). Values apply on both the canvas and the front end and survive the shortcode round-trip - Title element typography now mirrors the Text Block (font family, weight, size, line-height, letter-spacing, transform) for a consistent editing experience
Fixed β
- Column / nested-column background colour ignored responsive values β tablet/mobile background colours were rendered with the desktop value on both the canvas and the front end; per-device colours are now honoured
- A per-device colour was discarded when switching device β picking a tablet/mobile colour and then toggling the device preview reverted it; the colour is now committed instead of reverted
- Analytics "Page" column showed the raw server IP β visitors who reached the site directly by IP (bots/scanners) appeared as
https://<ip>; the column now shows a clean request path - Documentation clarifies that MySQL / MariaDB are the only fully supported databases (SQLite is partial and not recommended; PostgreSQL / SQL Server are unsupported)
v1.6.3 β
Released: 2026-06-25
Fixed β
- Reinstalling over an existing database failed with "table already exists" β Running
falcon:install(orfalcon:update) on top of a database that still had some tables β afterfalcon:uninstall-db, or when installing onto an existing Laravel app whoseusers/cache/jobstables remained β mademigratetry to recreate them and abort. The commands now reconcile first: any migration whose created tables already exist is recorded as run, somigrateskips it and only creates what is genuinely missing. This works for both the app's own and the package's migrations, without editing any migration file
v1.6.2 β
Released: 2026-06-24
Fixed β
- Uninstall could leave a broken
Usermodel βfalcon:uninstallremoved theHasCmsPermissionsimport but only stripped a standaloneuse HasCmsPermissions;line. When the trait was declared in a combined list (e.g.use HasFactory, Notifiable, HasCmsPermissions;), the reference was left without its import, crashing the app β and any later reinstall's migrations β with "Trait App\Models\HasCmsPermissions not found". The revert now also removes the trait from a combineduselist (verified valid for leading/middle/trailing positions)
v1.6.1 β
Released: 2026-06-24
Fixed β
- Dashboard showed a stale "Installed Version" β After updating, the dashboard kept showing an old installed version (e.g. v1.4.2) even though the new code was in place. The version check preferred Composer's reported version, which can be a pinned alias (notably on path-repository installs) and lags behind. It now reads the version from the package's
version.jsonfirst (bumped on every release), so the dashboard reflects the version actually installed
v1.6.0 β
Released: 2026-06-24
A consolidation milestone that brings together everything shipped across the 1.5.x line.
Highlights β
- Dashboard β Redesigned e-commerce KPI cards with month-over-month trend deltas; Top Selling Products, Low Stock and Recent Orders widgets; and an interactive Orders by Country world map (zoom, pan and per-country hover). The whole e-commerce section is now gated behind the
access_shoppermission - Analytics β A Visitors by Country world map, a named Traffic Sources breakdown (Google, Facebook, Instagram, YouTube, β¦ Direct, and other sites), and hover tooltips on the real-time active-users sparkline
- Shop β The Conversion Funnel (visitors β product β cart β checkout β orders) now lives on the Shop Overview
- Security & reliability β Internal AJAX fragment endpoints redirect on direct visits instead of leaking raw JSON; reliable geolocation via the shared
falcon_geoip()helper; a richer IP blacklist (location, ISP, first/last seen) - Lifecycle β New
falcon:uninstall(full, leaves the app booting cleanly) andfalcon:uninstall-db(database-only) commands, plus idempotent core migrations so a reinstall always succeeds
For the granular history of these changes, see the 1.5.x entries below.
v1.5.10 β
Released: 2026-06-24
Fixed β
- App crashed after a database reset β The redirect middleware queried
cms_redirectson every request and returned a 500 ("Base table or view not found") once the tables were dropped (e.g. afterfalcon:uninstall-db). It now checks the table exists first and degrades gracefully when it doesn't - Reinstall failed with "table already exists" β Uninstall keeps the shared Laravel tables (
users,sessions,cache,jobs) but clears the migration records, so re-runningfalcon:install/migratetried to recreate them and failed with "Table 'users' already exists". The bundledusers/cache/jobsmigrations are now idempotent (Schema::hasTableguards), so a reinstall succeeds no matter which tables remain
v1.5.9 β
Released: 2026-06-24
Fixed β
- Uninstall left a stale provider cache β
falcon:uninstallremoves the package withcomposer remove --no-scripts, which doesn't regenerate Laravel's package-discovery cache.bootstrap/cache/packages.php/services.phptherefore still referencedFalconCmsServiceProvider, so the app booted with "Class FalconCms\Core\FalconCmsServiceProvider not found". The command now clears those bootstrap caches as its final step. (If you hit this after a manualcomposer remove, deletebootstrap/cache/packages.phpandbootstrap/cache/services.php, then runcomposer dump-autoload.)
v1.5.8 β
Released: 2026-06-24
Fixed β
- Uninstall left a broken
Usermodel β The earlier uninstall dropped tables and files but did not remove theHasCmsPermissionstrait the installer added toApp\Models\User, so aftercomposer removethe app crashed with "Trait FalconCms\Core\Traits\HasCmsPermissions not found". The full uninstall now reverts that automatically
Added β
falcon:uninstallβ full removal (no leftovers) β Reverts the trait/import added toApp\Models\User, drops tables + migration records, removes published files, and runscomposer remove falconcms/falconcmsβ leaving the app booting cleanly. Options:--all(also drop shared Laravel tables),--force,--keep-files,--no-composerfalcon:uninstall-dbβ database-only removal β Drops just the FalconCMS tables (and migration records); the package code, files and User model trait stay in place (e.g. to wipe data and re-migrate). Options:--all,--force
v1.5.7 β
Released: 2026-06-24
Added β
falcon:uninstallcommand β Cleanly removes FalconCMS: drops its database tables, deletes its rows from themigrationstable (so a later reinstall re-runs cleanly), and removes published views, themes and assets. Shared Laravel tables (users,sessions,cache,jobs, β¦) are kept by default to avoid breaking the host app;--alldrops them too for a full wipe. Options:--force(skip the confirmation),--all,--keep-files. Finish withcomposer remove falconcms/falconcms
v1.5.6 β
Released: 2026-06-24
Fixed β
- IP Blacklist β country always "Unknown" β Blocked IPs were geo-resolved with
file_get_contents, which is disabled or blocked on many production hosts, so the country never resolved. A new sharedfalcon_geoip()helper now uses the Laravel HTTP client (with a timeout, cached 30 days); existing "Unknown" rows are backfilled when the blacklist page is viewed
Added β
- IP Blacklist β richer detail β The blacklist table now shows Location (country + city/region), ISP / network, and both First Blocked and Last Attempt times, with an attempts badge. New blocks capture city, region and ISP
Changed β
- Geo lookups unified β Visit tracking and the IP blacklist now share the same cached
falcon_geoip()helper instead of separate, less reliable lookups
v1.5.5 β
Released: 2026-06-24
Security β
- AJAX fragment endpoints no longer expose raw output on direct visit β
GET /cart/fragment(mini-cart) andGET /search/liveare internal AJAX-only endpoints; opening them directly in a browser previously returned their raw JSON. Non-AJAX (direct navigation) requests are now redirected to the cart and search pages respectively, so the raw payloads are never shown. JS-driven calls (which sendX-Requested-With) are unaffected, and only ever returned the visitor's own session data anyway
v1.5.4 β
Released: 2026-06-24
Added β
- Dashboard β Orders by Country map β An interactive world map highlighting the countries orders came from (shaded by volume), with zoom buttons, mouse-wheel zoom, drag-to-pan and per-country hover (country name + order count), plus a top-countries list. Country values are normalized to ISO-2 from mixed order data
- Dashboard β Top Selling Products, Low Stock & Recent Orders β The redundant "Quick Stats" panel is replaced by a best-sellers list (units sold + revenue) and a low-stock alert list; a Recent Orders table now fills the space under the revenue chart
- Analytics β Visitors by Country map β The same interactive world map for geo-located visits
- Analytics β Traffic Sources β A named-source breakdown (Google, Bing, Facebook, Instagram, YouTube, X, LinkedIn, TikTok, β¦ Direct, and any other site by domain) with visit counts, percentages and favicons
- Analytics β Real-time sparkline tooltip β Hovering the real-time active-users bars now shows the visitor count for that minute
Changed β
- Dashboard β E-commerce KPI cards redesigned β Accent strip, soft-tint icon, month-over-month trend delta (β/β %) and a contextual subtext per card
- Dashboard β Shop section permission-gated β The whole e-commerce section (revenue, orders, customer names) now requires the
access_shoppermission (admins bypass), so it is no longer shown to every dashboard-accessing role - Shop β Overview β Conversion Funnel β The conversion funnel (visitors β product β cart β checkout β orders) and conversion rate now live on the Shop Overview, moved from Analytics to keep shop metrics together
v1.5.3 β
Released: 2026-06-23
Fixed β
- Registration β default role ignored β Self-registration now assigns the role configured in Settings β New User Default Role instead of always using subscriber. Selecting a different role (e.g. Editor, Author) now correctly applies it to newly registered users; if the configured role is missing it safely falls back to subscriber
v1.5.2 β
Released: 2026-06-23
Changed β
- Device limit β simpler on/off model β The multi-device setting is now a clear cap. Unchecked = unlimited devices; checked = limit concurrent logins to Max devices allowed. The
-1"unlimited" sentinel has been removed β the field is a plain positive number again (minimum 1), and the checkbox/help text now reflect the inverted meaning
v1.5.1 β
Released: 2026-06-23
Fixed β
- Multi-device login β unlimited (
-1) β Setting Max devices allowed to-1now correctly means unlimited concurrent sessions and never blocks sign-in. Previously the limit check (active sessions β₯ -1) was always true, so logging in from a second device failed with "Login denied: Only one active session is allowed per account." The-1sentinel now applies regardless of the multi-device toggle; normal numeric limits and the single-session default are unchanged
Changed β
- Settings β Max devices allowed β The field now accepts
-1(minimum lowered from1) with a helper note that-1means unlimited devices
v1.5.0 β
Released: 2026-06-22
Fixed β
- Registration β duplicate username β Usernames derived from the email local part are now sanitized and made unique (
john@a.comandjohn@b.comno longer collide βjohn,john1β¦), fixing the duplicate-username error on sign-up - Admin user create/edit β Validation errors are now displayed (a top summary plus per-field messages) instead of a database constraint crash; inputs repopulate on failure, and a success message is shown
- User update redirect β Saving a user now returns to the same edit page with the success notice, instead of jumping to the user list
Added β
- Password strength & match β The admin user create/edit password fields now show a live strength meter and a password-match indicator, matching the registration page
v1.4.9 β
Released: 2026-06-22
Added β
- Analytics β major overhaul β Bot/crawler filtering, geo location (country/city with flags), real-time active users with a 30-minute sparkline and live tables, sessions, bounce rate, new vs returning visitors, traffic channels, e-commerce conversion KPIs and a visitβcartβcheckoutβorder funnel, plus donut charts for channels, returning visitors and top countries
- Analytics β data retention β New
falcon:prune-analyticscommand with a daily schedule and a cron-independent fallback, with a configurable retention window
Fixed β
- Footer logo β The default footer logo now uses the white brand logo (the dark logo was invisible on the dark footer) at a larger size, automatically darkened on light footer backgrounds; a custom uploaded logo is always shown as-is
v1.4.8 β
Released: 2026-06-22
Added β
- Registration β email verification β New sign-ups are no longer logged in immediately; a time-limited (5-minute) signed verification link is emailed instead, and sign-in is blocked until the address is verified. Includes a notice page and a throttled resend flow. A migration marks all existing users as verified so no one is locked out
Fixed β
- Order status emails β Customers are now emailed on every order status change (pending, on-hold, processing, completed, delivered, cancelled, refunded, partially-refunded, failed), not just on delivery β for both single and bulk updates
Changed β
- Product Meta element β Now available only in post-card mode, like Post Meta and Content
v1.4.7 β
Released: 2026-06-21
Added β
- Builder β Product Meta element β A new element that displays a product's price (with sale), SKU, availability, stock quantity and type; each field toggleable, with stacked/inline layout, alignment, labels and full design controls
- Builder β Ticker β Configurable item spacing, a duplicate-item button, and live scrolling in the builder canvas
- Dynamic sources β Product group β Bind any text field to live product data (price, regular/sale price, SKU, stock status, stock quantity); dynamic fields now show a live preview right in the builder using the real value of the post being edited
v1.4.6 β
Released: 2026-06-21
Fixed β
falcon:updateβ stale published view overrides β Update now removes the entire publishedresources/views/vendor/falcon-cmsdirectory, not just theadminsubfolder. A leftover published copy of a namespaced package view (e.g.frontend/builder/column.blade.php) silently shadows the real vendor view, so layout fixes never appear on the site no matter how many caches are cleared. Clearing the whole override namespace guarantees the package's own views are always used
v1.4.5 β
Released: 2026-06-21
Fixed β
- Dashboard Update β stale frontend after update β The dashboard "Update" now resets the php-fpm OPcache from the web request itself. Previously the
falcon:updatesubprocess ran under CLI php, whoseopcache_reset()only clears the CLI OPcache β the php-fpm workers that serve frontend pages kept executing the old compiled Blade views, so builder/layout fixes did not appear on the live site until a manual container restart - Dashboard footer β Default admin footer credit changed to "Theme developed by Falcon CMS"
Changed β
- Taxonomy screens β Removed the non-functional "Screen Options" and "Help" buttons from the top-right of all taxonomy list pages (Categories, Tags, Product Categories, Product Tags, and custom ACPT taxonomy terms)
v1.4.4 β
Released: 2026-06-21
Fixed β
- Dashboard Update β php-fpm binary β The dashboard "Update" button ran
falcon:updatewithPHP_BINARY, which in a web (php-fpm) request points at the php-fpm executable and cannot runartisan(it printed FastCGI usage and aborted, so migrations/cache-clear/OPcache reset never ran). The updater now locates a real CLI php binary, checking absolute paths first since the php-fpm worker often runs with a strippedPATH
v1.4.3 β
Released: 2026-06-21
Fixed β
- Page Builder β Preview mode blank canvas β Toggling the builder's eye-icon Preview no longer blanks the whole canvas. In preview the canvas kept
grid-area: auto, which auto-placed it into the now-hidden sidebar's 0-width grid column; it is now pinned to its namedcanvasarea so the design stays visible
v1.4.2 β
Released: 2026-06-21
Fixed β
- Page Builder β Row content layout β Elements inside a column with Content Layout set to "Row" now stay side-by-side and never wrap to the next line (
flex-wrap: nowrap); previouslyflex-wrap: wrapcaused elements to stack when they did not fit falcon:updateβ OPcache β OPcache is now reset after cache clearing so freshly compiled Blade views are served immediately without requiring a server restart
v1.4.1 β
Released: 2026-06-21
Fixed β
- Multi-device login β
-1value for Max Devices now correctly means unlimited; previouslycount() >= -1was always true, blocking all logins even when unlimited was intended - Page Builder β Nested Column row layout β Elements inside a column with Content Layout set to "Row" now render side-by-side on the frontend; previously
width: 100%on element wrappers caused items to stack vertically despiteflex-direction: row
v1.4.0 β
Released: 2026-06-20
Added β
- Demo mode β Login page β Demo credentials box displayed above login form when
APP_DEMO=true - Demo mode β User management β All fields on user create and user edit pages disabled with warning banner when
APP_DEMO=true - Demo mode β Settings β
register_urlandlogin_urlinputs disabled with warning banner whenAPP_DEMO=true - Docs β Demo page β Live demo request page with lead capture form; credentials sent to visitor's email via EmailJS after form submission
Fixed β
- Footer logo β Default FalconCMS logo always shown in footer column 1; embedded as base64 to remove file dependency;
theme_footer_logo/theme_site_logocleared from DB onfalcon:updateso stale overrides are never applied falcon:updateβ Published admin views deleted on update so vendor views are always served fresh (no stale published copies)
v1.3.18 β
Released: 2026-06-20
Added β
- Customizer β Performance β "Clear All Cache" button for one-click cache clearing from the admin
Fixed β
- Product editor β Added
x-cloakto product data metabox to prevent Alpine.js FOUC on page load falcon:updateβ Admin views automatically re-published during update to keep published copies in sync- Sale end date β
sale_ends_atdatetime input minimum set using client-side local time instead of server UTC - Product archive β
productCategoriesrelation used inarchive-product.blade.php; eager loaded on CPT archive queries to prevent N+1 - Sale end date validation β Removed
after:nowrule causing false rejections in some timezones - PHP_BINARY β Correctly resolved to CLI
phpin web (php-fpm) context - Product categories β Category label display corrected on product cards and single product pages
- Shop β Tab active-state bug fixed;
hold_stockorder cancellation implemented - Page Builder β Fixed offset constants in
parseColumnsFromContent() - Hooks & helpers β Remaining
lazy_class and helper references renamed tofalcon_
v1.0.0 β
Released: 2026-06-15
Initial public release of FalconCMS β a powerful Laravel CMS package with page builder, e-commerce, and a WordPress-like admin dashboard.
Core β
- WordPress-like Admin Dashboard β Sidebar navigation, top bar, role-based permissions, activity logs
- Page Builder (Falcon Builder) β Drag-and-drop visual editor with rows, columns, and element blocks
- Post & Page Management β Custom post types, categories, tags, featured images, SEO fields
- Media Library β Upload, manage, and select images/files across the admin
- User & Role Management β Granular permission system with custom roles
- Multi-language Support β Built-in language management
- Theme System β Installable themes with Customizer support (header, footer, colors, typography)
- Hook Architecture β WordPress-style
add_lazy_action/add_lazy_filterfor extensibility - Custom Options Pages β Register custom settings pages via config
E-Commerce (Shop) β
- Product Management β Simple and variable products, SKU, stock, sale price with scheduled expiry (
sale_ends_at) - Digital / Downloadable Products β Attach files from the media library; secure token-based download links with expiry and download count limits
- Orders β Full order lifecycle (pending β processing β shipped β completed), order notes, status history
- Cart & Checkout β AJAX cart, coupon codes, shipping zones, tax rules
- Payments β Cash on Delivery, Stripe, SSLCommerz integrations
- Customer Account β Order history, downloads tab, address management
- Sales Reports β Revenue by period (daily/weekly/monthly), top products, customer LTV, CSV export
- Shop Settings β Currency, inventory, email notifications, shipping, tax, coupon management
Admin UI β
- URL-aware Settings Tabs β Tab switches update the browser URL via
history.replaceState - Sidebar Collapse β "Collapse Menu" button; icon-only mode persisted in
localStoragewith no flash on navigation - FalconCMS Branding β FCM logo in admin top bar
Security β
- HTTP Security Headers β
X-Content-Type-Options,X-Frame-Options,Referrer-Policy,Permissions-Policy, CSP, HSTS - Rate Limiting β Login, forgot-password, comments, cart operations, file downloads
- CSRF Protection β All state-changing routes protected
- Input Validation β Cart quantities, file uploads, comment length, user enumeration prevention
- Secure Downloads β Token-based file delivery; tokens expire and have per-user download limits
Developer Tools β
- Artisan Commands β
lazy:expire-sales(scheduled sale price cleanup) - REST API β Configurable API key authentication
- Backup & Snapshots β Database and file backup tools
- WordPress Import β Import posts from a WordPress XML export
- Analytics Dashboard β Basic traffic and content stats
- Maintenance Mode β Toggle from Customizer with custom message and countdown timer
