v0.24.0 release notes
=====================


This release is focused primarily on resolving internal tech debt. This
translates to improved reliability and improved developer experience.


New features
------------

* Navbars and footers are now orderable and support multi-site. This is
  configured under **Settings > Layout**.

* Supports Django 4.0.


Upgrade considerations
----------------------

* Template tag ``codered_settings`` has been renamed ``crx_settings``. You
  should find/replace this in any of your HTML or other Django template files.

* Django settings beginning with ``CODERED_*`` have been renamed to ``CRX_*``.
  You should find/replace these in your Django settings files.

* ``wagtail-import-export`` has been removed as a dependency. You should remove
  this from ``INSTALLED_APPS`` in your Django settings. As a result,
  import/export from JSON files has been removed. However we have preserved the
  ability to import Pages from CSV files. See :doc:`/features/import_export`.

* Behavior of Navbars and Footers has changed. If your navbar and footer does
  not look correct after upgrading, you may need to synchronize your
  customizations to ``navbar.html`` and ``footer.html`` with the `stock versions
  which can be found here
  <https://github.com/coderedcorp/coderedcms/tree/dev/coderedcms/templates/coderedcms/snippets>`_.


Supported software
------------------

* Python 3.7, 3.8, 3.9, 3.10

* Django 3.2, 4.0


Internal changes
----------------

The following changes are not publicly documented APIs, but have changed. Most
sites should not be using any of these APIs and therefore can ignore this
section. In case your site deeply hooks into the package, these are here for
reference.

* ``coderedcms.settings.cr_settings`` has been replaced with
  ``coderedcms.settings.crx_settings`` which is no longer a dictionary, but an
  object which behaves exactly like the Django settings. This object will first
  retrieve a Django setting, and if it does not exist, will then load a CRX
  default.

* Internal uses of Wagtail ``StreamField`` on concrete models have been replaced
  with ``CoderedStreamField`` which will not generate migrations based on block
  changes. This effectively eliminites most of our historic migration problems.

  As a result, all past migrations have been hand-edited to reflect this change.
  No action is required in client sites.

  Client sites can freely use ``coderedcms.fields.CoderedStreamField`` in place
  of Wagtail's ``StreamField`` to eliminate the giant migrations problem
  inherent to Wagtail. However this API is not publicly documented at this time.

* Choice fields on internal concrete models have been replaced with a
  lazy-loading mechanism to load choices and defaults at runtime. This further
  eliminates historic migration problems.


Thank you!
----------

Thanks to everyone who contributed to `0.24.0 on GitHub <https://github.com/coderedcorp/coderedcms/milestone/37?closed=1>`_.
