Skip to content

Releases: Archmonger/ServeStatic

4.3.0

10 Apr 01:55
fec6d57

Choose a tag to compare

Fixed

  • Fix a bug where the Django collectstatic command could crash when encountering static files that reference a URL containing query parameters.

4.2.0

02 Apr 03:03
a73d13d

Choose a tag to compare

Added

  • Added new Django setting SERVESTATIC_USE_STATIC_ROOT to allow users to opt in to having ServeStatic scan all files within STATIC_ROOT at start-up.
  • Add JavaScript and CSS minification support to the servestatic CLI command.
  • Add JavaScript and CSS minification support to the servestatic the Django storage backend.

4.1.0

07 Mar 09:01
e7cf37a

Choose a tag to compare

Tip

This release includes some changes to the default behavior of ServeStatic for security hardening. If you are affected by any of these changes, please read the relevant sections in the documentation on allow_unsafe_symlinks.

Added

  • Added support for zstd compression on Python 3.14+.
  • Added support for the top-level servestatic module to run as a Django app.
  • Added Django system checks to test for common misconfigurations.
  • Added allow_unsafe_symlinks configuration option for WSGI/ASGI
  • Added SERVESTATIC_ALLOW_UNSAFE_SYMLINKS configuration option for Django.
  • Added jxl image support.

Changed

  • Improved event-loop handling for ASGI file iterator.
  • Installing servestatic as a Django app is now the suggested configuration. A warning will appear if it is not detected in INSTALLED_APPS when DEBUG is True.
  • servestatic.runserver_nostatic is no longer the recommended Django app installation path. This import path will be retained to ease WhiteNoise to ServeStatic migration, but now the documentation recommends to use the top-level servestatic module instead.

Fixed

  • Fixed a range-request edge case where the last byte could be requested but would not be served.

Security

  • Hardened autorefresh path matching to prevent potential path traversal or path clobbering.
  • Hardened static file resolution to block symlink breakout by default. If your symlinks point to files outside of your static root, it is highly recommended to copy them instead.

4.0.0

06 Mar 00:04
9769dd8

Choose a tag to compare

Added

  • Added servestatic CLI command for creating manifests, hashing, and compressing for static files.

Changed

  • Minimum python version is now 3.10.
  • immutable_file_test now defaults to a regex matching the file name format generated by servestatic --hash (for example app.db8f2edc0c8a.js).

Deprecated

  • Calling the compression API via python -m servestatic.compress is now deprecated. Please use the servestatic --compress CLI instead.

Fixed

  • Fix race condition where ServeStatic could throw an exception when shutting down async file threads.

3.1.0

11 Jun 00:29
a270833

Choose a tag to compare

Added

  • Added support for running ServeStatic in standalone mode (without an app).

3.0.2

04 Jun 05:29
8bb2e6f

Choose a tag to compare

Fixed

  • Fixed a bug where ServeStaticASGI was preventing compatibility with the lifespan protocol. All non-HTTP requests are now properly forwarded to the user's ASGI app.

3.0.1

02 Mar 09:57
7cc14a2

Choose a tag to compare

Fixed

  • Fixed compatibility between the two following Django settings: SERVESTATIC_KEEP_ONLY_HASHED_FILES and SERVESTATIC_USE_MANIFEST

3.0.0

11 Jan 00:16
e447ba4

Choose a tag to compare

Changed

  • Drop Django 3.2 and 4.1 support.
  • Any errors from threads in the servestatic.compress command are now raised.
  • Compression code has been refactored to match upstream (WhiteNoise).

Fixed

  • Add asgiref to dependencies to fix import error.

2.1.1

27 Oct 21:57
b7d9f99

Choose a tag to compare

Fixed

  • Make sure WSGI SlicedFile is closed properly to prevent subtle bugs.

2.1.0

03 Oct 02:54
8d4010a

Choose a tag to compare

Added

  • Support Python 3.13.

Changed

  • Query strings are now preserved during HTTP redirection.