Apostrophe 4.20.0: Enhanced Rich Text Experience and Infrastructure Updates #5028
BoDonkey
announced in
Release Notes
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Hello Apostrophe Community!
Apostrophe 4.20.0 delivers improvements to the content editing experience alongside important infrastructure updates that support better integration with external frontends and ensure long-term project compatibility.
Smoother Rich Text Editing
We've improved the rich text editing experience by making widget controls more context-aware. When editors click into text within a rich text widget, the widget controls are hidden to provide a cleaner editing experience. No more overlapping controls or difficult text selection—just focused, intuitive content creation.
Enhanced HTML Injection for External Frontends
This release introduces new
prependNodesandappendNodesmethods in core, providing a more robust way to inject HTML into pages. This enhancement was developed specifically to support better integration with external frontends like Astro, enabling developers of new extensions for ApostropheCMS to add custom HTML elements consistently across their applications.Several popular extensions have been updated to take advantage of this new capability, making them easier to use with Astro and other external frontends:
@apostrophecms/favicon@apostrophecms/open-graph@apostrophecms/seo@apostrophecms-pro/paletteNode.js Version Update Required
🚨 Breaking Change: Node.js 18 has reached end-of-life support. Since there is no upstream support for Node.js 18 itself and modules we depend on have begun to use newer features, starting with this release, Apostrophe 4.x requires Node.js 20 or later. Projects running on Node.js 18 or earlier will no longer be supported and may experience compatibility issues.
Please update your Node.js version before upgrading to ensure continued functionality, security updates, and optimal performance.
Backwards compatibility breaks due to Node.js 20 itself are not expected.
Update your modules together to avoid errors
npm update. Also, make sure yourpackage.jsoncontains semantic versioning rules that allow updates to new patchlevels and minor releases vianpm update, for instance:Note the use of the
^character, not~. This means “keep the same major version, but allow the minor and patchlevel versions to be updated.”Additional Improvements
This release also includes several quality-of-life enhancements: improved alt text handling during rich text image imports, better page unparking capabilities, and resolved issues with relationship handling and rich text paragraph styling. We've also strengthened security by replacing
connect-multipartywith the actively maintainedmulterlibrary.Community Contributions
We're grateful to acknowledge the contributions from our community members who help make Apostrophe better. Special thanks to Harsh Mehta for their work on document versioning improvements. While these specific changes weren't included in this release due to architectural considerations, community contributions like these drive important conversations about how we can enhance Apostrophe's capabilities.
We also thank Radhakrishnan Mohan for the security improvement that replaced
connect-multipartywithmulter.These improvements are ready for you to explore! Again, make sure that you first update your Node.js version to 20 or higher. Then update your projects with
npm updateand let us know what you think on our roadmap.🚀 Happy coding!
Apostrophe 4.20.0
Adds
prependNodesandappendNodesmethods to every module. These methods allow you to inject HTML to every page using anodedeclaration.Changes
orderandgroupsin theadmin-barmodule to respect, rather that reverse, the order of itemsFixes
@apostrophecms/page:unparktask unpark all parked pages with the given slug, not just the first one.withRelationshipswith two or more steps. This issue could cause a document to appear to be related to the same document more than once.inputType.pwith different classes from being recognized again when reopening the rich text editor, even if they are all on the style menu. This was caused by knock-on effects of upstream changes in tiptap and prosemirror and our previous efforts to mitigate these. Those upstream changes were correct, but they did have certain side effects in ApostropheCMS. By more fully specifying the desired behavior, we have now fully corrected the issue at the ApostropheCMS level.Security
connect-multipartywithmulter. Thanks to Radhakrishnan Mohan for this contribution.connect-multipartyis no longer maintained, it makes sense to move tomulter.Pro Modules
@apostrophecms-pro/data-set2.0.3This module provides an easy avenue for low-code data presentation. It creates a data-set piece for the import of comma-separated values (CSV) files. A separate widget allows for the dynamic selection of columns, and display of the data as an HTML table, or in other templates provided by the developer. Contact us or visit our pricing page to learn more.
Fixes
Changes
eslint-config-apostropheto5, fixes errors, removes unused dependencies.@apostrophecms-pro/doc-template-library2.2.6This module solves the "blank page problem" for developers and product managers, and makes it faster for editors to create content. doc-template-library allows for the configuration of default widgets and pre-populated content on piece or page templates, and to re-use existing layouts. Explore our documentation to discover how this extension can enhance your project. Then, effortlessly integrate it through our new Apostrophe Workspaces. For further details or inquiries, feel free to contact us or visit our pricing page.
Adds
perPageoption to control the number of template listed when you create a new piece or page and in the template manager.Fixes
@apostrophecms-pro/document-versions2.6.0This module automatically creates versions for your published documents (pages and pieces) and allows manual restore to any previously saved document version. Explore our documentation to discover how this extension can enhance your project. Then, effortlessly integrate it through our new Apostrophe Workspaces. For further details or inquiries, feel free to contact us or visit our pricing page.
Adds
localeMappingoptions. This is a key: value pair used to mapapos.i18n.localewith an Intl.Locale. For example, you can map the following{ en: 'en-CA', fr: 'fr-CA' }. If empty, theapos.i18n.localevalue will be used in place for DateTimeFormat locales.dateTimeFormatOptionsoptions. This is used to display the date time format in the version list modal (and few other places). Please refer to DateTimeFormat#options for more details.Changes
versionDayjsTitleFormattranslation key. You can usedateTimeFormatOptionsinstead.dayjs. We now useIntl.DateTimeFormat.cuiddependency. We now use@paralleldrive/cuid2.@apostrophecms-pro/palette4.8.1An in-context interface for changing CSS.
@apostrophecms-pro/paletteis a module that provides an in-context interface for changing the values of developer-set CSS properties. The values are stored in an Apostrophe piece singleton (like @apostrophecms/global) and applied to the site whenever the stylesheet link is included in a template. Adjusting values via the palette interface renders changes to the site instantly. Explore our documentation to discover how this extension can enhance your project. Then, effortlessly integrate it through our new Apostrophe Workspaces. For further details or inquiries, feel free to contact us or visit our pricing page.Changes
Apostrophe modules
@apostrophecms/anchorsv1.0.2This Anchors module adds a wrapping element with an anchor linking target around all widgets. Developers may customize or opt-out individual widget types.
Changes
@apostrophecms/favicon1.1.3This module allows users to edit the "favicon" (browser tab icon) of the site via the global settings of the site. As such, it pairs well with the Apostrophe palette and multisite modules.
Changes
@apostrophecms/import-export3.3.0This module enables import and export of pages and pieces, with or without related documents such as files, images and other related types.
Adds
@apostrophecms/open-graph1.2.3Open Graph for ApostropheCMS.
Changes
eslint-config-apostropheto5, fixes errors, removes unused dependencies.@apostrophecms/passport-bridge1.5.1apostrophe-passportworks together withpassport-google-oauth20,passport-gitlab2and similar passport strategy modules to let users log in to Apostrophe CMS sites via Google, Gitlab and other identity providers. This feature is often called federation or single sign-on.Changes
@apostrophecms/seo1.3.1Add useful meta fields to all pages and pieces.
Changes
eslint-config-apostropheto5, fixes errors, removes unused dependencies.@apostrophecms/sitemap1.2.0The Apostrophe Sitemap module generates XML sitemaps for websites powered by ApostropheCMS. The sitemap includes all of the pages on your site that are visible to the public, including "piece" content, such as events and blog posts.
Adds
perLocaleoptionChanges
perLocaleoptionUtilities
@apostrophecms/apostrophe-astro1.5.0This module integrates ApostropheCMS into your Astro application.
Adds
prependHead,appendHead,prependBody, andappendBodyin theaposDataobject, allowing for custom HTML to be injected into the<head>and<body>sections of the layout.Fixes
postcss-viewport-to-container-toggle2.0.1A plugin for PostCSS that allows to toggle between viewport and container units based on the presence of a container data attribute.
Fixed
:where()pseudo-class back to fix specificity issues.uploadfs1.25.0uploadfscopies files to a web-accessible location and provides a consistent way to get the URLs that correspond to those files. uploadfs can also resize, crop and autorotate uploaded images. uploadfs includes S3-based, Azure-based, GCS-based and local filesystem-based backends and you may supply others.Adds
Beta Was this translation helpful? Give feedback.
All reactions