Releases: Archmonger/ServeStatic
Releases · Archmonger/ServeStatic
4.3.0
4.2.0
Added
- Added new Django setting
SERVESTATIC_USE_STATIC_ROOTto allow users to opt in to havingServeStaticscan all files withinSTATIC_ROOTat start-up. - Add JavaScript and CSS minification support to the
servestaticCLI command. - Add JavaScript and CSS minification support to the
servestaticthe Django storage backend.
4.1.0
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
zstdcompression on Python 3.14+. - Added support for the top-level
servestaticmodule to run as a Django app. - Added Django system checks to test for common misconfigurations.
- Added
allow_unsafe_symlinksconfiguration option for WSGI/ASGI - Added
SERVESTATIC_ALLOW_UNSAFE_SYMLINKSconfiguration option for Django. - Added
jxlimage support.
Changed
- Improved event-loop handling for ASGI file iterator.
- Installing
servestaticas a Django app is now the suggested configuration. A warning will appear if it is not detected inINSTALLED_APPSwhenDEBUGisTrue. servestatic.runserver_nostaticis no longer the recommended Django app installation path. This import path will be retained to easeWhiteNoisetoServeStaticmigration, but now the documentation recommends to use the top-levelservestaticmodule instead.
Fixed
- Fixed a range-request edge case where the last byte could be requested but would not be served.
Security
- Hardened
autorefreshpath 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
Added
- Added
servestaticCLI command for creating manifests, hashing, and compressing for static files.
Changed
- Minimum python version is now 3.10.
immutable_file_testnow defaults to a regex matching the file name format generated byservestatic --hash(for exampleapp.db8f2edc0c8a.js).
Deprecated
- Calling the compression API via
python -m servestatic.compressis now deprecated. Please use theservestatic --compressCLI instead.
Fixed
- Fix race condition where
ServeStaticcould throw an exception when shutting down async file threads.
3.1.0
Added
- Added support for running
ServeStaticin standalone mode (without an app).
3.0.2
Fixed
- Fixed a bug where
ServeStaticASGIwas preventing compatibility with thelifespanprotocol. All non-HTTP requests are now properly forwarded to the user's ASGI app.
3.0.1
Fixed
- Fixed compatibility between the two following Django settings:
SERVESTATIC_KEEP_ONLY_HASHED_FILESandSERVESTATIC_USE_MANIFEST
3.0.0
Changed
- Drop Django 3.2 and 4.1 support.
- Any errors from threads in the
servestatic.compresscommand are now raised. - Compression code has been refactored to match upstream (WhiteNoise).
Fixed
- Add
asgirefto dependencies to fix import error.
2.1.1
Fixed
- Make sure WSGI
SlicedFileis closed properly to prevent subtle bugs.
2.1.0
Added
- Support Python 3.13.
Changed
- Query strings are now preserved during HTTP redirection.