mirror of
https://github.com/openobserve/openobserve.git
synced 2026-11-04 08:09:27 +00:00
bc38057bbd8af08060a67e8737667001792e8c19
4399
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
bc38057bbd |
fix: resolve unit test hanging issue and remove MySQL from CI
- Add --no-cfg-coverage flags to prevent test instrumentation conflicts - Remove MySQL service and test runs from CI workflow - Add concurrency controls to cancel redundant workflow runs - Consolidate cleanup commands for better readability |
||
|
|
40bbbe7f2e | fix: improve slow log detail (#8811) | ||
|
|
d9955aac86 |
test: enhanced unflattened test to not be flaky (#8808)
### **PR Type**
Tests
___
### **Description**
- Stabilize unflattened Playwright tests
- Add structured test logging throughout
- Increase waits for indexing and UI readiness
- Ensure query refresh and result validation
___
### Diagram Walkthrough
```mermaid
flowchart LR
Login["Login and setup"] -- "ingestion + waits" --> Streams["Open Streams"]
Streams -- "configure store original data" --> Schema["Update Schema"]
Schema -- "ingest + index wait" --> Explore["Explore Logs"]
Explore -- "set time range" --> Results["Load Results"]
Results -- "expand row" --> Details["_o2_id in details"]
Explore -- "SQL mode + SELECT * + refresh" --> Results
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>unflattened.spec.js</strong><dd><code>Stabilize
unflattened Playwright tests with logging</code>
</dd></summary>
<hr>
tests/ui-testing/playwright-tests/Logs/unflattened.spec.js
<ul><li>Add structured testLogger.info/error messages.<br> <li> Replace
flaky short waits; add longer indexing waits.<br> <li> Add query
refresh, SQL mode selection, and result assertions.<br> <li> Minor
formatting fixes and consistent waits in setup/teardown.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8808/files#diff-35703a04047bd3dc257e8e606360e196f9ead45fc44f3857a6e04023590f1a1e">+171/-137</a></td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
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> |
||
|
|
162dd34277 | fix: (openapi) deprecate duplicate operationId | ||
|
|
9329c12a0c |
test: updated merge logic for test dino upload (#8793)
### **PR Type**
Tests, Enhancement
___
### **Description**
- Use Playwright blob reporter on CI
- Merge shard reports via playwright merge-reports
- Streamline GitHub Actions artifacts and steps
- Update Node.js to 22 in merge job
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Playwright tests (CI shards)"] -- "reporter: blob" --> B["blob-report artifacts"]
B -- "download & merge" --> C["playwright merge-reports"]
C -- "outputs" --> D["playwright-results/report.json + html-report"]
D -- "tdpw upload" --> E["TestDino"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>playwright.config.js</strong><dd><code>Conditional blob
reporter for CI</code>
</dd></summary>
<hr>
tests/ui-testing/playwright.config.js
<ul><li>CI uses <code>['blob']</code> reporter<br> <li> Local keeps HTML
and JSON reporters<br> <li> Enables cross-shard report merging</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8793/files#diff-91cb9615068914b2e4f5d66fcbed50d3e9771ea2d882f8e8048bbe54eab3c414">+6/-4</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>playwright.yml</strong><dd><code>Artifact flow: blob
upload, merge, TestDino upload</code>
</dd></summary>
<hr>
.github/workflows/playwright.yml
<ul><li>Comment out many test matrices<br> <li> Remove per-matrix
JSON/HTML upload steps<br> <li> Upload blob reports; merge with
Playwright<br> <li> New job merges and uploads to TestDino; Node 22</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8793/files#diff-7afcd2d8f7b49bda74843f209eefb7b2da45f7e7803bf2e4bd636699b76aa2d3">+117/-236</a></td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
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> |
||
|
|
456f4286fa | perf: store enrichment table in disk as parquet format (#8686) | ||
|
|
bea05a68a6 |
chore: bump thiserror: 1.0->2.0.17, zip: 5.1.1->6.0.0
|
||
|
|
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>
___
|
||
|
|
163c06ae4c |
perf: do not use streaming aggs of total_secs is less than ZO_AGGS_MIN_NUM_PARTITIONS_SECS (#8787)
### **User description**
New Env
```sh
ZO_AGGS_MIN_NUM_PARTITIONS_SECS =3 secs // default
```
- If for an aggregate query the approx total_secs required to execute is
lesser than the new env ZO_AGGS_MIN_NUM_PARTITIONS_SECS (default 3 secs)
then, disable streaming aggs cache and run it as it is
___
### **PR Type**
Enhancement
___
### **Description**
- Add env `ZO_AGGS_MIN_NUM_PARTITIONS_SECS`
- Skip streaming aggs for fast queries
- Reorder streaming-aggs init after partition calc
- Update response flags for enterprise path
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Config: add aggs_min_num_partition_secs"] -- "used in" --> B["search_partition total_secs calc"]
B -- "<= threshold" --> C["Disable streaming aggs, single partition"]
B -- "> threshold" --> D["Init streaming-aggs cache (enterprise)"]
D -- "set" --> E["Response streaming_* 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>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>config.rs</strong><dd><code>Add config for min seconds
threshold</code>
</dd></summary>
<hr>
src/config/src/config.rs
<ul><li>Add env var <code>ZO_AGGS_MIN_NUM_PARTITIONS_SECS</code><br>
<li> Provide default 3 and help text<br> <li> Expose as
<code>aggs_min_num_partition_secs</code> in <code>Limit</code></ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8787/files#diff-9aeee4a74c0520daa40f9b81c7016f5b6b3254375b968dd7598e745630980d62">+6/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>mod.rs</strong><dd><code>Gate streaming aggs by
duration; reorder init</code>
</dd></summary>
<hr>
src/service/search/mod.rs
<ul><li>Early-exit: disable streaming aggs if total_secs <=
threshold<br> <li> Move streaming-aggs cache init after step/partition
decisions<br> <li> Correctly set <code>streaming_output</code>,
<code>streaming_aggs</code>, <code>streaming_id</code><br> <li> Avoid
forced skip_get_file_list on cache miss</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8787/files#diff-c3b85ea662a885fbd39797968928b291cb59a58f53a03f7b7dfd7ba8b6a7985a">+100/-78</a></td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
---------
Signed-off-by: loaki07 <rustyloaki@gmail.com>
Co-authored-by: Ashish Kolhe <35160958+oasisk@users.noreply.github.com>
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
|
||
|
|
e985244b61 |
test: e2e test dino poc (#8771)
### **PR Type**
Enhancement, Tests, Documentation
___
### **Description**
- Add Playwright JSON reporter for TestDino.
- Upload Alerts results to TestDino in CI.
- Limit matrix to Alerts specs for POC.
- Create result folders in workflow.
___
### Diagram Walkthrough
```mermaid
flowchart LR
PWCFG["Playwright config: JSON + HTML reporters"] -- "emit report.json, html-report" --> RESULTS["playwright-results/"]
GHA["GitHub Actions workflow"] -- "create results dirs" --> RESULTS
GHA -- "run Alerts specs only" --> TESTS["Alerts test run"]
TESTS -- "produce reports" --> RESULTS
GHA -- "tdpw upload" --> TESTDINO["TestDino platform"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Formatting</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>alerts-e2e-flow.spec.js</strong><dd><code>Minor comment
tweak in Alerts E2E spec</code>
</dd></summary>
<hr>
tests/ui-testing/playwright-tests/Alerts/alerts-e2e-flow.spec.js
- Minor comment formatting change.
- No functional impact.
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8771/files#diff-32972e38c1fe0e8bb887f9f254b3130916a36f96ea924f9987493d44efefeab9">+1/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>playwright.config.js</strong><dd><code>Add JSON
reporter and configure HTML output</code>
</dd></summary>
<hr>
tests/ui-testing/playwright.config.js
<ul><li>Replace single HTML reporter with array.<br> <li> Configure HTML
output folder path.<br> <li> Add JSON reporter writing to
<code>playwright-results/report.json</code>.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8771/files#diff-91cb9615068914b2e4f5d66fcbed50d3e9771ea2d882f8e8048bbe54eab3c414">+4/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>playwright.yml</strong><dd><code>CI: Upload Playwright
results to TestDino, scope to Alerts</code></dd></summary>
<hr>
.github/workflows/playwright.yml
<ul><li>Temporarily narrow matrix to <code>Alerts</code> tests.<br> <li>
Create <code>tests/ui-testing/playwright-results</code> directory.<br>
<li> Add TestDino upload step with token auth.<br> <li> Comment out
other suites and some Alert specs.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8771/files#diff-7afcd2d8f7b49bda74843f209eefb7b2da45f7e7803bf2e4bd636699b76aa2d3">+101/-92</a></td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: Claude <noreply@anthropic.com>
|
||
|
|
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> ___ |
||
|
|
abc11250fd |
refactor: replace manual JSON deser with web::Json extractors in handlers
|
||
|
|
c868605736 | chore: add tests, fmt, clippy | ||
|
|
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>
___
|
||
|
|
0ee605280e |
fix: set download mmdb to disable as default (#8768)
### **User description**
- [x] Disable mmdb download as default
- [x] Upgrade to datafusion v50.1.0
___
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Default enable MMDB downloads
- Bump DataFusion to 50.1.0
- Project version to 0.16.0
___
### Diagram Walkthrough
```mermaid
flowchart LR
cfg["Config: mmdb_disable_download default"] -- set to false --> behavior["MMDB downloads enabled by default"]
deps["Cargo: DataFusion 50.1.0"] -- upgrade --> engine["Query engine components"]
ver["Cargo: version 0.16.0"] -- release bump --> pkg["Crate metadata"]
```
<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>config.rs</strong><dd><code>Enable MMDB downloads by
default</code>
</dd></summary>
<hr>
src/config/src/config.rs
<ul><li>Flip <code>mmdb_disable_download</code> default to false<br>
<li> Keeps env var name <code>ZO_MMDB_DISABLE_DOWNLOAD</code></ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8768/files#diff-9aeee4a74c0520daa40f9b81c7016f5b6b3254375b968dd7598e745630980d62">+1/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>Cargo.toml</strong><dd><code>Version and DataFusion
dependency upgrades</code>
</dd></summary>
<hr>
Cargo.toml
<ul><li>Bump crate version to 0.16.0<br> <li> Upgrade
<code>datafusion</code> to 50.1.0<br> <li> Upgrade
<code>datafusion-proto</code> and aggregate-common to 50.1.0</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8768/files#diff-2e9d962a08321605940b5a657135052fbcef87b5e360662bb527c96d9a615542">+4/-4</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>
___
|
||
|
|
383fd49f3c |
fix: when local mode is true ignore role group (#8764)
### **User description**
When local_mode is true for a search request, we can ignore role_group
and use the local querier node irrespective of role group of the local
node.
___
### **PR Type**
Bug fix
___
### **Description**
- Ignore role group in local mode
- Derive role group only when not local
- Preserve default Interactive role otherwise
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Request received"] --> B{"local_mode?"}
B -- "true" --> C["role_group = None"]
B -- "false" --> D["Derive role_group from search_event_type or Interactive"]
C --> E["get_online_querier_nodes(trace_id, None)"]
D --> E["get_online_querier_nodes(trace_id, role_group)"]
```
<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>flight.rs</strong><dd><code>Bypass role_group selection
in local mode</code>
</dd></summary>
<hr>
src/service/search/cluster/flight.rs
<ul><li>Add <code>is_local_mode</code> flag extraction.<br> <li> Set
<code>role_group = None</code> when local mode.<br> <li> Keep existing
role_group derivation otherwise.<br> <li> Use computed role_group for
node selection.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8764/files#diff-dbffb1a03b65f6a9163b18c5bb1241ba2966735657be39bbe9f4d0e3260d8c1d">+13/-9</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
8ed584521f | chore: increase minimum coverage threshold for API | ||
|
|
0cf0923a59 | fix: flaky integration test | ||
|
|
c7a064d947 | chore: check if code changes before running UT | ||
|
|
da96d301ab |
refactor: extract reusable Headers extractor for actix-web handlers
This commit: - Creates a new extractors.rs module with a generic Headers<T> extractor - Implements FromRequest trait for type-safe header deserialization - Centralizes header parsing logic to reduce code duplication across HTTP handlers |
||
|
|
fd17f6fff5 | fix: timed_annotations.end_time column update type | ||
|
|
c0e8efe084 |
fix: node health api (#8744)
### **PR Type**
Bug fix
___
### **Description**
- Initialize health map on node add
- Remove from health map on node delete
- Fail when online node missing health entry
- Fix heartbeat comment typo
___
### Diagram Walkthrough
```mermaid
flowchart LR
add["Node added (watch_node_list)"] -- "insert" --> healthMap["NODES_HEALTH_CHECK[uuid]=0"]
del["Node deleted (watch_node_list)"] -- "remove" --> healthMap
check["check_nodes_status"] -- "missing entry" --> err["Return error + warn log"]
check -- "present entry" --> incr["Increment failure counter"]
note["Comment fix"] -- "typo" --> hb["heartbeat"]
```
<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>mod.rs</strong><dd><code>Health check map lifecycle and
validation fixes</code>
</dd></summary>
<hr>
src/common/infra/cluster/mod.rs
<ul><li>Initialize <code>NODES_HEALTH_CHECK</code> on node add.<br> <li>
Remove <code>NODES_HEALTH_CHECK</code> entry on node delete.<br> <li>
Validate presence in health map; error if missing.<br> <li> Fix comment
typo: heartbeat.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8744/files#diff-d15434a27e2b8406811f5a707b605203b603dad4a262c0642326be860bd2b568">+16/-4</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>
___
|
||
|
|
3e9c6203c5 |
test: updated page manager and logs page files (#8730)
### **PR Type**
Tests, Enhancement
___
### **Description**
- Replace console logs with testLogger
- Improve logs page navigation robustness
- Add streaming response verification logging
- Comment out SDR page objects
___
### Diagram Walkthrough
```mermaid
flowchart LR
LogsPage["LogsPage"] -- "console.* -> testLogger.*" --> Logging["Centralized test logging"]
LogsPage -- "navigation retries, params" --> Navigation["More robust navigation"]
LogsPage -- "response checks" --> Streaming["Streaming/JSON response verification"]
PageManager["PageManager"] -- "comment out" --> SDR["SDR page objects"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>logsPage.js</strong><dd><code>Centralize logging and
harden LogsPage behavior</code>
</dd></summary>
<hr>
tests/ui-testing/pages/logsPages/logsPage.js
<ul><li>Swap console.log/error to testLogger.debug/error<br> <li>
Enhance VRL editor detection and fallback reload<br> <li> Add detailed
network response checks for search/streaming<br> <li> Adjust messages
around errors and no data cases</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8730/files#diff-8045b343491d8943869c1af74cdafab204dc49c02a70294417e73f47d35e0b59">+75/-75</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>page-manager.js</strong><dd><code>Temporarily disable
SDR page objects</code>
</dd></summary>
<hr>
tests/ui-testing/pages/page-manager.js
<ul><li>Comment out SDR-related imports<br> <li> Comment out SDR page
object initializations</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8730/files#diff-565eab8b3c767ae50c9d05e591621d14f66b81af84d6b5ea6efe136c1c3933df">+8/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
89e6a180b6 |
fix: dashboard filter flaky testcases (#8732)
### **PR Type**
Tests, Enhancement
___
### **Description**
- Add robust nested group filter helpers
- Introduce E2E test for nested groups
- Stabilize selectors and waits in filters
- Limit CI to dashboard filter suite
___
### Diagram Walkthrough
```mermaid
flowchart LR
helper["DashboardFilter helper"] -- "add stability + nested group API" --> spec["dashboard-filter.spec.js"]
spec -- "adds nested group test" --> ci["playwright.yml matrix"]
ci -- "run only dashboard-filter suite" --> pipeline["CI run scope"]
```
<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>dashboard-filter.js</strong><dd><code>Stabilize filter
interactions and add nested group helper</code></dd></summary>
<hr>
tests/ui-testing/pages/dashboardPages/dashboard-filter.js
<ul><li>Add stable operator/value selection with waits<br> <li> Use
last() portal-aware locators<br> <li> Add addNestedGroupFilterCondition
helper<br> <li> Improve column selection via ArrowDown/Enter</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8732/files#diff-cc4b5c84fa9084ee18943e000284fe9fbdaed9605503109d90a00a95871940a2">+123/-49</a></td>
</tr>
</table></td></tr><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>dashboard-filter.spec.js</strong><dd><code>New E2E test
for nested filter groups</code>
</dd></summary>
<hr>
tests/ui-testing/playwright-tests/dashboards/dashboard-filter.spec.js
<ul><li>Add E2E test for group inside group<br> <li> Validate variable
rendering and SQL query<br> <li> Create dashboard, apply filters,
cleanup</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8732/files#diff-c48a796836a25b90a9f94af58273ea9fd1b36248ca8689075c3d48be77de1468">+120/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>playwright.yml</strong><dd><code>Narrow CI matrix to
dashboard filter suite</code>
</dd></summary>
<hr>
.github/workflows/playwright.yml
<ul><li>Limit matrix to Dashboards-Settings<br> <li> Run only
dashboard-filter.spec.js<br> <li> Comment out other test groups</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8732/files#diff-7afcd2d8f7b49bda74843f209eefb7b2da45f7e7803bf2e4bd636699b76aa2d3">+92/-92</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> |
||
|
|
d85e5e62fc |
fix: add retry for enrichment table failure (#8716) (#8720)
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Add retry on enrichment table fetch failure
- Propagate errors instead of swallowing them
- Improve logging for fetch outcomes
- Adjust log levels to info for visibility
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["watch() listener"] -- "fetch table" --> B["get_enrichment_table()"]
B -- "calls" --> C["get_enrichment_table_data()"]
C -- "success with hits" --> D["return hits"]
C -- "success no hits" --> E["return empty vec"]
C -- "error" --> F["return Err (no swallow)"]
F -- "watch retries once" --> B
G["get_enrichment_table_json()"] -- "decide source" --> H["remote via get_enrichment_table_data()"]
G -- "or" --> I["local cache retrieve()"]
```
<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>enrichment_table.rs</strong><dd><code>Error propagation
and retry in enrichment table DB layer</code> </dd></summary>
<hr>
src/service/db/enrichment_table.rs
<ul><li>Add detailed success/no-hit logs.<br> <li> Change error handling
to return Err instead of empty vec.<br> <li> Improve error log message
formatting.<br> <li> Implement single retry in watch() before giving
up.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8720/files#diff-6ce27ddf8a0d8b4e790bda90d088ff692a5da31a8d330beea8a9dd843294572b">+23/-4</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>mod.rs</strong><dd><code>Increase logging level for
enrichment table source</code>
</dd></summary>
<hr>
src/service/enrichment/mod.rs
<ul><li>Elevate debug logs to info for fetch source.<br> <li> Clarify
remote vs local fetch logging.<br> <li> No functional logic changes
beyond logging.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8720/files#diff-0ea1823eb8a3a9845cde8bb2264ccdb749fad5be6d9acda8b17d76b2dbfdcc9f">+2/-2</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
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>
___
|
||
|
|
934aaadbfc | fix: flaky integration tests | ||
|
|
a288a0604a |
chore: update default dashboard version from 1 to 5
In `CreateDashboard` API, the default dashboard version when `version` key was absent in the payload used to be 1, which was wrong. It is now 5 (for v5). Going forward, this value should default to the latest version supported by OpenObserve. This is tracked by `const LATEST_DASHBOARD_VERSION`, which is automatically populated at compile time by counting the number of variants of `enum DashboardRequestBody`, requiring no human intervention beyond adding the new variant itself to the enum. |
||
|
|
41dc18866a |
feat: use cache for scheduled pipeline (#8707)
### **User description**
Currently we call the db when we process a scheduled pipeline and hence
increases db calls from the alert manager. This pr maintains a cache for
scheduled pipeline, so that alert manager does not make unnecessary db
calls.
___
### **PR Type**
Enhancement, Tests
___
### **Description**
- Add cache for scheduled pipelines
- Use cache in scheduler handler
- Extend pipeline cache/watch logic
- Add tests for cache behavior
___
### Diagram Walkthrough
```mermaid
flowchart LR
Scheduler["Scheduler handler"] -- "get/cache pipeline" --> PipelineDB["DB pipeline module"]
PipelineDB -- "reads/writes" --> ScheduledCache["Scheduled pipelines cache"]
RealtimeCache["Realtime exec cache"] -- "unchanged usage" --> Scheduler
Watcher["Pipelines watcher"] -- "update caches" --> ScheduledCache
Watcher -- "update caches" --> RealtimeCache
```
<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>config.rs</strong><dd><code>Introduce global scheduled
pipelines cache</code>
</dd></summary>
<hr>
src/common/infra/config.rs
- Import `Pipeline` type.
- Add `SCHEDULED_PIPELINES` global cache.
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8707/files#diff-cda0d9179ed982fa5f0989c9b26f21cfa49dd1de28195a98135650ffcc7c602a">+3/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>handlers.rs</strong><dd><code>Scheduler uses cache for
pipeline lookups</code>
</dd></summary>
<hr>
src/service/alerts/scheduler/handlers.rs
<ul><li>Use scheduled pipeline cache before DB.<br> <li> Cache
DB-fetched pipelines on miss.<br> <li> Preserve existing error handling
path.<br> <li> Add debug logs for cache hits/misses.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8707/files#diff-5eca8995a88fcecb6d6b8efd3c7c4496f4a96a4b060fb4ed85593574f7cf49eb">+64/-40</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>pipeline.rs</strong><dd><code>Implement scheduled
pipelines cache and watcher integration</code></dd></summary>
<hr>
src/service/db/pipeline.rs
<ul><li>Add cache APIs: get/cache/remove/size/clear/stats.<br> <li>
Populate scheduled cache during full cache load.<br> <li> Extend watcher
to maintain scheduled cache.<br> <li> Improve logging and delete
handling for both caches.<br> <li> Add unit tests for scheduled cache
behavior.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8707/files#diff-0856951eadc646b4d4d3f0417317150cdbdc37b46c2f2a25a3c2bae15601dc50">+229/-57</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> ___ |
||
|
|
d706adc0ee |
fix: new import path (#8667)
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Update enterprise import path for TopK exec
- Align codec imports with module rename
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["enterprise module path"] -- "rename aggregate_topk_exec → agg_topk_exec" --> B["codec imports updated"]
B -- "used by" --> C["aggregate_topk_exec.rs"]
B -- "used by" --> D["physical_plan_node.rs"]
```
<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>aggregate_topk_exec.rs</strong><dd><code>Fix
AggregateTopkExec import path</code>
</dd></summary>
<hr>
src/service/search/datafusion/distributed_plan/codec/aggregate_topk_exec.rs
<ul><li>Change import to
<code>agg_topk_exec::AggregateTopkExec</code><br> <li> Keep
feature-gated enterprise path intact</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8667/files#diff-c240541c2c8c20e71b8ab501e3b3323aca5b0db16a102d61349c4f6421875a52">+1/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>physical_plan_node.rs</strong><dd><code>Update codec
imports to new module path</code>
</dd></summary>
<hr>
src/service/search/datafusion/distributed_plan/codec/physical_plan_node.rs
<ul><li>Update import to
<code>agg_topk_exec::AggregateTopkExec</code><br> <li> Consolidate
multi-line import formatting</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8667/files#diff-9aaebcade0579a0b1ab769f2fa0df071de0516d2c750fa0e04a32aadf383d938">+1/-2</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|