5.0.1 (2025-08-11)
==================

👷 Bug fixes
-----------

- rdef has been renamed into relation_definition
- skeleton: do not use the current version of CubicWeb as minimal version

5.0.0 (2025-06-25)
==================

Breaking changes
----------------

- querier: stop to silent error for SET, INSERT and DELETE
- remove deprecated class cubicweb.dataimport.stores.MetaGenerator
- remove nearly all deprecation code based on logilab.common.deprecation
- uilib: remove now useless fallback_safe_cut

🎉 New features
--------------

- add a method to InstanceCommand to have a connexion
- add a new FTIHL RQL function to mark searched terms (https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/1085)
- add a new LIST function to RQL
- add a warning message when running the instance with the default session (https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/801)
- add variables to result sets produced by Insert queries
- add variables to ResultSet created from rql union with one single query
- all-in-one: add s3 conf for dbdump
- config: add sender-x-cw-header entry
- db-dump: use --output to upload dump to specific path in s3 bucket
- db-restore: add s3 option to restore dump from s3 bucket
- dbdump: add option to push backup to s3
- depend on python 3.11
- display progressbar when importing data
- doc: add extra-explaination to migrate to CW4 from CW3
- doc: explain how to remove an entity through RQL with only its eid
- ensure we have the right version of logilab-database
- entity: add helper method `cw_remove_relation`
- entity: add helper method `cw_remove_relations`
- entity: harden `Entity.cw_instantiate` in debug mode
- entity: precise potential error of `Entity.cw_instantiate`
- minor refactoring to export reverse indicator stuff
- provide a default session when none is registered
- pyramid.ini: use cubicweb.pyramid.default_session for new cubes
- pyramid: extract set storage CSRF policy in a dedicated function
- querier: reduce possibility of error with type checking
- req: protect `find` of injection through `limit` parameter
- schema: type `CubicWebSchema.add_entity_type` (to https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/775)
- security: allow to disable default protection against CSRF attack in pyramid.ini (https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/904)
- server: improve the error message when a RQL fails
- serverctl: add an option to restore the most recent backup
- serverctl: add region, secure and cert_check options to s3 db dump/restore
- skeleton: add new 'web' layout that insert cubicweb-web dependency with its version
- skeleton: indicate that only Python 3 is supported
- skeleton: max cubicweb version of new cubes to the next major
- skeleton: only add web tests when using the web layout
- stop using "default-dest-addrs" config address for reply-to (#1088.)
- support yams < 1.*
- uilib: uses functools.wraps on our decorators
- use the CI_DEFAULT_BRANCH variable to get the name of the default branch
- yams: prepare for named parameters only

👷 Bug fixes
-----------

- base-url-prefix: backport "receives-base-url-path" option into core and use it
- config: catch ImportError instead of ModuleNotFoundError
- content_negociation: add a restriction on request_method for "one_entity" and "one_entity_eid" routes (https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/934)
- content_negociation: fix a typo in cubicweb.pyramid.rest_api.include_html condition (https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/934)
- content_negociation: if we only want rdf views, don't catch all mimetypes (https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/906)
- correctly name columns containing variable method calls
- csrf: in storage policy, use base_url as path instead of route_prefix which can be None (https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/1017)
- csrf: set csrf_token cookie on the correct url path
- doc: fix sphinx warnings
- IRQLAdapter: do not fail on a 'None' (or false) result (#1023)
- make doc build compatible with sphinx_book_theme version 1.*
- migrations: eschema.object_relations are dictionnaries now
- prevent crash when trying a rql method on a null entity
- pyramid: wsgicors' maxage is expected to be a string
- python3.11: bytes needs to be converted to str before writting it
- querier/sqlite: check that integer values returned from db are casted to boolean when necessary
- querier: resolve entity methods/attributes when solution is not known statically (#1073.)
- rdef has been renamed into relation_definition
- remove a typing import which break compatibility with python 3.7
- remove start cmd introduced when merging 3.38 into 4
- rename RelationSchema._subj_schemas/_obj_schemas to RelationSchema._subject_schemas/_object_schemas
- replace deprecated `rtype` by `relation_type`
- replace deprecated find_module by find_spec
- rql: remove superfluous quotes in the FTIHL functions (https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/1107)
- sendmail: use smtp-sender-addr in FROM header instead of user email
- serverctl: use the dump-s3 options for the db-restore command
- session: using unsafe_cnx_context_manager invoke a recursive auth loop
- setting a date attribute with a string is not supposed anymore
- setup.py: switch to Environment markers for conditionnal installations
- slapd: back_hdb and back_bdb are deprecated in favor of back_mdp
- SMTP: don't override SMTP import by MockSMTP in testlib
- stresstester: time.clock is deprecated and has been removed
- test-instance-creation-with-cubicweb_api: add missing X-Client-Name request headers
- testlib: move devtools.testlib.MockSMTP and devtools.testlib.Email
- tests: automatically add BASE_URL to urls if it's missing
- tests: make slapd log its error messages on stdout for debug purpose
- tests: make tests crash if slapd fails to initialize its database
- tests: only datetime with a timezone are accepted now
- web: remove tags

📝 Documentation
---------------

- csrf: fix the wrong code for “Disable CSRF for a CubicWeb View” chapter
- simplify installation doc and move source installation to contributing part

🤷 Various changes
-----------------

- add information on how to install cubes
- changes: improve the changelog of 4.9.x
- compare rql with cypher and gql
- contributing: add CONTRIBUTING.rst file
- contributing: remove outdated guides
- contributing: update weekly meeting description
- cw4: add a missing part about _limit_offset_rql in migration to v4 guide. (https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/767)
- cw4: add a missing topic about translations in migration to CW4 documentation (https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/840)
- cw4: add missing part about RecipientFinders in migration documentation (https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/804)
- deps: set minimum to last as much as possible
- fix a lot of sphinx typos in 4.0 changelog
- fix title length to please sphinx
- fix typo (to re-trigger build_doc job)
- fix: pin sphinx dependencies versions to be able to build with sphinx 4
- paginated_rset has been moved to cubicweb_web
- remove a file related to a removed module
- remove reference to a missing image in a documentation we don't maintain anymore
- remove reference to a removed file
- remove reference to an unexisting file
- remove windmill tutorial (#746.)
- sphinx dislike ~ for a subsubsection
- still build cubicweb.web documentation
- stuff have been moved to bwcompat
- update the museum tutorial to use cubicweb 4
- view module has been moved to cubicweb_web
- WARNING: Bullet list ends without a blank line; unexpected unindent.

🗜️ Refactoring
--------------

- deprecation: rdef has been renamed to relation_definition
- grab lxml version with importlib.metada, not pkg_resources
- make more readable by removing double-negative form
- remove old unused cubicweb/ext/html4zope.py file
- remove unused cubicweb/pylintext.py
- remove usage of imp when importing site_cubicweb
- remove weird old exception in wfobjs for dbapi
- rename RQL LIST function to GROUP_LIST (#1089)
- run flynt on code base to convert everything to f-strings
- serverctl: move s3 client creation in a dedicated function
- skeleton: this key is not used anymore
- skeleton: we don't use pylint anymore
- test: grab version version with importlib.metada, not pkg_resources
- this exception is not raised anymore
- use importlib instead of logilab.common.modutils
- use importlib.util.find_spec instead of pkgutil.find_loader
- use urllib.parse.urljoin instead of string formatting

🧪 Tests
-------

- devtools: fix the wrong filename for the built archive
- querier: add a test to see if we correctly cast boolean in sqlite (https://forge.extranet.logilab.fr/cubicweb/cubicweb/-/issues/1051)
- server: skip the LDAPSource tests

🔧 Build process or tool changes
-------------------------------

- ci: stop using old openapi-core version in test of instance creation
- deps: remove one for Python versions we dropped
- deps: upgrade waitress to 3.0.2 or more
- deps: upgrade yams to 2.0.0
- flake8: add --show-source option to flake8
- hg: ignore files generated by `tox`
- mypy: exclude a list of directories where typing is useless (migrations for eg)
- pyproject: use logilab-common 2.1.0 for Python 3.12+ compatibility
- readthedocs: add needed .readthedocs.yaml
- remove html_clean extra module
- remove useless packages
- replace setup.py with pyproject.toml
- stresstester: update copyright year
- tox: disable the specification of the minor version for basepython
- tox: synchronize version of black and black-run tasks

✨ Style
-------

- please black
- run black 25.1.0
