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!)
3.1.0 - 2025-06-10¶
Added¶
- Added support for running
ServeStaticin standalone WSGI/ASGI mode (without an app).
3.0.2 - 2025-06-03¶
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 - 2025-03-02¶
Fixed¶
- Fixed compatibility between the two following Django settings:
SERVESTATIC_KEEP_ONLY_HASHED_FILESandSERVESTATIC_USE_MANIFEST
3.0.0 - 2025-01-10¶
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 - 2024-10-27¶
Fixed¶
- Make sure WSGI
SlicedFileis closed properly to prevent subtle bugs.
2.1.0 - 2024-10-02¶
Added¶
- Support Python 3.13.
Changed¶
- Query strings are now preserved during HTTP redirection.
2.0.1 - 2024-09-13¶
Fixed¶
- Fix crash when running
manage.py collectstaticwhen Django'ssettings.py:STATIC_ROOTis aPathobject.
2.0.0 - 2024-09-12¶
Added¶
- Django
settings.py:SERVESTATIC_USE_MANIFESTwill allow ServeStatic to use the Django manifest rather than scanning the filesystem.- When also using ServeStatic's
CompressedManifestStaticFilesStoragebackend, ServeStatic will no longer need to callos.stat.
- When also using ServeStatic's
Changed¶
- Minimum python version is now 3.9.
- Django
setings.py:SERVESTATIC_USE_FINDERSwill now discover files strictly using the finders API. Previously, ServeStatic would also scansettings.py:STATIC_ROOTfor files not found by the finders API. - Async file reading is now done via threads rather than
aiofilesdue recent performance tests. BaseServeStatichas been renamed toServeStaticBase.AsgiFileServerhas been renamed toFileServerASGI.- Lots of internal refactoring to improve performance, code quality, and maintainability.
1.2.0 - 2024-08-30¶
Added¶
- Verbose Django
404error page whensettings.py:DEBUGisTrue
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.
- ServeStatic Django middleware now only runs in async mode to avoid clashing with Django's internal usage of
- Respect Django
settings.py:FORCE_SCRIPT_NAMEconfiguration 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 iteratorswarning. - Fix Django bug where file paths could fail to be followed on Windows.
1.0.0 - 2024-05-08¶
Changed¶
- Forked from
whitenoiseto add ASGI support.