plain.observer 0.11.0__tar.gz → 0.11.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of plain.observer might be problematic. Click here for more details.

Files changed (35) hide show
  1. {plain_observer-0.11.0 → plain_observer-0.11.2}/PKG-INFO +1 -1
  2. {plain_observer-0.11.0 → plain_observer-0.11.2}/plain/observer/CHANGELOG.md +22 -0
  3. {plain_observer-0.11.0 → plain_observer-0.11.2}/plain/observer/cli.py +2 -2
  4. {plain_observer-0.11.0 → plain_observer-0.11.2}/plain/observer/templates/observer/traces.html +31 -30
  5. {plain_observer-0.11.0 → plain_observer-0.11.2}/pyproject.toml +3 -3
  6. {plain_observer-0.11.0 → plain_observer-0.11.2}/.gitignore +0 -0
  7. {plain_observer-0.11.0 → plain_observer-0.11.2}/LICENSE +0 -0
  8. {plain_observer-0.11.0 → plain_observer-0.11.2}/README.md +0 -0
  9. {plain_observer-0.11.0 → plain_observer-0.11.2}/plain/observer/AGENTS.md +0 -0
  10. {plain_observer-0.11.0 → plain_observer-0.11.2}/plain/observer/README.md +0 -0
  11. {plain_observer-0.11.0 → plain_observer-0.11.2}/plain/observer/__init__.py +0 -0
  12. {plain_observer-0.11.0 → plain_observer-0.11.2}/plain/observer/admin.py +0 -0
  13. {plain_observer-0.11.0 → plain_observer-0.11.2}/plain/observer/config.py +0 -0
  14. {plain_observer-0.11.0 → plain_observer-0.11.2}/plain/observer/core.py +0 -0
  15. {plain_observer-0.11.0 → plain_observer-0.11.2}/plain/observer/default_settings.py +0 -0
  16. {plain_observer-0.11.0 → plain_observer-0.11.2}/plain/observer/logging.py +0 -0
  17. {plain_observer-0.11.0 → plain_observer-0.11.2}/plain/observer/migrations/0001_initial.py +0 -0
  18. {plain_observer-0.11.0 → plain_observer-0.11.2}/plain/observer/migrations/0002_trace_share_created_at_trace_share_id_trace_summary_and_more.py +0 -0
  19. {plain_observer-0.11.0 → plain_observer-0.11.2}/plain/observer/migrations/0003_span_plainobserv_span_id_e7ade3_idx.py +0 -0
  20. {plain_observer-0.11.0 → plain_observer-0.11.2}/plain/observer/migrations/0004_trace_app_name_trace_app_version.py +0 -0
  21. {plain_observer-0.11.0 → plain_observer-0.11.2}/plain/observer/migrations/0005_log_log_plainobserv_trace_i_fcfb7d_idx_and_more.py +0 -0
  22. {plain_observer-0.11.0 → plain_observer-0.11.2}/plain/observer/migrations/0006_remove_log_logger.py +0 -0
  23. {plain_observer-0.11.0 → plain_observer-0.11.2}/plain/observer/migrations/__init__.py +0 -0
  24. {plain_observer-0.11.0 → plain_observer-0.11.2}/plain/observer/models.py +0 -0
  25. {plain_observer-0.11.0 → plain_observer-0.11.2}/plain/observer/otel.py +0 -0
  26. {plain_observer-0.11.0 → plain_observer-0.11.2}/plain/observer/templates/observer/partials/log.html +0 -0
  27. {plain_observer-0.11.0 → plain_observer-0.11.2}/plain/observer/templates/observer/partials/span.html +0 -0
  28. {plain_observer-0.11.0 → plain_observer-0.11.2}/plain/observer/templates/observer/trace.html +0 -0
  29. {plain_observer-0.11.0 → plain_observer-0.11.2}/plain/observer/templates/observer/trace_detail.html +0 -0
  30. {plain_observer-0.11.0 → plain_observer-0.11.2}/plain/observer/templates/observer/trace_share.html +0 -0
  31. {plain_observer-0.11.0 → plain_observer-0.11.2}/plain/observer/templates/toolbar/observer.html +0 -0
  32. {plain_observer-0.11.0 → plain_observer-0.11.2}/plain/observer/templates/toolbar/observer_button.html +0 -0
  33. {plain_observer-0.11.0 → plain_observer-0.11.2}/plain/observer/toolbar.py +0 -0
  34. {plain_observer-0.11.0 → plain_observer-0.11.2}/plain/observer/urls.py +0 -0
  35. {plain_observer-0.11.0 → plain_observer-0.11.2}/plain/observer/views.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: plain.observer
3
- Version: 0.11.0
3
+ Version: 0.11.2
4
4
  Summary: On-page telemetry and observability tools for Plain.
5
5
  Author-email: Dave Gaeddert <dave.gaeddert@dropseed.dev>
