Releases: AlchemyCMS/alchemy_cms
v5.0.0
Alchemy 5.0
This is a huge release laying the foundation for Alchemy being a API first CMS for static site generators. While we truly believe in server site rendered HTML and will always support this, we also think that statically generated sites talking via APIs to the backend (aka the "JAM Stack") can be a huge improvement for modern frontends. That's why we made major changes to the internals of Alchemy that help you to better serialize your content and remove weirdness from the code base.
Before we begin thanks for all the contributions that made this release possible:
- @mamhoff
- CandleScience for the ongoing support of my work
You really help to make Alchemy better every day.
Thanks for that ❤️
Major changes
- Removed the single root page from the page tree
Alchemy always had a single root page under which all other pages were nested. Even the layout pages were nested under hidden layout root pages. This was very confusing and prevents us from making changes to the internal structure of Alchemy for features coming in the near future.
|
Root Page
/ \
Language Root Layout Root
├ Page 1 ├ Header
| \ └ Footer
| ├ Page 2
| └ Page 3
├ Page 4
└ Page 5
This has now been changed to a easier to understand page structure
| | |
Language Root Header Footer
├ Page 1
| \
| ├ Page 2
| └ Page 3
├ Page 4
└ Page 5
-
Remove Page visible attribute
The page visible attribute was one of the most confusing attribute in Alchemy. It did way more things than you might have expected. Did you know that it also changed how URLs got created? Probably not. And that's why removed it.
Want to make a page appear in the navigation? Create a Menu instead and put pages into it.
In order to help with the upgrade make sure to update to Alchemy 4.6 first and use Menus and Tags instead to re-organize your pages if your page tree does not reflect the URL hierarchy.
A rake task to help with the migration is available.
bin/rake alchemy:upgrade:4.6:restructure_page_tree
-
Always create nested urls
With the introduction of Menus and the removal of the Page visible flag we now completely separated the page tree from generating the navigation. That's why we now always generate a nested URL. Don't want to nest a pages URL? Just move it up in the tree.
-
Configurable edit page preview per site
This is a true benefit for all static sites running Alchemy as it's API. On a per site basis you can configure the host (and basic auth) to your static site and Alchemy will preview it in the build in page edit preview.
-
Add a
@alchemy_cms/admin
npm packageModern ES6 is everywhere. We started to work on the transition to a more modern JS stack. This is the first step.
-
Add an On-Boarding Flow
We removed the implicit creation of the sites and default languages. We now do this via the UI instead letting admins decide what to create instead.
-
Removed element editor partials
After being deprecated we removed the support for element editor partials. Alchemy now renders them for you. If you rely on passing custom options into element editors and the content editors please consider to use the
settings
hash on thecontents
definition of your elements or using a custom essence.
Other minor changes
- Render nodes #1831 (mamhoff)
- Add error flash to resource controller #1827 (mamhoff)
- Translated root menus #1825 (mamhoff)
- Add a quick Node select #1821 (mamhoff)
- Make page language mandatory #1818 (tvdeyen)
- Multi language menus #1774 (rmparr)
- Update Fontawesome #1759 (tvdeyen)
- Sortable resources tables #1744 (tvdeyen)
Other breaking changes
This release also removes all deprecated methods and classes from 4.6. In order to be able to smoothly upgrade please make sure to update to Alchemy 4.6 and remove all deprecations from your code base, then upgrade to Alchemy 5 and run the
bin/rake alchemy:upgrade
task.
- Remove active_record_5_1? method #1854 (tvdeyen)
- Remove old 4.4 upgrader class #1814 (tvdeyen)
- Remove Page.ancestors_for #1813 (tvdeyen)
- Remove legacy element serializer #1810 (tvdeyen)
- Remove timestamps from essences and contents #1809 (tvdeyen)
- Remove stamper from contents #1808 (tvdeyen)
- Remove Site ID from nodes #1807 (mamhoff)
- Remove enforce_ssl #1804 (tvdeyen)
- Remove stamper from essences #1802 (tvdeyen)
- Remove acts_as_list from Content #1798 (tvdeyen)
- Remove Tasks::Helper module #1754 (mamhoff)
- Remove old upgrade tasks #1687 (tvdeyen)
- Remove deprecated features #1686 (tvdeyen)
- Remove deprecations #1656 (tvdeyen)
List of all changes
Have a look into the Changelog for a list of all PRs merged into this release.
v4.6.1
v4.6.0
4.6.0 (2020-06-04)
In preparation for the 5.0 release this release adds a lot of deprecations. Fix them and you should be ready to upgrade to Alchemy 5.0 without any further ado.
- Use apt update instead of apt-get in GH action #1865 (tvdeyen)
- Use depth for page tree serializer root_or_leaf #1864 (tvdeyen)
- Fix sitemap wrapper height #1861 (tvdeyen)
- Do not return the root page with API responses. #1860 (tvdeyen)
- Introduce page.url_path and use it for alchemyPageSelect #1859 (tvdeyen)
- Update Urlname translation #1857 (tvdeyen)
- Show url name in Page tree #1856 (tvdeyen)
- Deprecate Page#visible attribute #1855 (tvdeyen)
- 4.6: Re-add
auto_logout_time
configuration option #1852 (mamhoff) - Backport ContentEditor to 4.6, deprecate removed methods on
Alchemy::Content
#1847 (mamhoff) - Deprecate auto_logout_time (4.6) #1843 (tvdeyen)
- Deprecate require_ssl (4.6) #1842 (tvdeyen)
- Deprecate url_nesting configuration (4.6) #1841 (tvdeyen)
- Allow page visible toggle (4.6) #1838 (tvdeyen)
v4.5.0
v4.4.4
v4.4.3
v4.4.2
4.4.2 (2020-02-25)
- Do not use deprecated methods #1737 (tvdeyen)
- Order contents by their position in its element #1733 (tvdeyen)
- Eager load relations in elements trash #1732 (tvdeyen)
- Run CI builds with Sprockets 3.7.2 #1731 (tvdeyen)
- Re-organize development dependencies #1730 (tvdeyen)
- Update pr template #1729 (tvdeyen)
- Generate views without _view in the filename #1728 (tvdeyen)
- Fix CI Builds #1727 (tvdeyen)
- Fix page tagging condition: should_attach_to_menu? #1725 (mickenorlen)
- Fix Alchemy.user_class_name constant conflict #1724 (mickenorlen)
v4.4.1
4.4.1 (2020-01-08)
- Fix updating page preview after element create/save #1710 (tvdeyen)
- Element editor layout changes #1709 (tvdeyen)
- Add Alchemy.user_class_primary_key setting #1708 (tvdeyen)
- Add Element views upgrade tasks #1707 (tvdeyen)
- Use postMessage to send messages between preview and element windows #1704 (tvdeyen)
v4.4.0
4.4.0 (2020-01-06)
A rather large release that includes a lot of deprecations for the upcoming 5.0 release.
The most notable changes are
Menus
Alchemy now has now a Menus module where you can manage multiple menus. A menu node can be just a name, a name and an url or an Alchemy::Page
. The Alchemy page tree is now deprecated and will most likely be removed or replaced. A new render_menu
helper has been introduced. Menus can have templates that live in app/views/alchemy/menus
A handy rake task has been introduced to help with the transition to Menus.
bin/rake alchemy:convert:page_trees:to_menus
Element editors are deprecated
Element editors (aka. app/views/alchemy/*_editor
partials) have been deprecated and will be removed in Alchemy 5. If you used the editor partial to pass options into an essence editor, please move these settings either into the elements.yml
content settings
or if you used to pass dynamic values (to the EssenceSelect
for instance) use a custom essence or for page selections use the newly introduced EssencePage
.
If you put warnings and messages into the element editors, use the newly introduced warning
and message
keys for the element definition in the elements.yml
.
Element views without suffix
Element view partials do not need the _view
suffix anymore. You can safely remove them from your files. Please remember to also rename the your_element_view
local variable into your_element
.
Added a alchemyPageSelect jQuery function
Based on Select2 we introduced a new alchemyPageSelect
jQuery function. Used in the new EssencePage
editor, for the node page select and in the link dialogs.
Moved the anchor form into its own tab in the link dialog
The anchor form has been moved into its own tab for better distinction and UX of that feature.
Faster API
The API endpoints now eager load their associated records. Bye bye N+1 👋. Hello 🏎
EssencePage
For "real" element <-> page associations we introduced a new EssencePage
essence.
I hope you like these changes and they help you to make Alchemy even better for you. Please consider to support my work on Open Collective
❤️ Thomas
All changes
- Use contents settings for size in EssencePicture#picture_url #1703 (tvdeyen)
- Remove title tag from preview elements #1701 (tvdeyen)
- Remove custom JS logging #1700 (tvdeyen)
- Remove demo locale files #1699 (tvdeyen)
- Use alchemyPageSelect for Node page select #1698 (tvdeyen)
- Cache menu partials #1697 (tvdeyen)
- Update page tree to menu nodes Rake task #1696 (tvdeyen)
- Validate nodes name if page is absent #1695 (tvdeyen)
- Update the application layout installer template #1691 (tvdeyen)
- Update note about missing user class #1690 (tvdeyen)
- Use a Sprockets 3/4 manifest file #1689 (tvdeyen)
- Use select2 for internal page link in link overlay #1685 (tvdeyen)
- Do not consider nested elements "orphaned" #1684 (mamhoff)
- Destroy page-dependent elements #1683 (mamhoff)
- Add anchor link tab to link overlay #1682 (tvdeyen)
- Ensure the apt/cache folder exists while installing #1678 (tvdeyen)
- Cache apt packages between CI runs #1677 (tvdeyen)
- Use select2 with AJAX search for essence page select #1675 (tvdeyen)
- Eager load associated records #1674 (tvdeyen)
- Add support for testing with multiple Rails versions #1673 (tvdeyen)
- Page api pagination #1672 (tvdeyen)
- Adjust select2 loading-more indicator #1671 (tvdeyen)
- Test support fixes #1669 (tvdeyen)
- Build fixes #1668 (tvdeyen)
- Add Menus #1667 (tvdeyen)
- Add a label component #1666 (tvdeyen)
- Run bundle install on CI even if cache hits #1665 (tvdeyen)
- Moves switch_language method into languages_controller. #1664 (tvdeyen)
- Cache gems between CI runs #1663 (tvdeyen)
- Remove production gems from local Gemfile #1662 (tvdeyen)
- Touch contents updated_at column in pure SQL #1661 (tvdeyen)
- Convert page editing user methods into AR relations #1658 (tvdeyen)
- Ensure the admin locale is only set by available locales #1655 (tvdeyen)
- Add a GitHub actions ci.yml #1654 (tvdeyen)
- Adjust install generator to latest changes #1649 (tvdeyen)
- Deprecate _view suffix of element views #1648 (tvdeyen)
- Add a configurable logout method (default: delete) #1647 (delphaber)
- Deprecate render_essence helpers #1644 (tvdeyen)
- Deprecate element editors #1643 (tvdeyen)
- Deprecate local options in essence editors #1642 (tvdeyen)
- Ensure the EssencePage id regexp matches only numbers #1641 (tvdeyen)
- Use EssencePage in contact forms #1640 (tvdeyen)
- Add Alchemy::EssencePage #1639 (tvdeyen)
- FEAT: Render message and warnings in element editor #1637 (tvdeyen)
- Tackle Rails 6 deprecations #1636 (tvdeyen)
- Preload assets in tests #1635 (tvdeyen)
- Allow acts-as-list 1.0 #1634 (tvdeyen)
- Add Sprockets manifest file to dummy app #1632 (tvdeyen)
- Master now tracks 4.4.0.alpha #1627 (tvdeyen)
- Fix Cell Migration to maintain positions #1625 (mamhoff)
- Cell Upgrader: Match quotation marks in cell name string #1624 (mamhoff)
- Cell Migrator: Maintain element order in fixed elements #1623 (mamhoff)
- Enhance cells upgrader to deal with render_elements from_page: x [#1622](https://github.com/AlchemyCMS/alchemy_cms/...