mirror of
https://github.com/openobserve/openobserve.git
synced 2026-11-04 08:09:27 +00:00
bc38057bbd8af08060a67e8737667001792e8c19
1844
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
f62d0d60c5 |
feat: traces for agent (#8800)
### **PR Type**
Enhancement, Bug fix
___
### **Description**
- Add distributed tracing for AI chat
- Parse W3C traceparent, fallback to UUID v7
- Enable conditional tracer provider/init
- Improve AI error logs with trace context
___
### Diagram Walkthrough
```mermaid
flowchart LR
FE["Frontend generateTraceContext()"] -- "traceparent header" --> API["/api/{org_id}/ai/chat(_stream)"]
API -- "Span root if enabled" --> Tracer["Tracer provider"]
API -- "trace_id propagated" --> AIService["ai::service::{chat,chat_stream}"]
Tracer -- "OTLP exporters" --> OO["OpenObserve OTLP"]
Tracer -- "Filtered ai.* spans" --> OO["OpenObserve OTLP"]
Tracer -- "Optional eval exporter" --> Eval["AI Evaluation OTLP"]
```
<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>chat.rs</strong><dd><code>Add tracing headers parsing
and span creation</code>
</dd></summary>
<hr>
src/handler/http/request/ai/chat.rs
<ul><li>Accept headers and org path in chat<br> <li> Create root tracing
spans when enabled<br> <li> Parse W3C traceparent to derive trace_id<br>
<li> Propagate trace_id to AI services and logs</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8800/files#diff-12a78cbb31b313cb3a0ca50f25c177470cf49b02708f179fe138ed3d66a2926b">+77/-12</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>main.rs</strong><dd><code>Conditional tracing setup and
AI exporters</code>
</dd></summary>
<hr>
src/main.rs
<ul><li>Initialize tracer when AI tracing enabled<br> <li> Add
FilteringSpanProcessor for ai.* spans<br> <li> Configure additional OTLP
exporters<br> <li> Use UUID v7 ID generator when available</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8800/files#diff-42cb6807ad74b3e201c5a7ca98b911c5fa08380e942be6e4ac5807f8377f87fc">+223/-17</a></td>
</tr>
<tr>
<td>
<details>
<summary><strong>useAiChat.ts</strong><dd><code>Add traceparent to AI
chat requests</code>
</dd></summary>
<hr>
web/src/composables/useAiChat.ts
<ul><li>Generate and send traceparent header<br> <li> Pass abort signal
in fetch options</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8800/files#diff-830ee4f21bdbbd0fa5c5c0f43b0a1d0200831e07ccddc91982cf0371c801b046">+6/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>ai_chat.ts</strong><dd><code>Propagate traceparent in
service requests</code>
</dd></summary>
<hr>
web/src/services/ai_chat.ts
<ul><li>Include traceparent header in chat_stream<br> <li> Utilize
generateTraceContext utility</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8800/files#diff-d5a69d2b2a2a97e0875282b079de6092a5aa1e9cb93a4eb7ff68034b43eac3a1">+3/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Miscellaneous</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>wal.rs</strong><dd><code>Remove tracing attribute from
WAL list</code>
</dd></summary>
<hr>
src/service/search/datafusion/storage/wal.rs
- Remove unused tracing instrument on list
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8800/files#diff-9ca700516d742bbc3c93f2271b27034650124c06a594f5b668144c51d7e28637">+0/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>vite.config.ts</strong><dd><code>Adjust Vite dependency
optimization settings</code>
</dd></summary>
<hr>
web/vite.config.ts
<ul><li>Exclude echarts modules from optimizeDeps<br> <li> Disable
forced dependency optimization</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8800/files#diff-9430906049744cbbfe5d0b382b2466843a42cfebf755ff86fec850b0712258ef">+8/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
9f8d25cb4d |
fix: dashboard listing pages UI changes made sync with other pages (#8796)
### **User description** 1. Table list changes 2. folder list changes 3. submit btn , cancel btn , move btn , export btn , discard btn, apply btn changes ___ ### **PR Type** Enhancement ___ ### **Description** - Align dashboards UI with new design - Replace buttons with themed O2 styles - Standardize toggles sizing and theming - Improve tables, search, and layout ___ ### Diagram Walkthrough ```mermaid flowchart LR AddDash["AddDashboard.vue"] -- "buttons, spacing" --> UI["Unified O2 styles"] AddFolder["AddFolder.vue"] -- "inputs, buttons" --> UI ConfigPanel["ConfigPanel.vue"] -- "toggle sizing/theming" --> UI QueryEditor["DashboardQueryEditor.vue"] -- "function toggle style" --> UI DashboardsView["Dashboards.vue"] -- "search, folder header, table footer" --> UI AddPanel["AddPanel.vue"] -- "action button styles" --> UI Styles["app.scss"] -- "new negative button theme" --> 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>7 files</summary><table> <tr> <td><strong>AddDashboard.vue</strong><dd><code>Update form spacing and action buttons styling</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8796/files#diff-21d49964b1a38dce6b2b2811cade3cff3dcfd0f70cb1aa94b6deb7ea9ac848ce">+10/-8</a> </td> </tr> <tr> <td><strong>AddFolder.vue</strong><dd><code>Revamp paddings, inputs, and footer buttons</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8796/files#diff-3bd1ba28ba29b71469aac901fd8000480c3db6c0f2dbc86ea55221787ae3ffd2">+10/-12</a> </td> </tr> <tr> <td><strong>ConfigPanel.vue</strong><dd><code>Apply large themed toggles across options</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8796/files#diff-c3a6e64dff02b58bb7cdc3f0668990b41ff41544b4c5e991bbcd989ad4bba3f8">+25/-0</a> </td> </tr> <tr> <td><strong>DashboardQueryEditor.vue</strong><dd><code>Restyle function editor toggle with theming</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8796/files#diff-68bf1b319223d103f1b99e0b681764e4eb76942399397779c81c2cd18f6485ff">+4/-3</a> </td> </tr> <tr> <td><strong>Dashboards.vue</strong><dd><code>Redesign list UI: search, folders, table, footer</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8796/files#diff-8da3187db8ce3d795d0f196ede6b2290221ffa3e27b15dcc2b645e44dd196213">+119/-78</a></td> </tr> <tr> <td><strong>AddPanel.vue</strong><dd><code>Standardize header actions and picker height</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8796/files#diff-c9632db1ad95af95aba10161bcbc7c5608318919f228637bdafae3f3a31267e8">+22/-15</a> </td> </tr> <tr> <td><strong>app.scss</strong><dd><code>Add negative button themed variants</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8796/files#diff-5703d12504b0395cbfbbfad02a592bc391496026e5f03743102ce06c210ea05f">+20/-0</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: Shrinath Rao <shnath@openobserve.ai> Co-authored-by: ktx-akshay <akshay.patil@kiara.tech> |
||
|
|
62f2c35c79 |
fix: fixed stream name in traces RED queries (#8795)
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Expand trace time window ±10s
- Use selected stream in metrics
- Unify metrics queries placeholders
- Minor template formatting fixes
___
### Diagram Walkthrough
```mermaid
flowchart LR
UI["TraceDetails.vue UI"]
TimeWin["±10s time window"]
MetricsDash["TracesMetricsDashboard.vue"]
MetricsJSON["metrics.json queries"]
StreamSel["Selected stream injected"]
UI -- fetch traces/details --> TimeWin
MetricsDash -- replace [STREAM_NAME] --> StreamSel
MetricsDash -- apply WHERE --> MetricsJSON
MetricsJSON -- updated SQL & fields --> MetricsDash
```
<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>TraceDetails.vue</strong><dd><code>Add time padding and
tidy template</code>
</dd></summary>
<hr>
web/src/plugins/traces/TraceDetails.vue
<ul><li>Add ±10s padding to trace search<br> <li> Add ±10s padding to
trace details fetch<br> <li> Minor template formatting and structure
cleanup</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8795/files#diff-bc7fe6b6339ee2cde6494c0982d4b860847447e79f7431f07d598e0446df06f2">+267/-259</a></td>
</tr>
</table></td></tr><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>TracesMetricsDashboard.vue</strong><dd><code>Use
selected stream in metrics queries</code>
</dd></summary>
<hr>
web/src/plugins/traces/metrics/TracesMetricsDashboard.vue
<ul><li>Inject selected stream into query via [STREAM_NAME]<br> <li>
Preserve and apply WHERE_CLAUSE replacement</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8795/files#diff-7b6f29a2737d9501b18dbd8622eba4965e4bc2b92115627ae7d2e70cc3382087">+7/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>metrics.json</strong><dd><code>Unify metrics SQL and
field mappings</code>
</dd></summary>
<hr>
web/src/plugins/traces/metrics/metrics.json
<ul><li>Replace default stream with [STREAM_NAME] placeholder<br> <li>
Unify queries for duration, rate, error rate<br> <li> Update field
aliases to new columns</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8795/files#diff-8bf43bcbba5150a185625f458adcb6756145e7bfcbbf632d87a9d487a937524e">+11/-11</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
caac6e6776 |
feat: add legends type configuration options and gridlines visibility to dashboard panels (#8291)
- #8801 ### **PR Type** Enhancement, Tests ___ ### **Description** - Add legend type, height, alignment options - Implement gridlines visibility configuration - Introduce legend layout utility module - Add comprehensive unit tests coverage ___ ### Diagram Walkthrough ```mermaid flowchart LR RustPanel["Rust PanelConfig schema"] -- "adds fields" --> FEConfig["Frontend default panel config"] FEConfig -- "used by" --> Renderer["PanelSchemaRenderer"] LegendUtil["legendConfiguration.ts"] -- "computes legend sizes/positions" --> Renderer ConfigUtils["configUtils.ts"] -- "controls UI visibility logic" --> ConfigPanel["ConfigPanel.vue/specs"] PromQLSpec["convertPromQLData.spec.ts"] -- "tests gridlines, legends" --> LegendUtil ``` <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>mod.rs</strong><dd><code>Extend panel schema with legends and gridlines</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8291/files#diff-da49585bbcb02bf0f737bb68739ebc248edd15c7ad9427c0e68f7728bb4a8c17">+18/-0</a> </td> </tr> <tr> <td><strong>legendConfiguration.ts</strong><dd><code>New legend layout and positioning utilities</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8291/files#diff-048201ce8e1e704cdcd359b8d26f01a970a183c27c6a08fb08ea827a1e62b332">+1335/-0</a></td> </tr> <tr> <td><strong>configUtils.ts</strong><dd><code>New config visibility helpers for UI</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8291/files#diff-13c3af76b0006aa5579eaf62dcc96012d217ef17d9ee03ce70a3abdc904558bc">+160/-0</a> </td> </tr> <tr> <td><strong>useDashboardPanel.ts</strong><dd><code>Set new default legend and gridlines options</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8291/files#diff-fbba1700750053b9eaf38ddd30dab84531bc44131c795ebb713811e4930cd7cb">+7/-0</a> </td> </tr> <tr> <td><strong>PanelSchemaRenderer.vue</strong><dd><code>Observe layout changes and re-render chart</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8291/files#diff-e5376e7e77bf3aaf6590c2522d8c2dbffcc95a8006ae0d6dc0040a37825367d6">+33/-1</a> </td> </tr> </table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>2 files</summary><table> <tr> <td><strong>convertPromQLData.spec.ts</strong><dd><code>Add tests for gridlines, connect_nulls, legend sizing</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8291/files#diff-2769044ec488ef4070c2e1a28ce23ec36b945e46c903b870f8b340cbd6b05211">+1814/-0</a></td> </tr> <tr> <td><strong>convertDataIntoUnitValue.spec.ts</strong><dd><code>Minor spec file fix newline</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8291/files#diff-e9d8a984ed78af13e4d4424c605a3a55fe6ad2a3f7e403fad156ce17ffdc3bdd">+1/-1</a> </td> </tr> </table></details></td></tr><tr><td><strong>Additional files</strong></td><td><details><summary>8 files</summary><table> <tr> <td><strong>PanelSchemaRenderer.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8291/files#diff-897e6e12808163dfb85ea964ac97d45a8c50146672558b4d86de292daaf021ce">+1199/-0</a></td> </tr> <tr> <td><strong>ConfigPanel.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8291/files#diff-a4e717cd660ad6fa369629f8de524f4d57bf4f71b11d3244ce41b9ed9f0379d2">+1310/-19</a></td> </tr> <tr> <td><strong>ConfigPanel.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8291/files#diff-c3a6e64dff02b58bb7cdc3f0668990b41ff41544b4c5e991bbcd989ad4bba3f8">+251/-42</a></td> </tr> <tr> <td><strong>configUtils.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8291/files#diff-76ffd3924d32c033abf1863d50311fe5005740ac4c03072f5bb361c53bf9a305">+1127/-0</a></td> </tr> <tr> <td><strong>convertPromQLData.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8291/files#diff-68d70ba6c622911d48cdb567940dc404a4a6468b86c6d24fb54e5f1d8aa5ca2a">+141/-23</a></td> </tr> <tr> <td><strong>convertSQLData.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8291/files#diff-1dc85f7550b15820974ad93fa461de48d24bc5cbed621bffddb27250211fa88d">+1268/-1</a></td> </tr> <tr> <td><strong>convertSQLData.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8291/files#diff-88c0e865040a20b2c8bb7d77e7f6bd187a5b07c1645c120223bc9d59603752c3">+217/-148</a></td> </tr> <tr> <td><strong>legendConfiguration.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8291/files#diff-8fe65c64853f1d1a66b8fbc4ec0c567487438e84c9e03ed8ad63566b3d589a71">+1101/-0</a></td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: ktx-abhay <abhay.padamani@kiara.tech> |
||
|
|
923348bb43 |
fix: ux changes for logs page (#8790)
### **PR Type** Enhancement, Bug fix, Documentation ___ ### **Description** - Extracted inline styles to scoped SCSS - Improved logs UI/UX and theming - Fixed flicker and pagination UX - Added reusable toolbar and collapse styles ___ ### Diagram Walkthrough ```mermaid flowchart LR SearchBar["SearchBar.vue"] -- "toolbar, toggles, menu UX" --> Styles["New SCSS modules"] IndexList["IndexList.vue"] -- "field list pagination, loading" --> Styles SearchResult["SearchResult.vue"] -- "histogram/table layout refactor" --> Styles Index["Index.vue"] -- "splitter/collapse UX, visualize container" --> Styles TenstackTable["TenstackTable.vue"] -- "table hover/headers theme" --> Styles DetailTable["DetailTable.vue"] -- "wrap toggle, layout" --> Styles History["SearchHistory.vue"] -- "wrap toggle, warning pill" --> Styles Scheduler["SearchSchedulersList.vue"] -- "rounded btn, external styles" --> Styles TransformSel["TransformSelector.vue"] -- "toolbarized toggle, icons" --> Styles FunctionSel["FunctionSelector.vue"] -- "class hooks, styles" --> Styles SyntaxGuide["SyntaxGuide.vue"] -- "dark mode class, ext styles" --> Styles JsonPreview["JsonPreview.vue"] -- "externalized styles" --> Styles App["App.vue"] -- "theme root class" --> AppStyles["app.scss: global scrollbar, collapse btn"] ``` <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>31 files</summary><table> <tr> <td><strong>SearchBar.vue</strong><dd><code>Toolbar/UI cleanup, toggles and menus restyle</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8790/files#diff-81893de4edf186b0556f610acb280c87baa2ffe67d3b48a60a866094c7635baf">+272/-585</a></td> </tr> <tr> <td><strong>IndexList.vue</strong><dd><code>Field list pagination UX, loading state, helpers</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8790/files#diff-08f058f883b659e713e606991a7ea37ae1ff016b7cccef970489ab5840dc3d09">+133/-419</a></td> </tr> <tr> <td><strong>SearchResult.vue</strong><dd><code>Histogram/table layout classes, external styles</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8790/files#diff-5e65533aa4754bb6d0074fda18ffc1ecacded3b9ca6bc28a161c3f6b12f20195">+30/-283</a></td> </tr> <tr> <td><strong>Index.vue</strong><dd><code>Splitter/collapse UX, visualize container cleanup</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8790/files#diff-0323c3da69b369843c5d72bf4df5b00ca6b5147192a213baf331659ecf92af62">+99/-57</a> </td> </tr> <tr> <td><strong>DetailTable.vue</strong><dd><code>Wrap toggle restyle and list/table CSS extraction</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8790/files#diff-80552b5d25fa6cef9fbbe430b1865d761c4b132284c2d2175afceea8cbabc8c7">+19/-79</a> </td> </tr> <tr> <td><strong>SearchSchedulersList.vue</strong><dd><code>Minor button rounding, moved styles to SCSS</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8790/files#diff-0c0a4097c53f07712d35562b1336602bf24faddedab77a9f5717f5582dcac2f1">+2/-137</a> </td> </tr> <tr> <td><strong>TenstackTable.vue</strong><dd><code>Table container class and theming adjustments</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8790/files#diff-bc3c669f5ab65a42ae378df1f7d6b35014c9c220790bdcc72b47f55d1385dc22">+5/-104</a> </td> </tr> <tr> <td><strong>SearchHistory.vue</strong><dd><code>Wrap toggle restyle and externalized styles</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8790/files#diff-9dd167bd5e272b2057f53c16b905047eec00655a3552daad240a964d67a6f56d">+13/-100</a></td> </tr> <tr> <td><strong>TransformSelector.vue</strong><dd><code>Toolbarized transform toggle and SCSS import</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8790/files#diff-0037d8dd9cfbacc26309b26e98ae953e7ccbd0891ac2fd01c6314ebd7eed9d2c">+25/-47</a> </td> </tr> <tr> <td><strong>JsonPreview.vue</strong><dd><code>Moved component styles to shared SCSS</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8790/files#diff-3985073134d35ff074742944b114d0905524038b42e6d2ac887fef2c8436fb16">+1/-109</a> </td> </tr> <tr> <td><strong>SyntaxGuide.vue</strong><dd><code>Dark-mode class hook and SCSS extraction</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8790/files#diff-c6e8bb651fadd2b15b5b97f5b6069a57813fb97cc3d06eef983af4def33e8806">+5/-67</a> </td> </tr> <tr> <td><strong>FunctionSelector.vue</strong><dd><code>Class hooks and SCSS module inclusion</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8790/files#diff-11d9577516700b94b5f3325e77214d0d886473e690db8c9ea981613c9fb89b68">+5/-3</a> </td> </tr> <tr> <td><strong>VisualizeLogsQuery.vue</strong><dd><code>Externalized layout/splitter styles</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8790/files#diff-979b01d943d58c5d70faeeac5948b7f02f0b2392a12b84ef07ba7f7393ab0261">+1/-50</a> </td> </tr> <tr> <td><strong>DateTime.vue</strong><dd><code>Rounded buttons and hover feedback</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8790/files#diff-c06c96ba750be6fc82f517a53ba809efff8aa619aba203b871d4d2aeb7f64f60">+6/-2</a> </td> </tr> <tr> <td><strong>App.vue</strong><dd><code>Theme root class binding for global styles</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8790/files#diff-7322e6842f92edbe4a6e810d63f066ec95e64806d64a02b52e2b9bef2a73db91">+7/-1</a> </td> </tr> <tr> <td><strong>app.scss</strong><dd><code>Global scrollbar, collapse button, toggles polish</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8790/files#diff-5703d12504b0395cbfbbfad02a592bc391496026e5f03743102ce06c210ea05f">+142/-2</a> </td> </tr> <tr> <td><strong>search-result.scss</strong><dd><code>New SCSS for search result layout and table</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8790/files#diff-e98f726aae49bdd5f8a426c8023eed612f3f33d52b0d458b7730990b3aafc41e">+235/-0</a> </td> </tr> <tr> <td><strong>detail-table.scss</strong><dd><code>New SCSS for detail table and panels</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8790/files#diff-63d5673331a5ee1ab792d07831e4a6dbb0d2d40d2ad628652d57944e47a96338">+55/-0</a> </td> </tr> <tr> <td><strong>logs-page.scss</strong><dd><code>New SCSS for logs page structure and splitter</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8790/files#diff-3d8458bb7b934b0529dcb35f85e008a4404510435ee4a636ff86e20cfd2970c9">+1401/-0</a></td> </tr> <tr> <td><strong>search-schedulerlist.scss</strong><dd><code>New SCSS for scheduler list views</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8790/files#diff-42bbf309982cfcfd1cca270e80a2bddd35947e59dd91f600f5c85788af1e0802">+136/-0</a> </td> </tr> <tr> <td><strong>index-list.scss</strong><dd><code>New SCSS for field/index list</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8790/files#diff-0a3be477d7575f8e412bf8092f91901dd1330c8458ebc2b24f96107647cfe200">+139/-0</a> </td> </tr> <tr> <td><strong>search-history.scss</strong><dd><code>New SCSS for search history page</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8790/files#diff-01ae0807917e4de78780d9ec549ae2b57e3004e7be72cd77536ac5ae75bda3ed">+97/-0</a> </td> </tr> <tr> <td><strong>transform-selector.scss</strong><dd><code>New SCSS for transform selector controls</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8790/files#diff-131c7ba7388ebe94d30b7f42ca12c30b0840a9f8d69622b68e573e829d9fa7d6">+99/-0</a> </td> </tr> <tr> <td><strong>syntax-guide.scss</strong><dd><code>New SCSS for syntax guide dialog</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8790/files#diff-7173f5473b8fed57af19a3017f9823e68099745dc181f7996f0024fa8099535c">+78/-0</a> </td> </tr> <tr> <td><strong>tenstack-table.scss</strong><dd><code>New SCSS for data table and resizer</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8790/files#diff-0175daf538e52ff95480cb40fadf8e26564474f15e39c5fe2d628f2d7e72aa78">+99/-0</a> </td> </tr> <tr> <td><strong>function-selector.scss</strong><dd><code>New SCSS for function selector</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8790/files#diff-16e97b00c534fae20daf24545e4e6a37b83f59e22668eddfd2083c9d778a9032">+58/-0</a> </td> </tr> <tr> <td><strong>visualizelogs-query.scss</strong><dd><code>New SCSS for visualize logs layout</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8790/files#diff-263f2af1f510ef9047a88f4cf438ffdc7b22cc598a56071900b898899d5bdab3">+50/-0</a> </td> </tr> <tr> <td><strong>json-preview.scss</strong><dd><code>New SCSS for JSON preview and menus</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8790/files#diff-27d0a0d1ec327559e1c09ffec34a7fc937db12580f53d61f10897f378af7d6ff">+17/-0</a> </td> </tr> <tr> <td><strong>quasar-overrides.scss</strong><dd><code>Quasar overrides aligned to new tokens</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8790/files#diff-563af58e60b7250169ebe9ced59dfe163a801a106d7f20964a8d20000b320af5">+16/-15</a> </td> </tr> <tr> <td><strong>_variables.scss</strong><dd><code>Variables updated for rem units and theming</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8790/files#diff-b3e37ee00c17b89ad1177c5592504277aa645b374095c065ea8b3782df5e89a2">+1/-1</a> </td> </tr> <tr> <td><strong>quasar-variables.sass</strong><dd><code>Quasar variables tuned for new UI</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8790/files#diff-bb2b39e6af7e949bef75bce0c7021310c42dd0945c30f963e3c8b599598bfdaa">+2/-2</a> </td> </tr> </table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>ui-guidelines.md</strong><dd><code>UI guidelines documentation added</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8790/files#diff-8c5e2f35601f7d06e3389626dd501fc84e694efd6cf0faab6dfaf92445483dfa">+1056/-0</a></td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: Ashish Kolhe <ashish.j.kolhe@gmail.com> Co-authored-by: Shrinath Rao <shnath@openobserve.ai> |
||
|
|
a66d0119a0 |
fix: update in kubernetes datasource configuration (#8785)
### **PR Type**
Enhancement, Documentation
___
### **Description**
- Update cert-manager install URL to v1.19.0
- Point OTel operator install to curated manifest
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["KubernetesConfig.vue"] -- "bump cert-manager URL" --> B["v1.16.1 -> v1.19.0"]
A -- "change OTel operator source" --> C["GitHub latest -> OpenObserve curated YAML"]
```
<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>KubernetesConfig.vue</strong><dd><code>Refresh
Kubernetes command URLs for dependencies</code>
</dd></summary>
<hr>
web/src/components/ingestion/recommended/KubernetesConfig.vue
<ul><li>Bump cert-manager install URL to v1.19.0.<br> <li> Update
OpenTelemetry operator apply URL to OpenObserve curated
<br>manifest.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8785/files#diff-7afbbe1e38d62a976fcbe23f28c3e33a6d3e90188d5edcb743e936f920ec7dd5">+2/-2</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
c2c0ccdf2e |
feat: Rate, Errors and Duration (RED) metrics on traces list page (#8757)
### **PR Type** Enhancement #8784 ___ ### **Description** - Add RED traces metrics dashboard - Replace scatter chart with metrics widgets - Support view-only mode in panel schemas - Improve traces loading and empty states ___ ### Diagram Walkthrough ```mermaid flowchart LR TracesPage["Traces Index.vue"] -- embeds --> SearchResult["SearchResult.vue"] SearchResult -- uses --> MetricsDashboard["TracesMetricsDashboard.vue"] MetricsDashboard -- loads --> MetricsJSON["metrics.json"] MetricsDashboard -- renders via --> RenderCharts["RenderDashboardCharts.vue"] PanelContainer["PanelContainer.vue"] -- passes --> viewOnlyProp["viewOnly prop"] PanelSchema["PanelSchemaRenderer.vue"] -- respects --> viewOnlyProp ``` <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>PanelContainer.vue</strong><dd><code>Pass view-only flag and tidy tooltips</code> </dd></summary> <hr> web/src/components/dashboards/PanelContainer.vue <ul><li>Pass <code>viewOnly</code> prop to schema renderer<br> <li> Tooltip attribute wrapping for readability<br> <li> Minor i18n quote consistency changes<br> <li> Notification formatting improvements</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8757/files#diff-414737cba6064461f7026e0b016afcb9620bd5bb29c4708fc170dee789dbcd4d">+32/-17</a> </td> </tr> <tr> <td> <details> <summary><strong>PanelSchemaRenderer.vue</strong><dd><code>Add view-only support to schema renderer</code> </dd></summary> <hr> web/src/components/dashboards/PanelSchemaRenderer.vue <ul><li>Add <code>viewOnly</code> prop to disable editing<br> <li> Gate annotation button when <code>viewOnly</code><br> <li> Minor formatting of icon tag<br> <li> Route/alert creation string refinements</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8757/files#diff-e5376e7e77bf3aaf6590c2522d8c2dbffcc95a8006ae0d6dc0040a37825367d6">+20/-10</a> </td> </tr> <tr> <td> <details> <summary><strong>Index.vue</strong><dd><code>Simplify traces page and delegate states</code> </dd></summary> <hr> web/src/plugins/traces/Index.vue <ul><li>Remove inline loading/empty blocks from page<br> <li> Delegate result states to SearchResult<br> <li> Trigger metrics dashboard load on first page<br> <li> Simplify histogram date setter</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8757/files#diff-952e26660e4d6aadd292ea2ef7b314e139a4f516d0b3931e20d42d6394700d07">+10/-46</a> </td> </tr> <tr> <td> <details> <summary><strong>SearchResult.vue</strong><dd><code>Integrate RED metrics and improve UX</code> </dd></summary> <hr> web/src/plugins/traces/SearchResult.vue <ul><li>Replace scatter chart with RED metrics dashboard<br> <li> Add loading and empty states within component<br> <li> Emit time-range on metric zoom selection<br> <li> Adjust layout heights and refs</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8757/files#diff-7fc8153d64d38cf0945757bad8ab5e95ceae7e1c7daaeb300edbbfb484314e50">+76/-62</a> </td> </tr> <tr> <td> <details> <summary><strong>TracesMetricsDashboard.vue</strong><dd><code>New traces metrics dashboard component</code> </dd></summary> <hr> web/src/plugins/traces/metrics/TracesMetricsDashboard.vue <ul><li>New dashboard component rendering metrics<br> <li> Accepts stream, timeRange, filter, show<br> <li> Loads and customizes schema, handles zoom<br> <li> Exposes refresh/load methods, auto-refresh hooks</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8757/files#diff-7b6f29a2737d9501b18dbd8622eba4965e4bc2b92115627ae7d2e70cc3382087">+217/-0</a> </td> </tr> <tr> <td> <details> <summary><strong>metrics.json</strong><dd><code>Add traces metrics schema (Rate/Errors/Duration)</code> </dd></summary> <hr> web/src/plugins/traces/metrics/metrics.json <ul><li>Add predefined dashboard with three panels<br> <li> Rate, Errors, Duration queries using histogram<br> <li> Uses <code>[WHERE_CLAUSE]</code> placeholder for filters<br> <li> Layout and visualization configs included</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8757/files#diff-8bf43bcbba5150a185625f458adcb6756145e7bfcbbf632d87a9d487a937524e">+415/-0</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ |
||
|
|
db53c5ceb3 |
fix: add support for extracting series names from gauge charts (#8774)
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Add gauge series name extraction
- Keep pie/donut name extraction logic
- Fallback to existing options unchanged
___
### Diagram Walkthrough
```mermaid
flowchart LR
panel["Detect panel type"] --> pie["Pie/Donut: data[].name -> series"]
panel --> gauge["Gauge: series[].data[0].name -> series"]
panel --> other["Other: return existing options"]
```
<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>ColorBySeries.vue</strong><dd><code>Support gauge chart
series name extraction</code>
</dd></summary>
<hr>
web/src/components/dashboards/addPanel/ColorBySeries.vue
<ul><li>Add gauge chart handling for series names.<br> <li> Filter
invalid gauge series safely.<br> <li> Preserve existing pie/donut
extraction logic.<br> <li> Default to original options for other
types.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8774/files#diff-2783259507b45f0b3664d9be68ca236690bbbf151472da3fa8b552d230af5b3f">+13/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
1f889cc213 |
fix: dashboard add minimum height to panel container for better layout (#8773)
### **PR Type**
Bug fix
___
### **Description**
- Add min-height to panel container
- Prevent collapsed layout on small content
- Improve dashboard panel visual consistency
___
### Diagram Walkthrough
```mermaid
flowchart LR
AddPanel["AddPanel.vue container"] -- "add tw-min-h-[140px]" --> StableLayout["Consistent panel height"]
```
<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>AddPanel.vue</strong><dd><code>Add minimum height to
panel container</code>
</dd></summary>
<hr>
web/src/views/Dashboards/addPanel/AddPanel.vue
<ul><li>Add Tailwind class <code>tw-min-h-[140px]</code> to
container<br> <li> Keep existing dynamic height
<code>tw-h-[calc(100vh-500px)]</code><br> <li> Improve layout stability
for panel renderer area</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8773/files#diff-c9632db1ad95af95aba10161bcbc7c5608318919f228637bdafae3f3a31267e8">+1/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
e3f8cb81e0 |
fix: alert threshold fixes (#8752)
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Add null-safety in PromQL data utils
- Improve axis show checks for empty results
- Pass executed query and Y-axis column to alerts
- Apply thresholds via HAVING/PromQL condition
___
### Diagram Walkthrough
```mermaid
flowchart LR
Panel["PanelSchemaRenderer: derive executedQuery + yAxis"] -- "pass via router" --> AddAlert["AddAlert: build alert payload"]
AddAlert -- "SQL: apply HAVING; PromQL: promql_condition" --> Trigger["Trigger condition: threshold=1 operator>="]
Utils1["convertPromQLData: null checks"] -- "limit, xAxis, axis show" --> Chart["Chart config"]
Utils2["colorPalette: null-safe min/max"] -- "process metric values" --> Chart
```
<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>colorPalette.ts</strong><dd><code>Null-safe metric
flattening for min/max</code>
</dd></summary>
<hr>
web/src/utils/dashboard/colorPalette.ts
<ul><li>Filter out null metrics before flattening<br> <li> Preserve NaN
filtering logic</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8752/files#diff-30ac812743f2388c4061647fac5e9f413bfe561f1fc5d4f6f7be82fce73f2840">+1/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>convertPromQLData.ts</strong><dd><code>Null-safe PromQL
series handling and axes</code>
</dd></summary>
<hr>
web/src/utils/dashboard/convertPromQLData.ts
<ul><li>Guard result access with null checks<br> <li> Safely compute
total and limited series<br> <li> Safely build x-axis timestamps<br>
<li> Robust axisLine show condition</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8752/files#diff-68d70ba6c622911d48cdb567940dc404a4a6468b86c6d24fb54e5f1d8aa5ca2a">+16/-9</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>AddAlert.vue</strong><dd><code>Reliable threshold
application for alerts</code>
</dd></summary>
<hr>
web/src/components/alerts/AddAlert.vue
<ul><li>Use executed query when available<br> <li> Inject HAVING for SQL
thresholds<br> <li> Add promql_condition for PromQL thresholds<br> <li>
Set trigger threshold to 1 (exists check)</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8752/files#diff-7b426bb23e9ed0250c3877d6d97b099c42b2d20e22ddf4459915381b2233a0a8">+62/-22</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>PanelSchemaRenderer.vue</strong><dd><code>Provide
context for alert threshold creation</code>
</dd></summary>
<hr>
web/src/components/dashboards/PanelSchemaRenderer.vue
<ul><li>Determine executedQuery from metadata<br> <li> Infer Y-axis
column for SQL thresholds<br> <li> Pass yAxisColumn and executedQuery to
alert<br> <li> Support both builder and raw SQL</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8752/files#diff-e5376e7e77bf3aaf6590c2522d8c2dbffcc95a8006ae0d6dc0040a37825367d6">+60/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
db3613392f |
fix: fill missing value for scatter chart (#8746)
### **PR Type**
Bug fix
___
### **Description**
- Include scatter in gap-filling chart types
- Prevent missing-value gaps for scatter charts
___
### Diagram Walkthrough
```mermaid
flowchart LR
panelType["Panel type check"] -- "includes scatter" --> gapFilling["Enable gap-filling logic"]
panelType -- "excludes scatter" --> bypass["Return processed data unchanged"]
```
<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>convertSQLData.ts</strong><dd><code>Enable gap filling
for scatter charts</code>
</dd></summary>
<hr>
web/src/utils/dashboard/convertSQLData.ts
<ul><li>Add <code>scatter</code> to supported chart types list<br> <li>
Ensures histogram-based gap filling applies to scatter</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8746/files#diff-88c0e865040a20b2c8bb7d77e7f6bd187a5b07c1645c120223bc9d59603752c3">+1/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
4174cb3f27 |
fix: pipepline errors cleanup (#8745)
### **PR Type**
Enhancement, Bug fix, Documentation
___
### **Description**
- Add pipeline error cleanup job
- New config for retention, interval
- Backend delete-older-than DB API
- UI dialog to view last errors
___
### Diagram Walkthrough
```mermaid
flowchart LR
CFG["Add cleanup configs: error_retention_mins, error_cleanup_interval"]
JOB["New job: pipeline_error_cleanup::run()"]
LEADER["Leader election on ingesters"]
DBAPI["DB API: delete_older_than(cutoff)"]
UI["PipelinesList: error dialog + trigger"]
CFG -- "drives schedule & cutoff" --> JOB
JOB -- "runs periodically" --> LEADER
LEADER -- "if leader" --> DBAPI
DBAPI -- "remove stale errors" --> JOB
UI -- "show last error details" --> 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>Configuration
changes</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>config.rs</strong><dd><code>Add pipeline error
retention and cleanup configs</code>
</dd></summary>
<hr>
src/config/src/config.rs
<ul><li>Add <code>error_retention_mins</code> env config.<br> <li> Add
<code>error_cleanup_interval</code> env config.<br> <li> Document
retention and cleanup intervals.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8745/files#diff-9aeee4a74c0520daa40f9b81c7016f5b6b3254375b968dd7598e745630980d62">+12/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>mod.rs</strong><dd><code>Wire pipeline error cleanup
into job init</code>
</dd></summary>
<hr>
src/job/mod.rs
<ul><li>Register <code>pipeline_error_cleanup</code> module.<br> <li>
Start cleanup job during init.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8745/files#diff-f2e4c29b8eef22189ec704a832633c4bd135a24444f054864c98064bd0963681">+2/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>pipeline_error_cleanup.rs</strong><dd><code>Implement
scheduled pipeline error cleanup worker</code>
</dd></summary>
<hr>
src/job/pipeline_error_cleanup.rs
<ul><li>Implement periodic cleanup job for pipeline errors.<br> <li> Run
only on ingester leader via simple election.<br> <li> Compute cutoff
using retention mins; call DB delete.<br> <li> Add detailed logging and
error handling.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8745/files#diff-eb19faa7b27f9222d30bf90fe22e3ddd934921e1aea00419baac734b10637fbc">+109/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>pipeline_errors.rs</strong><dd><code>Add DB helper to
delete old pipeline errors</code>
</dd></summary>
<hr>
src/service/db/pipeline_errors.rs
<ul><li>Add <code>delete_older_than</code> to remove stale errors.<br>
<li> Return affected rows for metrics/logging.<br> <li> Document purpose
of cleanup API.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8745/files#diff-627b6bb9ca334984b8f08f1405a67e5110c238788f165e30abda39b03f7ab68f">+14/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>PipelinesList.vue</strong><dd><code>Show pipeline error
details dialog on list page</code>
</dd></summary>
<hr>
web/src/components/pipeline/PipelinesList.vue
<ul><li>Clickable error indicator opens error dialog.<br> <li> New
dialog shows summary and node errors.<br> <li> Add reactive state and
handlers for dialog.<br> <li> Add comprehensive styles for light/dark
modes.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8745/files#diff-85e3ef322f3eea0fc6d74d89431ba338a1153cb82ee06bef0f7c5f439c04267d">+266/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
328b73cac9 |
fix: promql editor issues in add alert page (#8748)
### **User description**
This PR fixes the issues in
**No query is sent from the PromQL Editor resulting in error**
**PromQL Editor goes on infinite scrolling. shows console error
ResizeObserver loop completed with undelivered notifications**
___
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Fix PromQL editor height and classes
- Correct query payload for PromQL range
- Reset outputs on tab change
- Dynamic AI button text by tab
___
### Diagram Walkthrough
```mermaid
flowchart LR
UI["Tab switch & buttons"] -- "reset outputs" --> Outputs["Output panes"]
UI -- "dynamic label" --> AIBtn["AI Generate button"]
PromEditor["PromQL editor"] -- "stable height/style" --> Layout["Editor layout"]
RunQuery["Run query (PromQL)"] -- "proper payload & parsing" --> Outputs
```
<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>ScheduledAlert.vue</strong><dd><code>Stabilize PromQL
UI and fix range query handling</code>
</dd></summary>
<hr>
web/src/components/alerts/ScheduledAlert.vue
<ul><li>AI button label depends on <code>tab</code> (SQL/PromQL).<br>
<li> PromQL editor: remove hard class height; set style height.<br> <li>
Hide SQL output area when on PromQL tab.<br> <li> Reset
<code>outputEvents</code>/<code>outputFnEvents</code> on tab change.<br>
<li> Use <code>promqlQuery</code> with <code>metrics_query_range</code>;
adjust response parsing.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8748/files#diff-5e143a17ab0fa5d7817f6d9301667fb5597236f27184248c7a71728e85b8d999">+20/-18</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
41b243c351 |
fix: fetch annotations in parallel with queries (#8736)
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Fetch annotations in parallel with queries
- Update watcher to re-render on annotations
- Preserve error handling and tracing
- Cache saving remains asynchronous
___
### Diagram Walkthrough
```mermaid
flowchart LR
Q["Build and run queries"] -- "Promise.all" --> QR["Query results"]
A["Start annotations fetch"] -- "in parallel" --> AP["Annotations Promise"]
QR -- "update state.data/metadata" --> S["Update state"]
AP -- "await & assign" --> AN["state.annotations"]
AN -- "watcher triggers" --> R["Panel re-render"]
```
<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>usePanelDataLoader.ts</strong><dd><code>Parallelize
annotations fetching across query paths</code>
</dd></summary>
<hr>
web/src/composables/dashboard/usePanelDataLoader.ts
<ul><li>Start annotations fetch in parallel with PromQL queries.<br>
<li> Start annotations fetch in parallel with SQL/search paths.<br> <li>
Await annotations after primary data ready; update state.<br> <li> Add
try/catch guards; keep tracing and caching behavior.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8736/files#diff-5a42e9493a7bcd722b88e61fd38883c4f61001bc9cafa399f65f8eafda3aace9">+188/-115</a></td>
</tr>
<tr>
<td>
<details>
<summary><strong>PanelSchemaRenderer.vue</strong><dd><code>Re-render
panel when annotations update</code>
</dd></summary>
<hr>
web/src/components/dashboards/PanelSchemaRenderer.vue
<ul><li>Add annotations to watch dependencies for re-render.<br> <li>
Ensure UI updates when annotations arrive.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8736/files#diff-e5376e7e77bf3aaf6590c2522d8c2dbffcc95a8006ae0d6dc0040a37825367d6">+1/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
97f6cb078f |
fix: o2 UI updates (#8737)
### **User description**
1. store user input in local storage and use shortcuts to explore (up
and down arrow keys)
2. changed bg icon for o2 ai icon
3. added scroll to bottom button
___
### **PR Type**
Enhancement
___
### **Description**
- Add scroll-to-bottom button with smooth scroll
- Persist last 10 queries in localStorage
- Keyboard history navigation via arrows
- Update AI button gradient and hover/rotate
___
### Diagram Walkthrough
```mermaid
flowchart LR
UI["Chat UI"]
ScrollBtn["Scroll-to-bottom button"]
History["LocalStorage query history"]
Keys["ArrowUp/Down navigation"]
Styles["AI button gradient/animations"]
UI -- "shows when scrolled up" --> ScrollBtn
ScrollBtn -- "click" --> UI
UI -- "save on send" --> History
Keys -- "navigate history" --> UI
UI -- "visual tweaks" --> Styles
```
<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>O2AIChat.vue</strong><dd><code>Scroll control and
persistent query history</code>
</dd></summary>
<hr>
web/src/components/O2AIChat.vue
<ul><li>Add scroll-to-bottom button and styles.<br> <li> Implement
auto-visibility and smooth scrolling.<br> <li> Add query history with
localStorage (max 10).<br> <li> Add ArrowUp/Down history navigation
logic.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8737/files#diff-a6a125719a7b32b31b53fcfe05c12081d82c139a401699affdda0db8e73887e3">+224/-2</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>MainLayout.vue</strong><dd><code>AI button gradient and
hover behavior update</code>
</dd></summary>
<hr>
web/src/layouts/MainLayout.vue
<ul><li>Update AI button to gradient background.<br> <li> Adjust hover
transition timing and effect.<br> <li> Reverse icon rotation direction
on hover.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8737/files#diff-91e4134141264c4624d4eb4cfa987b33ed31eb6f551e089c0b26f2610dd54362">+4/-4</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
f96b90e15f |
fix: o2 ai updates (#8734)
### **User description**
Loading Indicator will be visible everytime user hits the generate
before it was hidden
Implemented abort functionality for responses, allowing users to stop
generation mid-way.
Fixed the issue where empty messages appeared before actual responses,
ensuring a cleaner chat log.
when there is so much content incoming and if I try to stop it , it
should stop scroll
UI Enhancements:
Differentiated user messages and AI responses visually for better
clarity.
Updated the Send button with a gradient color and added styling for the
Stop button.
Improved the input experience by automatically focusing the input and
highlighting its border when clicking anywhere in the chat area.
___
### **PR Type**
Enhancement, Bug fix
___
### **Description**
- Add abortable streaming for AI chat
- Improve UI: send/stop buttons, avatars, gradients
- Auto-scroll to loading indicator on generate
- Prevent empty assistant messages during stream
___
### Diagram Walkthrough
```mermaid
flowchart LR
UI["Chat UI (O2AIChat.vue)"]
Fetch["fetchAiChat with AbortSignal (useAiChat.ts)"]
AbortCtrl["AbortController lifecycle"]
Stream["Streaming parser & message updates"]
History["Save to history"]
Styles["Theming, gradients, layout"]
UI -- "Send -> creates AbortController" --> AbortCtrl
AbortCtrl -- "signal" --> Fetch
Fetch -- "stream chunks" --> Stream
Stream -- "append assistant content" --> UI
UI -- "Stop click" --> AbortCtrl
AbortCtrl -- "abort()" --> Fetch
Stream -- "on complete/error" --> History
UI -- "focus + auto-scroll to loading" --> Styles
```
<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>useAiChat.ts</strong><dd><code>Abortable fetch with
streaming support and docs</code>
</dd></summary>
<hr>
web/src/composables/useAiChat.ts
<ul><li>Add JSDoc and AbortSignal param to <code>fetchAiChat</code><br>
<li> Include optional <code>signal</code> in fetch options<br> <li>
Handle <code>AbortError</code> distinctly; return <code>{ cancelled:
true }</code><br> <li> Generalize error handling and null fallback</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8734/files#diff-830ee4f21bdbbd0fa5c5c0f43b0a1d0200831e07ccddc91982cf0371c801b046">+38/-9</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>O2AIChat.vue</strong><dd><code>Streaming UX,
cancellation, and UI enhancements</code>
</dd></summary>
<hr>
web/src/components/O2AIChat.vue
<ul><li>Implement AbortController lifecycle and Stop button<br> <li>
Avoid pre-creating empty assistant messages during stream<br> <li>
Auto-scroll to loading indicator; focus input on click<br> <li> UI/UX:
themed avatars, gradient backgrounds, send/stop styles</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8734/files#diff-a6a125719a7b32b31b53fcfe05c12081d82c139a401699affdda0db8e73887e3">+382/-39</a></td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
9ab62c6d70 |
fix: disallow _timestamp field as alias (#8674)
### **PR Type**
Bug fix, Tests
___
### **Description**
- Add timestamp alias validation utility
- Block queries aliasing non-timestamp to timestamp
- Surface clear error message in SQL mode
- Add comprehensive unit tests for validator
___
### Diagram Walkthrough
```mermaid
flowchart LR
logsUtils["logsUtils.ts"] -- "add checkTimestampAlias()" --> useSearchStream["useSearchStream.ts"]
useSearchStream -- "validate SQL; set error 400" --> UX["User feedback"]
logsUtils --> tests["logsUtils.spec.ts"]
```
<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>logsUtils.ts</strong><dd><code>Add timestamp alias
validation helper</code>
</dd></summary>
<hr>
web/src/composables/useLogs/logsUtils.ts
<ul><li>Add <code>checkTimestampAlias(query)</code> to validate
aliases.<br> <li> Parse SQL AST; fallback to string detection.<br> <li>
Return true only when aliasing is valid.<br> <li> Export
<code>checkTimestampAlias</code> from composable.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8674/files#diff-c8550678e2f4da95dd54d03d9893f6bfff2061460c4a2f2c324fdd3b1d392a52">+50/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>useSearchStream.ts</strong><dd><code>Enforce timestamp
alias rule during SQL search</code>
</dd></summary>
<hr>
web/src/composables/useLogs/useSearchStream.ts
<ul><li>Import <code>checkTimestampAlias</code> from logsUtils.<br> <li>
Validate SQL queries in SQL mode.<br> <li> Set 400 error and message on
invalid alias.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8674/files#diff-0b7e910195d1ec4b1301973bd2f4193e1e23442103f69a9fbd189d3f78547014">+8/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Miscellaneous</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>useSearchBar.ts</strong><dd><code>Silence console error
logging in search bar</code>
</dd></summary>
<hr>
web/src/composables/useLogs/useSearchBar.ts
<ul><li>Comment out console.error in catch block.<br> <li> Preserve user
notification flow.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8674/files#diff-489bda221a164cbee8d66aaf178acb4e0d8a860dbdf39558804fc32c9efd71e8">+4/-4</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>logsUtils.spec.ts</strong><dd><code>Add exhaustive
tests for timestamp alias validator</code>
</dd></summary>
<hr>
web/src/test/unit/composables/logsUtils.spec.ts
<ul><li>Add comprehensive unit tests for
<code>checkTimestampAlias</code>.<br> <li> Cover CTEs, joins,
subqueries, aggregates, unions.<br> <li> Test custom timestamp column
configurations.<br> <li> Mock store/router and search state.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8674/files#diff-4492d9abd2bc95897c46f6ed177f3298bda9f1419dc91b07e2aa1409b598bb7f">+611/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: ktx-vaidehi <vaidehi.akhani@kiara.tech>
|
||
|
|
c96999049c |
chore: traces UI changes (#8728)
### **PR Type** Enhancement, Tests ___ ### **Description** - Refactor header to class-based styling - Redesign Trace Details layout and styles - Add span count badges and connectors - Update tests for new selectors/classes ___ ### Diagram Walkthrough ```mermaid flowchart LR TraceHeaderSpec["TraceHeader.spec.ts tests"] -- align with classes --> TraceHeaderVue["TraceHeader.vue"] TraceTreeSpec["TraceTree.spec.ts tests"] -- new badge selectors --> TraceTreeVue["TraceTree.vue"] TraceDetailsVue["TraceDetails.vue"] -- layout + styles --> SidebarVue["TraceDetailsSidebar.vue"] TraceTreeVue -- span badges + connectors --> SpanBlockVue["SpanBlock.vue"] ``` <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>2 files</summary><table> <tr> <td><strong>TraceHeader.spec.ts</strong><dd><code>Update tests to assert class-based styles</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8728/files#diff-d8a57095481665bdacd7cc816c63d4c742048b832c15641ce20adaa4d3a58854">+8/-18</a> </td> </tr> <tr> <td><strong>TraceTree.spec.ts</strong><dd><code>Adjust tests for badge collapse and icons</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8728/files#diff-0e779df03c894e381582de27f5c6dc36ac4905e01e12a501e0a4ca12599d4531">+9/-9</a> </td> </tr> </table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>5 files</summary><table> <tr> <td><strong>SpanBlock.vue</strong><dd><code>Use rem for label offset positioning</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8728/files#diff-21a7d32870e3d6d3fc8098b06fd8e88ba20afea0c48cfa1ad7b309a9faf8cafc">+1/-1</a> </td> </tr> <tr> <td><strong>TraceDetails.vue</strong><dd><code>Major layout refactor and glassmorphism styles</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8728/files#diff-bc7fe6b6339ee2cde6494c0982d4b860847447e79f7431f07d598e0446df06f2">+297/-149</a></td> </tr> <tr> <td><strong>TraceDetailsSidebar.vue</strong><dd><code>Restyle tables with glassmorphic theme support</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8728/files#diff-0017bc08d8da96af6433770d0b274f825798d24401b33ce091b16a50fbaf4b57">+75/-5</a> </td> </tr> <tr> <td><strong>TraceHeader.vue</strong><dd><code>Replace inline styles with CSS classes for header and tics</code></dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8728/files#diff-b782486701e65fc550a1f3ad8303922c7aa141b7bbbab2b8a606b3115af7029b">+38/-23</a> </td> </tr> <tr> <td><strong>TraceTree.vue</strong><dd><code>Add span count badges and SVG connectors; hover highlights</code></dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8728/files#diff-5d1fa8ba4d433439860b4bc036fb80e3e1b51948616dc04b1bfd1f9110a87091">+303/-69</a></td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> |
||
|
|
d2c60a9ab6 |
fix: logs histogram skeleton creation issue (#8651)
### **PR Type** Bug fix #8727 ___ ### **Description** - Persist histogram results using ref - Replace array ops with ref access - Fix skeleton resets across code paths - Minor formatting and safety tweaks ___ ### Diagram Walkthrough ```mermaid flowchart LR state["searchState.ts: histogramResults ref"] -- "exposed via searchState()" --> stream["useSearchStream.ts: consume .value"] state -- "mapped via .value" --> hist["useHistogram.ts: build mapped data"] stream -- "reset/push via .value" --> hist ``` <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>searchState.ts</strong><dd><code>Make histogramResults reactive with ref</code> </dd></summary> <hr> web/src/composables/useLogs/searchState.ts <ul><li>Convert <code>histogramResults</code> to <code>ref([])</code><br> <li> Export reactive <code>histogramResults</code> via state</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8651/files#diff-c0ac4f131ad64edd2ed811e183bb570be2f38d58c9ed958d093457a51280ec34">+1/-1</a> </td> </tr> <tr> <td> <details> <summary><strong>useHistogram.ts</strong><dd><code>Use ref-based histogram results in histogram flow</code> </dd></summary> <hr> web/src/composables/useLogs/useHistogram.ts <ul><li>Use <code>histogramResults.value</code> for mapping<br> <li> Reset <code>histogramResults.value</code> in skeleton<br> <li> Push zeros into <code>histogramResults.value</code></ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8651/files#diff-4d467d6778569f239f96f3af9ec30214aa8b029892bf40a0aa038dfbb73eca6e">+5/-5</a> </td> </tr> <tr> <td> <details> <summary><strong>useSearchStream.ts</strong><dd><code>Stream logic uses shared ref for histogram results</code> </dd></summary> <hr> web/src/composables/useLogs/useSearchStream.ts <ul><li>Remove local <code>histogramResults</code> array<br> <li> Inject and use state <code>histogramResults</code><br> <li> Replace resets/pushes with <code>.value</code> usage<br> <li> Minor formatting and interval check tweak</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8651/files#diff-0b7e910195d1ec4b1301973bd2f4193e1e23442103f69a9fbd189d3f78547014">+46/-27</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ |
||
|
|
3e92683350 |
fix: build manifest of both builds succeed plus more (#8729)
### **PR Type**
Enhancement
___
### **Description**
- Split PR image builds by architecture
- Unify Dockerfile for both builds
- Improve build cache isolation per arch
- Gate final job on both builds success
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["build_pr_image_amd64"] -- "produces amd64 image" --> C["build"]
B["build_pr_image_arm64"] -- "produces arm64 image" --> C
C -- "runs only if both succeed" --> D["post-build steps"]
```
<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>build-pr-image.yml</strong><dd><code>Split and harden
PR image build workflow</code>
</dd></summary>
<hr>
.github/workflows/build-pr-image.yml
<ul><li>Rename jobs per arch: amd64/arm64<br> <li> Use single Dockerfile
path for both<br> <li> Add arch-scoped cache keys and prefixes<br> <li>
Make final job depend on both success</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8729/files#diff-ebeabab3ec6b3ad90cc66cb9c0d9f2ad72c7ec6116e30e9801241b46992742d6">+15/-22</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>Dockerfile.pr</strong><dd><code>Add unified runtime
Dockerfile for PR builds</code>
</dd></summary>
<hr>
deploy/build/Dockerfile.pr
<ul><li>Add Debian slim runtime base<br> <li> Install required runtime
packages<br> <li> Copy binary and init data dir<br> <li> Set default
command to run service</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8729/files#diff-0db44a1fcb127375b96718556fd43c738708efbcaf0f83a9bffe39d4bfa95a02">[link]</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: mmosarafO2 <mosraf@openobserve.ai>
|
||
|
|
ca327c0311 |
fix: menu item and home view changes (#8725)
### **PR Type**
Enhancement
___
### **Description**
- Refine menu link hover/active behavior
- Add Streams header icon
- Redesign charts layout with CSS grid
- Improve tiles responsiveness and spacing
___
### Diagram Walkthrough
```mermaid
flowchart LR
Menu["MenuLink.vue styles"] -- "remove scale, add border" --> HoverActive["Stable hover/active states"]
HomeHeader["HomeView Streams header"] -- "add icon" --> Accessibility["Improved visual affordance"]
Layout["HomeView charts layout"] -- "CSS grid + wrappers" --> Responsive["Responsive, consistent tiles/charts"]
```
<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>MenuLink.vue</strong><dd><code>Stabilize menu item
hover/active states</code>
</dd></summary>
<hr>
web/src/components/MenuLink.vue
<ul><li>Add transparent border to .q-item<br> <li> Remove scale
transforms on hover/active<br> <li> Keep GPU-friendly translateZ(0)<br>
<li> Tweak hover background and icon/label colors</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8725/files#diff-8d69d8a33ed108d9bf912563bd5eed048a132ca6eaff6e559abf2ac0614abfe9">+5/-2</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>HomeView.vue</strong><dd><code>Responsive charts grid
and Streams icon addition</code>
</dd></summary>
<hr>
web/src/views/HomeView.vue
<ul><li>Add Streams header icon using <code>outlinedWindow</code><br>
<li> Replace flex-based charts area with CSS grid<br> <li> Introduce
<code>.functions-dashboards-column</code> and
<code>.tile-wrapper</code><br> <li> Normalize tile sizing, spacing, and
hover shadow</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8725/files#diff-9af441af191d3254ef5f9db603dca75486de7638cda41a3c050e7b3c33d68280">+71/-15</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
b6be723799 |
fix: alerts with threshold from dashboards (#8711)
### **PR Type**
Enhancement, Bug fix
___
### **Description**
- Add alert context menu on charts
- Pass threshold/condition to Add Alert
- Correct query-type handling from panels
- Sync HAVING with threshold when aggregated
___
### Diagram Walkthrough
```mermaid
flowchart LR
Chart["ChartRenderer (ECharts)"] -- "emit contextmenu {x,y,value}" --> Panel["PanelSchemaRenderer"]
Panel -- "show AlertContextMenu" --> Menu["AlertContextMenu (above/below)"]
Menu -- "select {condition, threshold}" --> Panel
Panel -- "router.push addAlert?panelData=..." --> AddAlert["AddAlert.vue"]
AddAlert -- "init form from panelData" --> Form["Query/Trigger setup"]
AddAlert -- "set threshold/operator/HAVING" --> Form
```
<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>AddAlert.vue</strong><dd><code>Robust panel-driven
alert initialization and thresholds</code> </dd></summary>
<hr>
web/src/components/alerts/AddAlert.vue
<ul><li>Set query type based on panel data<br> <li> Populate SQL/PromQL
only if present<br> <li> Enable aggregation only for SQL builder
queries<br> <li> Apply threshold/operator and HAVING from panel<br> <li>
Avoid default 'custom' type when from panel</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8711/files#diff-7b426bb23e9ed0250c3877d6d97b099c42b2d20e22ddf4459915381b2233a0a8">+50/-6</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>AlertContextMenu.vue</strong><dd><code>Add alert
creation context menu component</code>
</dd></summary>
<hr>
web/src/components/dashboards/AlertContextMenu.vue
<ul><li>New context menu component for alerts<br> <li> Provides
above/below threshold actions<br> <li> Handles outside click and Escape
close<br> <li> Dark/light themed styling</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8711/files#diff-1fef708fc24bed7cc2b198f86b39554690fd6ba3ba778651c3fffb42969770c5">+200/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>PanelSchemaRenderer.vue</strong><dd><code>Integrate
context menu and route to Add Alert</code>
</dd></summary>
<hr>
web/src/components/dashboards/PanelSchemaRenderer.vue
<ul><li>Wire chart contextmenu to open alert menu<br> <li> Lazy-load and
render AlertContextMenu<br> <li> Build panelData payload with
threshold/condition<br> <li> Navigate to Add Alert with encoded
data</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8711/files#diff-e5376e7e77bf3aaf6590c2522d8c2dbffcc95a8006ae0d6dc0040a37825367d6">+76/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>ChartRenderer.vue</strong><dd><code>Add contextmenu
support for data point alerts</code>
</dd></summary>
<hr>
web/src/components/dashboards/panels/ChartRenderer.vue
<ul><li>Emit contextmenu with point coords and value<br> <li> Prevent
default menu, support bar/line charts<br> <li> Unbind/bind contextmenu
listener on lifecycle<br> <li> Extract value from diverse data
formats</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8711/files#diff-353fab39cd76197438814db862c4a506636ea7e15633ee92d9269adbd97fe67c">+54/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
188e43d8ca |
fix: menu item + home page ux changes (#8719)
### **PR Type**
Enhancement, Documentation
___
### **Description**
- Modernize menu item UX and visuals
- Add badges and accessibility to menu
- Redesign Home page tiles and charts
- Introduce animated count-up metrics
___
### Diagram Walkthrough
```mermaid
flowchart LR
Menu["MenuLink.vue: badges, ARIA, active state"] --> Drawer["MainLayout.vue: nav ARIA, drawer styling"]
Drawer --> Home["HomeView.vue: tiles, charts, animations"]
Menu --> Vars["_menu-variables.scss: theme vars"]
Menu --> Anim["_menu-animations.scss: keyframes/mixins"]
Home --> Anim
Home --> Vars
```
<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>MenuLink.vue</strong><dd><code>Accessible menu link
with badges and modern styles</code>
</dd></summary>
<hr>
web/src/components/MenuLink.vue
<ul><li>Add ARIA attributes and computed active state.<br> <li>
Introduce numeric badge with pulse animation.<br> <li> Enhance
hover/active styles with gradients, shadows.<br> <li> Import new SCSS
variables/animations; light/dark modes.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8719/files#diff-8d69d8a33ed108d9bf912563bd5eed048a132ca6eaff6e559abf2ac0614abfe9">+226/-14</a></td>
</tr>
<tr>
<td>
<details>
<summary><strong>MainLayout.vue</strong><dd><code>Navigation drawer
accessibility and visual refresh</code>
</dd></summary>
<hr>
web/src/layouts/MainLayout.vue
<ul><li>Add ARIA roles/labels to drawer navigation.<br> <li> Import menu
SCSS partials.<br> <li> Apply glassmorphism drawer background,
borders.<br> <li> Adjust left nav list paddings and light-mode
colors.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8719/files#diff-91e4134141264c4624d4eb4cfa987b33ed31eb6f551e089c0b26f2610dd54362">+36/-3</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>HomeView.vue</strong><dd><code>Home dashboard UX
overhaul with animated metrics</code>
</dd></summary>
<hr>
web/src/views/HomeView.vue
<ul><li>Redesign tiles/charts layout; add ARIA to sections.<br> <li>
Implement count-up animations and formatted values.<br> <li> Introduce
responsive grid, icons, hover/focus states.<br> <li> Centralize theme
vars and animations; reduced motion.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8719/files#diff-9af441af191d3254ef5f9db603dca75486de7638cda41a3c050e7b3c33d68280">+587/-216</a></td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>_menu-animations.scss</strong><dd><code>Menu animation
keyframes and utilities</code>
</dd></summary>
<hr>
web/src/styles/_menu-animations.scss
<ul><li>Add pulse and glow keyframes.<br> <li> Provide transition mixins
and animation tokens.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8719/files#diff-ebebfd0f0eb1b848c36c3a141380b0e9f3e3922203009e15c73c10f65f81233e">+52/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>_menu-variables.scss</strong><dd><code>Theming
variables for modernized menu</code>
</dd></summary>
<hr>
web/src/styles/_menu-variables.scss
<ul><li>Define light/dark theme variables and sizes.<br> <li> Add
spacing, effects, and transition tokens.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8719/files#diff-3a2c84e33dabf24acb9ff0f9372f7546d5e95799d9923e1aaa1ed03e50421f96">+127/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: sai nikhil kethe <nikhil@openobserve.ai>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
|
||
|
|
244c9547a7 |
fix: new pipeline UI improvements (#8714)
### **User description** This PR covers the issues mentioned in #8692 ___ ### **PR Type** Bug fix ___ ### **Description** - Restore zoom controls in pipeline UI - Remove redundant back button in editor - Set default zoom level to 0.8 ___ ### Diagram Walkthrough ```mermaid flowchart LR Editor["PipelineEditor.vue header"] -- "remove back button, adjust padding" --> UI["Cleaner editor UI"] View["PipelineView.vue"] -- "add Controls & styles" --> ZoomControls["Zoom/Fit UI restored"] Flow["PipelineFlow.vue"] -- "default zoom 0.8" --> Viewport["Improved initial viewport"] ``` <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>PipelineEditor.vue</strong><dd><code>Remove redundant back button from editor header</code> </dd></summary> <hr> web/src/components/pipeline/PipelineEditor.vue <ul><li>Remove left-side back button container<br> <li> Add left padding class to header container</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8714/files#diff-68c21f647336067eb79737ce9aca2d49632f2fa1c0878bcfdae55607e3473a15">+1/-15</a> </td> </tr> <tr> <td> <details> <summary><strong>PipelineFlow.vue</strong><dd><code>Set pipeline default zoom to 0.8</code> </dd></summary> <hr> web/src/plugins/pipelines/PipelineFlow.vue - Adjust default viewport zoom from 1.5 to 0.8 </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8714/files#diff-9c7475a54f0c895dd49eb0c5b53fe0a76ceff0520f667a9cb065b364557ced50">+1/-1</a> </td> </tr> </table></td></tr><tr><td><strong>Enhancement</strong></td><td><table> <tr> <td> <details> <summary><strong>PipelineView.vue</strong><dd><code>Reintroduce Vue Flow controls for zoom/fit</code> </dd></summary> <hr> web/src/components/pipeline/PipelineView.vue <ul><li>Import Controls and ControlButton from @vue-flow/controls<br> <li> Import controls stylesheet<br> <li> Register Controls and ControlButton as components</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8714/files#diff-a71732cf7f8ee768e21f7eb2bf9eeed4ac67ba8221cca2e8d347d8acb27d4471">+3/-1</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ |
||
|
|
91bbbc91ed |
feat: add external user warning while adding to role (#8709)
### **PR Type**
Enhancement, Documentation
___
### **Description**
- Warn on adding external users to roles
- Add email slot with tooltip icon
- Pass role context to GroupUsers
- Localize warning title and message
___
### Diagram Walkthrough
```mermaid
flowchart LR
EditRole["EditRole.vue: use GroupUsers with role context"] -- context='role' --> GroupUsers["GroupUsers.vue: email slot + warning logic"]
GroupUsers -- shows icon/tooltip --> UI["UI: warning for external user additions"]
Locales["en.json: new i18n strings"] -- used by --> GroupUsers
```
<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>GroupUsers.vue</strong><dd><code>Email slot with
external-user warning for roles</code>
</dd></summary>
<hr>
web/src/components/iam/groups/GroupUsers.vue
<ul><li>Add email slot rendering with warning icon and tooltip.<br> <li>
Introduce <code>context</code> prop to control role/group behavior.<br>
<li> Compute columns to use email slot; include external flag in
data.<br> <li> Add <code>shouldShowWarning</code> helper based on
context and membership.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8709/files#diff-114c767db76d4a09278c765d8aba39a1936c861488f39e7f0f6b3883499a3c40">+54/-3</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>EditRole.vue</strong><dd><code>Provide role context to
GroupUsers</code>
</dd></summary>
<hr>
web/src/components/iam/roles/EditRole.vue
- Pass `context="role"` to `GroupUsers` when editing roles.
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8709/files#diff-263b6bc7d29fdf8358c8437cd637f1350aa3733cc2706eae8ff00028686cc0f5">+1/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>en.json</strong><dd><code>Add i18n strings for external
user warning</code>
</dd></summary>
<hr>
web/src/locales/languages/en.json
- Add `externalUserWarningTitle` and message strings.
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8709/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+3/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
0b352e1ae0 |
fix: home page minor changes (#8704)
### **User description**
1. This PR introduces loading skeleton into application and also used in
homepage
2. it also make some UI changes moving dashboards and functions to 2nd
section and adding some hover effects
___
### **PR Type**
Enhancement
___
### **Description**
- Add reusable `SkeletonBox` component
- Introduce `HomeViewSkeleton` for loading
- Redesign functions/dashboards tiles layout
- Add hover, tooltip, and forward icons
___
### Diagram Walkthrough
```mermaid
flowchart LR
HomeView["HomeView.vue"]
SkeletonBox["components/shared/SkeletonBox.vue"]
HomeSkeleton["components/shared/HomeViewSkeleton.vue"]
HomeView -- "uses while loading" --> HomeSkeleton
HomeSkeleton -- "composes" --> SkeletonBox
HomeView -- "imports" --> SkeletonBox
HomeView -- "UI updates" --> "Tiles/Charts/Buttons"
```
<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>HomeViewSkeleton.vue</strong><dd><code>New Home view
loading skeleton</code>
</dd></summary>
<hr>
web/src/components/shared/HomeViewSkeleton.vue
<ul><li>Add full-page home loading skeleton layout<br> <li> Theme-aware
skeleton styles and animations<br> <li> Skeletons for streams, tiles,
and charts<br> <li> Responsive layout for tiles and charts</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8704/files#diff-cfcdd350ab12b088eb8bc8717b3d2c3a6b530c6c78d27c581126f6e4c7ccbda4">+271/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>SkeletonBox.vue</strong><dd><code>Reusable skeleton box
component</code>
</dd></summary>
<hr>
web/src/components/shared/SkeletonBox.vue
<ul><li>Create reusable skeleton component with variants<br> <li> Add
theme-aware wave animation styles<br> <li> Support shapes and sizes via
props<br> <li> Provide multiline text styling hooks</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8704/files#diff-4260429750bf9f01b844b734b41361e3a95e570062bffa71c36983a113c755d7">+193/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>HomeView.vue</strong><dd><code>Home page layout and
loading UX improvements</code>
</dd></summary>
<hr>
web/src/views/HomeView.vue
<ul><li>Integrate <code>HomeViewSkeleton</code> during loading<br> <li>
Move functions/dashboards tiles near charts<br> <li> Add tooltips and
forward icons to view buttons<br> <li> Update icons, chart sizes, and
hover effects</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8704/files#diff-9af441af191d3254ef5f9db603dca75486de7638cda41a3c050e7b3c33d68280">+195/-73</a></td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
d6339499f8 |
feat: pipeline errors on ui (#8695)
### **PR Type** Enhancement, Bug fix ___ ### **Description** - Surface last pipeline error in API - Persist pipeline errors in new table - Batch upsert pipeline errors from reporting - Safer error messages in VRL failures ___ ### Diagram Walkthrough ```mermaid flowchart LR Reporting["Self-reporting errors"] -- "batch_upsert" --> DB["Table: pipeline_last_errors"] API["GET /pipelines"] -- "join with errors" --> UIData["PipelineList.last_error"] UIData -- "render" --> ListUI["PipelinesList error icon"] UIData -- "per-node errors" --> NodeUI["CustomNode error badge"] Ingestion["VRL apply_vrl_fn"] -- "clean error message" --> Reporting ``` <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>config.rs</strong><dd><code>Bump DB schema version to 10</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8695/files#diff-9aeee4a74c0520daa40f9b81c7016f5b6b3254375b968dd7598e745630980d62">+1/-1</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Wire migration for last errors table</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8695/files#diff-7ee42a714d3d56c663da0412d15514613222055aebb5b50dafbc051a656a36f6">+2/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>11 files</summary><table> <tr> <td><strong>pipelines.rs</strong><dd><code>Add last_error to pipeline model</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8695/files#diff-61bb28d7091130297c917a0530d96202fcb4b073b514410531f9fe71acfc814f">+22/-3</a> </td> </tr> <tr> <td><strong>pipeline.rs</strong><dd><code>Join pipelines with last error data</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8695/files#diff-c69f4f94eee97ce226caddc497b2adf89e26869f2d72b0d0206dc31ab2714daf">+26/-1</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Register pipeline_last_errors entity</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8695/files#diff-c539d7557d1425986d5c09849d8dbca42d1b309c2bc33d49db641d6a783098f6">+1/-0</a> </td> </tr> <tr> <td><strong>pipeline_last_errors.rs</strong><dd><code>Define ORM entity for last errors</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8695/files#diff-e4ff5af0cb9c6e6343ecaad06fbb03515ace8868be6ee6d192ff0f01ee4d3e17">+22/-0</a> </td> </tr> <tr> <td><strong>prelude.rs</strong><dd><code>Export PipelineLastErrors entity</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8695/files#diff-a818656b9fb01945155f28450270dd2ae20b67c8248c851ffa0f25e859d263ed">+1/-0</a> </td> </tr> <tr> <td><strong>m20250930_000001_create_pipeline_last_errors_table.rs</strong><dd><code>Create pipeline_last_errors table and index</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8695/files#diff-173fe20fccfdcfa68563a13f9d69c2e6cb0901ac257d43386962bbac90f296de">+169/-0</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Expose pipeline_errors DB module</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8695/files#diff-b7e3bf7f0ac23dd084c0c817a310a4d5e7a64ff532746d182986ef940fa03fd0">+1/-0</a> </td> </tr> <tr> <td><strong>pipeline_errors.rs</strong><dd><code>CRUD and batch upsert for pipeline errors</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8695/files#diff-627b6bb9ca334984b8f08f1405a67e5110c238788f165e30abda39b03f7ab68f">+331/-0</a> </td> </tr> <tr> <td><strong>queues.rs</strong><dd><code>Batch upsert pipeline errors during ingest</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8695/files#diff-ed15a56d4d3becc2dfb3d05af2dac7f92962ec3091199728fa953e6aed7ed767">+45/-5</a> </td> </tr> <tr> <td><strong>PipelinesList.vue</strong><dd><code>Show pipeline-level last error indicator</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8695/files#diff-85e3ef322f3eea0fc6d74d89431ba338a1153cb82ee06bef0f7c5f439c04267d">+27/-0</a> </td> </tr> <tr> <td><strong>CustomNode.vue</strong><dd><code>Show node-level error badge and navigation</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8695/files#diff-b9d83cd503b6d3470b238accaaea0b4decf567add8ad4727c63c9e583725f408">+98/-2</a> </td> </tr> </table></details></td></tr><tr><td><strong>Bug fix</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>mod.rs</strong><dd><code>Return sanitized VRL error messages</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8695/files#diff-7c7b5bca85f0ced652965cae66540c96f56dfcca4f4c16b77bf7b45aac203d1b">+12/-8</a> </td> </tr> </table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>mod.rs</strong><dd><code>Clarify queuing of error data</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8695/files#diff-c6255010f7a87d6acdb3ad04954fc9f2c27350ae319c53a1857b120aa06408a3">+2/-0</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ |
||
|
|
c3db39e10a |
feat: create alert from dashboard (#8700)
### **PR Type**
Enhancement
___
### **Description**
- Add route and view for alert creation
- Create alert from dashboard panel
- Prefill alert form using panel query
- Internationalize panel menu texts
___
### Diagram Walkthrough
```mermaid
flowchart LR
DashboardPanel["Dashboard Panel (PanelContainer.vue)"] -- "Create Alert action" --> RouterAddAlert["Route: /alerts/add (router.ts)"]
DashboardPanel -- "Encodes panel data in query" --> RouterAddAlert
AddAlertView["AddAlertView.vue"] -- "Loads destinations & renders AddAlert" --> AddAlertComponent["AddAlert.vue"]
AddAlertComponent -- "onMounted: loadPanelDataIfPresent()" --> PrefillForm["Prefill alert form from panel data"]
i18nEN["en.json"] -- "New keys for panel UI" --> DashboardPanel
```
<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>router.ts</strong><dd><code>New route for adding
alerts</code>
</dd></summary>
<hr>
web/src/composables/shared/router.ts
<ul><li>Add <code>alerts/add</code> route named
<code>addAlert</code><br> <li> Lazy-load <code>AddAlertView.vue</code>
component<br> <li> Apply <code>routeGuard</code> and set page title</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8700/files#diff-a1827956e5a817edc7efb5f4516e7cc4d453e15ea9e9d970aafb8360b09fc78e">+11/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>AddAlert.vue</strong><dd><code>Prefill alert form from
panel query</code>
</dd></summary>
<hr>
web/src/components/alerts/AddAlert.vue
<ul><li>Load panel data on mount<br> <li> Implement
<code>loadPanelDataIfPresent</code> to prefill form<br> <li> Set name,
query type, aggregation, filters, VRL, and period<br> <li> Expose loader
in returned bindings</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8700/files#diff-7b426bb23e9ed0250c3877d6d97b099c42b2d20e22ddf4459915381b2233a0a8">+136/-2</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>AlertList.vue</strong><dd><code>Preserve query params
during alert navigation</code>
</dd></summary>
<hr>
web/src/components/alerts/AlertList.vue
<ul><li>Preserve existing query params on navigations<br> <li> Minor
comment whitespace fixes</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8700/files#diff-be3e41b823e163b226ffc270d95cc4981e59c600851e4e0d10ee5e4ee994ac8e">+5/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>PanelContainer.vue</strong><dd><code>Add create-alert
action and i18n to panel menu</code>
</dd></summary>
<hr>
web/src/components/dashboards/PanelContainer.vue
<ul><li>Add "Create Alert" menu action<br> <li> Implement
createAlertFromPanel with validations<br> <li> Route to
<code>addAlert</code> with encoded panel data<br> <li> Internationalize
panel tooltips/labels and messages</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8700/files#diff-414737cba6064461f7026e0b016afcb9620bd5bb29c4708fc170dee789dbcd4d">+88/-20</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>AddAlertView.vue</strong><dd><code>New AddAlert view
with destinations loading</code>
</dd></summary>
<hr>
web/src/views/AddAlertView.vue
<ul><li>New view to host <code>AddAlert</code> component<br> <li> Fetch
alert destinations on mount<br> <li> Handle save/cancel navigation to
alert list</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8700/files#diff-39d244954ff4e867c07c8f983a931f941e53dc7961c83e707f362bd99de8c83a">+102/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>en.json</strong><dd><code>i18n strings for panel and
alert creation</code>
</dd></summary>
<hr>
web/src/locales/languages/en.json
<ul><li>Add i18n keys for panel actions, tooltips, notifications<br>
<li> Add message for imported panel query</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8700/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+23/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
1b0098f93a |
fix: pass additional context to the AI depending on the page (#8697)
### **User description** 1. This PR adds the additional context to the following pages - logs, dashboards , pipelines , alerts 2. fixed auto scrolling when user trying to stop the scroll in ai chat 3. in add alert page when user opens the ai chat it was overlapping the buttons of generate ___ ### **PR Type** Enhancement, Bug fix ___ ### **Description** - Introduce global AI context provider system - Add page-specific context providers - Fix AI chat auto-scroll behavior - Prevent AI chat overlap on Add Alert ___ ### Diagram Walkthrough ```mermaid flowchart LR Registry["ContextRegistry singleton"] -- "register/setActive" --> LogsProv["Logs context provider"] Registry -- "register/setActive" --> PipesProv["Pipelines context provider"] Registry -- "register/setActive" --> AlertsProv["Alerts context provider"] Registry -- "register/setActive" --> DashProv["Dashboards context provider"] Registry -- "fallback" --> DefaultProv["Default context provider"] UIChat["AI Chat"] -- "getActiveContext()" --> Registry Pages["Pages (Logs/Pipelines/Alerts/Dashboards)"] -- "mount/unmount" --> Registry ``` <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>alertsContextProvider.ts</strong><dd><code>New alerts page context provider</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8697/files#diff-95b95a1b18db00eb9a3b4b9155cf23a078e4d54032f023d6fdf7445afb9e4661">+52/-0</a> </td> </tr> <tr> <td><strong>dashboardsContextProvider.ts</strong><dd><code>New dashboards context provider with intents</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8697/files#diff-c3323cfc4d7015b1b51ff5ec85fe3371c817dcc614e52ebb4fac76abc719b872">+76/-0</a> </td> </tr> <tr> <td><strong>defaultContextProvider.ts</strong><dd><code>Default app-wide context provider</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8697/files#diff-dedeb11e8ee3b92acda8c30cb84d2a749dec11cb1387547c613220a29744e236">+59/-0</a> </td> </tr> <tr> <td><strong>index.ts</strong><dd><code>Export registry and providers</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8697/files#diff-2f5cd69b9d0b7e1c87c1dbe6ad7cdb7b182014a03594481085561a9d694d2659">+36/-0</a> </td> </tr> <tr> <td><strong>logsContextProvider.ts</strong><dd><code>Logs context provider with time and fields</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8697/files#diff-bd6b1c67f0d9ef96110421aac3dd3e8f90115da95adf28e79c88e1c6fc594ac2">+198/-0</a> </td> </tr> <tr> <td><strong>pipelinesContextProvider.ts</strong><dd><code>Pipelines editor context provider</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8697/files#diff-9f09180c5d32d87f8c89fc0a8edc8d2153b37515dcf906123fbd8017c435fa75">+52/-0</a> </td> </tr> <tr> <td><strong>registry.ts</strong><dd><code>Context registry singleton with fallback</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8697/files#diff-771da8f6897a25741c485f6637da004e3a62f6e4b70d6dbb2a408a56ba9e3923">+136/-0</a> </td> </tr> <tr> <td><strong>types.ts</strong><dd><code>Context provider/core types</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8697/files#diff-f0c33d88011ac1afc87b85a1be56756616a2a13105537cf6f6a8090747b2beb3">+34/-0</a> </td> </tr> <tr> <td><strong>useAiChat.ts</strong><dd><code>Use structured context; add default provider init</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8697/files#diff-830ee4f21bdbbd0fa5c5c0f43b0a1d0200831e07ccddc91982cf0371c801b046">+62/-8</a> </td> </tr> <tr> <td><strong>main.ts</strong><dd><code>Initialize global default context provider</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8697/files#diff-37b29c5a3b76595194070205d9a0cdedcd717bf7c4367022d1e2667395962f2e">+5/-0</a> </td> </tr> <tr> <td><strong>PipelineEditor.vue</strong><dd><code>Register/cleanup pipelines context provider</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8697/files#diff-68c21f647336067eb79737ce9aca2d49632f2fa1c0878bcfdae55607e3473a15">+37/-0</a> </td> </tr> <tr> <td><strong>Index.vue</strong><dd><code>Register/cleanup logs context provider</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8697/files#diff-0323c3da69b369843c5d72bf4df5b00ca6b5147192a213baf331659ecf92af62">+42/-1</a> </td> </tr> <tr> <td><strong>ViewDashboard.vue</strong><dd><code>Register/cleanup dashboards context provider</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8697/files#diff-052badb6758aff09ceaf1645869b9ba96125e6a0ea21abb01a8ee0a40d6467f3">+16/-0</a> </td> </tr> <tr> <td><strong>AddPanel.vue</strong><dd><code>Register/cleanup context for add/edit panel</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8697/files#diff-c9632db1ad95af95aba10161bcbc7c5608318919f228637bdafae3f3a31267e8">+17/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Bug fix</strong></td><td><details><summary>2 files</summary><table> <tr> <td><strong>O2AIChat.vue</strong><dd><code>Add auto-scroll control and event handling</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8697/files#diff-a6a125719a7b32b31b53fcfe05c12081d82c139a401699affdda0db8e73887e3">+22/-2</a> </td> </tr> <tr> <td><strong>AddAlert.vue</strong><dd><code>Avoid AI chat overlap; register alerts context</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8697/files#diff-7b426bb23e9ed0250c3877d6d97b099c42b2d20e22ddf4459915381b2233a0a8">+15/-2</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ |
||
|
|
ad34aaa420 |
fix: pipeline UI revamp (#8676)
### **User description** This PR enhances the pipelines UI ___ ### **PR Type** Enhancement ___ ### **Description** - Revamped pipeline node sidebar UI - Added inline function definition viewer - Improved node/edge interactions and deletion UX - Updated icons, styles, and dark mode ___ ### Diagram Walkthrough ```mermaid flowchart LR Sidebar["NodeSidebar.vue UI/UX revamp"] -- styled nodes & tooltips --> Editor["PipelineEditor.vue visuals"] Editor -- keyboard edge delete & headers --> Flow["PipelineFlow.vue interactions"] Flow -- edge click help notification --> Edges["CustomEdge/EdgeWithButton cleanup"] AssocFn["AssociateFunction.vue function preview"] -- RAF/RBF guidelines --> Users["Better user guidance"] ``` <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>8 files</summary><table> <tr> <td><strong>AssociateFunction.vue</strong><dd><code>Show selected function definition and RAF/RBF note</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8676/files#diff-24a5b2df69327a6477227ea674939dea19dd6d393b4bfcf807089d71e6391152">+205/-1</a> </td> </tr> <tr> <td><strong>NodeSidebar.vue</strong><dd><code>Redesign draggable nodes with custom tooltips</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8676/files#diff-01811ed187a4a8d0dc2cf301d145c6d236eae3d474b048b006986e755cc6d8bb">+285/-13</a></td> </tr> <tr> <td><strong>PipelineEditor.vue</strong><dd><code>Visual updates, new icons, and keyboard edge delete</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8676/files#diff-68c21f647336067eb79737ce9aca2d49632f2fa1c0878bcfdae55607e3473a15">+185/-22</a></td> </tr> <tr> <td><strong>PipelineView.vue</strong><dd><code>Update assets and scoped styles for nodes</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8676/files#diff-a71732cf7f8ee768e21f7eb2bf9eeed4ac67ba8221cca2e8d347d8acb27d4471">+61/-50</a> </td> </tr> <tr> <td><strong>CustomEdge.vue</strong><dd><code>Remove on-edge delete button; style and cleanup</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8676/files#diff-d759dc0d507d5dfb3295fdb7dfd59e4a48ae32cdced0bb3471096f8691a99f58">+9/-47</a> </td> </tr> <tr> <td><strong>CustomNode.vue</strong><dd><code>Hover actions, handle styling, labels truncation, UX polish</code></dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8676/files#diff-b9d83cd503b6d3470b238accaaea0b4decf567add8ad4727c63c9e583725f408">+704/-342</a></td> </tr> <tr> <td><strong>EdgeWithButton.vue</strong><dd><code>Remove edge button UI; keep keyboard deletion</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8676/files#diff-838d98dd7119cb936a8971f3c631106cdda2c4113530999ff50bceb206acd375">+14/-29</a> </td> </tr> <tr> <td><strong>PipelineFlow.vue</strong><dd><code>Edge click help notification and event handling</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8676/files#diff-9c7475a54f0c895dd49eb0c5b53fe0a76ceff0520f667a9cb065b364557ced50">+85/-3</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ |
||
|
|
79a916e7ad |
fix: rename regex patterns to sensitive data redaction (#8681)
### **PR Type**
Enhancement, Documentation
___
### **Description**
- Rename UI to Sensitive Data Redaction
- Update i18n keys and labels
- Adjust tooltips and table headers
- Simplify import/create wording
___
### Diagram Walkthrough
```mermaid
flowchart LR
UI["Components (schema.vue, settings/*.vue)"] -- "rename labels/tooltips" --> SDR["Sensitive Data Redaction terminology"]
I18N["en.json i18n strings"] -- "update keys/values" --> SDR
SDR -- "reflected in lists, tabs, empty state" --> UX["Consistent SDR 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><table>
<tr>
<td>
<details>
<summary><strong>schema.vue</strong><dd><code>Add SDR tooltip to
patterns column</code>
</dd></summary>
<hr>
web/src/components/logstream/schema.vue
<ul><li>Add tooltip for <code>patterns</code> column<br> <li> Tooltip
text: "Sensitive Data Redaction"</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8681/files#diff-9196be2ccae4054a00b0b1aa9d1e87b366c10920d6eaf9ef8c6e6293d50bcf46">+6/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>RegexPatternList.vue</strong><dd><code>Use SDR titles
and footer labels</code>
</dd></summary>
<hr>
web/src/components/settings/RegexPatternList.vue
<ul><li>Switch header i18n key to <code>regex_patterns.title</code><br>
<li> Update footer count label to <code>bottom_header</code></ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8681/files#diff-524927acd9f5bb07b71bfac489e747470108574e21a6dde63ea7c1f219cea853">+2/-2</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>index.vue</strong><dd><code>Update settings tab to SDR
title</code>
</dd></summary>
<hr>
web/src/components/settings/index.vue
- Use `regex_patterns.title` for tab label
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8681/files#diff-699c63979f851c48ad440a078e93282fd797a18fc065e5331b2e41122ddb8b69">+1/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>NoRegexPatterns.vue</strong><dd><code>Update empty
state copy for patterns</code>
</dd></summary>
<hr>
web/src/components/settings/NoRegexPatterns.vue
<ul><li>Simplify subtitle wording<br> <li> Rename import button text to
"Import Pattern"</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8681/files#diff-279b923f20042948c87e907d2453e9d5a4c8c73672b23df951d7d7d823ff3a88">+2/-2</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>en.json</strong><dd><code>i18n updates for SDR
terminology</code>
</dd></summary>
<hr>
web/src/locales/languages/en.json
<ul><li>Add <code>regex_patterns.title</code>: "Sensitive Data
Redaction"<br> <li> Shorten <code>sidebar.regexPatterns</code> to
"SDR"<br> <li> Rename button/search labels (Add/Search/Edit/Import
Pattern)<br> <li> Add <code>bottom_header</code>: "Pattern(s)"</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8681/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+8/-6</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
48914cefc9 |
fix: added warning message to the pipeline default destination node (#8596)
### **User description** This PR solves the issue of deleting the default destination node added implicitly so it will throw a warning message and also it will be only available for realtime pipeline because we only add default destination node for realtime pipelines #8597 8597 ___ ### **PR Type** Bug fix, Enhancement ___ ### **Description** - Warn on deleting default destination node - Detect default output for realtime pipelines - Add reusable warning message constant - Extend confirm dialog to show banner ___ ### Diagram Walkthrough ```mermaid flowchart LR useDnD["useDnD: detect default destination"] -- "expose checkIfDefaultDestinationNode" --> StreamVue["Stream.vue: delete dialog"] useDnD -- "expose checkIfDefaultDestinationNode" --> CustomNodeVue["CustomNode.vue: delete dialog"] constants["constants.ts: warning message"] -- "import" --> StreamVue constants -- "import" --> CustomNodeVue ConfirmDialog["ConfirmDialog.vue: banner + width"] -- "render warningMessage" --> UI["User sees warning on delete"] ``` <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>useDnD.ts</strong><dd><code>Add utilities to detect default destination node</code> </dd></summary> <hr> web/src/plugins/pipelines/useDnD.ts <ul><li>Add helper to get input stream name.<br> <li> Add checker for default destination node by id.<br> <li> Comment clarifying default node auto-addition.<br> <li> Export <code>checkIfDefaultDestinationNode</code>.</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8596/files#diff-3b4f018f746c17ef9dac8e7b988501170b0165a4f513bf5ab78c509d487028d9">+24/-1</a> </td> </tr> <tr> <td> <details> <summary><strong>ConfirmDialog.vue</strong><dd><code>Enhance dialog to display warning banner</code> </dd></summary> <hr> web/src/components/ConfirmDialog.vue <ul><li>Support optional <code>warningMessage</code> prop.<br> <li> Render themed banner when warning present.<br> <li> Adjust dialog width conditionally.<br> <li> Inject Vuex store for theming.</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8596/files#diff-01d149c6879aa6b1464c186a294b79de4065d9440374dfd2a38ae2ad096f1451">+30/-2</a> </td> </tr> </table></td></tr><tr><td><strong>Documentation</strong></td><td><table> <tr> <td> <details> <summary><strong>constants.ts</strong><dd><code>Centralize default destination warning message</code> </dd></summary> <hr> web/src/utils/pipelines/constants.ts - Add `defaultDestinationNodeWarningMessage` constant. </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8596/files#diff-f1ece719ac17de0d50be69174cd42057de3c103d38e1aefc081174778c2581f9">+1/-0</a> </td> </tr> </table></td></tr><tr><td><strong>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>Stream.vue</strong><dd><code>Show warning when deleting default destination (form)</code> </dd></summary> <hr> web/src/components/pipeline/NodeForm/Stream.vue <ul><li>Pass <code>warningMessage</code> to ConfirmDialog.<br> <li> Import and use warning message constant.<br> <li> Use <code>checkIfDefaultDestinationNode</code> before delete.<br> <li> Clear warning for non-default nodes/cancel dialog.</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8596/files#diff-1a17ced9dc89022502cab0a6f9b97b413c2a2c4f8219733d063fc0180d361739">+12/-1</a> </td> </tr> <tr> <td> <details> <summary><strong>CustomNode.vue</strong><dd><code>Warn on deleting default destination (node card)</code> </dd></summary> <hr> web/src/plugins/pipelines/CustomNode.vue <ul><li>Import warning constant and checker.<br> <li> Populate warning when deleting default destination.<br> <li> Pass <code>warningMessage</code> to ConfirmDialog.</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8596/files#diff-b9d83cd503b6d3470b238accaaea0b4decf567add8ad4727c63c9e583725f408">+11/-1</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ |
||
|
|
9cbb031fa1 |
fix: redirect to login page on unauthorised error with http2 streaming (#8656)
### **PR Type**
Bug fix
___
### **Description**
- Handle 401 during HTTP2 streaming
- Trigger logout and clear storages
- Reload app to force auth flow
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["HTTP2 streaming request"] -- "error caught" --> B["Check error type"]
B -- "AbortError" --> C["Ignore silently"]
B -- "status === 401" --> D["Dispatch logout"]
D -- "then" --> E["Clear localStorage/sessionStorage"]
E -- "then" --> F["window.location.reload()"]
B -- "other errors" --> G["onError(traceId, error)"]
```
<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>useStreamingSearch.ts</strong><dd><code>Add
unauthorized handling in streaming error catch</code>
</dd></summary>
<hr>
web/src/composables/useStreamingSearch.ts
<ul><li>Add 401 error handling branch.<br> <li> Dispatch
<code>logout</code> on unauthorized error.<br> <li> Clear local and
session storage.<br> <li> Reload page to restart auth flow.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8656/files#diff-8fce3e25a161cd458e734bd9b1f98aadefe3482da7b6529a5b1f4fa20ec115e2">+5/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
91a35cc0f1 |
fix: should not show checkbox before loading columns (#8618)
### **User description** This PR fixes the issue in https://github.com/openobserve/openobserve/issues/8615 ___ ### **PR Type** Bug fix ___ ### **Description** - Hide select-all checkbox until columns load - Prevent checkbox misalignment on initial render - Apply conditional header cell rendering ___ ### Diagram Walkthrough ```mermaid flowchart LR UI["PipelinesList header render"] -- "columns.length == 0" --> Hidden["Do not render q-th/checkbox"] UI -- "columns.length > 0" --> Visible["Render q-th with select-all checkbox"] ``` <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>PipelinesList.vue</strong><dd><code>Conditionally render select-all checkbox based on columns</code></dd></summary> <hr> web/src/components/pipeline/PipelinesList.vue <ul><li>Gate header checkbox rendering on columns length<br> <li> Replace unconditional q-th with v-if="columns.length > 0"<br> <li> Prevents checkbox appearing before columns load</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8618/files#diff-85e3ef322f3eea0fc6d74d89431ba338a1153cb82ee06bef0f7c5f439c04267d">+1/-1</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ |
||
|
|
5a51e28c85 |
fix: streams list render issue main (#8644)
### **PR Type**
Bug fix
___
### **Description**
- Show parent when children visible
- Filter rows by show before render
- Update empty/loading checks to filtered rows
- Limit items-size and rows to filtered data
___
### Diagram Walkthrough
```mermaid
flowchart LR
EditRole["EditRole.vue: set permission.show when children exist"]
PermissionsTable["PermissionsTable.vue: compute filtered rows"]
UI["UI: render/empty states use filtered rows"]
EditRole -- "propagate show to parent" --> PermissionsTable
PermissionsTable -- "use getFilteredRows" --> 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>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>EditRole.vue</strong><dd><code>Ensure parent permission
shows when children visible</code>
</dd></summary>
<hr>
web/src/components/iam/roles/EditRole.vue
<ul><li>Set <code>permission.show = true</code> when
<code>filteredEntities</code> exist<br> <li> Move show assignment before
entity slicing<br> <li> Preserve entity slicing for specific
permissions<br> <li> Clear temporary <code>filteredEntities</code> after
processing</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8644/files#diff-263b6bc7d29fdf8358c8437cd637f1350aa3733cc2706eae8ff00028686cc0f5">+4/-4</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>PermissionsTable.vue</strong><dd><code>Render only
visible rows via computed filter</code>
</dd></summary>
<hr>
web/src/components/iam/roles/PermissionsTable.vue
<ul><li>Add <code>getFilteredRows</code> computed to filter by
<code>row.show</code><br> <li> Replace <code>rows</code> with
<code>getFilteredRows</code> across template<br> <li> Update empty and
resource messages to use filtered length<br> <li> Import
<code>computed</code> and <code>defineEmits</code></ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8644/files#diff-609d4d7245b7309cf30cc45c22c996c6b068ebc042a9673e75ee3bbd2aa00a2a">+11/-7</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: omkark06 <omkar@zinclabs.io>
|
||
|
|
41f03aba06 |
fix: histogram interval config issue (#8622)
### **User description** - #8614 ___ ### **PR Type** Bug fix ___ ### **Description** - Preserve histogram interval for visualization - Add dedicated interval field to avoid pagination bug - Ensure missing values can be filled in charts - Fix regression impacting WITH clause streaming ___ ### Diagram Walkthrough ```mermaid flowchart LR A["WebSocket streaming response"] -- "has histogram_interval" --> B["Set visualization_histogram_interval"] B -- "drives chart fill logic" --> C["Correct chart rendering"] B -- "separate from pagination interval" --> D["Pagination unaffected"] ``` <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>useSearchStream.ts</strong><dd><code>Preserve histogram interval in separate visualization field</code></dd></summary> <hr> web/src/composables/useLogs/useSearchStream.ts <ul><li>Capture histogram_interval from first streaming response<br> <li> Store in new field <code>visualization_histogram_interval</code><br> <li> Avoids pagination counters conflict<br> <li> Enables missing-value fill in charts</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8622/files#diff-0b7e910195d1ec4b1301973bd2f4193e1e23442103f69a9fbd189d3f78547014">+12/-0</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ |
||
|
|
fad1692855 |
fix: do not allow select * query with share link (#8565) (#8568)
### **User description** fix #8565 ___ ### **PR Type** Bug fix, Enhancement ___ ### **Description** - Block SELECT * queries in visualization - Respect SQL vs builder modes for query source - Display user-friendly error notification - Guarded by quick mode configuration flag ___ ### Diagram Walkthrough ```mermaid flowchart LR A["Toggle visualization"] -- "determine query source" --> B["Build or read SQL"] B -- "quick mode enabled?" --> C["Check SELECT * pattern"] C -- "is SELECT *" --> D["Show error notification"] C -- "not SELECT *" --> E["Proceed to extract fields"] ``` <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>Index.vue</strong><dd><code>Add guard against SELECT * for visualization</code> </dd></summary> <hr> web/src/plugins/logs/Index.vue <ul><li>Determine SQL from builder or raw mode.<br> <li> Detect simple SELECT * queries in quick mode.<br> <li> Block visualization and notify on invalid query.</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8568/files#diff-0323c3da69b369843c5d72bf4df5b00ca6b5147192a213baf331659ecf92af62">+21/-0</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ |
||
|
|
980949392a |
fix: alert module code splitting (#8611)
### **User description** add alert module splitting into util files ___ ### **PR Type** Enhancement, Tests ___ ### **Description** - Extract alert logic into utils modules - Refactor AddAlert to use utilities - Add SQL/where/query builder helpers - Update tests to new utilities ___ ### Diagram Walkthrough ```mermaid flowchart LR AddAlertVue["AddAlert.vue (component)"] -- uses --> alertQueryBuilder["utils/alerts/alertQueryBuilder.ts"] AddAlertVue -- uses --> alertPayload["utils/alerts/alertPayload.ts"] AddAlertVue -- uses --> alertValidation["utils/alerts/alertValidation.ts"] AddAlertVue -- uses --> alertDataTransforms["utils/alerts/alertDataTransforms.ts"] AddAlertVue -- uses --> alertSqlUtils["utils/alerts/alertSqlUtils.ts"] AddAlertSpec["AddAlert.spec.ts"] -- import --> alertQueryBuilder validateAlertsSpec["utils/validateAlerts.spec.ts"] -- import --> alertValidation ``` <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>2 files</summary><table> <tr> <td><strong>AddAlert.spec.ts</strong><dd><code>Tests use extracted generateWhereClause utility</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8611/files#diff-84362398fea8abd9acf30f4f40ba8d4cf27348677454017bd4e6f568d5176ac6">+13/-9</a> </td> </tr> <tr> <td><strong>validateAlerts.spec.ts</strong><dd><code>Point validation tests to new module path</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8611/files#diff-8ba923d1b6e78fb3134f2775e51fce66e5171bcfb001fcac4837639313c55b4a">+1/-1</a> </td> </tr> </table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>7 files</summary><table> <tr> <td><strong>alertDataTransforms.ts</strong><dd><code>New FE/BE condition transform and group ops</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8611/files#diff-7db039e3a78f8c5306c84382f42b071f680cf4f18f84d17cedcc8d484a8b113f">+116/-0</a> </td> </tr> <tr> <td><strong>alertPayload.ts</strong><dd><code>New payload build and save alert helpers</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8611/files#diff-914546afcdb9f9604ad6efe448d8b373fa3f24be1ba7cbc75bd18bf8c419ab3c">+211/-0</a> </td> </tr> <tr> <td><strong>alertQueryBuilder.ts</strong><dd><code>New SQL and WHERE clause builder utilities</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8611/files#diff-5c829ce5fd3ad2f5ef359df5976e6adfc52eaa6b5f249f594c8b8a588acf8b3e">+204/-0</a> </td> </tr> <tr> <td><strong>alertSqlUtils.ts</strong><dd><code>New SQL parser wrapper for column checks</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8611/files#diff-fea836214c2a77154fb97a519b6fa4bd0315acbffb9b3d7d94738bf073d5eabd">+33/-0</a> </td> </tr> <tr> <td><strong>alertValidation.ts</strong><dd><code>Consolidated alert validation and JSON save flow</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8611/files#diff-3164a4a58c1865cfcbbba084ac339664c99564545be4d57504dd406d59d8ad4a">+649/-0</a> </td> </tr> <tr> <td><strong>AddAlert.vue</strong><dd><code>Refactor to use new alert utils modules</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8611/files#diff-7b426bb23e9ed0250c3877d6d97b099c42b2d20e22ddf4459915381b2233a0a8">+110/-681</a></td> </tr> <tr> <td><strong>ScheduledAlert.vue</strong><dd><code>UI tweaks and cleanup of unused logic</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8611/files#diff-5e143a17ab0fa5d7817f6d9301667fb5597236f27184248c7a71728e85b8d999">+22/-165</a></td> </tr> </table></details></td></tr><tr><td><strong>Miscellaneous</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>validateAlerts.ts</strong><dd><code>Remove legacy validation (replaced by utils)</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8611/files#diff-31dfccb7ecf243d062992787997f3e29b26579144def6a562e7f138cf3a73ed6">+0/-313</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ |
||
|
|
3dde03ec9f |
fix: update quick_mode parameter handling in logs URL based on configuration for drilldown and go to logs in dashboard (#8586)
### **PR Type**
Bug fix
___
### **Description**
- Respect `quick_mode_enabled` in logs URL
- Apply to drilldown and go-to-logs flows
- Minor watch formatting cleanup
___
### Diagram Walkthrough
```mermaid
flowchart LR
Config["zoConfig.quick_mode_enabled"]
Builder1["PanelContainer: build logs URL"]
Builder2["PanelSchemaRenderer: build logs URL"]
URLParam["Set quick_mode=true/false"]
Format["Refactor watch() formatting"]
Config -- controls --> Builder1
Config -- controls --> Builder2
Builder1 -- sets --> URLParam
Builder2 -- sets --> URLParam
PanelSchemaRenderer --> Format
```
<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>PanelContainer.vue</strong><dd><code>Conditional
quick_mode in logs URL construction</code>
</dd></summary>
<hr>
web/src/components/dashboards/PanelContainer.vue
<ul><li>Set <code>quick_mode</code> based on
<code>zoConfig.quick_mode_enabled</code>.<br> <li> Remove unconditional
<code>quick_mode=false</code>.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8586/files#diff-414737cba6064461f7026e0b016afcb9620bd5bb29c4708fc170dee789dbcd4d">+5/-2</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>PanelSchemaRenderer.vue</strong><dd><code>Apply
config-driven quick_mode and tidy watchers</code>
</dd></summary>
<hr>
web/src/components/dashboards/PanelSchemaRenderer.vue
<ul><li>Set <code>quick_mode</code> based on
<code>zoConfig.quick_mode_enabled</code>.<br> <li> Keep histogram
hidden; preserve other params.<br> <li> Reformat watch() for
readability.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8586/files#diff-e5376e7e77bf3aaf6590c2522d8c2dbffcc95a8006ae0d6dc0040a37825367d6">+12/-5</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
803154ef4b |
fix: import issue due to refactoring on visualization (#8591)
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Replace deprecated logs composable imports
- Switch to `useSearchStream` and `searchState`
- Update imports to new module paths
- Adjust usage to new APIs
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["VisualizeLogsQuery.vue"] --> B["Remove useLogs import"]
A --> C["Import useSearchStream"]
A --> D["Import searchState"]
A --> E["Use searchState().searchObj"]
A --> F["Use useSearchStream().buildSearch"]
```
<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>VisualizeLogsQuery.vue</strong><dd><code>Migrate logs
search to new composables</code>
</dd></summary>
<hr>
web/src/plugins/logs/VisualizeLogsQuery.vue
<ul><li>Remove <code>useLogs</code> import and usage.<br> <li> Import
<code>useSearchStream</code> for <code>buildSearch</code>.<br> <li>
Import <code>searchState</code> to access <code>searchObj</code>.<br>
<li> Update variable initializations to new composables.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8591/files#diff-979b01d943d58c5d70faeeac5948b7f02f0b2392a12b84ef07ba7f7393ab0261">+4/-2</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
4fa43fdff7 |
fix: stream detail page (schema) layout changed (#8585)
### **User description**
1. This PR introduces a new tab called configuration where we moved all
the configuration settings to that tab
2. This PR introduces a compact table so that more columns are visible
and also all the stream stats above will stay at viewport always
___
### **PR Type**
Enhancement
___
### **Description**
- Redesigned schema page layout and header
- Added Configuration tab for settings
- New compact stats tiles and sticky table
- Added distinct values toggle and UX polish
___
### Diagram Walkthrough
```mermaid
flowchart LR
Header["Header: title + name + timeline"] -- "context" --> Tabs["Tabs: Schema Settings / Configuration / Extended Retention"]
Tabs -- "schema fields" --> SchemaTbl["Schema table: compact, sticky header, mini-select"]
Tabs -- "settings" --> Config["Configuration panel: retention, max range, flatten, toggles"]
Tabs -- "retention" --> ExtRet["Extended Retention: date selection + table"]
Stats["Stats tiles: Events, Storage, Compressed, Index"] -- "overview" --> Header
```
<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>schema.vue</strong><dd><code>Schema page UI/UX overhaul
with new configuration</code>
</dd></summary>
<hr>
web/src/components/logstream/schema.vue
<ul><li>Revamped header with stream name badge and timeline.<br> <li>
Added stats tiles grid and compact layout.<br> <li> Introduced
'Configuration' tab with inputs and toggles.<br> <li> Improved schema
table: sticky header, mini-select, tooltips, <br>pagination.<br> <li>
Added 'Enable Distinct Values' setting wired to backend.<br> <li>
Updated date formatting and preserved original timestamps.<br> <li>
Adjusted per-page options and floating footer behavior.<br> <li> Added
new icons and theme-aware styling; extensive CSS updates.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8585/files#diff-9196be2ccae4054a00b0b1aa9d1e87b366c10920d6eaf9ef8c6e6293d50bcf46">+1068/-604</a></td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
4aa8424682 |
fix: check for lower case select as well in middle of the query (#8545)
### **User description** This PR fixes the issue mentioned in #8541 ___ ### **PR Type** Bug fix ___ ### **Description** - Handle lowercase SELECT in saved views - Prevent applying views to SQL queries - Use case-insensitive SELECT detection ___ ### Diagram Walkthrough ```mermaid flowchart LR InputQuery["User query input"] -- toLowerCase check --> SelectDetector["Detect 'select' anywhere"] SelectDetector -- true --> EarlyReturn["Skip applying saved views"] SelectDetector -- false --> ContinueFlow["Proceed with view application"] ``` <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>Index.vue</strong><dd><code>Case-insensitive SQL detection in saved views</code> </dd></summary> <hr> web/src/plugins/logs/Index.vue <ul><li>Make SELECT detection case-insensitive.<br> <li> Detect 'select' anywhere in the query string.<br> <li> Prevent applying saved views when SQL mode detected.</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8545/files#diff-0323c3da69b369843c5d72bf4df5b00ca6b5147192a213baf331659ecf92af62">+1/-1</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ |
||
|
|
02fb65df88 |
fix: dashboard toLowercase issue (#8538) (#8563)
### **PR Type**
Bug fix
___
### **Description**
- Fix alias lowercase conversion with non-strings
___
### Diagram Walkthrough
```mermaid
flowchart LR
getDataValue["getDataValue in aliasUtils.ts"]
aliasInput["alias input (any type)"]
toStringLower["toString() then toLowerCase()"]
propertyAccess["Safe property access on obj"]
aliasInput -- "fallback path" --> toStringLower
toStringLower -- "compute lowercase key" --> propertyAccess
propertyAccess -- "return value" --> getDataValue
```
<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>aliasUtils.ts</strong><dd><code>Safe lowercase
conversion for alias keys</code>
</dd></summary>
<hr>
web/src/utils/dashboard/aliasUtils.ts
<ul><li>Add toString() before toLowerCase().<br> <li> Prevent errors
when alias isn't a string.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8563/files#diff-5edee3a79266ff067f9767615a887375f369c6006c4c02bb46a9b6006969e284">+1/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
Co-authored-by: Abhay Padamani <141122205+ktx-abhay@users.noreply.github.com>
|
||
|
|
0f7734b7e1 |
fix: trace id added for values api (#8408)
### **PR Type**
Bug fix
___
### **Description**
- Add optional trace header to values API
- Propagate generated trace id from UI
- Use http client with custom headers
___
### Diagram Walkthrough
```mermaid
flowchart LR
UI["Logs IndexList.vue: generate trace id"] -- "pass traceparent" --> Service["stream.values() accepts traceparent"]
Service -- "set headers if present" --> HTTP["http({ headers }).get(url)"]
```
<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>stream.ts</strong><dd><code>Support optional
traceparent header in service</code>
</dd></summary>
<hr>
web/src/services/stream.ts
<ul><li>Accept new <code>traceparent</code> param in <code>values</code>
method.<br> <li> Build optional headers with
<code>traceparent</code>.<br> <li> Switch to <code>http({ headers
}).get(url)</code> to send header.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8408/files#diff-021a378afe6f62526991974cd72b045a5be00aa5233281218cadce6d3d1c6abf">+9/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>IndexList.vue</strong><dd><code>Propagate trace id from
UI to service</code>
</dd></summary>
<hr>
web/src/plugins/logs/IndexList.vue
<ul><li>Generate trace context in UI.<br> <li> Pass
<code>traceparent</code> (traceId) to values API call.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8408/files#diff-08f058f883b659e713e606991a7ea37ae1ff016b7cccef970489ab5840dc3d09">+1/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
4a4ea9fcb1 |
fix: should add include search term before group by clause (#8515)
### **User description** This PR fixes the #8510 ___ ### **PR Type** Bug fix ___ ### **Description** - Insert filters before GROUP BY clause - Handle both include and exclude terms - Preserve ORDER BY and LIMIT positions - Align query splitting via group-by branch ___ ### Diagram Walkthrough ```mermaid flowchart LR Query["Incoming query"] --> CheckOB["Has ORDER BY?"] CheckOB -- Yes --> InsertBeforeOB["Insert filter before ORDER BY"] CheckOB -- No --> CheckGB["Has GROUP BY?"] CheckGB -- Yes --> InsertBeforeGB["Insert filter before GROUP BY"] CheckGB -- No --> CheckLimit["Has LIMIT?"] CheckLimit -- Yes --> InsertBeforeLimit["Insert filter before LIMIT"] CheckLimit -- No --> AppendFilter["Append filter at end/with WHERE"] ``` <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>SearchBar.vue</strong><dd><code>Add group-by-aware filter insertion logic</code> </dd></summary> <hr> web/src/plugins/logs/SearchBar.vue <ul><li>Add GROUP BY branch when adding filters.<br> <li> Insert "AND"/"where" filter before GROUP BY.<br> <li> Maintain existing ORDER BY and LIMIT handling.<br> <li> Minor formatting of conditional branches.</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8515/files#diff-81893de4edf186b0556f610acb280c87baa2ffe67d3b48a60a866094c7635baf">+26/-2</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ |
||
|
|
37675d5320 |
fix: remove drilldown and compare against config on visualization rc7(#8534) (#8562)
### **PR Type**
Bug fix
___
### **Description**
- Disable drilldown on Logs page
- Guard chart compare against Logs context
- Expose page key to template
___
### Diagram Walkthrough
```mermaid
flowchart LR
ConfigPanel["ConfigPanel.vue"]
DrilldownGuard["Add 'pageKey !== logs' guard"]
CompareGuard["Guard compare UI for logs"]
ExposeKey["Return dashboardPanelDataPageKey from setup()"]
ConfigPanel -- "update Drilldown v-if" --> DrilldownGuard
ConfigPanel -- "update compare v-if" --> CompareGuard
ConfigPanel -- "export key to template" --> ExposeKey
```
<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>ConfigPanel.vue</strong><dd><code>Disable
drilldown/compare when page key is logs</code>
</dd></summary>
<hr>
web/src/components/dashboards/addPanel/ConfigPanel.vue
<ul><li>Add <code>dashboardPanelDataPageKey !== 'logs'</code> to
Drilldown v-if.<br> <li> Add same guard to compare/series options v-if
with <code>!promqlMode</code>.<br> <li> Return
<code>dashboardPanelDataPageKey</code> from setup exports.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8562/files#diff-c3a6e64dff02b58bb7cdc3f0668990b41ff41544b4c5e991bbcd989ad4bba3f8">+5/-2</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
Co-authored-by: Abhay Padamani <141122205+ktx-abhay@users.noreply.github.com>
|
||
|
|
b2535e2fa0 |
fix: series list issue for color override config on pie chart (#8540)
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Correct series extraction for pie/donut
- Fallback to existing options logic
- Prevent invalid items via filtering
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["panelType check"] -- "pie/donut" --> B["extract from data[].name"]
A -- "other types" --> C["use existing options"]
B -- "build series list" --> D["return { series: names }"]
C -- "fallback" --> E["return options or empty series"]
```
<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>ColorBySeries.vue</strong><dd><code>Properly derive
series for pie/donut charts</code>
</dd></summary>
<hr>
web/src/components/dashboards/addPanel/ColorBySeries.vue
<ul><li>Add panel type detection for pie/donut.<br> <li> Extract series
names from data[].name.<br> <li> Filter out invalid data items.<br> <li>
Preserve fallback to existing options.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8540/files#diff-2783259507b45f0b3664d9be68ca236690bbbf151472da3fa8b552d230af5b3f">+16/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
817245b43d |
fix: added additional match_all pattern to the syntax guide (#8475)
### **PR Type**
Documentation
___
### **Description**
- Expand syntax guide with match_all examples
- Add prefix, phrase prefix, regex usage
- Document case-sensitive and postfix searches
- Mirror examples for query editor and SQL
___
### Diagram Walkthrough
```mermaid
flowchart LR
Guide["Syntax guide (logs)"]
MatchAll["match_all examples"]
Prefix["Prefix & postfix"]
Phrase["Phrase prefix"]
Regex["Regex patterns"]
Case["Case-sensitive usage"]
Guide -- "adds" --> MatchAll
MatchAll -- "includes" --> Prefix
MatchAll -- "includes" --> Phrase
MatchAll -- "includes" --> Regex
MatchAll -- "includes" --> Case
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>SyntaxGuide.vue</strong><dd><code>Extend logs syntax
guide with match_all patterns</code>
</dd></summary>
<hr>
web/src/plugins/logs/SyntaxGuide.vue
<ul><li>Add match_all prefix example ('error*')<br> <li> Add phrase
prefix example ('error code*')<br> <li> Add regex-like example ('*code
40*')<br> <li> Add case-sensitive and postfix examples ('traceHits',
'*failed')</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8475/files#diff-c6e8bb651fadd2b15b5b97f5b6069a57813fb97cc3d06eef983af4def33e8806">+60/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
6e49099b5f |
fix: sql query editor rapidly increases (#8435)
### **User description** This PR fixes the issue in #8433 ___ ### **PR Type** Bug fix ___ ### **Description** - Prevent SQL editor height growth - Set minimum height to 18rem - Compute height via inline style binding - Adjust for error message presence ___ ### Diagram Walkthrough ```mermaid flowchart LR UI["Alert Form UI"] -- contains --> Editor["SQL Query Editor"] ErrorState["SQL Error State"] -- toggles --> EditorHeight["Dynamic Height Style"] Editor -- renders with --> EditorHeight ``` <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>ScheduledAlert.vue</strong><dd><code>Stabilize SQL editor height with dynamic styles</code> </dd></summary> <hr> web/src/components/alerts/ScheduledAlert.vue <ul><li>Remove class-based height toggling.<br> <li> Add inline dynamic height style based on error state.<br> <li> Increase minimum editor height to 18rem.<br> <li> Use calc values: 100%-150px or 100%-80px.</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8435/files#diff-5e143a17ab0fa5d7817f6d9301667fb5597236f27184248c7a71728e85b8d999">+4/-2</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ |
||
|
|
6e75dc0e62 |
feat: add bulk enable/disable for alert and pipelines (#8438)
### **User description**
This adds two apis, one for bulk enable/disable of pipeline and one for
bulk enable/disable of alerts.
___
### **PR Type**
Enhancement
___
### **Description**
- Add bulk enable/disable for alerts
- Add bulk enable/disable for pipelines
- Introduce enterprise permission checks helper
- Update auth bypass for bulk endpoints
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["New models: Bulk request/response (alerts, pipelines)"]
B["Alerts: POST /v2/{org_id}/alerts/bulk/enable"]
C["Pipelines: POST /{org_id}/pipelines/bulk/enable"]
D["Enterprise permission check: check_resource_permissions"]
E["Router: register bulk endpoints"]
F["Auth: bypass for /bulk/enable paths"]
A -- "used by" --> B
A -- "used by" --> C
D -- "enforced in" --> B
D -- "enforced in" --> C
E -- "exposes" --> B
E -- "exposes" --> C
F -- "allows unauth extraction for" --> B
F -- "allows unauth extraction for" --> C
```
<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>6
files</summary><table>
<tr>
<td><strong>auth.rs</strong><dd><code>Allow auth extractor bypass for
bulk enable endpoints</code> </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8438/files#diff-9bc2b1841504a435f66ad094f72ddbe7b7fa75e5e1557b8adbfe36f7f0592e1b">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>responses.rs</strong><dd><code>Add alerts bulk enable
request/response models</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8438/files#diff-224027f90893122eea28e35778467acf1a4b5572ce612fc9bc9ec44ca8ebd9fb">+12/-0</a>
</td>
</tr>
<tr>
<td><strong>pipelines.rs</strong><dd><code>Add pipelines bulk enable
request/response models</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8438/files#diff-61bb28d7091130297c917a0530d96202fcb4b073b514410531f9fe71acfc814f">+12/-0</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Implement alerts bulk enable
endpoint with permissions</code> </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8438/files#diff-83431801d27626ef27482e67b62661f900043544a45ddf958bd027cf2fa3bd8d">+91/-2</a>
</td>
</tr>
<tr>
<td><strong>pipeline.rs</strong><dd><code>Implement pipelines bulk
enable endpoint with permissions</code></dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8438/files#diff-c69f4f94eee97ce226caddc497b2adf89e26869f2d72b0d0206dc31ab2714daf">+89/-1</a>
</td>
</tr>
<tr>
<td><strong>utils.rs</strong><dd><code>Add generic enterprise resource
permission checker</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8438/files#diff-96bb9f4a8f547c821f26c957e8505d0437095b08d2b36687531f71565d287bd6">+38/-0</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>Register bulk enable endpoints in
service routes</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8438/files#diff-02556e3f515441b5d2b6bbea7829df488beac03c4cc41309a6638ae3c0e0aec6">+2/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>openapi.rs</strong><dd><code>Expose bulk enable endpoints in
OpenAPI</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8438/files#diff-edb8ce232c0cd08366879f642788a75d99f6bab64b4c0e77391281fdb9241e90">+2/-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: sai nikhil kethe <nikhil@openobserve.ai>
|