plain-observer changelog

0.25.0 (2026-01-13)

What's changed

  • Expanded README documentation with comprehensive usage examples, settings reference, and FAQs (da37a78)

Upgrade instructions

  • No changes required

0.24.0 (2026-01-13)

What's changed

  • Replaced AGENTS.md with a structured SKILL.md file providing a step-by-step performance optimization workflow for AI agents (b592c32)

Upgrade instructions

  • No changes required

0.23.2 (2025-12-22)

What's changed

  • Fixed HTMX URL handling in traces template to use explicit named URLs instead of relative paths for improved reliability when observer is mounted at non-root paths (6096411)

Upgrade instructions

  • No changes required

0.23.1 (2025-12-12)

What's changed

  • Added CSP nonce support to the observer.js script tag in trace templates for improved Content Security Policy compatibility (2961042)

Upgrade instructions

  • No changes required

0.23.0 (2025-12-09)

What's changed

  • The trace sharing feature has been removed, including the share URL generation and public shared trace view (5fba11a)
  • Added a "Copy JSON" button to the trace detail view that fetches and copies the trace data as formatted JSON to the clipboard (44a9d62)
  • The "Clear Traces" action now deletes all traces instead of only unshared ones (5fba11a)

Upgrade instructions

  • No changes required

0.22.0 (2025-12-04)

What's changed

  • Improved type annotations in OTel sampler to use proper Attributes type from OpenTelemetry (ac1eeb0)
  • Added explicit foreign key ID field annotations for Log model to improve type safety (ac1eeb0)

Upgrade instructions

  • No changes required

0.21.0 (2025-11-24)

What's changed

  • Updated views to use AuthView and HTMXView base classes instead of mixins for improved type safety (569afd6)
  • Updated request data access to use request.form_data instead of request.data for form submissions (90332a9)

Upgrade instructions

  • No changes required

0.20.0 (2025-11-21)

What's changed

  • Internal model field type updated from ForeignKey to ForeignKeyField to align with the Plain framework naming conventions (8010204)

Upgrade instructions

  • No changes required

0.19.1 (2025-11-17)

What's changed

  • QuerySet type annotations no longer use ClassVar, reverting to direct annotations for improved compatibility (1c624ff)

Upgrade instructions

  • No changes required

0.19.0 (2025-11-14)

What's changed

  • Models now use explicit reverse relationship descriptors (e.g., Trace.spans, Trace.logs) instead of related_name parameters, providing better type hints and IDE support (a4b6309)
  • Removed unnecessary type ignore comments that are no longer needed with explicit reverse descriptors (a4b6309)

Upgrade instructions

  • No changes required

0.18.0 (2025-11-13)

What's changed

  • QuerySet type annotations now use ClassVar for improved type checking and IDE support (c3b00a6)

Upgrade instructions

  • No changes required

0.17.0 (2025-11-13)

What's changed

  • Model fields now use type stubs (from plain.models.types) with proper type annotations for improved IDE support and type checking (c8f40fc)
  • Removed unnecessary type casts in CLI code that are no longer needed with proper field type annotations (c8f40fc)

Upgrade instructions

  • No changes required

0.16.0 (2025-11-12)

What's changed

  • Fixed type checking errors and warnings by adding type ignore comments for ORM operations that are inherently difficult to type (f4dbcef)

Upgrade instructions

  • No changes required

0.15.0 (2025-11-03)

What's changed

  • The plain observer diagnose command has been removed (fdb9e80)
  • CLI command descriptions updated for consistency and brevity (fdb9e80)
  • Updated AGENTS.md to reflect removal of diagnose command (786b7a0)

Upgrade instructions

  • No changes required

0.14.0 (2025-10-29)

What's changed

  • Updated CSP configuration example in documentation to use the new DEFAULT_RESPONSE_HEADERS format with string templates instead of callable functions (5199383)

Upgrade instructions

  • No changes required

0.13.0 (2025-10-29)

What's changed

  • Inline JavaScript and CSS extracted to separate asset files for Content Security Policy (CSP) compatibility (784f3dd)
  • Added CSP nonce support to inline scripts for improved security (784f3dd)
  • Added comprehensive CSP configuration documentation in README, including required frame-ancestors 'self' directive for toolbar panel (784f3dd)
  • Span and log indentation now uses CSS classes with data attributes instead of inline styles (784f3dd)
  • Timeline bar positioning now uses CSS custom properties set via JavaScript instead of inline styles (784f3dd)
  • Copy share URL button now uses data attributes and event delegation instead of inline onclick handlers (784f3dd)
  • Toolbar iframe now uses HTML attributes instead of inline styles (784f3dd)

Upgrade instructions

  • No changes required

