New features
- Harvest sources are now filterable through the harvest source create/edit admin form [1812](https://github.com/opendatateam/udata/pull/1812)
- Harvest sources can now enable or disable some optional backend features [1875](https://github.com/opendatateam/udata/pull/1875)
- Post UIs have been reworked: publication date, publish/unpublish action, save and continue editing, dynamic sidebar, alignments fixes... [1857](https://github.com/opendatateam/udata/pull/1857)
Minor changes
- Only display temporal coverage years on cards and search results [1833](https://github.com/opendatateam/udata/pull/1833)
- Add publisher's name on dataset template [1847](https://github.com/opendatateam/udata/pull/1847)
- Improved upload error handling: deduplicate notifications, localized generic error message, sentry identifier... [1842](https://github.com/opendatateam/udata/pull/1842)
- Allows to filter datasets on resource `type` (needs reindexing) [1848](https://github.com/opendatateam/udata/pull/1848)
- Switch the admin sidebar collapse icon from "hamburger"to left and right arrows [1855](https://github.com/opendatateam/udata/pull/1855)
- Discussion add card style coherence [1884](https://github.com/opendatateam/udata/pull/1884)
- `LINKCHECKING_UNCHECKED_TYPES` setting to prevent linkchecking on some ressource types [1892](https://github.com/opendatateam/udata/pull/1892)
- `swagger.json` API specifications now pass validation [1898](https://github.com/opendatateam/udata/pull/1898)
Breaking changes
- Static assets are now compatible with long-term caching (ie. their hash is present in the filename). :warning: On your development environment you need to run `inv assets-build` to generate an initial `manifest.json`, both in `udata` and in your theme extension if it uses manifest. See [1826](https://github.com/opendatateam/udata/pull/1826) for full details.
- Theme are now responsible for adding their CSS markup on template (no more assumptions on `theme.css` and `admin.css`). Most of the time, overriding `raw.html` and `admin.html` should be sufficient
- The discussions API `posted_by` attribute is now an embedded user instead of an user ID to avoid extra API calls [1839](https://github.com/opendatateam/udata/pull/1839)
Bugfixes
- Hide the `resource.type` attribute from JSON-LD output until handled by a dedicated vocabulary/property [1865](https://github.com/opendatateam/udata/pull/1865)
- RDFs, CSVs and resource redirect views are now handling CORS properly [1866](https://github.com/opendatateam/udata/pull/1866)
- Fix broken sorts on organization's datasets list in admin [1873](https://github.com/opendatateam/udata/pull/1873)
- Ensure harvest previewing is done against current form content [1888](https://github.com/opendatateam/udata/pull/1888)
- Ensure deleted objects are unindexed [1891](https://github.com/opendatateam/udata/pull/1891)
- Fix the dataset resources list layout wrapping [1893](https://github.com/opendatateam/udata/pull/1893)
- Fix wrong behavior for weblinks [1894](https://github.com/opendatateam/udata/pull/1894)
- Ensure `info config` command only displays configuration variables [1897](https://github.com/opendatateam/udata/pull/1897)
Internal
- Upgrade to Authlib 0.9 [1760](https://github.com/opendatateam/udata/pull/1760) [#1827](https://github.com/opendatateam/udata/pull/1827)
- Add a `Dataset.on_resource_added` signal