All notable changes to Embedr are documented here.
Format: SemVer — newest first.
Embedr.module.php as the singular core API and configuration module.Embedr::renderField() for cached, template-driven rendering of
FieldtypeTable, Repeater, PageTable, Page Reference, and custom iterable
fields.render(), getEmbed(), embeds(), and types() API.ProcessEmbedr is now an admin-only Process module and reads configuration
from the core Embedr module.Embedr to EmbedrItem to avoid
colliding with the core module class.TextformatterEmbedr now reads shortcode settings and collections from
Embedr.Embedr copies compatible configuration values from legacy
ProcessEmbedr installations..module filenames used by existing ProcessWire installations so module refreshes keep ProcessEmbedr and TextformatterEmbedr registered during upgrades.$embed->title is no longer interpolated directly into onclick=confirm(...). Moved to a data-confirm attribute read by a JS handlerinput.value (DOM), not from an inline JS string literaldata-shortcode attribute and <code> display are now escaped with htmlspecialchars(ENT_QUOTES)EmbedrRenderer (title, url, price, meta, image URL) are now escaped with htmlspecialchars()./delete/, ../type-delete/) now include a CSRF token; handlers call $session->CSRF->validate() before proceedingembedr-errors logrequired = false, matching the documented behaviour that allows using the visual renderer without a template fileTextformatterEmbedr::render() — fixed PHP 8.1 deprecation notice about implicit nullable type hints (?Page, ?Field)$debugMode property (lazy init via getDebugMode() / loadConfig()); getModuleConfigData() is no longer called on every set() call or renderopenTag / closeTag in TextformatterEmbedr are now automatically synced from ProcessEmbedr settings (single source of truth); duplicate config fields removed from the Textformatter config formtextarea() instead of text(), removing the 255-character truncation limitEmbedrRenderer migrated from Tailwind utility classes to UIKit (consistent CSS framework across all layouts)EmbedrRenderer::getColumnClass() (was always empty, never called)((name))TextformatterEmbedr for automatic tag replacement in text fieldsembedr-debug / embedr-errors