6
6
  License-Expression: BSD-3-Clause
@@ -1,5 +1,27 @@
1
1
  # plain-observer changelog
2
2
 
3
+ ## [0.11.2](https://github.com/dropseed/plain/releases/plain-observer@0.11.2) (2025-10-20)
4
+
5
+ ### What's changed
6
+
7
+ - Package configuration migrated from `tool.uv.dev-dependencies` to the standard `dependency-groups.dev` format ([1b43a3a](https://github.com/dropseed/plain/commit/1b43a3a272))
8
+
9
+ ### Upgrade instructions
10
+
11
+ - No changes required
12
+
13
+ ## [0.11.1](https://github.com/dropseed/plain/releases/plain-observer@0.11.1) (2025-10-10)
14
+
15
+ ### What's changed
16
+
17
+ - Trace list items now update the URL when clicked, allowing direct linking to specific traces ([9f29b68](https://github.com/dropseed/plain/commit/9f29b68a87))
18
+ - Improved trace sidebar layout by moving the timestamp to the bottom right and creating better visual hierarchy ([9f29b68](https://github.com/dropseed/plain/commit/9f29b68a87))
19
+ - Updated diagnose command prompt text to be less personal in tone ([c82d67b](https://github.com/dropseed/plain/commit/c82d67bfcf))
20
+
21
+ ### Upgrade instructions
22
+
23
+ - No changes required
24
+
3
25
  ## [0.11.0](https://github.com/dropseed/plain/releases/plain-observer@0.11.0) (2025-10-08)
4
26
 
5
27
  ### What's changed
@@ -564,9 +564,9 @@ def diagnose(
564
564
  raise click.ClickException(f"Trace with ID '{trace_id}' not found")
565
565
 
566
566
  prompt_lines: list[str] = [
567
- "I have an OpenTelemetry trace data JSON from a Plain application. Analyze it for performance issues or improvements.",
567
+ "Below is OpenTelemetry trace data JSON from a Plain application. Analyze it for performance issues or improvements.",
568
568
  "",
569
- "Focus on easy and obvious wins first and foremost. You have access to the codebase, so make sure you look at it before suggesting anything! If there is nothing obvious, that's ok -- tell me that and ask whether there are specific things we should look deeper into.",
569
+ "Focus on easy and obvious wins first and foremost. You have access to the codebase, so make sure you look at it before suggesting anything! If there is nothing obvious, that's ok -- say that and ask whether there are specific things we should look deeper into.",
570
570
  "",
571
571
  "If potential code changes are found, briefly explain them and ask whether we should implement them.",
572
572
  "",
@@ -88,6 +88,7 @@
88
88
  hx-get="{{ trace_item.get_absolute_url() }}"
89
89
  hx-target="#trace"
90
90
  hx-swap="innerHTML"
91
+ hx-push-url="true"
91
92
  class="block w-full text-left p-3 transition-colors hover:bg-white/5 focus:outline-none focus:bg-white/5"
92
93
  data-trace-id="{{ trace_item.trace_id }}">
93
94
  <div class="flex items-center justify-between gap-2">
@@ -98,9 +99,6 @@
98
99
  <div class="text-xs font-medium text-white/30 font-mono truncate">{{ trace_item.trace_id }}</div>
99
100
  {% endif %}
100
101
  </div>
101
- <div class="flex items-center gap-1.5 flex-shrink-0">
102
- <span class="text-white/40 text-xs" title="{{ trace_item.start_time|localtime }}">{{ trace_item.start_time|timesince }} ago</span>
103
- </div>
104
102
  </div>
105
103
  <div class="mt-1 space-y-1">
106
104
  {% if trace_item.summary %}<div class="text-xs text-white/60">{{ trace_item.summary }}</div>{% endif %}
@@ -114,35 +112,38 @@
114
112
  <div class="text-xs text-white/30 font-mono truncate">{{ trace_item.trace_id }}</div>
115
113
  </div>
116
114
  {% endif %}
117
- {% if trace_item.user_id or trace_item.session_id or trace_item.app_version %}
118
- <div class="flex items-center gap-3 text-xs text-white/50">
119
- {% if trace_item.user_id %}
120
- <span class="flex items-center gap-1 flex-shrink-0">
121
- <svg class="w-3 h-3 text-white/70" fill="currentColor" viewBox="0 0 16 16">
122
- <path d="M3 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1zm5-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6"/>
123
- </svg>
124
- {{ trace_item.user_id }}
125
- </span>
126
- {% endif %}
127
- {% if trace_item.session_id %}
128
- <span class="flex items-center gap-1 min-w-0 flex-shrink">
129
- <svg class="w-3 h-3 text-white/70 flex-shrink-0" fill="currentColor" viewBox="0 0 16 16">
130
- <path d="M13.5 3a.5.5 0 0 1 .5.5V11H2V3.5a.5.5 0 0 1 .5-.5zm-11-1A1.5 1.5 0 0 0 1 3.5V12h14V3.5A1.5 1.5 0 0 0 13.5 2zM0 12.5h16a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 12.5"/>
131
- </svg>
132
- <span class="truncate" title="{{ trace_item.session_id }}">{{ trace_item.session_id }}</span>
133
- </span>
134
- {% endif %}
135
- {% if trace_item.app_version %}
136
- <span class="flex items-center gap-1 flex-shrink-0">
137
- <svg class="w-3 h-3 text-white/70" fill="currentColor" viewBox="0 0 16 16">
138
- <path d="M6 4.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm-1 0a.5.5 0 1 0-1 0 .5.5 0 0 0 1 0z"/>
139
- <path d="M2 1h4.586a1 1 0 0 1 .707.293l7 7a1 1 0 0 1 0 1.414l-4.586 4.586a1 1 0 0 1-1.414 0l-7-7A1 1 0 0 1 1 6.586V2a1 1 0 0 1 1-1zm0 5.586 7 7L13.586 9l-7-7H2v4.586z"/>
140
- </svg>
141
- {{ trace_item.app_version }}
142
- </span>
115
+ <div class="flex items-center justify-between gap-3 text-xs text-white/50">
116
+ {% if trace_item.user_id or trace_item.session_id or trace_item.app_version %}
117
+ <div class="flex items-center gap-3">
118
+ {% if trace_item.user_id %}
119
+ <span class="flex items-center gap-1 flex-shrink-0">
120
+ <svg class="w-3 h-3 text-white/70" fill="currentColor" viewBox="0 0 16 16">
121
+ <path d="M3 14s-1 0-1-1 1-4 6-4 6 3 6 4-1 1-1 1zm5-6a3 3 0 1 0 0-6 3 3 0 0 0 0 6"/>
122
+ </svg>
123
+ {{ trace_item.user_id }}
124
+ </span>
125
+ {% endif %}
126
+ {% if trace_item.session_id %}
127
+ <span class="flex items-center gap-1 min-w-0 flex-shrink">
128
+ <svg class="w-3 h-3 text-white/70 flex-shrink-0" fill="currentColor" viewBox="0 0 16 16">
129
+ <path d="M13.5 3a.5.5 0 0 1 .5.5V11H2V3.5a.5.5 0 0 1 .5-.5zm-11-1A1.5 1.5 0 0 0 1 3.5V12h14V3.5A1.5 1.5 0 0 0 13.5 2zM0 12.5h16a1.5 1.5 0 0 1-1.5 1.5h-13A1.5 1.5 0 0 1 0 12.5"/>
130
+ </svg>
131
+ <span class="truncate" title="{{ trace_item.session_id }}">{{ trace_item.session_id }}</span>
132
+ </span>
133
+ {% endif %}
134
+ {% if trace_item.app_version %}
135
+ <span class="flex items-center gap-1 flex-shrink-0">
136
+ <svg class="w-3 h-3 text-white/70" fill="currentColor" viewBox="0 0 16 16">
137
+ <path d="M6 4.5a1.5 1.5 0 1 1-3 0 1.5 1.5 0 0 1 3 0zm-1 0a.5.5 0 1 0-1 0 .5.5 0 0 0 1 0z"/>
138
+ <path d="M2 1h4.586a1 1 0 0 1 .707.293l7 7a1 1 0 0 1 0 1.414l-4.586 4.586a1 1 0 0 1-1.414 0l-7-7A1 1 0 0 1 1 6.586V2a1 1 0 0 1 1-1zm0 5.586 7 7L13.586 9l-7-7H2v4.586z"/>
139
+ </svg>
140
+ {{ trace_item.app_version }}
141
+ </span>
142
+ {% endif %}
143
+ </div>
143
144
  {% endif %}
145
+ <span class="flex-shrink-0 text-white/40" title="{{ trace_item.start_time|localtime }}">{{ trace_item.start_time|timesince }} ago</span>
144
146
  </div>
145
- {% endif %}
146
147
  </div>
147
148
  </a>
148
149
  </li>
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "plain.observer"
3
- version = "0.11.0"
3
+ version = "0.11.2"
4
4
  description = "On-page telemetry and observability tools for Plain."
5
5
  authors = [{name = "Dave Gaeddert", email = "dave.gaeddert@dropseed.dev"}]
6
6
  license = "BSD-3-Clause"
@@ -12,8 +12,8 @@ dependencies = [
12
12
  "opentelemetry-sdk>=1.34.1",
13
13
  ]
14
14
 
15
- [tool.uv]
16
- dev-dependencies = [
15
+ [dependency-groups]
16
+ dev = [
17
17
  "plain.pytest<1.0.0",
18
18
  ]
19
19
 
File without changes