Changelog
### 4.4.3
```
------------------
* Added alert panel with warning when form is using file fields
without proper encoding type.
* Fixed overriding font-family for both light and dark themes.
* Restored compatibility with ``iptools.IpRangeList``.
* Limit ``E001`` check to likely error cases when the
``SHOW_TOOLBAR_CALLBACK`` has changed, but the toolbar's URL
paths aren't installed.
* Introduce helper function ``debug_toolbar_urls`` to
simplify installation.
* Moved "1rem" height/width for SVGs to CSS properties.
```
### 4.4.2
```
------------------
* Removed some CSS which wasn't carefully limited to the toolbar's elements.
* Stopped assuming that ``INTERNAL_IPS`` is a list.
* Added a section to the installation docs about running tests in projects
where the toolbar is being used.
```
### 4.4.1
```
------------------
* Pin metadata version to 2.2 to be compatible with Jazzband release
process.
```
### 4.4.0
```
------------------
* Raised the minimum Django version to 4.2.
* Automatically support Docker rather than having the developer write a
workaround for ``INTERNAL_IPS``.
* Display a better error message when the toolbar's requests
return invalid json.
* Render forms with ``as_div`` to silence Django 5.0 deprecation warnings.
* Stayed on top of pre-commit hook updates.
* Added :doc:`architecture documentation <architecture>` to help
on-board new contributors.
* Removed the static file path validation check in
:class:`StaticFilesPanel <debug_toolbar.panels.staticfiles.StaticFilesPanel>`
since that check is made redundant by a similar check in Django 4.0 and
later.
* Deprecated the ``OBSERVE_REQUEST_CALLBACK`` setting and added check
``debug_toolbar.W008`` to warn when it is present in
``DEBUG_TOOLBAR_SETTINGS``.
* Add a note on the profiling panel about using Python 3.12 and later
about needing ``--nothreading``
* Added ``IS_RUNNING_TESTS`` setting to allow overriding the
``debug_toolbar.E001`` check to avoid including the toolbar when running
tests.
* Fixed the bug causing ``'djdt' is not a registered namespace`` and updated
docs to help in initial configuration while running tests.
* Added a link in the installation docs to a more complete installation
example in the example app.
* Added check to prevent the toolbar from being installed when tests
are running.
* Added test to example app and command to run the example app's tests.
* Implemented dark mode theme and button to toggle the theme,
introduced the ``DEFAULT_THEME`` setting which sets the default theme
to use.
```
### 4.3.0
```
------------------
* Dropped support for Django 4.0.
* Added Python 3.12 to test matrix.
* Removed outdated third-party panels from the list.
* Avoided the unnecessary work of recursively quoting SQL parameters.
* Postponed context process in templates panel to include lazy evaluated
content.
* Fixed template panel to avoid evaluating ``LazyObject`` when not already
evaluated.
* Added support for Django 5.0.
* Refactor the ``utils.get_name_from_obj`` to simulate the behavior of
``django.contrib.admindocs.utils.get_view_name``.
* Switched from black to the `ruff formatter
<https://astral.sh/blog/the-ruff-formatter>`__.
* Changed the default position of the toolbar from top to the upper top
position.
* Added the setting, ``UPDATE_ON_FETCH`` to control whether the
toolbar automatically updates to the latest AJAX request or not.
It defaults to ``False``.
```
### 4.2.0
```
------------------
* Adjusted app directories system check to allow for nested template loaders.
* Switched from flake8, isort and pyupgrade to `ruff
<https://beta.ruff.rs/>`__.
* Converted cookie keys to lowercase. Fixed the ``samesite`` argument to
``djdt.cookie.set``.
* Converted ``StaticFilesPanel`` to no longer use a thread collector. Instead,
it collects the used static files in a ``ContextVar``.
* Added check ``debug_toolbar.W007`` to warn when JavaScript files are
resolving to the wrong content type.
* Fixed SQL statement recording under PostgreSQL for queries encoded as byte
strings.
* Patch the ``CursorWrapper`` class with a mixin class to support multiple
base wrapper classes.
```
### 4.1.0
```
------------------
* Improved SQL statement formatting performance. Additionally, fixed the
indentation of ``CASE`` statements and stopped simplifying ``.count()``
queries.
* Added support for the new STORAGES setting in Django 4.2 for static files.
* Added support for theme overrides.
* Reworked the cache panel instrumentation code to no longer attempt to undo
monkey patching of cache methods, as that turned out to be fragile in the
presence of other code which also monkey patches those methods.
* Update all timing code that used :py:func:`time.time()` to use
:py:func:`time.perf_counter()` instead.
* Made the check on ``request.META["wsgi.multiprocess"]`` optional, but
defaults to forcing the toolbar to render the panels on each request. This
is because it's likely an ASGI application that's serving the responses
and that's more likely to be an incompatible setup. If you find that this
is incorrect for you in particular, you can use the ``RENDER_PANELS``
setting to forcibly control this logic.
```
### 4.0.0
```
------------------
* Added Django 4.2 to the CI.
* Dropped support for Python 3.7.
* Fixed PostgreSQL raw query with a tuple parameter during on explain.
* Use ``TOOLBAR_LANGUAGE`` setting when rendering individual panels
that are loaded via AJAX.
* Add decorator for rendering toolbar views with ``TOOLBAR_LANGUAGE``.
* Removed the logging panel. The panel's implementation was too complex, caused
memory leaks and sometimes very verbose and hard to silence output in some
environments (but not others). The maintainers judged that time and effort is
better invested elsewhere.
* Added support for psycopg3.
* When ``ENABLE_STACKTRACE_LOCALS`` is ``True``, the stack frames' locals dicts
will be converted to strings when the stack trace is captured rather when it
is rendered, so that the correct values will be displayed in the rendered
stack trace, as they may have changed between the time the stack trace was
captured and when it is rendered.
```
### 3.8.1
```
------------------
* Fixed release process by re-adding twine to release dependencies. No
functional change.
```
### 3.8.0
```
------------------
* Added protection against division by 0 in timer.js
* Auto-update History panel for JavaScript ``fetch`` requests.
* Support `HTMX boosting <https://htmx.org/docs/#boosting>`__ and
`Turbo <https://turbo.hotwired.dev/>`__ pages.
* Simplify logic for ``Panel.enabled`` property by checking cookies earlier.
* Include panel scripts in content when ``RENDER_PANELS`` is set to True.
* Create one-time mouseup listener for each mousedown when dragging the
handle.
* Update package metadata to use Hatchling.
* Fix highlighting on history panel so odd rows are highlighted when
selected.
* Formalize support for Python 3.11.
* Added ``TOOLBAR_LANGUAGE`` setting.
```
Links
- PyPI: https://pypi.org/project/django-debug-toolbar
- Changelog: https://data.safetycli.com/changelogs/django-debug-toolbar/
This PR updates django-debug-toolbar from 3.7.0 to 4.4.3.
Changelog
### 4.4.3 ``` ------------------ * Added alert panel with warning when form is using file fields without proper encoding type. * Fixed overriding font-family for both light and dark themes. * Restored compatibility with ``iptools.IpRangeList``. * Limit ``E001`` check to likely error cases when the ``SHOW_TOOLBAR_CALLBACK`` has changed, but the toolbar's URL paths aren't installed. * Introduce helper function ``debug_toolbar_urls`` to simplify installation. * Moved "1rem" height/width for SVGs to CSS properties. ``` ### 4.4.2 ``` ------------------ * Removed some CSS which wasn't carefully limited to the toolbar's elements. * Stopped assuming that ``INTERNAL_IPS`` is a list. * Added a section to the installation docs about running tests in projects where the toolbar is being used. ``` ### 4.4.1 ``` ------------------ * Pin metadata version to 2.2 to be compatible with Jazzband release process. ``` ### 4.4.0 ``` ------------------ * Raised the minimum Django version to 4.2. * Automatically support Docker rather than having the developer write a workaround for ``INTERNAL_IPS``. * Display a better error message when the toolbar's requests return invalid json. * Render forms with ``as_div`` to silence Django 5.0 deprecation warnings. * Stayed on top of pre-commit hook updates. * Added :doc:`architecture documentation <architecture>` to help on-board new contributors. * Removed the static file path validation check in :class:`StaticFilesPanel <debug_toolbar.panels.staticfiles.StaticFilesPanel>` since that check is made redundant by a similar check in Django 4.0 and later. * Deprecated the ``OBSERVE_REQUEST_CALLBACK`` setting and added check ``debug_toolbar.W008`` to warn when it is present in ``DEBUG_TOOLBAR_SETTINGS``. * Add a note on the profiling panel about using Python 3.12 and later about needing ``--nothreading`` * Added ``IS_RUNNING_TESTS`` setting to allow overriding the ``debug_toolbar.E001`` check to avoid including the toolbar when running tests. * Fixed the bug causing ``'djdt' is not a registered namespace`` and updated docs to help in initial configuration while running tests. * Added a link in the installation docs to a more complete installation example in the example app. * Added check to prevent the toolbar from being installed when tests are running. * Added test to example app and command to run the example app's tests. * Implemented dark mode theme and button to toggle the theme, introduced the ``DEFAULT_THEME`` setting which sets the default theme to use. ``` ### 4.3.0 ``` ------------------ * Dropped support for Django 4.0. * Added Python 3.12 to test matrix. * Removed outdated third-party panels from the list. * Avoided the unnecessary work of recursively quoting SQL parameters. * Postponed context process in templates panel to include lazy evaluated content. * Fixed template panel to avoid evaluating ``LazyObject`` when not already evaluated. * Added support for Django 5.0. * Refactor the ``utils.get_name_from_obj`` to simulate the behavior of ``django.contrib.admindocs.utils.get_view_name``. * Switched from black to the `ruff formatter <https://astral.sh/blog/the-ruff-formatter>`__. * Changed the default position of the toolbar from top to the upper top position. * Added the setting, ``UPDATE_ON_FETCH`` to control whether the toolbar automatically updates to the latest AJAX request or not. It defaults to ``False``. ``` ### 4.2.0 ``` ------------------ * Adjusted app directories system check to allow for nested template loaders. * Switched from flake8, isort and pyupgrade to `ruff <https://beta.ruff.rs/>`__. * Converted cookie keys to lowercase. Fixed the ``samesite`` argument to ``djdt.cookie.set``. * Converted ``StaticFilesPanel`` to no longer use a thread collector. Instead, it collects the used static files in a ``ContextVar``. * Added check ``debug_toolbar.W007`` to warn when JavaScript files are resolving to the wrong content type. * Fixed SQL statement recording under PostgreSQL for queries encoded as byte strings. * Patch the ``CursorWrapper`` class with a mixin class to support multiple base wrapper classes. ``` ### 4.1.0 ``` ------------------ * Improved SQL statement formatting performance. Additionally, fixed the indentation of ``CASE`` statements and stopped simplifying ``.count()`` queries. * Added support for the new STORAGES setting in Django 4.2 for static files. * Added support for theme overrides. * Reworked the cache panel instrumentation code to no longer attempt to undo monkey patching of cache methods, as that turned out to be fragile in the presence of other code which also monkey patches those methods. * Update all timing code that used :py:func:`time.time()` to use :py:func:`time.perf_counter()` instead. * Made the check on ``request.META["wsgi.multiprocess"]`` optional, but defaults to forcing the toolbar to render the panels on each request. This is because it's likely an ASGI application that's serving the responses and that's more likely to be an incompatible setup. If you find that this is incorrect for you in particular, you can use the ``RENDER_PANELS`` setting to forcibly control this logic. ``` ### 4.0.0 ``` ------------------ * Added Django 4.2 to the CI. * Dropped support for Python 3.7. * Fixed PostgreSQL raw query with a tuple parameter during on explain. * Use ``TOOLBAR_LANGUAGE`` setting when rendering individual panels that are loaded via AJAX. * Add decorator for rendering toolbar views with ``TOOLBAR_LANGUAGE``. * Removed the logging panel. The panel's implementation was too complex, caused memory leaks and sometimes very verbose and hard to silence output in some environments (but not others). The maintainers judged that time and effort is better invested elsewhere. * Added support for psycopg3. * When ``ENABLE_STACKTRACE_LOCALS`` is ``True``, the stack frames' locals dicts will be converted to strings when the stack trace is captured rather when it is rendered, so that the correct values will be displayed in the rendered stack trace, as they may have changed between the time the stack trace was captured and when it is rendered. ``` ### 3.8.1 ``` ------------------ * Fixed release process by re-adding twine to release dependencies. No functional change. ``` ### 3.8.0 ``` ------------------ * Added protection against division by 0 in timer.js * Auto-update History panel for JavaScript ``fetch`` requests. * Support `HTMX boosting <https://htmx.org/docs/#boosting>`__ and `Turbo <https://turbo.hotwired.dev/>`__ pages. * Simplify logic for ``Panel.enabled`` property by checking cookies earlier. * Include panel scripts in content when ``RENDER_PANELS`` is set to True. * Create one-time mouseup listener for each mousedown when dragging the handle. * Update package metadata to use Hatchling. * Fix highlighting on history panel so odd rows are highlighted when selected. * Formalize support for Python 3.11. * Added ``TOOLBAR_LANGUAGE`` setting. ```Links
- PyPI: https://pypi.org/project/django-debug-toolbar - Changelog: https://data.safetycli.com/changelogs/django-debug-toolbar/