mirror of
https://github.com/openobserve/openobserve.git
synced 2026-11-05 00:09:35 +00:00
4c080dfd5fdd17cb0e01ddcbb95e6900172e138e
2225
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
4c080dfd5f |
fix: alert graph edges not rendering due to timestamp equality (#10347)
### **User description** ## Problem Fixes openobserve/o2-enterprise#1229 Alert graphs were not rendering edges (arrows) when nodes had identical timestamps, causing the topology graph to show nodes without connections. ## Root Cause The edge creation logic used strict timestamp inequality (`<`, `>`), which failed when alerts fired at the exact same microsecond. This commonly occurs with: - High-frequency alerting - Bulk alert ingestion - Simulated/test data with fixed timestamps - Clock resolution limitations ## Solution Added timestamp tiebreaker logic using node index (insertion order) for all three edge creation scenarios: 1. **Same-service temporal edges**: Connect to most recent previous node, use index as tiebreaker 2. **Cross-service temporal edges**: Connect to chronologically closest node, use index as tiebreaker 3. **Service dependency edges**: Connect related services, use index as tiebreaker ## Changes - `src/service/alerts/incidents.rs`: Updated 3 edge creation locations with timestamp + index comparisons ## Impact - ✅ Edges now created even when alerts have identical timestamps - ✅ Deterministic behavior based on insertion order - ✅ Graph visualization shows proper alert flow with arrows - ✅ Root cause analysis now possible ## Testing - Verified code compiles successfully - Manual testing recommended with alerts at same timestamp ___ ### **PR Type** Bug fix ___ ### **Description** - Add tiebreaker for equal timestamps - Ensure deterministic topology edge creation - Fix missing incident graph arrows ___ ### Diagram Walkthrough ```mermaid flowchart LR A["New alert node added"] --> B["Find candidate prior/next nodes"] B --> C["Compare (first_fired_at, node_index)"] C --> D["Create temporal/dependency edges deterministically"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>incidents.rs</strong><dd><code>Deterministic edge creation for equal timestamps</code> </dd></summary> <hr> src/service/alerts/incidents.rs <ul><li>Add index-based tiebreaker for same-service edges<br> <li> Allow dependency edges when timestamps equal<br> <li> Refine cross-service temporal matching with index<br> <li> Update ordering keys to include node index</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/10347/files#diff-2411d921fd8b8783c049deea11da06726ed986550d405477d486234892353ca9">+17/-5</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ |
||
|
|
d7c0874084 |
fix: vrl warning message on visualization page (#10343)
### **User description** - #10281 ___ ### **PR Type** Bug fix, Enhancement ___ ### **Description** - Disable VRL editor for non-table visualizations - Show inline warning instead of blocking switch - Remove forced table chart on VRL usage ___ ### Diagram Walkthrough ```mermaid flowchart LR A["SearchBar VRL editor"] B["isVrlEditorDisabled computed"] C["Read-only editor state"] D["Inline disabled warning"] E["Chart type switch validation"] F["Allow non-table without forcing table"] A -- "adds" --> B B -- "controls" --> C B -- "renders" --> D E -- "removes VRL blocking logic" --> F ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table> <tr> <td> <details> <summary><strong>SearchBar.vue</strong><dd><code>Disable VRL editor and show warning</code> </dd></summary> <hr> web/src/plugins/logs/SearchBar.vue <ul><li>Bind VRL editor <code>readOnly</code> to <code>isVrlEditorDisabled</code><br> <li> Add warning banner when VRL is disabled<br> <li> Compute disable state for visualize non-table<br> <li> Export <code>isVrlEditorDisabled</code> to template</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/10343/files#diff-81893de4edf186b0556f610acb280c87baa2ffe67d3b48a60a866094c7635baf">+37/-1</a> </td> </tr> </table></td></tr><tr><td><strong>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>VisualizeLogsQuery.vue</strong><dd><code>Remove VRL-based chart type restriction</code> </dd></summary> <hr> web/src/plugins/logs/VisualizeLogsQuery.vue <ul><li>Delete blocking logic when switching from table<br> <li> Stop forcing <code>dashboardPanelData.data.type = "table"</code><br> <li> Keep only select-* validation before type change</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/10343/files#diff-979b01d943d58c5d70faeeac5948b7f02f0b2392a12b84ef07ba7f7393ab0261">+0/-14</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ |
||
|
|
2e4fb93291 |
fix: RUM session event details drawer UI improvements (#10329)
### **PR Type** Enhancement, Bug fix ___ ### **Description** - Add tabbed RUM event details drawer - Centralize RUM event formatting utilities - Improve sidebar filtering and null safety - Sync dashboard chart zoom to time range ___ ### Diagram Walkthrough ```mermaid flowchart LR A["RUM Session Viewer UI"] B["Event detail drawer tabs (Overview/Network/Attributes)"] C["Shared formatter composable (`useEventFormatters`)"] D["Network resources list from related events"] E["Clipboard copy + JSON highlighting"] F["Dashboards emit `update:dateTime` on zoom"] G["Sidebar event type filter behavior"] H["Session email null-safety"] A -- "refactor + UX" --> B B -- "uses" --> C B -- "derives" --> D B -- "adds" --> E A -- "interactions" --> F A -- "filtering" --> G A -- "stability" --> H ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>14 files</summary><table> <tr> <td><strong>useEventFormatters.ts</strong><dd><code>Add shared formatting helpers for RUM events</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10329/files#diff-d301f514502d418578addfb8a9332f18193ec77414fe2de5f86584eaccf89a43">+88/-0</a> </td> </tr> <tr> <td><strong>LogsHighLighting.vue</strong><dd><code>Import highlighting stylesheet via scoped SCSS</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10329/files#diff-4ef4ac0444004add270de4da30fa39bafd95bd7f1c408d28cf6737655fc152eb">+4/-2</a> </td> </tr> <tr> <td><strong>EventDetailDrawerContent.vue</strong><dd><code>Redesign drawer with tabs, copy, network</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10329/files#diff-e31bfc4c2d218ac4beaa9110939974f0461a818a7d5d169279e2ff58dec8136c">+479/-353</a></td> </tr> <tr> <td><strong>EventDetailsSection.vue</strong><dd><code>Add reusable key-value section renderer</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10329/files#diff-eb9d64194e4354ce8babdb843029087b4d0813100046f6de6fd2605816eede58">+67/-0</a> </td> </tr> <tr> <td><strong>EventTypeBadge.vue</strong><dd><code>Add reusable event type badge component</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10329/files#diff-78d3b36f54018d0cc31a0ed96800588bacb5b3f6e608803f32e704e576d89001">+49/-0</a> </td> </tr> <tr> <td><strong>KeyValueRow.vue</strong><dd><code>Add reusable labeled key-value row component</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10329/files#diff-978f05f4c50530f6d772579c54478e1aef10b7f7b066f2769e9d34c62c488895">+53/-0</a> </td> </tr> <tr> <td><strong>PerformanceMetrics.vue</strong><dd><code>Add wrapper component for performance metrics</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10329/files#diff-7c9e28cabc9dd4189346dadc26dcb4def95a9265557144e99128a9f3b951c21e">+60/-0</a> </td> </tr> <tr> <td><strong>ActionPerformanceMetrics.vue</strong><dd><code>Add action performance metric cards and statuses</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10329/files#diff-cd6683a885104c9e5074ab1c2b97bed5275cffa688da905f539bef98efdb4ec8">+98/-0</a> </td> </tr> <tr> <td><strong>ErrorPerformanceMetrics.vue</strong><dd><code>Add error performance metric cards and statuses</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10329/files#diff-1fc102647ba527cfd553f4c0fd723f1b72fabbd85bad7518e0a826a09d858442">+76/-0</a> </td> </tr> <tr> <td><strong>MetricCard.vue</strong><dd><code>Add generic metric card with formatting</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10329/files#diff-3666ababe7e5a472c88da967ba6e5e632dfd907abb8555a6bb4baeabc0215e32">+168/-0</a> </td> </tr> <tr> <td><strong>ResourcePerformanceMetrics.vue</strong><dd><code>Add resource timing breakdown metric cards</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10329/files#diff-9dfcf79c8b3c1b1c0e43bc8e65c90a6cd6b75c84b7de8250f18ba985ef36ad55">+128/-0</a> </td> </tr> <tr> <td><strong>ViewPerformanceMetrics.vue</strong><dd><code>Add web vitals and view metric cards</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10329/files#diff-0ddb74b6ef8bdb8656c47fb4065e4add8ba853f5834fbf3e59087623b054aa2b">+172/-0</a> </td> </tr> <tr> <td><strong>ErrorsDashboard.vue</strong><dd><code>Emit zoom events to update time range</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10329/files#diff-46138c05241c5e0911a0feba39a21dbb8452453c0e26a1d00c3493cc579f07b2">+8/-0</a> </td> </tr> <tr> <td><strong>WebVitalsDashboard.vue</strong><dd><code>Emit zoom events and support dateTime updates</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10329/files#diff-bbb15649f6ecf4b2968a8173091ef8b2a21bfe39bff8e08f91566bca189cca09">+9/-1</a> </td> </tr> </table></details></td></tr><tr><td><strong>Miscellaneous</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>zincutils.ts</strong><dd><code>Adjust formatting and utility function style</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10329/files#diff-d3d59688cccdcc6c84ebe88b698c6910030abecc3125f4c0ef81b0df023699ba">+26/-14</a> </td> </tr> </table></details></td></tr><tr><td><strong>Bug fix</strong></td><td><details><summary>2 files</summary><table> <tr> <td><strong>PlayerEventsSidebar.vue</strong><dd><code>Improve multiselect UX and filtering logic</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10329/files#diff-a7d04eb87cd7588ba4811d79c6d32696a58d737a24931258329be4f96cee7610">+39/-10</a> </td> </tr> <tr> <td><strong>SessionViewer.vue</strong><dd><code>Guard session email access with optional chaining</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10329/files#diff-9f7a183be1e2cfcb3c3c852c059f66003dd4f3f586421b012e1b835724929ca1">+1/-1</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ |
||
|
|
a64fbcc397 |
fix: use created at as unique key (#10338)
### **PR Type**
Bug fix
___
### **Description**
- Fix table row identity using `created_at`
___
### Diagram Walkthrough
```mermaid
flowchart LR
t1["IncidentAlertTriggersTable.vue"]
t2["QTable row-key uses `created_at`"]
t1 -- "sets row-key" --> t2
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>IncidentAlertTriggersTable.vue</strong><dd><code>Use
`created_at` as QTable row key</code>
</dd></summary>
<hr>
web/src/components/alerts/IncidentAlertTriggersTable.vue
- Update QTable `row-key` from `alert_id` to `created_at`
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10338/files#diff-8c7abdab1feb590b04dc4fd067d0791902eb9cf41b627bcfce03e074cbc4b06a">+1/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
a1306602e6 |
fix: add missing detectPrebuiltType import in AddDestination.vue (#10341)
### **User description**
## Summary
- Fixes custom destination edit form failing to load
- Adds missing `detectPrebuiltType` import from
`usePrebuiltDestinations()` composable
## Problem
When editing a custom alert destination, the edit form gets stuck
showing a loading spinner indefinitely because:
1. `detectPrebuiltType` function is called at lines 833 and 855 in
`AddDestination.vue`
2. The function was never imported from the composable
3. This causes a ReferenceError, corrupting component state
4. `formData.destination_type` never gets set
5. The form renders a loading spinner instead of the edit fields
**Prebuilt destinations** (Slack, Discord, etc.) were unaffected because
they have `metadata.prebuilt_type` set and return early in the detection
logic before reaching the buggy code path.
## Fix
Added `detectPrebuiltType` to the destructured imports:
```diff
const {
availableTypes,
popularTypes,
validateCredentials,
testDestination,
createDestination,
updateDestination,
generatePreview,
isTestInProgress,
- lastTestResult
+ lastTestResult,
+ detectPrebuiltType
} = usePrebuiltDestinations();
```
## Test Plan
- [x] Ran `P1: Custom Destination - Create and Edit flow` test locally -
**PASSED**
- [x] Verified custom destination can be created
- [x] Verified custom destination can be edited (previously failing)
- [x] Verified custom destination can be deleted
Fixes #10340
___
### **PR Type**
Bug fix
___
### **Description**
- Import `detectPrebuiltType` from composable
- Fix custom destination edit loading spinner
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["AddDestination.vue"]
B["usePrebuiltDestinations() composable"]
C["detectPrebuiltType import added"]
D["Custom destination edit form loads"]
A -- "destructure import" --> B
B -- "exposes helper" --> C
C -- "prevents ReferenceError" --> D
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>AddDestination.vue</strong><dd><code>Add missing
composable helper import</code>
</dd></summary>
<hr>
web/src/components/alerts/AddDestination.vue
<ul><li>Add <code>detectPrebuiltType</code> to destructured imports<br>
<li> Prevent runtime ReferenceError during type detection</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10341/files#diff-61b295458e13049a538f5014124855d58dce664dfbd644b57a964a37a07b7a3f">+2/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
dfb84780a1 |
fix: issue 10319 values api for sql mode multi stream selection (#10323)
issue #10319 ### **PR Type** Bug fix, Tests ___ ### **Description** - Add fallback for unparseable UNION queries - Prevent empty `query_context` in sqlMode - Add tests for UNION parse/unparse safety ___ ### Diagram Walkthrough ```mermaid flowchart LR UI["IndexList.vue openFilterCreator"] Parser["fnParsedSQL(query)"] Unparser["fnUnparsedSQL(parsedSQL)"] DetectFail["Detect empty columns/from"] Fallback["Fallback: SELECT * FROM \"[INDEX_NAME]\""] ValuesAPI["Values API field query context"] UI -- "parse query" --> Parser Parser -- "parsedSQL" --> Unparser Unparser -- "query_context" --> DetectFail DetectFail -- "if unparseable" --> Fallback Fallback -- "safe query_context" --> ValuesAPI ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Tests</strong></td><td><table> <tr> <td> <details> <summary><strong>logsUtils.spec.ts</strong><dd><code>Add UNION parsing/unparsing regression tests</code> </dd></summary> <hr> web/src/test/unit/composables/logsUtils.spec.ts <ul><li>Add unit tests for UNION/UNION ALL parsing<br> <li> Cover unsupported <code>UNION ALL BY NAME</code> cases<br> <li> Assert <code>fnUnparsedSQL</code> returns empty on errors<br> <li> Simulate openFilterCreator fallback flow behavior</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/10323/files#diff-4492d9abd2bc95897c46f6ed177f3298bda9f1419dc91b07e2aa1409b598bb7f">+245/-0</a> </td> </tr> </table></td></tr><tr><td><strong>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>IndexList.vue</strong><dd><code>Add fallback query_context for UNION parse failures</code> </dd></summary> <hr> web/src/plugins/logs/IndexList.vue <ul><li>Detect SQL parser failures via empty <code>columns</code>/<code>from</code><br> <li> Provide <code>SELECT * FROM "[INDEX_NAME]"</code> fallback<br> <li> Ensure <code>query_context</code> is non-empty for values flow</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/10323/files#diff-08f058f883b659e713e606991a7ea37ae1ff016b7cccef970489ab5840dc3d09">+12/-0</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ |
||
|
|
7d9da6d47f |
fix: Logs correlation traces list UI improvements (#10328)
### **PR Type** Enhancement, Bug fix ___ ### **Description** - Replace correlated traces table with `TraceBlock` list - Add `View in Traces` navigation button - Centralize trace metadata formatting in `useTraces` - Add i18n strings for correlation actions ___ ### Diagram Walkthrough ```mermaid flowchart LR U["`useTraces`: `formatTracesMetaData` + service colors"] C["TelemetryCorrelationDashboard: correlated traces UI"] B["`TraceBlock` list rendering"] D["Open single trace: `traceDetails` route"] T["Open traces list: `traces` route"] I["Traces `Index.vue`: reuse formatter"] L["Locales: add `viewInTraces` strings"] C -- "formats API hits" --> U I -- "formats API hits" --> U C -- "renders traces" --> B C -- "open trace in new tab" --> D C -- "view all correlated traces" --> T C -- "button/tooltip text" --> L ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>3 files</summary><table> <tr> <td><strong>useTraces.ts</strong><dd><code>Add reusable trace metadata formatter</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10328/files#diff-1cf652f1e074a135294702959cf09fd96a1ed13e661ee3bc85266dbb1909c1a7">+74/-0</a> </td> </tr> <tr> <td><strong>TelemetryCorrelationDashboard.vue</strong><dd><code>Replace traces table with `TraceBlock` list</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10328/files#diff-b77a766fa0094f641873071a8f13c73704933b941f387ed105e85a4e59efdb38">+98/-289</a></td> </tr> <tr> <td><strong>Index.vue</strong><dd><code>Reuse `useTraces` trace formatting logic</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10328/files#diff-952e26660e4d6aadd292ea2ef7b314e139a4f516d0b3931e20d42d6394700d07">+8/-43</a> </td> </tr> </table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>11 files</summary><table> <tr> <td><strong>de.json</strong><dd><code>Add correlation “View in Traces” strings</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10328/files#diff-78f24ecb2dbcfc38fdf3ec22b2559a5b40d236ea689d1c55f5d3e87168310264">+3/-1</a> </td> </tr> <tr> <td><strong>en.json</strong><dd><code>Add correlation “View in Traces” strings</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10328/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+2/-0</a> </td> </tr> <tr> <td><strong>es.json</strong><dd><code>Add correlation “View in Traces” strings</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10328/files#diff-ac2a2167b8b973e3f776f9fe3b43bef4576470d8ad33f3d7cfaff6edff0e5778">+3/-1</a> </td> </tr> <tr> <td><strong>fr.json</strong><dd><code>Add correlation “View in Traces” strings</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10328/files#diff-db80e762b88ddf183820c050cdc6b215e6b02b365b5e73f5152af46b0d26f1a2">+3/-1</a> </td> </tr> <tr> <td><strong>it.json</strong><dd><code>Add correlation “View in Traces” strings</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10328/files#diff-2de78074a5f887afddce60d694ead9322e6ab223eb70251c13819f3028bdc70d">+3/-1</a> </td> </tr> <tr> <td><strong>ja.json</strong><dd><code>Add correlation “View in Traces” strings</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10328/files#diff-092e49c5f9fbc1b539ab9c2866d108d0ce1d314022b4c294eb4611b285e7bbd3">+3/-1</a> </td> </tr> <tr> <td><strong>ko.json</strong><dd><code>Add correlation “View in Traces” strings</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10328/files#diff-50e27ca1b4825a5026f3a251bfcf79c97cab07cfade2ebd512d332453d707c48">+3/-1</a> </td> </tr> <tr> <td><strong>nl.json</strong><dd><code>Add correlation “View in Traces” strings</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10328/files#diff-a1706021687ae5d8a1c006c49eab3946174fecd895f9b70a89c2e76d97250906">+3/-1</a> </td> </tr> <tr> <td><strong>pt.json</strong><dd><code>Add correlation “View in Traces” strings</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10328/files#diff-38e804f64cb5e0e451849fc84e9b46e53c954a4a4263d51c18665ad45f4b4815">+3/-1</a> </td> </tr> <tr> <td><strong>tr.json</strong><dd><code>Add correlation “View in Traces” strings</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10328/files#diff-6f0f131e9e2591480c4c5d1eaffc72d02dc31cbd8d3f90d8f012f08cabac8818">+3/-1</a> </td> </tr> <tr> <td><strong>zh.json</strong><dd><code>Add correlation “View in Traces” strings</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10328/files#diff-8818055db58f83230aeea4ebfd4cec31d924e8c47b6f91298e356959ab25339e">+3/-1</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |
||
|
|
7df19cb00a |
fix: incident graphs and service graphs improvements (#10318)
### **User description**
## Changes
### 1. Reduce alert graph edge explosion
- Modified temporal edge logic to prevent O(n²) growth
- Changed same-service edges to only connect to most recent previous
alert
- Changed cross-service temporal edges to connect to chronologically
closest alert
- **Impact**: 88% reduction in edges (16 instead of 136 for 17 alerts)
### 2. Improve correlation error handling
- Added fallback mechanism when service registry is empty
- Better error messages for correlation failures
- Enhanced incident detail view with clearer feedback
**Files modified:**
- `src/service/alerts/incidents.rs`
- Incident correlation handling
___
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Prevent alert topology edge explosion
- Add frontend fallback incident correlation
- Improve correlation tab empty/error UX
- Share time/stream state across tabs
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Incident alerts ingested"]
B["Topology enrichment"]
C["Same-service temporal chain"]
D["Cross-service edges"]
E["ServiceGraph tab shared state"]
F["Incident detail correlation"]
G["FQN-priority drift detection"]
H["Frontend fallback correlation"]
A -- "build graph" --> B
B -- "temporal edges" --> C
B -- "dependency edges" --> D
E -- "share datetime/stream" --> B
F -- "fetch correlated streams" --> G
G -- "if not drift" --> H
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>convertTraceData.ts</strong><dd><code>Simplify
service-graph tree request metrics</code>
</dd></summary>
<hr>
web/src/utils/traces/convertTraceData.ts
<ul><li>Use incoming edge metrics for non-root<br> <li> Root sums
outgoing edge request counts<br> <li> Default root error rate to
zero<br> <li> Keep connection count as in+out</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10318/files#diff-f236b4107f8b11c8281dec8279238d02309a3c958bd1ee2076716df56b00c057">+5/-6</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>incidents.rs</strong><dd><code>Limit temporal topology
edges to nearest alerts</code>
</dd></summary>
<hr>
src/service/alerts/incidents.rs
<ul><li>Same-service temporal edge targets most recent prior<br> <li>
Keep full ServiceDependency edges when SG edge exists<br> <li> For
non-dependent services, link to closest later alert<br> <li> Avoid
duplicate edges with type-specific checks</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10318/files#diff-2411d921fd8b8783c049deea11da06726ed986550d405477d486234892353ca9">+80/-47</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>IncidentDetailDrawer.vue</strong><dd><code>Add fallback
correlation and improve tab states</code>
</dd></summary>
<hr>
web/src/components/alerts/IncidentDetailDrawer.vue
<ul><li>Show refresh header only when streams exist<br> <li> Unify
error/no-data states with clearer messaging<br> <li> Detect FQN priority
changes post-incident creation<br> <li> Build frontend fallback
correlation from schema mapping</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10318/files#diff-6973d58a5f49658b07d3533d4db5d32cc6430433b51732481e7497243dadb0b0">+217/-72</a></td>
</tr>
<tr>
<td>
<details>
<summary><strong>ServiceGraph.vue</strong><dd><code>Share Service Graph
time/stream with traces state</code>
</dd></summary>
<hr>
web/src/plugins/traces/ServiceGraph.vue
<ul><li>Bind datetime picker to <code>searchObj.data.datetime</code><br>
<li> Use shared <code>searchObj.data.stream.*</code> for stream
lists<br> <li> Remove local stream/time state and duplicate stream
loading<br> <li> Simplify empty-state guidance and code styling</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10318/files#diff-da1aabfbe74e57c02db16fc5d3e00cd76dc76bf0ad9b57f9dfda7d6d9da06129">+50/-181</a></td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: sai nikhil kethe <nikhil@openobserve.ai>
|
||
|
|
41d0c591a6 | fix: if stream size is NaN, show 0 MB instead of showing NaN on UI (#10239) | ||
|
|
035bbea25d |
refactor: redesign the query inspector with the colorize query in query-inspector (#10249)
### **PR Type**
Enhancement
___
### **Description**
- Add Monaco-based query colorization utility
- Redesign QueryInspector component UI layout
- Implement search highlighting and copy notifications
- Make colorization reactive on mount and data changes
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>colorizeQuery.ts</strong><dd><code>Add query
colorization utility</code>
</dd></summary>
<hr>
web/src/utils/query/colorizeQuery.ts
<ul><li>Register PromQL, VRL, and SQL languages<br> <li> Implement async
<code>colorizeQuery</code> function<br> <li> Prevent duplicate language
registrations<br> <li> Handle colorization errors gracefully</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10249/files#diff-58f1e967db31a700d3ad2387bd4c9330a14995f4e6f48bcaf0ee5074816c2c8f">+42/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>QueryInspector.vue</strong><dd><code>Redesign
QueryInspector UI and logic</code>
</dd></summary>
<hr>
web/src/components/dashboards/QueryInspector.vue
<ul><li>Revamp UI with styled layout and search input<br> <li> Integrate
<code>colorizeQuery</code> for syntax highlighting<br> <li> Add
search-term highlighting and copy notifications<br> <li> Reactively
update colorization on mount/watch<br> <li> Include custom scrollbar
styling</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10249/files#diff-ffe50532d3e00a45f4fd570bf0e852658b382fc05982f6c0afca2a7e8940316d">+318/-73</a></td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: ktx-vaidehi <vaidehi.akhani@kiara.tech>
Co-authored-by: ktx-akshay <akshay.patil@kiara.tech>
|
||
|
|
054cf84e9b |
fix: Logs telemetry correlation traces improvements (#10316)
### **PR Type** Enhancement, Bug fix ___ ### **Description** - Embed `TraceDetails` into correlation traces - Add standalone/embedded modes to `TraceDetails` - Enable “Open in Traces” navigation - Update i18n for new label ___ ### Diagram Walkthrough ```mermaid flowchart LR tcd["TelemetryCorrelationDashboard (correlation UI)"] td["TraceDetails (standalone/embedded)"] tds["TraceDetailsSidebar (mode-aware)"] rtr["Router: `traces` route"] i18n["Locales: `traces.openInTraces`"] tcd -- "passes trace id, spans, time range" --> td td -- "renders sidebar with `parentMode`" --> tds td -- "expand/open in traces" --> rtr td -- "uses label" --> i18n ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>2 files</summary><table> <tr> <td><strong>TelemetryCorrelationDashboard.vue</strong><dd><code>Replace spans table with embedded TraceDetails</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10316/files#diff-b77a766fa0094f641873071a8f13c73704933b941f387ed105e85a4e59efdb38">+99/-233</a></td> </tr> <tr> <td><strong>TraceDetails.vue</strong><dd><code>Add embedded mode and conditional UI</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10316/files#diff-bc7fe6b6339ee2cde6494c0982d4b860847447e79f7431f07d598e0446df06f2">+391/-109</a></td> </tr> </table></details></td></tr><tr><td><strong>Bug fix</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>TraceDetailsSidebar.vue</strong><dd><code>Hide standalone-only actions in embedded mode</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10316/files#diff-0017bc08d8da96af6433770d0b274f825798d24401b33ce091b16a50fbaf4b57">+14/-3</a> </td> </tr> </table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>11 files</summary><table> <tr> <td><strong>de.json</strong><dd><code>Add `traces.openInTraces` translation key</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10316/files#diff-78f24ecb2dbcfc38fdf3ec22b2559a5b40d236ea689d1c55f5d3e87168310264">+2/-1</a> </td> </tr> <tr> <td><strong>en.json</strong><dd><code>Add `traces.openInTraces` base string</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10316/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+1/-0</a> </td> </tr> <tr> <td><strong>es.json</strong><dd><code>Add `traces.openInTraces` translation key</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10316/files#diff-ac2a2167b8b973e3f776f9fe3b43bef4576470d8ad33f3d7cfaff6edff0e5778">+2/-1</a> </td> </tr> <tr> <td><strong>fr.json</strong><dd><code>Add `traces.openInTraces` translation key</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10316/files#diff-db80e762b88ddf183820c050cdc6b215e6b02b365b5e73f5152af46b0d26f1a2">+2/-1</a> </td> </tr> <tr> <td><strong>it.json</strong><dd><code>Add `traces.openInTraces` translation key</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10316/files#diff-2de78074a5f887afddce60d694ead9322e6ab223eb70251c13819f3028bdc70d">+2/-1</a> </td> </tr> <tr> <td><strong>ja.json</strong><dd><code>Add `traces.openInTraces` translation key</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10316/files#diff-092e49c5f9fbc1b539ab9c2866d108d0ce1d314022b4c294eb4611b285e7bbd3">+2/-1</a> </td> </tr> <tr> <td><strong>ko.json</strong><dd><code>Add `traces.openInTraces` translation key</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10316/files#diff-50e27ca1b4825a5026f3a251bfcf79c97cab07cfade2ebd512d332453d707c48">+2/-1</a> </td> </tr> <tr> <td><strong>nl.json</strong><dd><code>Add `traces.openInTraces` translation key</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10316/files#diff-a1706021687ae5d8a1c006c49eab3946174fecd895f9b70a89c2e76d97250906">+2/-1</a> </td> </tr> <tr> <td><strong>pt.json</strong><dd><code>Add `traces.openInTraces` translation key</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10316/files#diff-38e804f64cb5e0e451849fc84e9b46e53c954a4a4263d51c18665ad45f4b4815">+2/-1</a> </td> </tr> <tr> <td><strong>tr.json</strong><dd><code>Add `traces.openInTraces` translation key</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10316/files#diff-6f0f131e9e2591480c4c5d1eaffc72d02dc31cbd8d3f90d8f012f08cabac8818">+2/-1</a> </td> </tr> <tr> <td><strong>zh.json</strong><dd><code>Add `traces.openInTraces` translation key</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10316/files#diff-8818055db58f83230aeea4ebfd4cec31d924e8c47b6f91298e356959ab25339e">+2/-1</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |
||
|
|
b23f6273b7 | fix: o2 assistant issues (#10315) | ||
|
|
af49782be6 | chore(deps): bump lodash-es from 4.17.22 to 4.17.23 in /web (#10143) | ||
|
|
47d20352d5 | chore(deps): bump lodash from 4.17.21 to 4.17.23 in /web (#10144) | ||
|
|
a621982d32 |
fix: 10310 tanstack table implementation on logs tab in traces detail page (#10311)
### **PR Type** Enhancement ___ ### **Description** - Introduce `hideDimensionFilters` prop for correlated logs - Conditionally render dimension filters in tables - Update UI layouts: container height and sidebar widths - Replace `TelemetryCorrelationDashboard` with `CorrelatedLogsTable` - Add span selection highlighting and reload logic on span change ___ <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>7 files</summary><table> <tr> <td><strong>useCorrelatedLogs.ts</strong><dd><code>Add `hideDimensionFilters` to CorrelatedLogsProps</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10311/files#diff-310992fb4914c6eaffbbce225e0c0683c2edad2bb0ab0f8e43530fc38152ed2a">+1/-0</a> </td> </tr> <tr> <td><strong>CorrelatedLogsTable.vue</strong><dd><code>Conditionally render dimension filters in table</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10311/files#diff-57e0ec3ac2762de21e67254edf83a4559490f717a8826762c0566fa3b70b6fb8">+2/-1</a> </td> </tr> <tr> <td><strong>TelemetryCorrelationDashboard.vue</strong><dd><code>Add filter toggle in TelemetryCorrelationDashboard props</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10311/files#diff-b77a766fa0094f641873071a8f13c73704933b941f387ed105e85a4e59efdb38">+2/-0</a> </td> </tr> <tr> <td><strong>DetailTable.vue</strong><dd><code>Pass `hide-dimension-filters` to logs correlation table</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10311/files#diff-80552b5d25fa6cef9fbbe430b1865d761c4b132284c2d2175afceea8cbabc8c7">+3/-0</a> </td> </tr> <tr> <td><strong>TraceDetails.vue</strong><dd><code>Adjust sidebar widths and pass `selectedSpanId`</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10311/files#diff-bc7fe6b6339ee2cde6494c0982d4b860847447e79f7431f07d598e0446df06f2">+18/-7</a> </td> </tr> <tr> <td><strong>TraceDetailsSidebar.vue</strong><dd><code>Replace dashboard with `CorrelatedLogsTable` in sidebar</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10311/files#diff-0017bc08d8da96af6433770d0b274f825798d24401b33ce091b16a50fbaf4b57">+12/-6</a> </td> </tr> <tr> <td><strong>TraceTree.vue</strong><dd><code>Add span selection highlight and hover logic</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10311/files#diff-5d1fa8ba4d433439860b4bc036fb80e3e1b51948616dc04b1bfd1f9110a87091">+26/-1</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ |
||
|
|
c34988a3ea |
fix: insights traces changes (#10304)
### **PR Type** Enhancement ___ ### **Description** - Introduce `timeStart`/`timeEnd` in filters - Enable baseline-only and comparison modes - Conditional single vs comparison query logic - Always show Insights button and update translations ___ ### Diagram Walkthrough ```mermaid flowchart LR start["Open analysis"] start -- "Has time filters?" --> comp["Comparison mode"] start -- "No time filters" --> base["Baseline-only mode"] comp -- "Query both ranges" --> merge["Merge & score"] base -- "Use baseline only" --> sort["Sort by baseline percent"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>3 files</summary><table> <tr> <td><strong>useLatencyInsightsAnalysis.ts</strong><dd><code>Support time-based filters and baseline-only mode</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10304/files#diff-343474bc1f120f5ecebfc595bf0d3151b2db096d9226369c496b7a0cfaa33899">+87/-54</a> </td> </tr> <tr> <td><strong>useLatencyInsightsDashboard.ts</strong><dd><code>Conditional single/comparison query generation</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10304/files#diff-960dec4a653d7c079157499a2473d0e87bd8b61463e1c3f633e7682ba763a4b1">+58/-7</a> </td> </tr> <tr> <td><strong>TracesMetricsDashboard.vue</strong><dd><code>Always show Insights button and update labels</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10304/files#diff-7b6f29a2737d9501b18dbd8622eba4965e4bc2b92115627ae7d2e70cc3382087">+68/-54</a> </td> </tr> </table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>11 files</summary><table> <tr> <td><strong>de.json</strong><dd><code>Add `volumeInsights.insightsButtonLabel` translation</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10304/files#diff-78f24ecb2dbcfc38fdf3ec22b2559a5b40d236ea689d1c55f5d3e87168310264">+3/-1</a> </td> </tr> <tr> <td><strong>en.json</strong><dd><code>Add insights translation keys to English</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10304/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+2/-0</a> </td> </tr> <tr> <td><strong>es.json</strong><dd><code>Add insights translation keys to Spanish</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10304/files#diff-ac2a2167b8b973e3f776f9fe3b43bef4576470d8ad33f3d7cfaff6edff0e5778">+3/-1</a> </td> </tr> <tr> <td><strong>fr.json</strong><dd><code>Add insights translation keys to French</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10304/files#diff-db80e762b88ddf183820c050cdc6b215e6b02b365b5e73f5152af46b0d26f1a2">+3/-1</a> </td> </tr> <tr> <td><strong>it.json</strong><dd><code>Add insights translation keys to Italian</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10304/files#diff-2de78074a5f887afddce60d694ead9322e6ab223eb70251c13819f3028bdc70d">+3/-1</a> </td> </tr> <tr> <td><strong>ja.json</strong><dd><code>Add insights translation keys to Japanese</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10304/files#diff-092e49c5f9fbc1b539ab9c2866d108d0ce1d314022b4c294eb4611b285e7bbd3">+3/-1</a> </td> </tr> <tr> <td><strong>ko.json</strong><dd><code>Add insights translation keys to Korean</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10304/files#diff-50e27ca1b4825a5026f3a251bfcf79c97cab07cfade2ebd512d332453d707c48">+3/-1</a> </td> </tr> <tr> <td><strong>nl.json</strong><dd><code>Add insights translation keys to Dutch</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10304/files#diff-a1706021687ae5d8a1c006c49eab3946174fecd895f9b70a89c2e76d97250906">+3/-1</a> </td> </tr> <tr> <td><strong>pt.json</strong><dd><code>Add insights translation keys to Portuguese</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10304/files#diff-38e804f64cb5e0e451849fc84e9b46e53c954a4a4263d51c18665ad45f4b4815">+3/-1</a> </td> </tr> <tr> <td><strong>tr.json</strong><dd><code>Add insights translation keys to Turkish</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10304/files#diff-6f0f131e9e2591480c4c5d1eaffc72d02dc31cbd8d3f90d8f012f08cabac8818">+3/-1</a> </td> </tr> <tr> <td><strong>zh.json</strong><dd><code>Add insights translation keys to Chinese</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10304/files#diff-8818055db58f83230aeea4ebfd4cec31d924e8c47b6f91298e356959ab25339e">+3/-1</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |
||
|
|
afe7433938 |
fix: compress size fix (#10309)
### **PR Type**
Bug fix
___
### **Description**
- Corrected cloud configuration condition
- Display compressed size tile when not in cloud
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>HomeView.vue</strong><dd><code>Update cloud flag
condition for size tile</code>
</dd></summary>
<hr>
web/src/views/HomeView.vue
<ul><li>Changed v-if from <code>config.isCloud == 'true'</code> to
<code>config.isCloud == </code><br><code>'false'</code><br> <li> Ensures
compressed data size tile displays outside cloud environment</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10309/files#diff-9af441af191d3254ef5f9db603dca75486de7638cda41a3c050e7b3c33d68280">+1/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
da6fd92027 |
fix: missing language translation (#10165)
### **PR Type** Enhancement ___ ### **Description** - Expanded Hindi locale with 140+ new UI keys - Removed obsolete keys from Chinese locale - Improved translation coverage for themes, alerts, pipelines ___ <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>2 files</summary><table> <tr> <td><strong>hi.json</strong><dd><code>Add extensive Hindi translation keys</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10165/files#diff-1e7b52b5c4e762db2c923d0d3efb6d693702825ed3a1a112d3069f26b0d5f605">+2038/-29</a></td> </tr> <tr> <td><strong>zh.json</strong><dd><code>Remove obsolete Chinese translation keys</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10165/files#diff-8818055db58f83230aeea4ebfd4cec31d924e8c47b6f91298e356959ab25339e">+44/-35</a> </td> </tr> </table></details></td></tr><tr><td><strong>Additional files</strong></td><td><details><summary>9 files</summary><table> <tr> <td><strong>de.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/10165/files#diff-78f24ecb2dbcfc38fdf3ec22b2559a5b40d236ea689d1c55f5d3e87168310264">+44/-39</a> </td> </tr> <tr> <td><strong>es.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/10165/files#diff-ac2a2167b8b973e3f776f9fe3b43bef4576470d8ad33f3d7cfaff6edff0e5778">+44/-39</a> </td> </tr> <tr> <td><strong>fr.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/10165/files#diff-db80e762b88ddf183820c050cdc6b215e6b02b365b5e73f5152af46b0d26f1a2">+44/-39</a> </td> </tr> <tr> <td><strong>it.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/10165/files#diff-2de78074a5f887afddce60d694ead9322e6ab223eb70251c13819f3028bdc70d">+44/-39</a> </td> </tr> <tr> <td><strong>ja.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/10165/files#diff-092e49c5f9fbc1b539ab9c2866d108d0ce1d314022b4c294eb4611b285e7bbd3">+44/-32</a> </td> </tr> <tr> <td><strong>ko.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/10165/files#diff-50e27ca1b4825a5026f3a251bfcf79c97cab07cfade2ebd512d332453d707c48">+44/-39</a> </td> </tr> <tr> <td><strong>nl.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/10165/files#diff-a1706021687ae5d8a1c006c49eab3946174fecd895f9b70a89c2e76d97250906">+44/-39</a> </td> </tr> <tr> <td><strong>pt.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/10165/files#diff-38e804f64cb5e0e451849fc84e9b46e53c954a4a4263d51c18665ad45f4b4815">+44/-39</a> </td> </tr> <tr> <td><strong>tr.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/10165/files#diff-6f0f131e9e2591480c4c5d1eaffc72d02dc31cbd8d3f90d8f012f08cabac8818">+44/-39</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ |
||
|
|
0d19065b31 |
fix: Correlation settings UI issues (#10298)
### **PR Type** Enhancement, Bug fix ___ ### **Description** - Add JSON import drawer for semantic groups - Merge imported groups and validate IDs - Set default `alert_dedup_enabled` to false - Enforce scope-first order in FQN priority - Generate group IDs on blur and prevent duplicates ___ ### Diagram Walkthrough ```mermaid flowchart LR File["Select JSON file"] -->|loadFile| Preview["Preview diff"] Preview -->|select additions/modifications| Selection["Selected items"] Selection -->|handleApply| Parent["Emit merged groups"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>4 files</summary><table> <tr> <td><strong>ImportSemanticGroupsDrawer.vue</strong><dd><code>Add import drawer for semantic groups</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10298/files#diff-9e8166bba8b3b84cd98d44be5b85212f4c8b018cf370bdc69a279e290914fb7d">+640/-0</a> </td> </tr> <tr> <td><strong>SemanticFieldGroupsConfig.vue</strong><dd><code>Integrate import drawer and generate group IDs</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10298/files#diff-1c5890d42337715bb86ba5c025148e41cc72b9ab6fe19e10a4eb0411554162de">+98/-25</a> </td> </tr> <tr> <td><strong>SemanticGroupItem.vue</strong><dd><code>Generate ID on display blur and validate</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10298/files#diff-416d80d707542beaa5d710fa4f1e0e573e0abf81110a6b15558271a7b6f157ea">+28/-14</a> </td> </tr> <tr> <td><strong>ServiceIdentityConfig.vue</strong><dd><code>Improve FQN priority UI and sorting</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10298/files#diff-25b25407f85be211af5760a897e5442beef913af6b031c351c50dbb70eed2bcd">+633/-359</a></td> </tr> </table></details></td></tr><tr><td><strong>Bug fix</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>OrganizationDeduplicationSettings.vue</strong><dd><code>Default `alert_dedup_enabled` to false</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10298/files#diff-f526d40b50f1e96f025973c6fc251f7a50f698c641c7749b32e6bb90b9ba032f">+4/-4</a> </td> </tr> </table></details></td></tr><tr><td><strong>Formatting</strong></td><td><details><summary>2 files</summary><table> <tr> <td><strong>DiscoveredServices.vue</strong><dd><code>Adjust padding on view mode toggle</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10298/files#diff-b29e770c74e783552f21665d8e4e8c77abc7a51c6415101f16e2724061c57d9e">+1/-0</a> </td> </tr> <tr> <td><strong>BasicValuesFilter.vue</strong><dd><code>Convert style widths to rem units</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10298/files#diff-3ec23f0cdf1bbf9075cfc995045d2597f9d9adb2a64ec55be7f3b9cf9da2e9ea">+11/-9</a> </td> </tr> </table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>en.json</strong><dd><code>Add duplicate and empty ID error messages</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10298/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+3/-1</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ |
||
|
|
bfcf6f3b97 |
fix: show panel on unhide (#10302)
### **PR Type**
Enhancement
___
### **Description**
- Add panel data caching for hide/unhide optimization
- Enhance addMetricPanels: reuse cache and generate new panels
- Debounce stream changes to batch hide/unhide events
- Improve full reload fallback and cache logging
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Metric stream change"] --> B["Debounce (300ms)"]
B --> C{"Panels to remove?"}
C -- "Yes" --> D["Clear dashboard and full reload"]
C -- "No" --> E{"New streams to add?"}
E -- "Yes" --> F["addMetricPanels"]
F --> G{"Cache hit?"}
G -- "Yes" --> H["Reuse cached panels"]
G -- "No" --> I["Fetch schemas and generate panels"]
H --> J["Update layout & append panels"]
I --> J
J --> K["Refresh GridStack twice"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>TelemetryCorrelationDashboard.vue</strong><dd><code>Caching
and debounce in metric panels</code>
</dd></summary>
<hr>
web/src/plugins/correlation/TelemetryCorrelationDashboard.vue
<ul><li>Introduce <code>panelDataCache</code>, caching and debounce
constants<br> <li> Update <code>addMetricPanels</code> to reuse cache
and generate panels<br> <li> Debounce hide/unhide in stream watcher with
batching logic<br> <li> Add cache logging and extra GridStack
refresh</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10302/files#diff-b77a766fa0094f641873071a8f13c73704933b941f387ed105e85a4e59efdb38">+161/-55</a></td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
e52dacb4b2 |
fix: alert destinations (#10301)
### **PR Type**
Enhancement, Tests
___
### **Description**
- Support backend-managed prebuilt templates
- Cache and fetch templates with async preview
- Rename templates prefix to `prebuilt_`, update tests
- Add backend ensure_system_templates & template reuse
___
### Diagram Walkthrough
```mermaid
flowchart LR
BL["Backend load_prebuilt_config & builtins"]
Endpoint["GET /api/{org}/alerts/templates/system/prebuilt"]
FE["Frontend fetchSystemTemplates()"]
Cache["systemTemplatesCache in memory"]
Generate["generatePreview/testDestination"]
UI["UI preview/test buttons"]
BL -- "provides templates" --> Endpoint
Endpoint -- "called by" --> FE
FE -- "stores in" --> Cache
Cache -- "used by" --> Generate
Generate -- "triggers" --> UI
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>14
files</summary><table>
<tr>
<td><strong>usePrebuiltDestinations.ts</strong><dd><code>Implement
fetchSystemTemplates and caching logic</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-2c90b706aae7486541bbee80d2c67c9de18504b90e1d9618ba130e017d0a5246">+195/-28</a></td>
</tr>
<tr>
<td><strong>slack.ts</strong><dd><code>Rename slack template to
`prebuilt_slack`</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-f7068d6fc979cc1fbc6e2bc562be53f5453fc874b367c1688adf70c0896aac62">+41/-45</a>
</td>
</tr>
<tr>
<td><strong>email.ts</strong><dd><code>Rename email template and remove
CC/subject</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-3e756aefde39bd7c780066f6ee6e22df1f2846f5e0013fd6ec568a98dd54f64b">+18/-16</a>
</td>
</tr>
<tr>
<td><strong>servicenow.ts</strong><dd><code>Rename ServiceNow template
to `prebuilt_servicenow`</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-3790cdccf9f6221cf55c86664b4cbfb65d20f3da9db719167898b8b76b698a2f">+2/-2</a>
</td>
</tr>
<tr>
<td><strong>alert_templates.ts</strong><dd><code>Add
`get_system_templates` API call</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-fd8c4260abc3df601e4331d36b0c211eca568ee70139ad90c87247bc552fe4e2">+3/-0</a>
</td>
</tr>
<tr>
<td><strong>prebuilt_loader.rs</strong><dd><code>Add
get_prebuilt_template and fallback loader</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-d75e85b239701cb3c9e85c15a8a5cd8d23120a4b5ba0a61003c0df1f4854b74d">+345/-10</a></td>
</tr>
<tr>
<td><strong>destinations.rs</strong><dd><code>Implement
ensure_prebuilt_template & reuse logic</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-c06292c108cc15b585a0e3318fd15d3e86c1f1a0f001ab84fff85facefd3c4d3">+420/-1</a>
</td>
</tr>
<tr>
<td><strong>templates.rs</strong><dd><code>Add ensure_system_templates
initialization</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-975d7665f1439ca49810c28554f85e513ff3a4c8b849f2bb1966536230951464">+86/-0</a>
</td>
</tr>
<tr>
<td><strong>templates.rs</strong><dd><code>Expose GET system prebuilt
templates endpoint</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-b08e274a64cc935b0cec402a04271a872b1586027a77dc0ccb84c597c3960f61">+54/-0</a>
</td>
</tr>
<tr>
<td><strong>AddDestination.vue</strong><dd><code>Update form logic for
prebuilt vs custom</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-61b295458e13049a538f5014124855d58dce664dfbd644b57a964a37a07b7a3f">+123/-66</a></td>
</tr>
<tr>
<td><strong>DestinationTestResult.vue</strong><dd><code>Improve test
error message handling</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-1fa17c0e52becd683dec1bbee12aab6823b28c1bbedca0d5039d688527f826e5">+29/-2</a>
</td>
</tr>
<tr>
<td><strong>AlertsDestinationList.vue</strong><dd><code>Add custom
destination label logic</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-e9d05ba6c071c0e2f5d9ef7acdef757f79910abd6897b29e27b069a10d4ba8de">+15/-2</a>
</td>
</tr>
<tr>
<td><strong>PrebuiltDestinationForm.vue</strong><dd><code>Comment out
unsupported email fields</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-606eb6f7e6e43518cc9b1f3194097c52acf3df0df9ab5945274196d7221035a0">+3/-2</a>
</td>
</tr>
<tr>
<td><strong>pagerduty.ts</strong><dd><code>Rename PagerDuty template to
`prebuilt_pagerduty`</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-a216d76143343db3aec8efe02596be53b438813aa2aa8af2fb1080e17f5540aa">+2/-2</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>5
files</summary><table>
<tr>
<td><strong>templates.spec.ts</strong><dd><code>Update tests to use
`prebuilt_` prefix</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-262b3003a3045192e0aaccddebe76bdb29fcd68655e8bacfd486e50575a14801">+9/-9</a>
</td>
</tr>
<tr>
<td><strong>types.spec.ts</strong><dd><code>Adjust PrebuiltConfig tests
for new prefix</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-67fc167ebe4d6a433579ba9850a6d7ce3a83d97bebe410521f85775a948595fc">+4/-4</a>
</td>
</tr>
<tr>
<td><strong>alertDestinationsPage.js</strong><dd><code>Update selector
for test result element</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-57e5c53b4ef998b3d8708149620ff94dcc46807927f1a3a9e9f28ed3ebe25b0a">+3/-1</a>
</td>
</tr>
<tr>
<td><strong>alerts-destinations-prebuilt.spec.js</strong><dd><code>Add
random name for Slack destination test</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-0295825c868c1d1ed5cc194ba04843a7d5f4e58decff2593c7d9bd5b29ec33a4">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>discord.spec.ts</strong><dd><code>Update Discord tests for
new prefix</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-21a02fd01b42452d1f13140715e5f81146b7a62d61d4b899deea4f30be06284e">+2/-2</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Configuration
changes</strong></td><td><details><summary>1 files</summary><table>
<tr>
<td><strong>mod.rs</strong><dd><code>Route for system prebuilt templates
API</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-02556e3f515441b5d2b6bbea7829df488beac03c4cc41309a6638ae3c0e0aec6">+1/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>en.json</strong><dd><code>Add custom destination translation
keys</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+5/-1</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Additional
files</strong></td><td><details><summary>25 files</summary><table>
<tr>
<td><strong>auth.rs</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-9bc2b1841504a435f66ad094f72ddbe7b7fa75e5e1557b8adbfe36f7f0592e1b">+20/-0</a>
</td>
</tr>
<tr>
<td><strong>openapi.rs</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-edb8ce232c0cd08366879f642788a75d99f6bab64b4c0e77391281fdb9241e90">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-f2e4c29b8eef22189ec704a832633c4bd135a24444f054864c98064bd0963681">+8/-2</a>
</td>
</tr>
<tr>
<td><strong>main.rs</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-42cb6807ad74b3e201c5a7ca98b911c5fa08380e942be6e4ac5807f8377f87fc">+5/-5</a>
</td>
</tr>
<tr>
<td><strong>destinations.rs</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-4652ac6be3f7cf720faf5b9c4cb1d5dbab9e2fed608f3abbe295fb270dde54b5">+6/-0</a>
</td>
</tr>
<tr>
<td><strong>de.json</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-78f24ecb2dbcfc38fdf3ec22b2559a5b40d236ea689d1c55f5d3e87168310264">+5/-1</a>
</td>
</tr>
<tr>
<td><strong>es.json</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-ac2a2167b8b973e3f776f9fe3b43bef4576470d8ad33f3d7cfaff6edff0e5778">+5/-1</a>
</td>
</tr>
<tr>
<td><strong>fr.json</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-db80e762b88ddf183820c050cdc6b215e6b02b365b5e73f5152af46b0d26f1a2">+5/-1</a>
</td>
</tr>
<tr>
<td><strong>it.json</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-2de78074a5f887afddce60d694ead9322e6ab223eb70251c13819f3028bdc70d">+5/-1</a>
</td>
</tr>
<tr>
<td><strong>ja.json</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-092e49c5f9fbc1b539ab9c2866d108d0ce1d314022b4c294eb4611b285e7bbd3">+5/-1</a>
</td>
</tr>
<tr>
<td><strong>ko.json</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-50e27ca1b4825a5026f3a251bfcf79c97cab07cfade2ebd512d332453d707c48">+5/-1</a>
</td>
</tr>
<tr>
<td><strong>nl.json</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-a1706021687ae5d8a1c006c49eab3946174fecd895f9b70a89c2e76d97250906">+5/-1</a>
</td>
</tr>
<tr>
<td><strong>pt.json</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-38e804f64cb5e0e451849fc84e9b46e53c954a4a4263d51c18665ad45f4b4815">+5/-1</a>
</td>
</tr>
<tr>
<td><strong>tr.json</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-6f0f131e9e2591480c4c5d1eaffc72d02dc31cbd8d3f90d8f012f08cabac8818">+5/-1</a>
</td>
</tr>
<tr>
<td><strong>zh.json</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-8818055db58f83230aeea4ebfd4cec31d924e8c47b6f91298e356959ab25339e">+5/-1</a>
</td>
</tr>
<tr>
<td><strong>discord.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-e4703f8270d000f785a48aa220752f303d2330b6e123817310ecb8a60815fb0b">+2/-2</a>
</td>
</tr>
<tr>
<td><strong>email.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-744915b43017fdc102b0e00d157d7deef4b1f23e0e8e5cb483c2f2c9d6af655c">+2/-2</a>
</td>
</tr>
<tr>
<td><strong>index.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-9b9a6bc1e17f1874fda50428263ff607dca3ba94b01f95933f179ba544f6e11a">+1/-1</a>
</td>
</tr>
<tr>
<td><strong>msteams.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-6815fa747fe74c5cd6835f9fce8f037c15489fab95e399e15199a104c0c08061">+2/-2</a>
</td>
</tr>
<tr>
<td><strong>msteams.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-efeec26ed5ec589000448466539dcdb0d7bb918e8a4f80c9df565eaa1e522b5c">+2/-2</a>
</td>
</tr>
<tr>
<td><strong>opsgenie.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-2560842b70b2f74eb3ef2c940e0a55500b3bd5b89a9b5b34e3c0039c57fc1361">+2/-2</a>
</td>
</tr>
<tr>
<td><strong>opsgenie.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-9412abdf9baf6b8c0cc87fa3ea0efec50928399c0112ad695c021040d24d7c3a">+2/-2</a>
</td>
</tr>
<tr>
<td><strong>pagerduty.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-f62fcc0b648144816cef61b1f5512ba5e2bc573237158efbd896d33e779282f2">+2/-2</a>
</td>
</tr>
<tr>
<td><strong>servicenow.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-ada67bb0bbeaf97a2e7c6a21a741d53df941306e6c694d1a1d89cf965403ce85">+2/-2</a>
</td>
</tr>
<tr>
<td><strong>slack.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10301/files#diff-3fa8b2b7534ebec5c2cea1c76c54741c105b64819bb87e6a7f6d3b5a85969740">+2/-2</a>
</td>
</tr>
</table></details></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
|
||
|
|
5ee50613fd | fix: use error tooltip color for pipeline tooltip (#10217) | ||
|
|
6925ac5659 | fix: compress size tile (#10260) | ||
|
|
03315baae0 | fix: incident detail page issues (#10294) | ||
|
|
3493d9d88c |
fix: Issue 1212 UI fixes (#10292)
### **User description**
Issue: ent 1212 correlation fixes
___
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Implement view-trace navigation in logs
- Add loading, error and empty states to dashboards
- Hide view trace button when config enabled
- Refine correlation metrics error handling
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["User clicks view trace button"] -- "handleViewTrace" --> B["handleViewTrace"]
B -- "router.push traceDetails" --> C["Trace Details Page"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>CorrelatedLogsTable.vue</strong><dd><code>Implement
view-trace navigation</code>
</dd></summary>
<hr>
web/src/plugins/correlation/CorrelatedLogsTable.vue
<ul><li>Added <code>@view-trace</code> event binding to
TenstackTable<br> <li> Imported <code>useRouter</code> and
<code>searchState</code> for navigation<br> <li> Implemented
<code>handleViewTrace</code> to build and push trace query</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10292/files#diff-57e0ec3ac2762de21e67254edf83a4559490f717a8826762c0566fa3b70b6fb8">+38/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>TelemetryCorrelationDashboard.vue</strong><dd><code>Add
dashboard loading/empty/error states</code>
</dd></summary>
<hr>
web/src/plugins/correlation/TelemetryCorrelationDashboard.vue
<ul><li>Added loading state for logs dashboard<br> <li> Added no-logs
and no-metrics empty states<br> <li> Added error and retry UI for
metrics tab</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10292/files#diff-b77a766fa0094f641873071a8f13c73704933b941f387ed105e85a4e59efdb38">+95/-2</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Bug fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>JsonPreview.vue</strong><dd><code>Hide view trace
button based on config</code>
</dd></summary>
<hr>
web/src/plugins/logs/JsonPreview.vue
<ul><li>Define <code>serviceStreamsEnabled</code> flag from
<code>zoConfig</code><br> <li> Hide view trace button when
<code>service_streams_enabled</code> is true</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10292/files#diff-3985073134d35ff074742944b114d0905524038b42e6d2ac887fef2c8436fb16">+4/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>SearchResult.vue</strong><dd><code>Refine correlation
metrics handling</code>
</dd></summary>
<hr>
web/src/plugins/logs/SearchResult.vue
<ul><li>Removed early returns for empty metric streams<br> <li> Always
set <code>metricStreams</code> array and notify instead<br> <li> Cleared
<code>correlationError</code> on row navigation</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10292/files#diff-5e65533aa4754bb6d0074fda18ffc1ecacded3b9ca6bc28a161c3f6b12f20195">+19/-30</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
ec2a9cc771 |
fix: o2 ai issues when enabled (#10291)
### **User description** This PR fixes the issue in E: 1216 (1 & 3) , E: 1218 , along with append the fields when sending to ai chat ___ ### **PR Type** Enhancement ___ ### **Description** - Add `appendMode` prop for AI Chat - Auto-scroll input on append - Propagate and clear chat context - UI tweaks: widths, toggle styles, splitter ___ ### Diagram Walkthrough ```mermaid flowchart LR SP["ScheduledPipeline.vue"] -- "sendToAiChat(value,append)" --> O2AIChat ML["MainLayout.vue"] -- "sendToAiChat(value,append)" --> O2AIChat O2AIChat["O2AIChat.vue"] --> AM["appendMode prop"] AM -- "true" --> APPEND["append input with separator"] AM -- "false" --> REPLACE["replace input"] APPEND --> SCROLL["scrollInputToBottom()"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>10 files</summary><table> <tr> <td><strong>O2AIChat.vue</strong><dd><code>Add `appendMode` prop and scroll input enhancements</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10291/files#diff-a6a125719a7b32b31b53fcfe05c12081d82c139a401699affdda0db8e73887e3">+47/-1</a> </td> </tr> <tr> <td><strong>ScheduledPipeline.vue</strong><dd><code>Propagate `appendMode` and update sendToAiChat signature</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10291/files#diff-63d8f838bb880356e7804b4a57fd9223d4f2c189de7aadc7cf33cba723b29aaf">+10/-1</a> </td> </tr> <tr> <td><strong>MainLayout.vue</strong><dd><code>Bind `appendMode` and clear context after send</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10291/files#diff-91e4134141264c4624d4eb4cfa987b33ed31eb6f551e089c0b26f2610dd54362">+13/-3</a> </td> </tr> <tr> <td><strong>DetailTable.vue</strong><dd><code>Update sendToAiChat to accept `append` parameter</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10291/files#diff-80552b5d25fa6cef9fbbe430b1865d761c4b132284c2d2175afceea8cbabc8c7">+2/-2</a> </td> </tr> <tr> <td><strong>Index.vue</strong><dd><code>Adjust splitter when AI chat opens or closes</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10291/files#diff-0323c3da69b369843c5d72bf4df5b00ca6b5147192a213baf331659ecf92af62">+21/-2</a> </td> </tr> <tr> <td><strong>JsonPreview.vue</strong><dd><code>Extend sendToAiChat signature with `append`</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10291/files#diff-3985073134d35ff074742944b114d0905524038b42e6d2ac887fef2c8436fb16">+2/-2</a> </td> </tr> <tr> <td><strong>SearchBar.vue</strong><dd><code>Add toggle CSS class and dynamic width style</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10291/files#diff-81893de4edf186b0556f610acb280c87baa2ffe67d3b48a60a866094c7635baf">+10/-1</a> </td> </tr> <tr> <td><strong>SearchResult.vue</strong><dd><code>Add `append` flag to sendToAiChat emit</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10291/files#diff-5e65533aa4754bb6d0074fda18ffc1ecacded3b9ca6bc28a161c3f6b12f20195">+2/-2</a> </td> </tr> <tr> <td><strong>TenstackTable.vue</strong><dd><code>Tweak AI button position and append flag support</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10291/files#diff-bc3c669f5ab65a42ae378df1f7d6b35014c9c220790bdcc72b47f55d1385dc22">+5/-5</a> </td> </tr> <tr> <td><strong>Functions.vue</strong><dd><code>Modify sendToAiChat to include `append` argument</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10291/files#diff-ad825ec1b8d58aec9bf5d2553ea09394a30b22ac59d708bcf9e56168ca1daaf6">+2/-2</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ |
||
|
|
e0a2209ebe |
feat: add DateTime picker to service graph and rename tab (#10283)
### **User description** ## Summary Adds DateTime picker to service graph allowing users to select custom time ranges for visualization. Also rename the tab from `Service Maps` to `Service Graphs`. ## Changes - Add DateTime component to ServiceGraph.vue - Update service graph service to pass start_time/end_time parameters - Backend API already supports custom time range queries - Rename tab name and address to service graphs (from service maps) |
||
|
|
a0c7e73e9b |
fix: Issue 1212 correlation UI issues (#10279)
### **User description** issue id: ent-1212 ___ ### **PR Type** Enhancement ___ ### **Description** - Add select/deselect-all and drag-and-drop column reorder - Persist visible columns and order to localStorage - Preserve original/current filter values in dropdowns - Remove legacy correlated-logs-v2 tab and console toggles - Add `selectAll`/`deselectAll` locale keys, remove V2 keys ___ ### Diagram Walkthrough ```mermaid flowchart LR CT["CorrelatedLogsTable.vue"] CVD["Column Visibility Dropdown"] SA["Select/Deselect All Checkbox"] DD["Draggable Column Items"] LS["Persist to localStorage"] CT -- "renders" --> CVD CVD -- "adds" --> SA CVD -- "adds" --> DD SA -- "update state" --> LS DD -- "update order" --> LS CT -- "improve filters" --> FOP["Filter Options Enhancement"] DT["DetailTable.vue"] -- "remove old tab logic" --> CT ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>3 files</summary><table> <tr> <td><strong>CorrelatedLogsTable.vue</strong><dd><code>Enhance column visibility: select all & drag reorder</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10279/files#diff-57e0ec3ac2762de21e67254edf83a4559490f717a8826762c0566fa3b70b6fb8">+244/-12</a></td> </tr> <tr> <td><strong>TelemetryCorrelationDashboard.vue</strong><dd><code>Preserve original and current filter values</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10279/files#diff-b77a766fa0094f641873071a8f13c73704933b941f387ed105e85a4e59efdb38">+13/-0</a> </td> </tr> <tr> <td><strong>DetailTable.vue</strong><dd><code>Remove legacy correlated logs tab and toggles</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10279/files#diff-80552b5d25fa6cef9fbbe430b1865d761c4b132284c2d2175afceea8cbabc8c7">+22/-65</a> </td> </tr> </table></details></td></tr><tr><td><strong>Configuration changes</strong></td><td><details><summary>11 files</summary><table> <tr> <td><strong>de.json</strong><dd><code>Add selectAll/deselectAll translations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10279/files#diff-78f24ecb2dbcfc38fdf3ec22b2559a5b40d236ea689d1c55f5d3e87168310264">+4/-2</a> </td> </tr> <tr> <td><strong>en.json</strong><dd><code>Add selectAll/deselectAll translations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10279/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+2/-2</a> </td> </tr> <tr> <td><strong>es.json</strong><dd><code>Add selectAll/deselectAll translations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10279/files#diff-ac2a2167b8b973e3f776f9fe3b43bef4576470d8ad33f3d7cfaff6edff0e5778">+2/-2</a> </td> </tr> <tr> <td><strong>fr.json</strong><dd><code>Add selectAll/deselectAll translations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10279/files#diff-db80e762b88ddf183820c050cdc6b215e6b02b365b5e73f5152af46b0d26f1a2">+4/-2</a> </td> </tr> <tr> <td><strong>it.json</strong><dd><code>Add selectAll/deselectAll translations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10279/files#diff-2de78074a5f887afddce60d694ead9322e6ab223eb70251c13819f3028bdc70d">+2/-2</a> </td> </tr> <tr> <td><strong>ja.json</strong><dd><code>Add selectAll/deselectAll translations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10279/files#diff-092e49c5f9fbc1b539ab9c2866d108d0ce1d314022b4c294eb4611b285e7bbd3">+4/-2</a> </td> </tr> <tr> <td><strong>ko.json</strong><dd><code>Add selectAll/deselectAll translations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10279/files#diff-50e27ca1b4825a5026f3a251bfcf79c97cab07cfade2ebd512d332453d707c48">+4/-2</a> </td> </tr> <tr> <td><strong>nl.json</strong><dd><code>Add selectAll/deselectAll translations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10279/files#diff-a1706021687ae5d8a1c006c49eab3946174fecd895f9b70a89c2e76d97250906">+4/-2</a> </td> </tr> <tr> <td><strong>pt.json</strong><dd><code>Add selectAll/deselectAll translations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10279/files#diff-38e804f64cb5e0e451849fc84e9b46e53c954a4a4263d51c18665ad45f4b4815">+4/-2</a> </td> </tr> <tr> <td><strong>tr.json</strong><dd><code>Add selectAll/deselectAll translations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10279/files#diff-6f0f131e9e2591480c4c5d1eaffc72d02dc31cbd8d3f90d8f012f08cabac8818">+4/-2</a> </td> </tr> <tr> <td><strong>zh.json</strong><dd><code>Add selectAll/deselectAll translations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10279/files#diff-8818055db58f83230aeea4ebfd4cec31d924e8c47b6f91298e356959ab25339e">+4/-2</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ |
||
|
|
50e45e2ea7 |
fix: use triggers.length for incident alert count and sort Related Alerts
- Replace alert_count with triggers.length for accurate count display - Rename 'Total Triggers' to 'Total Alerts' for consistency - Show all unique alerts in Related Alerts (was showing only 2 from topology_context.nodes) - Sort Related Alerts by trigger count (descending order) |
||
|
|
9ffaddb43e |
fix: use edge-specific metrics in service graph tree view
- Calculate tree node metrics from edges instead of global node totals - Add Connections field to tooltips - Reposition labels (left for horizontal, top for vertical) Fixes bidirectional edges showing incorrect request counts. |
||
|
|
f485a2b674 |
fix: added cloud check for list_subscription in trial period component (#10248)
### **PR Type**
Bug fix
___
### **Description**
- Add cloud check before subscription call
- Skip AWS billing outside cloud environment
- Log errors on billing fetch failure
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>TrialPeriod.vue</strong><dd><code>Guard subscription
call with cloud check</code>
</dd></summary>
<hr>
web/src/enterprise/components/billings/TrialPeriod.vue
<ul><li>Added <code>config.isCloud</code> check before subscription
listing<br> <li> Wrapped AWS billing check inside cloud guard<br> <li>
Removed unguarded <code>list_subscription</code> invocation</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10248/files#diff-cc999442352001a0c7a756db0974f99ec3a21d566e9082d1b113c85ca897dafa">+8/-6</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: sai nikhil kethe <nikhil@openobserve.ai>
|
||
|
|
601e75d223 |
fix: logs large records optimisation (#10257)
### **PR Type** Bug fix, Enhancement ___ ### **Description** - Fix oversized hit handling in chunk iterator - Implement worker-level deduplication & abort - Stream handler cleanup and dedupe updates - Enhance log rendering with truncation & progressive ___ ### Diagram Walkthrough ```mermaid flowchart LR A["ResponseChunkIterator (search.rs)"] -- "pop_front oversized hits" --> B["StreamWorker"] B -- "deduplicate messages & abort" --> C["useHttpStreaming"] C -- "handle streaming hits" --> D["useSearchResponseHandler"] D -- "optimize rendering" --> E["useLogsHighlighter"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>5 files</summary><table> <tr> <td><strong>useSearchResponseHandler.ts</strong><dd><code>Refactor streaming hits assignment using local variable</code> </dd></td> <td><a href=""></a></td> </tr> <tr> <td><strong>useLogsHighlighter.ts</strong><dd><code>Add size estimation, truncation, and progressive rendering</code></dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10257/files#diff-ad7744a2edc4764be1c7d67feb7fe1473536af245821898a9136256b3aeb0342">+237/-38</a></td> </tr> <tr> <td><strong>DetailTable.vue</strong><dd><code>Enable disable-truncation prop in detail view</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10257/files#diff-80552b5d25fa6cef9fbbe430b1865d761c4b132284c2d2175afceea8cbabc8c7">+2/-1</a> </td> </tr> <tr> <td><strong>IndexList.vue</strong><dd><code>Use $el to query and reset scroll container</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10257/files#diff-08f058f883b659e713e606991a7ea37ae1ff016b7cccef970489ab5840dc3d09">+2/-1</a> </td> </tr> <tr> <td><strong>streamWorker.js</strong><dd><code>Implement message deduplication and abort logic</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10257/files#diff-8534facfcca68c16701832f43a501abcdb92847115c46fced5d69792e5594dd9">+63/-1</a> </td> </tr> </table></details></td></tr><tr><td><strong>Error handling</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>useStreamingSearch.ts</strong><dd><code>Handle abort_stream message and cleanup listeners</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10257/files#diff-8fce3e25a161cd458e734bd9b1f98aadefe3482da7b6529a5b1f4fa20ec115e2">+10/-1</a> </td> </tr> </table></details></td></tr><tr><td><strong>Configuration changes</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>logsRenderingConfig.ts</strong><dd><code>Introduce logs rendering configuration thresholds</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10257/files#diff-6954119ee8e2fb2791a6172bcd6a36925853fabc776e662f53bfcec8bf12fdc0">+11/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Bug fix</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>search.rs</strong><dd><code>Pop front oversized hits to prevent infinite loop</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10257/files#diff-373e83a31e5bbc82fba05d7ae274b0dbd624ed748272232cf7eb8b8c3b2f3afc">+4/-3</a> </td> </tr> </table></details></td></tr><tr><td><strong>Additional files</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>useSearchResponseHandler.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/10257/files#diff-7dd7d0e65e8fe028b4969c970cf027ff39621921a41153f0a696e20478f0f858">+5/-2</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com> |
||
|
|
12932b4a2b |
fix: ensure histogram interval changes are applied correctly on initial setup (#10224)
### **PR Type**
Bug fix
___
### **Description**
- Skip suppressing histogram interval on initial load
- Introduce `isInitialHistogramSetup` flag for watch logic
- Invert `isVariablesChanged` default and usage logic
- Update chart refresh logic in `refreshData`
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Component Mount"] --> B["isInitialHistogramSetup = true"]
B --> C["Watch histogramInterval"]
C -->|on change| D{"isInitialHistogramSetup?"}
D -->|true| E["Skip marking variablesChanged"]
D -->|false| F["Set isVariablesChanged = false"]
E --> G["Initial setup complete"]
G --> F
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>ViewPanel.vue</strong><dd><code>Control histogram
interval change application</code>
</dd></summary>
<hr>
web/src/components/dashboards/viewPanel/ViewPanel.vue
<ul><li>Set <code>isVariablesChanged</code> default to
<code>true</code><br> <li> Add <code>isInitialHistogramSetup</code> flag
for initial watch<br> <li> Conditionally update
<code>isVariablesChanged</code> in histogram watcher<br> <li> Update
<code>isVariablesChanged</code> logic in <code>refreshData</code></ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10224/files#diff-e7b26fbbfe7ae57f50377c0f002155df17109ea54708b0f134dd2005356b2930">+18/-6</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
25a99bf39d |
feat: vrl support for visualization (#10237)
### **User description** Design at : https://github.com/openobserve/designs/tree/main/visualization-vrl-support ### **PR Type** Enhancement ___ ### **Description** - Always default to table chart with VRL functions - Preserve and propagate VRL function query across UI - Enable dynamic columns for VRL-based table charts - Remove visualization-mode restrictions for function editor ___ ### Diagram Walkthrough ```mermaid flowchart LR VRL["VRL Function Present?"] VRL -- "yes" --> Table["Force Table Chart"] Table -- "on table" --> DynCols["Enable Dynamic Columns"] VRL -- "no" --> OtherCharts["Allow Other Chart Types"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table> <tr> <td> <details> <summary><strong>useDashboardPanel.ts</strong><dd><code>Force table chart for VRL functions</code> </dd></summary> <hr> web/src/composables/useDashboardPanel.ts <ul><li>Added VRL check in determineChartType<br> <li> Default to table when VRL functions exist</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/10237/files#diff-fbba1700750053b9eaf38ddd30dab84531bc44131c795ebb713811e4930cd7cb">+5/-0</a> </td> </tr> <tr> <td> <details> <summary><strong>Index.vue</strong><dd><code>Propagate and handle VRL function queries</code> </dd></summary> <hr> web/src/plugins/logs/Index.vue <ul><li>Copy and clear <code>vrlFunctionQuery</code> on query update<br> <li> Force table type and set <code>table_dynamic_columns</code><br> <li> Preserve <code>vrlFunctionQuery</code> in visualization flow</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/10237/files#diff-0323c3da69b369843c5d72bf4df5b00ca6b5147192a213baf331659ecf92af62">+70/-2</a> </td> </tr> <tr> <td> <details> <summary><strong>SearchBar.vue</strong><dd><code>Enable VRL editor in visualize mode</code> </dd></summary> <hr> web/src/plugins/logs/SearchBar.vue <ul><li>Always allow editing VRL function editor<br> <li> Removed visualize-mode warning overlay</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/10237/files#diff-81893de4edf186b0556f610acb280c87baa2ffe67d3b48a60a866094c7635baf">+1/-26</a> </td> </tr> <tr> <td> <details> <summary><strong>TransformSelector.vue</strong><dd><code>Lift transform restrictions in visualize mode</code> </dd></summary> <hr> web/src/plugins/logs/TransformSelector.vue <ul><li>Removed disable state for transform toggle/save in visualize<br> <li> Removed visualize-mode tooltip restrictions</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/10237/files#diff-0037d8dd9cfbacc26309b26e98ae953e7ccbd0891ac2fd01c6314ebd7eed9d2c">+3/-13</a> </td> </tr> <tr> <td> <details> <summary><strong>VisualizeLogsQuery.vue</strong><dd><code>Restrict chart types when VRL functions present</code> </dd></summary> <hr> web/src/plugins/logs/VisualizeLogsQuery.vue <ul><li>Block non-table chart selection if VRL functions exist<br> <li> Show error and reset to table on invalid type switch</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/10237/files#diff-979b01d943d58c5d70faeeac5948b7f02f0b2392a12b84ef07ba7f7393ab0261">+14/-0</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ ___ ### **PR Type** Enhancement, Tests ___ ### **Description** - Default to table chart when VRL functions exist - Propagate and encode VRL function query in UI - Enable dynamic columns for VRL-based table charts - Remove visualize-mode restrictions on VRL editor ___ ### Diagram Walkthrough ```mermaid flowchart LR VRL["VRL functions present?"] VRL -- "yes" --> Table["Force table chart"] Table --> DynCols["Enable dynamic columns"] DynCols --> Prop["Propagate VRL query"] VRL -- "no" --> Other["Allow other chart types"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Tests</strong></td><td><details><summary>5 files</summary><table> <tr> <td><strong>useDashboardPanel.spec.ts</strong><dd><code>Add VRL chart type determination tests</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10237/files#diff-5dbd79fdde0cbbb7db569095fa062931286463da0b5e72b1fbe99f56116fa5e2">+110/-0</a> </td> </tr> <tr> <td><strong>Index.spec.ts</strong><dd><code>Add VRL support tests in Index.vue</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10237/files#diff-a6ac1dd4a120625f1c0ed23803aa0cb63e8513b38abc975af72eefe3923b2c73">+189/-0</a> </td> </tr> <tr> <td><strong>SearchBar.spec.ts</strong><dd><code>Add VRL editor readOnly and banner tests</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10237/files#diff-63ac75d3fe278dad233e7dd7c51b3b33076d54a776b89ae05190d8522130c78b">+149/-1</a> </td> </tr> <tr> <td><strong>VisualizeLogsQuery.spec.ts</strong><dd><code>Test VRL chart type change restrictions</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10237/files#diff-fdecf623f9a4bdfe679c6c2e4424f31cbce4a1234cb45e1de472189a46c9d4e2">+130/-0</a> </td> </tr> <tr> <td><strong>TransformSelector.spec.ts</strong><dd><code>Enable transform toggle in visualize mode</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10237/files#diff-c850f07fc5e32a152df85ca63e6ed45c9aeac2965a5bf1238daf7353a8699195">+247/-1</a> </td> </tr> </table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>5 files</summary><table> <tr> <td><strong>useDashboardPanel.ts</strong><dd><code>Force table chart for VRL functions</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10237/files#diff-fbba1700750053b9eaf38ddd30dab84531bc44131c795ebb713811e4930cd7cb">+5/-0</a> </td> </tr> <tr> <td><strong>Index.vue</strong><dd><code>Propagate and apply VRL function query</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10237/files#diff-0323c3da69b369843c5d72bf4df5b00ca6b5147192a213baf331659ecf92af62">+70/-2</a> </td> </tr> <tr> <td><strong>SearchBar.vue</strong><dd><code>Remove VRL editor read-only restriction</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10237/files#diff-81893de4edf186b0556f610acb280c87baa2ffe67d3b48a60a866094c7635baf">+1/-26</a> </td> </tr> <tr> <td><strong>TransformSelector.vue</strong><dd><code>Allow transform selector in visualize mode</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10237/files#diff-0037d8dd9cfbacc26309b26e98ae953e7ccbd0891ac2fd01c6314ebd7eed9d2c">+3/-13</a> </td> </tr> <tr> <td><strong>VisualizeLogsQuery.vue</strong><dd><code>Restrict non-table charts when VRL present</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10237/files#diff-979b01d943d58c5d70faeeac5948b7f02f0b2392a12b84ef07ba7f7393ab0261">+14/-0</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ |
||
|
|
be7caf3dbd |
fix: use unique alert count instead of total trigger count in UI
The 'Unique Alerts' card was displaying alert_count (total triggers) instead of the actual number of unique alerts. Now correctly shows the count from the alerts array. Also, show actual trigger count per alert in Related Alerts section The 'Related Alerts' section was displaying topology node alert_count which is out of sync. Now correctly counts actual triggers from the triggers array for each alert. Also, recalculate topology node alert_counts from actual triggers Topology node alert_counts were out of sync due to race conditions in the async enrich_with_topology background task. Now recomputes each node's count from actual triggers when returning incident details. |
||
|
|
9d96682470 |
refactor: remove unused incident service graph API endpoint
The service graph data is now embedded in the main incident details
response via topology_context field, eliminating the need for a
separate API endpoint and reducing HTTP round trips.
- Remove GET /incidents/{id}/service_graph route and handlers
- Remove get_service_graph service function
- Remove IncidentServiceGraph and IncidentGraphStats types
- Clean up frontend API client and tests
|
||
|
|
32e6ac9831 | fix: add session id and traceparent to ai calls (#10230) | ||
|
|
2a693081f3 |
fix: incident detail overview redesign (#10233)
### **PR Type**
Enhancement
___
### **Description**
- Restrict left column to incidentAnalysis tab only
- Redesign overview with five hero metric cards
- Overhaul main content into timeline, details, chart, panels
- Add copy-to-clipboard for incident fields
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["IncidentDetailDrawer"] --> B["Tabs: overview & incidentAnalysis"]
B --> C["Incident Analysis: show left column"]
B --> D["Overview: hide left column"]
D --> E["Hero Metrics Cards"]
D --> F["Main Content Layout"]
F --> G["Timeline & Details"]
F --> H["Alert Activity Chart"]
F --> I["Manage Panel"]
F --> J["Dimensions Panel"]
F --> K["Related Alerts List"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>IncidentDetailDrawer.vue</strong><dd><code>Overhaul
IncidentDetailDrawer UI and layout</code>
</dd></summary>
<hr>
web/src/components/alerts/IncidentDetailDrawer.vue
<ul><li>Restrict incident-details column to incidentAnalysis only<br>
<li> Redesign overview with hero cards (triggers, alerts, services,
<br>duration, frequency)<br> <li> Overhaul main content: timeline,
details, chart, manage, dimensions, <br>related alerts<br> <li> Add
<code>copyToClipboard</code> utility and remove legacy helpers</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10233/files#diff-6973d58a5f49658b07d3533d4db5d32cc6430433b51732481e7497243dadb0b0">+730/-581</a></td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
83e1edc06d |
fix: 10159 replace dashboard panel with custom component in correlation logs tab v1 (#10246)
### **PR Type** Enhancement, Tests ___ ### **Description** - Introduce `useCorrelatedLogs` composable for streaming correlated logs - SQL builder with semantic field mapping and request cancellation - Caching of semantic patterns and dynamic filter management - Add `TimeRangeEditor.vue` and `DimensionFilterEditor.vue` UIs - Preset and custom time window selection - Stable/unstable dimension filter editing with wildcard toggle - Extend cell actions to respect `hideSearchTermActions` flag - Add comprehensive unit tests for new composables and components ___ ### Diagram Walkthrough ```mermaid flowchart LR A["useCorrelatedLogs\n(composable)"] -- "provides state & methods" --> B["CorrelatedLogsTable.vue\n(table UI)"] B -- "opens filter editor" --> C["DimensionFilterEditor.vue\n(filter UI)"] B -- "opens time editor" --> D["TimeRangeEditor.vue\n(time UI)"] A -- "used by" --> E["CellActions.vue\n(hide search term)"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>3 files</summary><table> <tr> <td><strong>useCorrelatedLogs.ts</strong><dd><code>Add correlated logs composable with streaming API</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10246/files#diff-310992fb4914c6eaffbbce225e0c0683c2edad2bb0ab0f8e43530fc38152ed2a">+583/-0</a> </td> </tr> <tr> <td><strong>TimeRangeEditor.vue</strong><dd><code>Add time range editor dialog component</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10246/files#diff-fbebc998fca2093c7f168d13e720aa6606b21ace2e9f2185f81c49e59e9eec70">+498/-0</a> </td> </tr> <tr> <td><strong>DimensionFilterEditor.vue</strong><dd><code>Add dimension filter editor dialog component</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10246/files#diff-6c9172f6882b50f84b5927c491c21702617c66ddde648170199bb11b360f4dde">+324/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>useCorrelatedLogs.spec.ts</strong><dd><code>Add unit tests for correlated logs composable</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10246/files#diff-f5ec3243549ef3a5081acfb9b928fb87d26e86e04a669a85ad03a1a053ec4eac">+591/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Bug fix</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>CellActions.vue</strong><dd><code>Respect hideSearchTermActions in cell actions</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10246/files#diff-de54e5b8cd9503c53f3f802ac7bc7e3d25846f1657c77cd99534d9f60673992e">+6/-2</a> </td> </tr> </table></details></td></tr><tr><td><strong>Refactoring</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>useLogsHighlighter.ts</strong><dd><code>Move cache inside hook and format regex</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10246/files#diff-ad7744a2edc4764be1c7d67feb7fe1473536af245821898a9136256b3aeb0342">+8/-3</a> </td> </tr> </table></details></td></tr><tr><td><strong>Additional files</strong></td><td><details><summary>20 files</summary><table> <tr> <td><strong>features.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/10246/files#diff-f3c3ea1b3f6e34a0718bced5c01c09bfe13b5ba7936ee8b77eb66b8c14767d49">+18/-0</a> </td> </tr> <tr> <td><strong>de.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/10246/files#diff-78f24ecb2dbcfc38fdf3ec22b2559a5b40d236ea689d1c55f5d3e87168310264">+65/-4</a> </td> </tr> <tr> <td><strong>en.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/10246/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+64/-1</a> </td> </tr> <tr> <td><strong>es.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/10246/files#diff-ac2a2167b8b973e3f776f9fe3b43bef4576470d8ad33f3d7cfaff6edff0e5778">+65/-4</a> </td> </tr> <tr> <td><strong>fr.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/10246/files#diff-db80e762b88ddf183820c050cdc6b215e6b02b365b5e73f5152af46b0d26f1a2">+65/-4</a> </td> </tr> <tr> <td><strong>it.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/10246/files#diff-2de78074a5f887afddce60d694ead9322e6ab223eb70251c13819f3028bdc70d">+65/-4</a> </td> </tr> <tr> <td><strong>ja.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/10246/files#diff-092e49c5f9fbc1b539ab9c2866d108d0ce1d314022b4c294eb4611b285e7bbd3">+65/-4</a> </td> </tr> <tr> <td><strong>ko.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/10246/files#diff-50e27ca1b4825a5026f3a251bfcf79c97cab07cfade2ebd512d332453d707c48">+65/-4</a> </td> </tr> <tr> <td><strong>nl.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/10246/files#diff-a1706021687ae5d8a1c006c49eab3946174fecd895f9b70a89c2e76d97250906">+65/-4</a> </td> </tr> <tr> <td><strong>pt.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/10246/files#diff-38e804f64cb5e0e451849fc84e9b46e53c954a4a4263d51c18665ad45f4b4815">+65/-4</a> </td> </tr> <tr> <td><strong>tr.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/10246/files#diff-6f0f131e9e2591480c4c5d1eaffc72d02dc31cbd8d3f90d8f012f08cabac8818">+65/-4</a> </td> </tr> <tr> <td><strong>zh.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/10246/files#diff-8818055db58f83230aeea4ebfd4cec31d924e8c47b6f91298e356959ab25339e">+65/-4</a> </td> </tr> <tr> <td><strong>CorrelatedLogsTable.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/10246/files#diff-2cbeccd1d13276ca572faf566cbfef3adb2a54fa65d8197ade08dd8414464293">+514/-0</a> </td> </tr> <tr> <td><strong>CorrelatedLogsTable.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/10246/files#diff-57e0ec3ac2762de21e67254edf83a4559490f717a8826762c0566fa3b70b6fb8">+978/-0</a> </td> </tr> <tr> <td><strong>DimensionFilterEditor.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/10246/files#diff-94cbaad5e0f29d5cb695077c9b7915cfee73e0b510b87503660407ce349848cb">+581/-0</a> </td> </tr> <tr> <td><strong>DimensionFiltersBar.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/10246/files#diff-852ddb2775c9f58605e39ff8aa8b6a22ae07a8330b9acf9d22535dd49f3f0ea4">+356/-0</a> </td> </tr> <tr> <td><strong>DimensionFiltersBar.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/10246/files#diff-6199755ef4f3b11c06759aabe761173fe475a21daefb0a3e503c9b31b934f257">+155/-0</a> </td> </tr> <tr> <td><strong>TelemetryCorrelationDashboard.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/10246/files#diff-b77a766fa0094f641873071a8f13c73704933b941f387ed105e85a4e59efdb38">+901/-477</a></td> </tr> <tr> <td><strong>DetailTable.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/10246/files#diff-80552b5d25fa6cef9fbbe430b1865d761c4b132284c2d2175afceea8cbabc8c7">+88/-2</a> </td> </tr> <tr> <td><strong>TenstackTable.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/10246/files#diff-bc3c669f5ab65a42ae378df1f7d6b35014c9c220790bdcc72b47f55d1385dc22">+48/-0</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> Co-authored-by: omkark06 <omkar@zinclabs.io> Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com> |
||
|
|
71464bf9aa |
fix: incident correlation with proper semantic dimensions and filters
- Load default semantic groups when org config unavailable - Expand telemetry time range ±15min for single-alert incidents - Handle null _correlate API response gracefully in frontend Fixes correlation failures where incidents had incomplete stable_dimensions and overly restrictive time ranges prevented telemetry queries from returning data. |
||
|
|
f0ccfbe396 |
fix: use correct config flag on UI for incidents
Earlier, the UI code was using `service_graph_enabled` to show (or hide) the incidents screen, this was wrong. Now `incidents_enabled` is used and sent by the backend as part of `/config` API call. |
||
|
|
52c727909e |
fix: OpenObserve destination type card text not visible in light mode (#10223)
### **User description**
## Summary
- Fixes the OpenObserve destination type card text being invisible in
light mode on the Pipeline Destinations page
- Added explicit `color: var(--o2-text-primary)` to `.card-label` class
which was missing, causing the text to inherit an invisible color after
the Tailwind CSS v4 upgrade
## Root Cause
The `.card-label` class never had an explicit color property. It worked
by accident in Tailwind v3 due to inherited defaults, but the upgrade to
Tailwind v4 (commit
|
||
|
|
a218837b72 |
fix: pricing ui fix (#10196)
### **PR Type**
Bug fix
___
### **Description**
- Reduced bottom margin for features section
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>enterprisePlan.vue</strong><dd><code>Update
margin-bottom styling</code>
</dd></summary>
<hr>
web/src/enterprise/components/billings/enterprisePlan.vue
- Updated `margin-bottom` from 268px to 239px
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10196/files#diff-f7fa88084375d33ceff7ec4816843de2705f2ed393590b9d1d993a67ff8ac29b">+1/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
ff4a99dcea |
fix: added readonly flag to avoid mutating logs state (#10207)
### **PR Type**
Enhancement, Bug fix
___
### **Description**
- Add read-only flag to buildSearch to avoid state mutations
- Expose getSearchQueryPayload for read-only queries
- Update QueryPlanDialog to use read-only payload method
- Remove manual state save/restore logic
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>useSearchQuery.ts</strong><dd><code>Add readOnly mode
to buildSearch</code>
</dd></summary>
<hr>
web/src/composables/useLogs/useSearchQuery.ts
<ul><li>Added optional <code>readOnly</code> flag to
<code>buildSearch</code><br> <li> Wrapped state mutations behind
readOnly checks<br> <li> Introduced <code>getSearchQueryPayload</code>
wrapper<br> <li> Fixed NaN checks formatting and ternary alignment</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10207/files#diff-82f20961268fa282f9bc1e48085d1d7db53d2548e48dda743b0af4e4a20fbd17">+109/-47</a></td>
</tr>
<tr>
<td>
<details>
<summary><strong>useSearchStream.ts</strong><dd><code>Expose
getSearchQueryPayload in useSearchStream</code>
</dd></summary>
<hr>
web/src/composables/useLogs/useSearchStream.ts
- Exported `getSearchQueryPayload` alongside existing methods
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10207/files#diff-0b7e910195d1ec4b1301973bd2f4193e1e23442103f69a9fbd189d3f78547014">+1/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Bug fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>QueryPlanDialog.vue</strong><dd><code>Use read-only
payload in QueryPlanDialog</code>
</dd></summary>
<hr>
web/src/components/QueryPlanDialog.vue
<ul><li>Switched from <code>buildSearch</code> to
<code>getSearchQueryPayload</code><br> <li> Removed manual histogram
save/restore logic<br> <li> Adjusted template class binding and
interpolation formatting</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/10207/files#diff-857bd0334ca601c4cd4e3ce2be7bff0dca583460a2fdf02d6d1c2f25a65f0ccd">+75/-58</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
6b29f3cdc9 |
fix: sync saas changes (#10188)
### **User description** This sync the aws and azure saas related changes and cloud org related changes from v0.50.0 branch to main. Reviewers, please specifically take a look at [fix: auxm related changes](https://github.com/openobserve/openobserve/commit/1e278e9b5121d2df9757b3908ab27801bdc06383) commit, which does changes needed for auxm from actix web. Note that router changes have been done in the respective saas commit itself, as it caused conflicts. NOTE: This has not built locally to validate that everything at least compiles, as at the time of writing the main branch is not compiling with ent. ___ ### **PR Type** Enhancement ___ ### **Description** - AWS Marketplace onboarding: UI, API routes, services - Azure Marketplace onboarding: UI, API routes, services - Billing UI adapts to AWS/Azure providers - Add HttpResponse.created/found helpers - Add distributed metering lock and cloud jobs - Enforce free-tier org creation limits ___ <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Configuration changes</strong></td><td><details><summary>3 files</summary><table> <tr> <td><strong>router.ts</strong><dd><code>Add AWS/Azure marketplace setup routes</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10188/files#diff-5cf8b2f94d45462f216d1b74cec6e139cbc94e6f5677bba1e7b55a30aaa95792">+31/-1</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Expose aws and azure marketplace modules</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10188/files#diff-01aa8706a5e31c9d66036669676b55c4f50e8acbbd3323a1979dc43b9611b9a2">+2/-0</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Register marketplace webhook and API routes</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10188/files#diff-02556e3f515441b5d2b6bbea7829df488beac03c4cc41309a6638ae3c0e0aec6">+23/-1</a> </td> </tr> </table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>16 files</summary><table> <tr> <td><strong>awsMarketplace.ts</strong><dd><code>Implement AWS Marketplace HTTP client</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10188/files#diff-a84cf89c9eec197f49a3eafff23d45d539f711282b60175a80cb96255e877661">+64/-0</a> </td> </tr> <tr> <td><strong>azureMarketplace.ts</strong><dd><code>Implement Azure Marketplace HTTP client</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10188/files#diff-45edda85f9d7b0e2ec5a750d112b0b52d22dce0c48aa8361e30d51cacfeee16c">+51/-0</a> </td> </tr> <tr> <td><strong>http.rs</strong><dd><code>Add HttpResponse.created and found helpers</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10188/files#diff-e1831572a854319ed0a69e803514466aea13a4924f4fa02f58dbf508c30a19fd">+18/-0</a> </td> </tr> <tr> <td><strong>billings.rs</strong><dd><code>Include provider field in subscription model</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10188/files#diff-986786190d086283f70a66cc487eadc68784dd4200f8a32e6cf4c50a3d6603ca">+3/-0</a> </td> </tr> <tr> <td><strong>aws_marketplace.rs</strong><dd><code>Add AWS Marketplace registration and linking handlers</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10188/files#diff-03b179d714809fbccd4a85bbd783f2399540b515796f5afb0060ff886f872b87">+364/-0</a> </td> </tr> <tr> <td><strong>azure_marketplace.rs</strong><dd><code>Add Azure Marketplace linking handler</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10188/files#diff-da9cf01b26c5f642ceebba9d4355bc45ccb518b4a191c38dbe3178f42884b153">+148/-0</a> </td> </tr> <tr> <td><strong>billings.rs</strong><dd><code>Enhance billing webhook and redirect logging</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10188/files#diff-725936e3d6e955175e6100e8ca6f4437f334a2b554d6f11fa349ee9cbac70425">+64/-5</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Add distributed metering lock logic</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10188/files#diff-f2e4c29b8eef22189ec704a832633c4bd135a24444f054864c98064bd0963681">+67/-2</a> </td> </tr> <tr> <td><strong>organization.rs</strong><dd><code>Enforce free org limits in org workflow</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10188/files#diff-6b3c3c2b027c1158c0d41302cc69dfcd20ab68a6a4fa365cda403f838940bbb4">+40/-13</a> </td> </tr> <tr> <td><strong>Billing.vue</strong><dd><code>Conditional invoice tab based on provider</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10188/files#diff-08d804667873a5d984027ad69438432a14973e0318cf78ad981bc7b9a31c1bf4">+30/-2</a> </td> </tr> <tr> <td><strong>TrialPeriod.vue</strong><dd><code>Hide trial message for AWS-billed orgs</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10188/files#diff-cc999442352001a0c7a756db0974f99ec3a21d566e9082d1b113c85ca897dafa">+25/-3</a> </td> </tr> <tr> <td><strong>plans.vue</strong><dd><code>Adapt plan view to billing providers</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10188/files#diff-a85ef89681b89f6ae045ed1c45bd3e4aa8c494a7784a8a56514def1af6eef896">+6/-1</a> </td> </tr> <tr> <td><strong>proPlan.vue</strong><dd><code>Display AWS/Azure billing chip in plan card</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10188/files#diff-b5678b2763909484d6475adf5af690b3d382d8438520adcfc1428b66cf7ad7d5">+28/-2</a> </td> </tr> <tr> <td><strong>AwsMarketplaceSetup.vue</strong><dd><code>Add AWS Marketplace setup Vue view</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10188/files#diff-7345a61d1ba6216718c48067d9c010f069fb43222a15094b4644474eb9091cae">+445/-0</a> </td> </tr> <tr> <td><strong>AzureMarketplaceSetup.vue</strong><dd><code>Add Azure Marketplace setup Vue view</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10188/files#diff-5e29364b67f1e0a714d1d219bc4b619229068ef6e0b2312cedeabf720a0b25f1">+371/-0</a> </td> </tr> <tr> <td><strong>Login.vue</strong><dd><code>Support marketplace redirects in login flow</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10188/files#diff-a135c379ef6ac8f92199ea5f7ff19a227971a9b0a87ccccf87c0268740522c2c">+21/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>en.json</strong><dd><code>Add AWS/Azure marketplace localization text</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10188/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+35/-0</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Signed-off-by: Yashodhan Joshi <yjdoc2@gmail.com> Co-authored-by: Yashodhan Joshi <yjdoc2@gmail.com> Co-authored-by: udev <uddhav@openobserve.ai> Co-authored-by: sai nikhil kethe <nikhil@openobserve.ai> Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |
||
|
|
5426673cbd |
feat: RUM Traces correlation (#10149)
Design at: rum ### **PR Type** Enhancement, Bug fix, Tests ___ ### **Description** - Add `useTraceCorrelation` composable merging RUM and backend spans - Support `x-openobserve-trace-id`/`span-id` headers in backend - Fix span parent-child hierarchy in `setup_tracing_with_trace_id` - Add event/resource drawers for trace correlation UI - Configure CORS and `allowedTracingUrls` for tracing ___ ### Diagram Walkthrough ```mermaid flowchart LR A["Browser RUM SDK"] -- "x-openobserve-trace-id/span-id" --> B["Backend HTTP server"] B -- "get_or_create_trace_id / setup_tracing" --> C["OpenTelemetry context"] C -- "spans in _traces stream" --> D["APM traces"] E["useTraceCorrelation"] -- "searchService queries" --> F["_rumdata / _traces"] E -- "compute performance breakdown" --> G["CorrelationData"] G -- "render in drawers" --> H["EventDetailDrawer / ResourceDetailDrawer"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>9 files</summary><table> <tr> <td><strong>useTraceCorrelation.ts</strong><dd><code>Composable for fetching RUM-trace correlation</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10149/files#diff-12b26c2158a3ef524819fe592bbd31ad7eda4fa3775633317bdc98924fcbe500">+178/-0</a> </td> </tr> <tr> <td><strong>http.rs</strong><dd><code>Parse `x-openobserve-trace-id` and span propagation</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10149/files#diff-3b50a69c1ec2f63f8eebb5f9880e17826463a586768aed3e3e15242833609d6b">+135/-0</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Maintain span hierarchy in trace setup</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10149/files#diff-1b15316505c31acccb26ba66d920fdb0894567d08d2bf1e3457716d128a67b83">+25/-0</a> </td> </tr> <tr> <td><strong>search_stream.rs</strong><dd><code>Enter HTTP span before child search span</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10149/files#diff-642de43ff6b19ae41087a9f1efc02d8b0b873809e0c92cbddfac1a30ef3f1184">+18/-10</a> </td> </tr> <tr> <td><strong>multi_streams.rs</strong><dd><code>Enter HTTP span before multi-stream span</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10149/files#diff-c3233cdf1e68cb2455f91457719b9c2f477e735ee16546fdfe111e76768bd054">+9/-5</a> </td> </tr> <tr> <td><strong>EventDetailDrawer.vue</strong><dd><code>Add EventDetailDrawer correlation UI</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10149/files#diff-f168d8fad42a6fd39bd4e4b499de54953b7b420831df98b40402b662dfefa88e">+723/-0</a> </td> </tr> <tr> <td><strong>ResourceDetailDrawer.vue</strong><dd><code>Add ResourceDetailDrawer correlation UI</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10149/files#diff-cec3736de55c8f0a415cdbe912d9c630cce6f91aaf92c694b64bf2f7e4989b5b">+317/-0</a> </td> </tr> <tr> <td><strong>TraceDetails.vue</strong><dd><code>Merge RUM events into trace details view</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10149/files#diff-bc7fe6b6339ee2cde6494c0982d4b860847447e79f7431f07d598e0446df06f2">+207/-22</a></td> </tr> <tr> <td><strong>TraceDetailsSidebar.vue</strong><dd><code>Improve trace sidebar formatting & correlation</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10149/files#diff-0017bc08d8da96af6433770d0b274f825798d24401b33ce091b16a50fbaf4b57">+159/-102</a></td> </tr> </table></details></td></tr><tr><td><strong>Configuration changes</strong></td><td><details><summary>2 files</summary><table> <tr> <td><strong>main.ts</strong><dd><code>Configure RUM init and allowed tracing URLs</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10149/files#diff-37b29c5a3b76595194070205d9a0cdedcd717bf7c4367022d1e2667395962f2e">+53/-41</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Allow custom tracing headers in CORS</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10149/files#diff-02556e3f515441b5d2b6bbea7829df488beac03c4cc41309a6638ae3c0e0aec6">+4/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>http.rs</strong><dd><code>Add tests for trace ID header validation</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10149/files#diff-3b50a69c1ec2f63f8eebb5f9880e17826463a586768aed3e3e15242833609d6b">+135/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Formatting</strong></td><td><details><summary>3 files</summary><table> <tr> <td><strong>SearchResult.vue</strong><dd><code>Clean up formatting in log results</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10149/files#diff-5e65533aa4754bb6d0074fda18ffc1ecacded3b9ca6bc28a161c3f6b12f20195">+180/-78</a></td> </tr> <tr> <td><strong>PlayerEventsSidebar.vue</strong><dd><code>Tidy up player events sidebar formatting</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10149/files#diff-a7d04eb87cd7588ba4811d79c6d32696a58d737a24931258329be4f96cee7610">+28/-8</a> </td> </tr> <tr> <td><strong>FrustrationEventBadge.vue</strong><dd><code>Increase padding on frustration badges</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10149/files#diff-092623e0f5b95471d97cd4f39f065d35ea154df9051a44908c1aec3ea84ca682">+7/-3</a> </td> </tr> </table></details></td></tr><tr><td><strong>Dependencies</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>package.json</strong><dd><code>Bump `@openobserve/browser-*` to beta versions</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10149/files#diff-b861012a5dd72b8a9f3281b7cf09f5a779c98569d040b1bbc1db50f1b15e7cce">+2/-2</a> </td> </tr> </table></details></td></tr><tr><td><strong>Additional files</strong></td><td><details><summary>2 files</summary><table> <tr> <td><strong>TraceCorrelationCard.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/10149/files#diff-e0d662d92758dec703db8d4d5be5a694f3454ee43512515488be24a2531a96a6">+291/-0</a> </td> </tr> <tr> <td><strong>SessionViewer.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/10149/files#diff-9f7a183be1e2cfcb3c3c852c059f66003dd4f3f586421b012e1b835724929ca1">+122/-6</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: Subhradeep Chakraborty <chakrabortysubhradeep556@gmail.com> |
||
|
|
7ebb4c9940 |
fix: backfill icons and edit timerange (#10209)
- Use consistent styling for backfill UI. - The timerange picker on edit page should display the backfill timerange by default. |
||
|
|
c1820e5612 | fix: update the endpoint | ||
|
|
484c4a953a |
feat: (Incidents) endpoint to update incident severity and title
- create endpoint `PATCH .../incident/{id}/update` to update incident
severity and title
- add MCP description for incident APIs
- consolidate the `/update_status` endpoint with this
- a few optimizations and code cleaning
- unit tests
|
||
|
|
d8d4708dca |
feat: dashboard promql table chart column ordering (#10210)
Design at: https://github.com/openobserve/designs/blob/main/dashboards/promql-table-chart-column-order/design.md ### **PR Type** Enhancement ___ ### **Description** - Extend panel schema with column_order & sticky_first_column - Use applyColumnOrdering in TableConverter for ordering - Add ColumnOrderPopUp & config UI in PromQLChartConfig - Update TableRenderer to apply sticky & ordered columns ___ ### Diagram Walkthrough ```mermaid flowchart LR UI["PromQLChartConfig config UI"] Popup["ColumnOrderPopUp"] Config["PanelConfig update"] Converter["TableConverter.applyColumnOrdering"] Renderer["TableRenderer sticky styles"] UI -- "open popup" --> Popup Popup -- "save order" --> Config Config -- "order & sticky flags" --> Converter Converter -- "ordered columns" --> Renderer ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Configuration changes</strong></td><td><details><summary>2 files</summary><table> <tr> <td><strong>useDashboardPanel.ts</strong><dd><code>Add sticky_first_column and column_order defaults</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10210/files#diff-fbba1700750053b9eaf38ddd30dab84531bc44131c795ebb713811e4930cd7cb">+2/-0</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Extend PanelConfig with new ordering fields</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10210/files#diff-cbf3fe971525ba58892400391dfd7dac7e43d6049d6b4f5a9840ad104ebc5e08">+4/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>4 files</summary><table> <tr> <td><strong>convertPromQLTableChart.ts</strong><dd><code>Implement applyColumnOrdering and integrate ordering</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10210/files#diff-94123beacdf1e10ef812b4a6fda870004aa30f65eeb9e5ef6662f907dc50092d">+35/-3</a> </td> </tr> <tr> <td><strong>ColumnOrderPopUp.vue</strong><dd><code>Add drag-drop popup for column ordering</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10210/files#diff-e3f75c0798bebeefd7bffc7e3529daca6c128fc3fe655a15684105b78de3f50e">+349/-0</a> </td> </tr> <tr> <td><strong>PromQLChartConfig.vue</strong><dd><code>Integrate column order controls in config UI</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10210/files#diff-305fcbfc89618c91ca0ee6c8c52cfa596169ca2dced6778eea6cd3c89f071573">+124/-0</a> </td> </tr> <tr> <td><strong>TableRenderer.vue</strong><dd><code>Apply sticky styling and ordering in table renderer</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10210/files#diff-794706ea9da3a70012a0327c0464f9fd16802f78ece26055fe951716c2d73d59">+193/-59</a></td> </tr> </table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>en.json</strong><dd><code>Add translation key for Column Order</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/10210/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+1/-0</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |