Skip to content

Changelog

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.

Unreleased

  • Nothing (yet)!

2.0.1 - 2024-09-13

Fixed

  • Fix crash when running manage.py collectstatic if Django's settings.py:STATIC_ROOT is a Path object.

2.0.0 - 2024-09-12

Added

  • Django settings.py:SERVESTATIC_USE_MANIFEST utilize the Django manifest rather than scanning the filesystem.
    • When also using ServeStatic's CompressedManifestStaticFilesStorage backend, ServeStatic will no longer need to call os.stat.

Changed

  • Minimum python version is now 3.9.
  • Django setings.py:SERVESTATIC_USE_FINDERS will now discover files strictly using the finders API. Previously, ServeStatic would also scan settings.py:STATIC_ROOT for files not found by the finders API.
  • Async file reading is now done via threads rather than aiofiles due recent performance tests.
  • BaseServeStatic has been renamed to ServeStaticBase.
  • AsgiFileServer has been renamed to FileServerASGI.
  • Lots of internal refactoring to improve performance, code quality, and maintainability.

1.2.0 - 2024-08-30

Added

  • Verbose Django 404 error page when settings.py:DEBUG is True

Fixed

  • Fix Django compatibility with third-party sync middleware.
    • ServeStatic Django middleware now only runs in async mode to avoid clashing with Django's internal usage of asgiref.AsyncToSync.
  • Respect Django settings.py:FORCE_SCRIPT_NAME configuration value.

1.1.0 - 2024-08-27

Added

  • Files are now compressed within a thread pool to increase performance.

Fixed

  • Fix Django StreamingHttpResponse must consume synchronous iterators warning.
  • Fix Django bug where file paths could fail to be followed on Windows.

1.0.0 - 2024-05-08

Changed