Repository navigation
Releases: Mij-Strebor/atomic-framework-forge-for-elementor
Release list
Atomic Framework Forge for Elementor v1.5.0
Added
- Category/subcategory drag-drop reparenting: nest a category as a subcategory, promote a subcategory back to top-level, or move a subcategory to a different category — unified into the shared ATFRFO.CatMixin so Colors, Fonts, and Numbers all get identical behavior.
- Blocked-nest feedback explains why a refused nest was refused (existing subcategories, name collision, or a protected category like Uncategorized).
- Category headers list subcategory names inline; click anywhere in a header to collapse/expand it.
- Auto-scroll during category/subcategory drag, matching existing variable-row drag behavior.
Changed
- Plain category reorder now moves the DOM node directly instead of a full re-render, preserving scroll position and collapse state.
- Redesigned the drag drop-indicator as a glowing gradient bar with clearance from category edges.
Fixed
- Several category reorder/nest/promote AJAX calls (including a pre-existing bug in the original reorder path) were missing a required parameter and could silently fail to persist.
- Merge Conflicts dialog: fixed a blank "AFF value" column caused by a property-name mismatch; widened the modal and fixed its scrollbar visibility.
- Removed several "ATFRFO" internal-name leaks into user-facing text.
v2.0.0-beta.1 -- Classes management (beta)
Classes management for Elementor V4 Global Classes -- first public beta
This is a beta release for testing on non-production sites. It ships on the
develop branch, separate from the stable 1.4.x line on master. Please
report issues against this tag.
What works
- Sync, read, and organize Elementor V4 Global Classes (full category-block
UI: drag within/between categories, add/rename/duplicate/clear/delete
category, subcategories). - Rename and delete push real changes to Elementor itself, not just an
AFF-local edit. - Read-only class detail card: status, comment, style properties broken down
by Elementor's own style-panel sections (Layout, Spacing, Size, Position,
Typography, Background, Border, Effects) in that order, and real site-wide
usage data (which pages, which element types, how many). - Variable references resolve to their real name (and compound properties
like padding/margin/flex/border-width/border-radius/gap resolve per-field,
not just at the top level). - "Unused" badge on any class that exists in Elementor with zero usage
site-wide.
Explicitly out of scope (not "coming soon")
Creating new classes from AFF, editing style property values from AFF, and a
usage scanner for Variables are all decided not happening in this line --
see docs/AFF-VISION-AND-ROADMAP.md for the reasoning.
Known gaps
box-shadow,filter/backdrop-filter,transform, andtransition
properties still display as raw JSON on the detail card -- these are
list-of-function-call shapes in Elementor's schema, not flat fields, and
need a dedicated renderer.- No automated test suite exists yet; all testing so far has been manual.
Full details in CHANGELOG.md under [2.0.0-beta.1].
v1.4.3
Fixed
- WordPress.org review: icon SVG output was escaped upstream, not at the point of echo.
atfrfo_icon(), the template helper backing 19 icon calls inpage-atfrfo-main.php, returned a string that callers echoed directly. The returned SVG was already run throughwp_kses()insideATFRFO_Admin::get_icon(), but WordPress.org's review requires the escaping call to be the literal expression next toecho-- not two calls upstream -- so every site was flagged despite being genuinely safe.atfrfo_icon()now echoeswp_kses(...)directly (voidreturn); the shared SVG allow-list was extracted toATFRFO_Admin::get_icon_allowed_tags()so both call sites use one source of truth.
Includes (folded in from 1.4.2, never reached WordPress.org SVN)
- Project file writes now use
LOCK_EX, preventing JSON corruption from concurrent writes. - Commit to Elementor matches Variables by stored Elementor ID first, not name alone -- rename + recommit no longer orphans class/widget references.
- Backup filename collisions during Copy Project no longer require a blocking
sleep()retry loop.
Atomic Framework Forge for Elementor v1.4.2
Fixed
- Project file writes could be corrupted by concurrent writes.
file_put_contents()inATFRFO_Data_Store::save_to_file()had no lock -- two overlapping writes to the same project file (two browser tabs, an overlapping autosave) could interleave mid-write and corrupt the JSON, causing every subsequent AJAX save to silently fail with no visible error. AddedLOCK_EX. - Commit to Elementor could silently orphan class/widget references on a Variable rename. The commit handler matched existing Elementor entries by name only -- renaming a variable and recommitting deleted the old-named entry and created a new one with a brand-new Elementor ID, breaking any class or widget property already referencing the old ID. Variables now carry a stored
elementor_idand commits match by that ID first (true update-in-place, rename included), falling back to name-matching only for variables that predate this fix. Confirmed via live round-trip test in both directions. - Copying a project with multiple backups could block for up to 10 seconds.
generate_backup_filename()'s 1-second timestamp resolution meant rapid successive backups collided, forcing asleep()-based retry loop. Filenames now include a short unique suffix instead. - User-facing text incorrectly showed "ATFRFO" instead of "AFF" in several places: the Merge Conflicts dialog, the admin sidebar menu label, the Help/About panel, the sync dialog hint text, and the print/PDF document title.
- Merge Conflicts dialog was too narrow -- the "Use Elementor" column required horizontal scrolling.
- Removed a false claim from the pre-write safety dialog -- "ATFRFO runs 350+ automated tests" was shown before a destructive Elementor write, but no automated test suite exists.
- readme.txt and README.md also still said "ATFRFO" in the same user-facing places.
Atomic Framework Forge for Elementor v1.4.1
Fixed
Critical: every AJAX endpoint was non-functional. register_handlers() builds callback method names as 'ajax_' . $action. The 1.4.0 AFF->ATFRFO prefix rename correctly updated the action-name strings (aff_save_file -> atfrfo_save_file, required by WordPress.org's 4-character prefix rule) but never updated the corresponding PHP method definitions, which stayed ajax_aff_*. Every wp_ajax_atfrfo_* hook pointed at a nonexistent method, fatal-erroring on every real request - Save, Load, Sync, and all other admin actions were completely broken. Confirmed via direct do_action() dispatch, not just static inspection. All 29 method definitions renamed to ajax_atfrfo_* to match. This shipped in 1.4.0 undetected because WordPress.org Plugin Check is static analysis and never actually fires the hooks.
Atomic Framework Forge for Elementor v1.4.0-rc.1
Release Candidate 1 for v1.4.0 -- first WordPress.org submission candidate.
Builds on the existing v1.3.0 release (Jun 21) with the following new work:
Added
- "Take a look" notify sign -- rising notification pointing new users at the Quick-Start guide, capped at 3 lifetime shows per user, rises from bottom-left past the sidebar, holds 10s, dismissible by click
Changed
- Brand assets replaced with new blacksmith-hammer logo/favicon
- Help panel: Media Inventory Forge now correctly shown as available on WordPress.org, Fluid Button Forge added as "In Development", stale references corrected, Development Phase section rewritten to match what's actually shipped, Project Hub updated now that jimrforge.com is live
Fixed
- Security: weak local HTML-escape functions consolidated to the canonical, fully-correct implementation
- Font-size default mismatch between PHP (14) and the actual CSS baseline (16) corrected
- Two dead dev-only patch scripts removed (found via WordPress Plugin Check flagging them as illegal files ahead of this submission)
- Assorted tech-debt cleanup (duplicated code consolidated, undeclared state field added, stale docs corrected)
Full changelog: see CHANGELOG.md in the repo.
Atomic Framework Forge for Elementor v1.3.0
What's New in v1.3.0
Added
- V3 Import result modal — shows import count, Close button, auto-closes after 4 seconds
- System color auto-notes — first four V3 imports receive a "System Colors: ..." note automatically
- Print sub-category hierarchy — sub-categories indented with gradient band and accent bar; swatches align under sub-category title
- Print comments toggle — optional second line per variable showing its saved comment
Changed
- Color expand modal restructured to two-row header (Row 1: controls; Row 2: Comment field)
- Sticky group header — filter bar and status legend pin together as one unit when scrolling
- Print document title — removed "V4"; now reads "Atomic Framework Forge for Elementor"
- Comment field placeholder — shows "Comment" instead of "Add a note..."
- Informational modals (Fetch, Clean Up, V3 Import) unified into single AFF.Modal.info() helper
Fixed
- App top bar scrolled off screen due to WordPress padding on #wpbody-content
- Brand name title faded to invisible on scroll — fade animation removed
Atomic Framework Forge for Elementor v1.2.0
[1.2.0] — 2026-06-13
Added
- Sub-Categories — One level of sub-categories under any top-level category. Full CRUD: add, rename, delete with recursive descendant count. Collapsing a parent cascades to sub-categories. Variable counts roll up to parent.
- Tints / Shades / Transparencies as Sub-Categories — Generated color families placed in named sub-categories (e.g., "brand-primary Tints") rather than flat in the parent. Re-generation updates the existing sub-category in place.
- Delete Variable Button — Trash icon on hover at the right of every variable row (Colors, Fonts, Numbers); confirms before removing.
- Status Legend — Dot-and-label row (Synced / Modified / New / Orphaned / Conflict) under the filter bar in all variable views.
- Print / PDF — Top-bar printer button; set-selection modal; browser print dialog with "Save as PDF" support.
- Home Icon — ✕ close button on type filter bar replaced with a house icon ("Back to sets").
- New Categories Insert at Top — Newly created categories are ordered to the top of the list.
Fixed
- Delete Button Column Overflow —
get_grid_override_css()emitted a 7-column inline style that overrode static CSS; now correctly 8 columns for all views. - Google Fonts for Font Preview — Font preview cells now load Google Fonts so previews render in the correct typeface.
- Uncategorized Badge Catch-All — Left-panel badge now correctly counts variables not matched by any named category.
- Font Classification — Custom font names classified correctly; unclassified variables migrated on load.
- Soft-Deleted Variable Counts — Soft-deleted variables excluded from all counts.
- Delete-Category Variables Bug — Deleting a category with "delete variables" now removes those variables correctly.
- No Scroll After Delete — Deleting a variable no longer scrolls the edit space to top.
- Smart Quotes Parse Error — ASCII quotes restored in
_deleteCategory. - Variable Count / Project List Stability — Count badge logic and project list stabilized; timestamps display correctly.
Changed
- Version — Bumped to 1.2.0.
Atomic Framework Forge for Elementor v1.0.0
First Stable Release
Fixed
- Plugin Check — Resolved all WordPress Plugin Check errors:
is_writable()replaced with WP_Filesystem,Requires PHPheader aligned to8.2, hidden.gitkeepremoved, specification filename with spaces renamed. False-positive nonce/sanitization warnings suppressed withphpcs:disable(nonces verified centrally viaverify_request()). Added.distignoreto exclude dev markdown files from Plugin Check and distribution.
Changed
- Elementor version constants — Updated
AFF_DEV_ELEMENTOR_VERSIONto 4.0.8 andAFF_DEV_ELEMENTOR_PRO_VERSIONto 4.0.4. - Version — Bumped to 1.0.0 — first stable release.
Atomic Framework Forge v0.4.3-beta
What's Changed
Added
- Delete Category — Save to Uncategorized — Delete category modal now shows variable count and an iOS-style toggle (gold) to move variables to Uncategorized instead of deleting them.
- Tints/Shades Save/Cancel — Expand modal for color variable generation now has explicit Save and Cancel buttons. Palette previews update live on input; generation only fires on Save.
- Delete Variable Keyboard Nav — Tab, Shift-Tab, Left, and Right arrow keys cycle focus between buttons in the delete variable modal.
- scrollIntoView on Category Expand — Expanding a category now smoothly scrolls the block into view.
- Tooltip Auto-Dismiss — Tooltips automatically hide after 4 seconds if the pointer remains still.
Fixed
.aff.jsonFilename — All export, import, and dialog references updated from.eff.jsonto.aff.json.