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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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