0.12.0 (2025-10-24)

What's changed

  • Admin viewsets now use presets instead of displays for predefined queryset filters (0ecc60f)
  • Removed logger field from Log admin interface for simplified display (ae43138)
  • Removed /admin/.* from default ignored URL patterns, allowing admin pages to be traced (daadf1a)

Upgrade instructions

  • If you have custom admin viewsets using the displays attribute, rename it to presets
  • If you reference the display property in custom admin code (e.g., self.display), rename it to self.preset

0.11.2 (2025-10-20)

What's changed

  • Package configuration migrated from tool.uv.dev-dependencies to the standard dependency-groups.dev format (1b43a3a)

Upgrade instructions

  • No changes required

0.11.1 (2025-10-10)

What's changed

  • Trace list items now update the URL when clicked, allowing direct linking to specific traces (9f29b68)
  • Improved trace sidebar layout by moving the timestamp to the bottom right and creating better visual hierarchy (9f29b68)
  • Updated diagnose command prompt text to be less personal in tone (c82d67b)

Upgrade instructions

  • No changes required

0.11.0 (2025-10-08)

What's changed

  • Observer can now be enabled in DEBUG mode using an Observer HTTP header (e.g., Observer: persist or Observer: summary), which takes precedence over cookies (cba149a)
  • Added validation for observer mode values that raises helpful errors in DEBUG mode when invalid values are provided (cba149a)
  • Refactored Observer class to accept cookies and headers as constructor parameters, with new from_request() and from_otel_context() factory methods for improved testability (cba149a)
  • Added AGENTS.md file with helpful commands for AI agents working with Plain Observer (cba149a)

Upgrade instructions

  • No changes required

0.10.1 (2025-10-08)

What's changed

  • Fixed content negotiation priority in trace detail and shared views to prefer HTML over JSON by default (00212835aa)

Upgrade instructions

  • No changes required

0.10.0 (2025-10-07)

What's changed

  • Model configuration now uses model_options descriptor instead of class Meta for improved consistency with Plain framework patterns (17a378d)
  • Custom QuerySet classes are now defined as descriptors on the model class instead of being configured in Meta (2578301)
  • Internal model metadata split into separate model_options and _model_meta attributes for better organization (73ba469)

Upgrade instructions

  • No changes required

0.9.1 (2025-10-06)

What's changed

  • Added comprehensive type annotations throughout the package for improved IDE support and type checking (ffb8624)
  • Package has been validated with 100% type coverage and added to the type validation script (ffb8624)

Upgrade instructions

  • No changes required

0.9.0 (2025-09-30)

What's changed

  • Settings renamed from APP_NAME to NAME and APP_VERSION to VERSION for consistency with Plain conventions (4c5f216)
  • Trace detail and shared views now use request.get_preferred_type() for improved content negotiation (b105ba4)

Upgrade instructions

  • No changes required

0.8.0 (2025-09-30)

What's changed

  • The toolbar panel class has been renamed from ToolbarPanel to ToolbarItem for better clarity and consistency (79654db)
  • The template_name attribute has been renamed to panel_template_name in toolbar items (79654db)
  • The registration decorator has been renamed from register_toolbar_panel to register_toolbar_item (79654db)

Upgrade instructions

  • If you have custom toolbar panels, rename your class from inheriting ToolbarPanel to ToolbarItem
  • If you use the template_name attribute in your toolbar items, rename it to panel_template_name
  • If you use the @register_toolbar_panel decorator, change it to @register_toolbar_item

0.7.0 (2025-09-12)

What's changed

  • Model manager renamed from objects to query throughout the codebase for consistency with Plain framework conventions (037a239)
  • Updated internal QuerySet configuration to use queryset_class instead of manager_class in model Meta (bbaee93)
  • Simplified manager initialization by removing explicit objects assignment in favor of Meta configuration (6b60a00)

Upgrade instructions

  • Replace any direct usage of Trace.objects with Trace.query in your code
  • Replace any direct usage of Span.objects with Span.query in your code
  • Replace any direct usage of Log.objects with Log.query in your code

0.6.2 (2025-09-09)

What's changed

  • Improved traces sidebar layout by simplifying the display structure and making better use of space (da789d19)

Upgrade instructions

  • No changes required

0.6.1 (2025-09-09)

What's changed

  • Log messages are now stored in their formatted form instead of as raw log records, improving display consistency and performance (b646699)
  • Observer log handler now copies the formatter from the app logger to ensure consistent log formatting (b646699)
  • Simplified log display template by removing redundant level display element (b646699)

Upgrade instructions

  • No changes required

0.6.0 (2025-09-09)

What's changed

  • Added comprehensive log capture and display during trace recording, with logs shown in a unified timeline alongside spans (9bfe938)
  • Added new Log model with admin interface for managing captured log entries (9bfe938)
  • Observer now automatically enables debug logging during trace recording to capture more detailed information (731196)
  • Added app_name and app_version fields to trace records for better application identification (2870636)
  • Added span count display in trace detail views (4d22c10)
  • Enhanced database query counting to only include queries with actual query text, providing more accurate metrics (3d102d3)
  • Improved trace limit cleanup logic to properly maintain the configured trace limit (e9d124b)
  • Added source code location attributes support for spans with file path, line number, and function information (da36a17)
  • Updated Python version requirement to 3.13 minimum (d86e307)

Upgrade instructions

  • No changes required

0.5.0 (2025-09-03)

What's changed

  • Extended observer summary mode cookie duration from 1 day to 1 week for improved user experience (bbe8a8a)
  • Changed admin navigation icon for Spans from "diagram-3" to "activity" (2aac07d)

Upgrade instructions

  • No changes required

0.4.0 (2025-08-27)

What's changed

  • Toolbar functionality has been moved to a new plain.toolbar package, with observer-specific toolbar code now in a dedicated toolbar.py file (e49d54b)

Upgrade instructions

  • No changes required

0.3.7 (2025-08-22)

What's changed

  • Improved admin interface code organization by reordering navigation icon and model field declarations (5a6479a)

Upgrade instructions

  • No changes required

0.3.6 (2025-07-31)

What's changed

  • Added database index on span_id field in the Span model for improved query performance (f836542)
  • Database tracing is now suppressed when querying for span links to prevent recursive tracing loops (f836542)

Upgrade instructions

  • No changes required

0.3.5 (2025-07-30)

What's changed

  • Improved observer toolbar button text clarity for empty states - "Recording" now shows as "Recording (no summary)" and "Summary" shows as "No summary" (143c2a6)
  • Fixed observer auto-enable functionality by adding POST handler for summary mode actions (cc415e0)

Upgrade instructions

  • No changes required

0.3.4 (2025-07-30)

What's changed

  • Fixed URL configuration examples in installation documentation to use ObserverRouter instead of string path (f55ac7d)
  • Enhanced README with table of contents, PyPI installation link, and post-installation usage instructions (4ebecd1)

Upgrade instructions

  • No changes required

0.3.3 (2025-07-25)

What's changed

  • Added --print option to the plain observer diagnose command to print prompts without running agents (9721331)
  • The plain observer diagnose command now uses the shared prompt_agent utility for better consistency (de1fa72)
  • Added comprehensive installation instructions to the README including package installation, URL configuration, and migration steps (950939b)

Upgrade instructions

  • No changes required

0.3.2 (2025-07-25)

What's changed

  • The diagnose agent command now instructs the AI to examine the codebase before making suggestions (f5ae388)

Upgrade instructions

  • No changes required

0.3.1 (2025-07-23)

What's changed

  • Added delete actions to the admin interface for both Traces and Spans, allowing bulk deletion of selected items (0d85670)
  • Added bootstrap icons to admin navigation (activity icon for Traces, diagram-3 icon for Spans) (9e9f8b0)

Upgrade instructions

  • No changes required

0.3.0 (2025-07-22)

What's changed

  • Database models now use the new PrimaryKeyField instead of BigAutoField for primary keys (4b8fa6a)
  • Admin interface updated to use id instead of pk for ordering and references (4b8fa6a)

Upgrade instructions

  • No changes required

0.2.0 (2025-07-21)

What's changed

  • Added comprehensive CLI commands for trace management including plain observer traces, plain observer trace <id>, and plain observer spans (90f916b)
  • Added trace sharing functionality allowing traces to be shared via public URLs (90f916b)
  • Added plain observer diagnose command with JSON and URL output options for troubleshooting (71936e88a5)
  • Improved trace detail UI with better formatting and navigation (90f916b)
  • Removed the custom trace detail UI from the admin interface, now uses standard admin detail view (0c277fc)
  • Enhanced raw agent prompt output styling (684f208)

Upgrade instructions

  • No changes required

0.1.0 (2025-07-19)

What's changed

  • Initial release of plain-observer package providing OpenTelemetry-based observability and monitoring for Plain applications (b0224d0)
  • Added real-time trace monitoring with summary and persist modes via signed cookies (b0224d0)
  • Added admin interface for viewing detailed trace information and spans (b0224d0)
  • Added toolbar integration showing performance summaries for current requests (b0224d0)
  • Observer can now combine with existing OpenTelemetry trace providers instead of replacing them (7e55779)

Upgrade instructions

  • No changes required