--------------------------
* Updated documentation to a new theme;
* Added logo from SVG Repo;
* Restructured and improved documentation;
* Improved Makefile;
* Removed remaining usage of ``os.path`` module in profit of ``pathlib``;
* Removed setting ``BLOCKS_ALLOWED_IMAGE_EXTENSIONS`` in profit of django-smart-media
setting ``SMARTIMAGE_ALLOWED_IMAGE_EXTENSIONS``. You can safely remove the first one
from your settings;
* Moved documentation Django settings into sandbox;
* Fixed warnings about ``django.core.files.storage.get_storage_class()`` for
Django>=5.0;
* Update PO catalogs for new translation strings;
* Internal allowed plugin names in Features have been renamed and a data migration is
in charge to automatically update your data. However this won't work for your
previously exported dumps, you will need to rename these names your in your dumps
with the following changes:
* ``AlbumMain`` becomes ``Album``;
* ``CardMain`` becomes ``Card``;
* ``ContainerMain`` becomes ``Container``;
* ``HeroMain`` becomes ``Hero``;
* ``SliderMain`` becomes ``Slider``;
Also remember than since v1.3.1 the names ``AlbumItem`` and ``SliderItem`` are no
longer valid.
* **Refactored feature getters:**
* The old method ``get_features()`` has been renamed to a property
``flat_features`` with the same behavior (a simple string with ordered
classnames without any duplicate classname): ::
>>> foo = Card(...)
>>> foo.save()
>>> foo.flat_features
"bar foo ping"
* A new property ``scoped_features`` has been introduced, it return a dict indexed
on scopes: ::
>>> foo = Card(...)
>>> foo.save()
>>> foo.scoped_features
{
"size": ["bar", "foo"],
"color": [],
"extra": ["foo", "ping"],
}
* Getters now enforce scope and plugins filtering so you should never have
"orphan feature" (like when you change the scope of a feature to ``extra`` but it
was already used in ``Card.size_features``) returned from getters;