When using the ``wagtail start`` command to make a new site, users will now be greeted with a proper starter page. Thanks to Timothy Allen and Scott Cranfill for pulling this off!
* Added ``max_count`` option on page models to limit the number of pages of a particular type that can be created (Dan Braghis)
* Document and image choosers now show the document / image's collection (Alejandro Garza, Janneke Janssen)
* New ``image_url`` template tag allows to generate dynamic image URLs, so image renditions are being created outside the main request which improves performance. Requires extra configuration, see :doc:`/advanced_topics/images/image_serve_view` (Yannick Chabbert, Dan Braghis).
* Added ability to run individual tests through tox (Benjamin Bach)
* Collection listings are now ordered by name (Seb Brown)
* Added ``file_hash`` field to documents (Karl Hobley, Dan Braghis)
* Added last login to the user overview (Noah B Johnson)
* Changed design of image editing page (Janneke Janssen, Ben Enright)
* Added Slovak character map for JavaScript slug generation (Andy Chosak)
* Make documentation links on welcome page work for prereleases (Matt Westcott)
* Allow overridden ``copy()`` methods in ``Page`` subclasses to be called from the page copy view (Robert Rollins)
* Users without a preferred language set on their profile now use language selected by Django's ``LocaleMiddleware`` (Benjamin Bach)
* Added hooks to customise the actions menu on the page create/edit views (Matt Westcott)
* Cleanup: Use ``functools.partial()`` instead of ``django.utils.functional.curry()`` (Sergey Fedoseev)
* Added ``before_move_page`` and ``after_move_page`` hooks (Maylon Pedroso)
* Bulk deletion button for snippets is now hidden until items are selected (Karl Hobley)
Projects with a custom image model (see :ref:`custom_image_model`) created on Wagtail 1.7 or earlier are likely to have one or more migrations that refer to the (now-deleted) ``wagtailimages.Filter`` model. In Wagtail 2.4, the migrations that defined this model have been squashed, which may result in the error ``ValueError: Related model 'wagtailimages.Filter' cannot be resolved`` when bringing up a new instance of the database. To rectify this, check your project's migrations for ``ForeignKey`` references to ``wagtailimages.Filter``, and change them to ``IntegerField`` definitions. For example, the line: