v0.156.1

plain-toolbar changelog

0.13.0 (2026-05-22)

What's changed

  • New draggable pill mode for the dev toolbar. On desktop the toolbar now defaults to a floating pill that docks to the full-width bar on click; the items panel is a separate toggle. The pill drags horizontally and snaps to left/center/right positions, so it stays out of the way of whatever you're looking at. Position and snap are pure CSS (translateX + a data-animate transition); UI state lives in data-* attributes (data-expanded, data-collapsed, data-position, data-items-open) for declarative styling and easy diffing. (ab572e0b32)
  • The body element now carries data-toolbar-fullbar (rather than the old data-toolbar-installed) only while the full bar is visible, so layouts can reserve bottom padding precisely when the bar needs it (pill mode does not).

Upgrade instructions

  • If your application templates checked body[data-toolbar-installed] to add padding around the toolbar, switch to body[data-toolbar-fullbar]. The new attribute reflects "the full bar is currently visible" rather than "the toolbar package is installed," which is the more useful signal now that the toolbar collapses to a pill by default.

0.12.7 (2026-05-12)

What's changed

  • Template and register_template_extension imports moved to the separate plain.templates package as part of the plain.templates carve-out. The user-visible toolbar API is unchanged. (19b622a7ca)
  • Pins plain>=0.143.0 and plain.templates>=0.1.0.

Upgrade instructions

  • No code changes required if you upgrade plain to 0.143.0 in the same step.

0.12.6 (2026-05-08)

What's changed

  • Copy traceback now formats output as a stdlib Python traceback (Traceback (most recent call last):\n...\n<ExceptionType>: <message>\n) instead of Exception: <message>\n\n<traceback>. The previous shape opened with Exception: which iOS data detectors would treat as a URL scheme and percent-encode the pasteboard, mangling pastes into mobile chat/notes. (20e87701a4)

Upgrade instructions

  • No changes required.

0.12.5 (2026-05-05)

What's changed

  • Exposes __version__ from importlib.metadata on plain.toolbar for version probes that don't want to scrape pip metadata. (c6cf6edb)

Upgrade instructions

  • No changes required.

0.12.4 (2026-04-01)

What's changed

  • Clicking the active tab button now collapses the panel instead of being a no-op. (704780b5b749)

Upgrade instructions

  • No changes required.

0.12.3 (2026-03-19)

What's changed

  • Selectable version text on desktop — the toolbar version string is now selectable text on desktop (for easy copying), while remaining a tappable toggle on mobile (826e7658fdae)

Upgrade instructions

  • No changes required.

0.12.2 (2026-03-10)

What's changed

  • Adopted PEP 695 type parameter syntax for register_toolbar_item (aa5b2db6e8ed)

Upgrade instructions

  • No changes required.

0.12.1 (2026-03-09)

What's changed

  • Mobile toolbar now shows a compact floating version pill instead of a full-width bar, with tap-to-expand for toolbar items (0e6a05649e00)
  • Fixed exception panel layout breaking with long exception strings by adding word wrapping and preventing the action buttons from shrinking (b7be62ff74ed)

Upgrade instructions

  • No changes required.

0.12.0 (2026-03-07)

What's changed

  • Removed the "URL args" display from the request detail panel since positional URL arguments are no longer supported (6eecc35)

Upgrade instructions

  • No changes required.

0.11.0 (2026-03-06)

What's changed

  • Updated request detail template to access view_class directly on resolver_match instead of through resolver_match.view.view_class, adapting to the view API changes in plain 0.118.0 (0d0c8a64cb45)

Upgrade instructions

  • Requires plain>=0.118.0.

0.10.3 (2026-02-26)

What's changed

  • Auto-formatted JavaScript assets and config files with updated linter configuration (028bb95c3ae3)

Upgrade instructions

  • No changes required.

0.10.2 (2026-02-12)

What's changed

  • Added toolbar/inject.html template for easier toolbar integration from other packages (9db8e0aa5d43)

Upgrade instructions

  • No changes required.

0.10.1 (2026-02-02)

What's changed

  • Replaced inline scrollbar-hiding styles with Tailwind's scrollbar-none utility class for cleaner markup (25c085ada9c6)

Upgrade instructions

  • No changes required.

0.10.0 (2026-01-15)

What's changed

  • The toolbar now displays on mobile devices instead of being hidden (ee7acaa)
  • Panel tabs are horizontally scrollable on mobile for better touch navigation (ee7acaa)
  • Panel content area uses a taller height (50vh) on mobile for improved usability (ee7acaa)
  • Resize handle is hidden on mobile since touch-based resizing is not practical (ee7acaa)
  • Buttons and icons are sized larger on mobile for better touch targets (ee7acaa)

Upgrade instructions

  • No changes required

0.9.0 (2026-01-13)

What's changed

  • Added comprehensive README documentation for the package (8f1aed3)

Upgrade instructions

  • No changes required

0.8.2 (2025-12-12)

What's changed

  • Exception traceback frame badges now use more distinct colors to improve visual differentiation between app, plain, plainx, python, and third-party frames (3911c11)

Upgrade instructions

  • No changes required

0.8.1 (2025-12-05)

What's changed

  • Toolbar tabs now display in registration order instead of being sorted alphabetically (ef81fb8)
  • Toolbar expand and close button icons are now more subtle with improved sizing (ab038bd)

Upgrade instructions

  • No changes required

0.8.0 (2025-12-04)

What's changed

  • Exception toolbar now displays rich traceback frames with expandable source code context instead of raw traceback text (9c4415e)
  • Frames are categorized by source (app, plain, plainx, python, third-party) with color-coded badges (9c4415e)
  • App frames are expanded by default while framework/library frames are collapsed (9c4415e)
  • Local variables are displayed for each frame when DEBUG=True (9c4415e)
  • Frame filenames link directly to VS Code at the exact line number (9c4415e)
  • Toggle between rich frame view and raw traceback text with the "View raw" button (9c4415e)

Upgrade instructions

  • No changes required

0.7.1 (2025-10-31)

What's changed

  • The main toolbar script now includes nonce="{{ request.csp_nonce }}" for better Content Security Policy compliance (10f642a)

Upgrade instructions

  • No changes required

0.7.0 (2025-10-29)

What's changed

  • The toolbar JavaScript now uses CSP-compliant methods by avoiding inline style injection and using CSS classes instead (784f3dd)
  • Exception template uses data- attributes and event listeners instead of inline onclick handlers for better CSP compliance (784f3dd)
  • Script tags now include nonce="{{ request.csp_nonce }}" to work with Content Security Policy (784f3dd)

Upgrade instructions

  • No changes required

0.6.0 (2025-10-24)

What's changed

  • Added explicit package_label = "plaintoolbar" to the package configuration (d1783dd)

Upgrade instructions

  • No changes required

0.5.3 (2025-10-22)

What's changed

  • Fixed toolbar visibility check to properly use get_request_impersonator() helper instead of accessing the impersonator attribute directly (548a385)

Upgrade instructions

  • No changes required

0.5.2 (2025-10-06)

What's changed

  • Added comprehensive type annotations to improve IDE support and type checking (c87ca27)

Upgrade instructions

  • No changes required

0.5.1 (2025-10-02)

What's changed

  • The toolbar now uses get_request_user() helper to check user authentication, improving compatibility with different auth implementations (2663c49)

Upgrade instructions

  • No changes required

0.5.0 (2025-09-30)

What's changed

  • The toolbar now uses settings.VERSION instead of the deprecated settings.APP_VERSION (4c5f216)

Upgrade instructions

  • If you were accessing settings.APP_VERSION in any toolbar customizations, update to use settings.VERSION instead

0.4.0 (2025-09-30)

What's changed

  • Renamed ToolbarPanel to ToolbarItem and register_toolbar_panel to register_toolbar_item for better clarity (79654db)
  • The toolbar now receives the full template context instead of just the request, allowing toolbar items to access context variables like object (821bfc6)
  • Removed admin URL link from the request panel to reduce clutter (5e665fd)
  • Admin link and impersonation UI moved to a new AdminToolbarItem button (821bfc6)

Upgrade instructions

  • Replace any usage of ToolbarPanel with ToolbarItem in your custom toolbar extensions
  • Replace any usage of @register_toolbar_panel decorator with @register_toolbar_item
  • Update any custom toolbar items to expect context instead of request in __init__(): change def __init__(self, request) to def __init__(self, context) and add self.request = context["request"]
  • The panel_template_name attribute replaces template_name (though template_name still works for backward compatibility)

0.3.0 (2025-09-25)

What's changed

  • Updated toolbar module autodiscovery to use the new packages_registry.autodiscover_modules() method (b0b610d)

Upgrade instructions

  • No changes required

0.2.0 (2025-09-19)

What's changed

  • Minimum Python version raised to 3.13 (d86e307)

Upgrade instructions

  • Upgrade your Python environment to Python 3.13 or later

0.1.1 (2025-08-28)

What's changed

  • Improved null safety when checking user and impersonator attributes in toolbar rendering (90568bd)

Upgrade instructions

  • No changes required

0.1.0 (2025-08-27)

What's changed

  • Initial release of plain-toolbar as a standalone package (e49d54b)
  • Fixed URL pattern and name display to include quotes in the request toolbar (aa759c7)

Upgrade instructions

  • No changes required