mirror of
https://github.com/openobserve/openobserve.git
synced 2026-11-04 08:09:27 +00:00
ce09cd0a4dada4e4d45677f0b68c5ecfdb753aaf
4970
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
ce09cd0a4d |
feat: add js for claim parser (#9873)
### **User description** Design at : security/sso-claim-parser/configuration.md ___ ### **PR Type** Enhancement, Tests ___ ### **Description** - Introduce rquickjs-based JS runtime for functions - Add compile_js_function and apply_js_fn utilities - Extend pipeline to support JS via CompiledFunctionRuntime - Update web UI: select JS/VRL transforms, show JS errors ___ ### Diagram Walkthrough ```mermaid flowchart LR A["FunctionNode"] -->|JS| B["compile_js_function"] A -->|VRL| C["compile_vrl_function"] B --> D["apply_js_fn"] C --> E["apply_vrl_fn"] D --> F["send to children"] E --> F ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>13 files</summary><table> <tr> <td><strong>function.ts</strong><dd><code>Add optional `trans_type` to TestFunctionPayload</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-c6766f6c671adce05f9eef5d4a57a32371fa7da35628ef5c142fa503d191cb16">+16/-0</a> </td> </tr> <tr> <td><strong>js.rs</strong><dd><code>Introduce JS runtime, compile and apply functions</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-88e490bed5fa6c9c8e0aa2738b95c5284bb97899298f54b9cd587713e3ef0109">+756/-0</a> </td> </tr> <tr> <td><strong>batch_execution.rs</strong><dd><code>Extend pipeline execution to handle JS functions</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-3f6824a6eddaf1603e5cb0f1a4311ac6a45e1ffb967266ccc1f0bba944625e69">+465/-96</a></td> </tr> <tr> <td><strong>functions.rs</strong><dd><code>Validate and test-run JS transforms, restrict to _meta</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-ed5611a9aa6b5c033e70d7631ba72fafad3cc842672077a7fcf965d11a4fef23">+319/-35</a></td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Forbid JavaScript functions in pipelines globally</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-c186c796a7bdfd9d1301b1429df11456430f1d0d4758783810b9e2e44384e3b2">+39/-1</a> </td> </tr> <tr> <td><strong>jwt.rs</strong><dd><code>Add JS claim parser execution function</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-232cab74f4cbf135af424744272e17732fbda8ac005d33c0acb4597e65479d02">+25/-2</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Wrap JS compile/apply in ingestion API</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-7c7b5bca85f0ced652965cae66540c96f56dfcca4f4c16b77bf7b45aac203d1b">+24/-1</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Include `trans_type` in test_function API payload</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-a5e1b3644cef9feb689dfe66382e44e5434ecadbff3469127346a333d4733102">+8/-3</a> </td> </tr> <tr> <td><strong>AddFunction.vue</strong><dd><code>UI: add JS/VRL transform type selector</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-ebfd6c538f3cd3ecb9ab17550fd76e2e89e7a1abccc83a7505077e4af3eee110">+42/-25</a> </td> </tr> <tr> <td><strong>FunctionsToolbar.vue</strong><dd><code>Toolbar: transform type radio buttons</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-8283d2ff9c4a66b4b59eac306672aca2d54655a462e2ddb88e14e039d79dcdaf">+51/-3</a> </td> </tr> <tr> <td><strong>DomainManagement.vue</strong><dd><code>Track claim-parser function changes for save button</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-5e47cd01fcb63f7ef27dc64d2ecf66c39e17097e29944951c3ae1bfe715bb97c">+17/-9</a> </td> </tr> <tr> <td><strong>TestFunction.vue</strong><dd><code>Support JS error messaging in test UI</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-b9af9a2d1bf04d23422c26a13e6a763c6953c8713357a2f64ed8073ce6c926a3">+15/-5</a> </td> </tr> <tr> <td><strong>PipelineEditor.vue</strong><dd><code>Filter out JS functions in pipeline editor UI</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-68c21f647336067eb79737ce9aca2d49632f2fa1c0878bcfdae55607e3473a15">+12/-4</a> </td> </tr> </table></details></td></tr><tr><td><strong>Configuration changes</strong></td><td><details><summary>2 files</summary><table> <tr> <td><strong>function.rs</strong><dd><code>Extend `Transform` model for JS support</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-27c9f3d93723397a0e234bc45c9f543b43eff5fd518d76e735f78d95a58f3f1c">+16/-6</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Register new `js` utils module</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-2aa59ce4464e7dbabdb9367fc8bb8c1b489c914b8690577d4916870463ab12db">+1/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Bug fix</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>errors.rs</strong><dd><code>Rename `MemoryTableOverflowError` display message</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-bf45932466265b732f13d0cd9b9cffbaefbe37c5861ace9315449eeca9250713">+1/-1</a> </td> </tr> </table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>3 files</summary><table> <tr> <td><strong>result-array-functions.spec.js</strong><dd><code>Add E2E tests for `#ResultArray#` functions in UI</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-e9911625ad2bab76f2b760f0ad254791331993a6a874b96f6a11fc6d88038b10">+470/-0</a> </td> </tr> <tr> <td><strong>cleanup.spec.js</strong><dd><code>Clean up JS function test data in UI tests</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-c214275a512fa285a7e4f2ab61dfcb42d71a0436b0e4241f94d7b45693587983">+31/-0</a> </td> </tr> <tr> <td><strong>page-manager.js</strong><dd><code>Register `FunctionsPage` in `PageManager`</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-565eab8b3c767ae50c9d05e591621d14f66b81af84d6b5ea6efe136c1c3933df">+6/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Dependencies</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>Cargo.toml</strong><dd><code>Add `rquickjs` dependency for JS runtime</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-2e9d962a08321605940b5a657135052fbcef87b5e360662bb527c96d9a615542">+2/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Additional files</strong></td><td><details><summary>18 files</summary><table> <tr> <td><strong>test_functions_meta_org_restriction.py</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-99ef1207d6ae6d7eeaed37d70c8cf0c4770ba78f6f51fbdc067d35492d2fe9ea">+401/-0</a> </td> </tr> <tr> <td><strong>test_js_enrichment.py</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-c5547d46bec60b888d947d1e9b7c5445aee72cf8e837182f7138e0fc903eedbb">+356/-0</a> </td> </tr> <tr> <td><strong>test_js_result_array.py</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-9ed1363a1f58c94e018bb2b0aaa9d08fa71f89e7e55a6ff6be4a82bbeed8985c">+390/-0</a> </td> </tr> <tr> <td><strong>functionsPage.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-7bab9cc2eb8f36d3ee5d0aab453c353ec6d6dfecbc401cf401322ff57faa8440">+326/-0</a> </td> </tr> <tr> <td><strong>javascript-functions.spec.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-bdae6529346a7222bdec19f75f490cb9d0f3578a260ba835225efcd27db3f64e">+314/-0</a> </td> </tr> <tr> <td><strong>meta-org-js-restriction.spec.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-16cc2373f6f1955f8344a59d5f2edcd6ce121c4fdee1d432b1f0ec8e27f25881">+483/-0</a> </td> </tr> <tr> <td><strong>FunctionList.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-6ff9af50a1597504b7f0dca91e61cf30c800b4a17b4be2ed2c3a4f7a7b2d7068">+1/-0</a> </td> </tr> <tr> <td><strong>de.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-78f24ecb2dbcfc38fdf3ec22b2559a5b40d236ea689d1c55f5d3e87168310264">+30/-18</a> </td> </tr> <tr> <td><strong>en.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+15/-7</a> </td> </tr> <tr> <td><strong>es.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-ac2a2167b8b973e3f776f9fe3b43bef4576470d8ad33f3d7cfaff6edff0e5778">+30/-18</a> </td> </tr> <tr> <td><strong>fr.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-db80e762b88ddf183820c050cdc6b215e6b02b365b5e73f5152af46b0d26f1a2">+30/-18</a> </td> </tr> <tr> <td><strong>it.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-2de78074a5f887afddce60d694ead9322e6ab223eb70251c13819f3028bdc70d">+30/-18</a> </td> </tr> <tr> <td><strong>ja.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-092e49c5f9fbc1b539ab9c2866d108d0ce1d314022b4c294eb4611b285e7bbd3">+30/-18</a> </td> </tr> <tr> <td><strong>ko.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-50e27ca1b4825a5026f3a251bfcf79c97cab07cfade2ebd512d332453d707c48">+30/-18</a> </td> </tr> <tr> <td><strong>nl.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-a1706021687ae5d8a1c006c49eab3946174fecd895f9b70a89c2e76d97250906">+30/-18</a> </td> </tr> <tr> <td><strong>pt.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-38e804f64cb5e0e451849fc84e9b46e53c954a4a4263d51c18665ad45f4b4815">+30/-18</a> </td> </tr> <tr> <td><strong>tr.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-6f0f131e9e2591480c4c5d1eaffc72d02dc31cbd8d3f90d8f012f08cabac8818">+30/-18</a> </td> </tr> <tr> <td><strong>zh.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9873/files#diff-8818055db58f83230aeea4ebfd4cec31d924e8c47b6f91298e356959ab25339e">+254/-242</a></td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> |
||
|
|
0f4dcbe971 | fix: 9882 add option to limit max series return for promql (#9896) | ||
|
|
d8c08e7b68 |
test(e2e): add automation for bugs #9217, #9724, #9901 and Feature #9484 (#9883)
## Summary E2E test automation for multiple bug fixes and features: - Bug #9217 (Favicon missing) - Bug #9724 (Log detail sidebar default tab) - Bug #9901 (Scheduled pipeline validation) - includes cherry-picked fixes - Feature #9484 (Manual Alert Trigger via UI) --- ## Bug Fixes Automated ### Bug #9217 - Favicon icon missing on main branch - **Issue:** https://github.com/openobserve/openobserve/issues/9217 - **Fix PR:** https://github.com/openobserve/openobserve/pull/9189 - **Test:** Verifies favicon is present in DOM and loads via HTTP 200 - **Location:** `tests/ui-testing/playwright-tests/RegressionSet/ui-regression.spec.js` ### Bug #9724 - Log detail sidebar opens with JSON tab by default - **Issue:** https://github.com/openobserve/openobserve/issues/9724 - **Fix PR:** https://github.com/openobserve/openobserve/pull/9703 - **Test:** Verifies JSON tab is selected by default when opening log detail sidebar - **Location:** `tests/ui-testing/playwright-tests/RegressionSet/logs-regression.spec.js` ### Bug #9901 - Scheduled pipeline not validating on selected stream type - **Issue:** https://github.com/openobserve/openobserve/issues/9901 - **Fix PR:** https://github.com/openobserve/openobserve/pull/9897 (cherry-picked) - **Tests:** 4 regression tests covering: 1. Metrics stream type validation (not hardcoded "logs") 2. Traces stream type validation (not hardcoded "logs") 3. Quick click on "Validate and Close" without blur interference 4. Quick click on "Cancel" without blur interference - **Location:** `tests/ui-testing/playwright-tests/RegressionSet/pipeline-regression.spec.js` **Cherry-picked fixes from PR #9897:** - `f2a211cf2`: Use selected stream type for validating SQL query - `b1bf7e658`: Add @mousedown.prevent to prevent blur/click race condition ### Feature #9484 - Manual Alert Trigger via UI - **Issue:** https://github.com/openobserve/openobserve/issues/9484 - **Test:** Verifies manual alert trigger button works via kebab menu - **Location:** `tests/ui-testing/playwright-tests/Alerts/alerts-ui-operations.spec.js` --- ## New Page Object Methods Added ### pipelinesPage.js - `ingestMetricsData(streamName, recordCount)` - Ingest metrics via `/api/{org}/ingest/metrics/_json` - `ingestTracesData(serviceName, spanCount, streamName)` - Ingest traces via OTLP `/api/{org}/v1/traces` - Supports custom stream name via `stream-name` header (configurable via `ZO_GRPC_STREAM_HEADER_KEY`) - Proper nested parent-child span timing for waterfall visualization - `clickValidateAndClose()`, `focusSqlEditor()`, `isDiscardChangesDialogVisible()` - `expectDiscardDialogNotVisible()`, `cleanupPipelineCreation()` ### logsPage.js - Log detail sidebar selectors and verification methods - Replaced `waitForTimeout(500)` with element waits (3 places) - Replaced `throw new Error()` with `expect()` assertions (3 places) ### homePage.js - `verifyFavicon()` - Verify favicon presence and HTTP load - Fixed `domValid` boolean cast with `includes()` ### alertManagement.js - Manual alert trigger method via kebab menu --- ## Files Changed | File | Changes | |------|---------| | `tests/ui-testing/pages/pipelinesPages/pipelinesPage.js` | Metrics/traces ingestion, scheduled pipeline validation methods | | `tests/ui-testing/pages/logsPages/logsPage.js` | Log detail sidebar + PR review fixes | | `tests/ui-testing/pages/generalPages/homePage.js` | Favicon verification + review fix | | `tests/ui-testing/pages/alertsPages/alertManagement.js` | Manual alert trigger method | | `tests/ui-testing/playwright-tests/RegressionSet/pipeline-regression.spec.js` | **NEW** - 4 tests for #9901 | | `tests/ui-testing/playwright-tests/RegressionSet/ui-regression.spec.js` | Favicon test | | `tests/ui-testing/playwright-tests/RegressionSet/logs-regression.spec.js` | Log detail sidebar test | | `tests/ui-testing/playwright-tests/Alerts/alerts-ui-operations.spec.js` | Manual alert trigger test | | `tests/ui-testing/playwright-tests/cleanup.spec.js` | Cleanup patterns for test streams | | `.github/workflows/playwright.yml` | Added pipeline-regression.spec.js to CI | | `web/src/components/pipeline/...` | Cherry-picked validation fixes | --- ## Test Plan - [x] Bug #9217 test passes locally - [x] Bug #9724 test passes locally - [x] Bug #9901 tests pass locally (4 tests, ~3.9 min) - [x] Feature #9484 test passes locally - [x] Cleanup patterns added for test streams --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> |
||
|
|
f23e477b1e |
fix: use selected stream type for validating query (#9897)
### **User description**
1. This PR fixes below issue
use selected stream type for validating query previously we were using
default logs
___
### **PR Type**
Bug fix, Tests, Enhancement
___
### **Description**
- Query component: use selected stream_type for validation
- Query.vue: replace hardcoded "logs" with dynamic stream_type
- ScheduledPipeline.vue: improve PromQL support and conditional spinner
- Added tests for SQL/PromQL workflows and bug fixes
___
<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>Query.spec.ts</strong><dd><code>Add dynamic streamType
validation tests</code>
</dd></summary>
<hr>
web/src/components/pipeline/NodeForm/Query.spec.ts
<ul><li>Added tests for <code>validateSqlQuery</code> using dynamic
stream_type<br> <li> Verified <code>searchService.search</code> called
with logs, metrics, traces<br> <li> Ensured no hardcoded "logs"
page_type in validation</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9897/files#diff-28606cc9e509c3f1c132551ed29c46ef168444b4425cf5e81e0eff65302a9d16">+75/-9</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>ScheduledPipeline.spec.js</strong><dd><code>Expand
tests for PromQL and SQL workflows</code>
</dd></summary>
<hr>
web/src/components/pipeline/NodeForm/ScheduledPipeline.spec.js
<ul><li>Added tests for PromQL tab behaviors and loader logic<br> <li>
Verified query initialization from props and stream extraction<br> <li>
Integration tests covering combined SQL/PromQL fixes</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9897/files#diff-4961fda8934ec900d20729ed7835abb5063179a09a64fbf5337ff704357e285c">+325/-4</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Bug fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>Query.vue</strong><dd><code>Use dynamic stream_type in
validateSqlQuery</code>
</dd></summary>
<hr>
web/src/components/pipeline/NodeForm/Query.vue
<ul><li>Replaced hardcoded <code>page_type: "logs"</code> with
<br><code>streamRoute.value.stream_type</code><br> <li> Search
invocation now uses selected stream type for SQL validation</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9897/files#diff-6247cbd506bcf963372f2e429507fc579af95f003df246889b478da11326a657">+1/-1</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>ScheduledPipeline.vue</strong><dd><code>Enhance
ScheduledPipeline UI and PromQL support</code>
</dd></summary>
<hr>
web/src/components/pipeline/NodeForm/ScheduledPipeline.vue
<ul><li>Show loader only when output expanded and tab == 'sql'<br> <li>
Move spinner above table, wrap in v-if loading & expanded<br> <li> Only
render PromQL preview when output expanded<br> <li> Initialize
<code>tab</code>, <code>query</code>, <code>stream_type</code> props
correctly<br> <li> Extract PromQL stream name on mount and fetch
fields<br> <li> Use <code>nextTick</code> before refreshing
PreviewPromqlQuery</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9897/files#diff-63d8f838bb880356e7804b4a57fd9223d4f2c189de7aadc7cf33cba723b29aaf">+28/-15</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
cda5d6a2a1 |
test: dry run Claude PR review with single rolling comment (#9909)
### **User description**
## Test PR for Claude Review Workflow
This PR tests the updated Claude PR review workflow that:
1. Maintains a **single rolling comment** instead of creating new ones
on each push
2. Tracks resolved issues in a strikethrough section
3. Uses concise format (1-2 sentences per issue)
### Test Plan
1. First push - Claude should create initial review comment
2. Make a fix commit - Claude should update same comment, move fixed
issues to "Resolved"
3. Another commit - Should continue updating same comment
---
**Note:** This is a test PR. Will be closed after verifying the workflow
behavior.
___
### **PR Type**
Enhancement
___
### **Description**
- Added `REVIEW_MARKER` env var for comment detection
- Switched checkout fetch-depth to full history
- Extended review prompt with update instructions
- Updated allowed tools in `claude_args`
___
### Diagram Walkthrough
```mermaid
flowchart LR
PR_Event["Pull request opened or updated"]
Checkout["Checkout repository (fetch-depth: 0)"]
Review_Action["Run Claude PR review action"]
Comment_Update["Update or create review comment"]
PR_Event --> Checkout
Checkout --> Review_Action
Review_Action --> Comment_Update
```
<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>claude-pr-review.yml</strong><dd><code>Configure
incremental review comment workflow</code>
</dd></summary>
<hr>
.github/workflows/claude-pr-review.yml
<ul><li>Defined <code>REVIEW_MARKER</code> environment variable<br> <li>
Changed <code>fetch-depth</code> from 1 to 0 for full history<br> <li>
Expanded <code>prompt</code> with step-by-step update guidelines<br>
<li> Refined <code>claude_args</code> tool permissions list</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9909/files#diff-53574b0b215fe49655d9af9b48ce745fe1b45cd4eb810c0df555b9a659caeed7">+65/-36</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
|
||
|
|
fc4ad41ef6 |
fix: ui fixes for enrichment table url errors (#9853)
### **User description** - [x] In the enrichment table url failed error message popup, the url makes the popup scrollable. This pr fixes that. - [x] The enrichment tables are not sortable by the "type" ref - https://github.com/openobserve/openobserve/issues/9832 ___ ### **PR Type** Bug fix, Enhancement ___ ### **Description** - Improved "Type" column sorting logic - Added custom sort comparator for type values - Wrapped error dialog content in max-width container - Enabled word-break and margin styling for URLs ___ ### Diagram Walkthrough ```mermaid flowchart LR A["EnrichmentTableList.vue"] --> B["Type column: dynamic field & custom sort"] A --> C["Error dialog: container & text wrapping"] ``` <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>EnrichmentTableList.vue</strong><dd><code>Update type column sorting and popup styling</code> </dd></summary> <hr> web/src/components/functions/EnrichmentTableList.vue <ul><li>Changed <code>field</code> of "type" column to dynamic function returning "Url" or <br>"File"<br> <li> Added <code>sort</code> comparator using <code>localeCompare</code> for type values<br> <li> Wrapped dialog HTML in <code><div style="max-width: 600px;"></code> container<br> <li> Applied <code>word-break</code> and <code>overflow-wrap</code> styling with margins</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/9853/files#diff-6a29e253f59405d3c0f756dba36afd7483f10ad86927cbbc3348ede6372c3077">+11/-8</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: sai nikhil kethe <nikhil@openobserve.ai> |
||
|
|
72ce69b2f9 | perf: improve metrics labels load (#9904) | ||
|
|
358f98167f |
feat: add frustration signals to RUM UI (#9842)
#9611 Design at: rum ### **PR Type** Enhancement, Tests, Documentation ___ ### **Description** - Introduce `FrustrationBadge` and `FrustrationEventBadge` components - Integrate frustration filter in `PlayerEventsSidebar` - Add timeline markers and tooltips in `VideoPlayer` - Display frustration count in `AppSessions` and `SessionViewer` ___ ### Diagram Walkthrough ```mermaid flowchart LR FB["FrustrationBadge"] --> AS["AppSessions"] FB --> SV["SessionViewer"] FEB["FrustrationEventBadge"] --> PES["PlayerEventsSidebar"] PES --> VP["VideoPlayer"] ``` <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>6 files</summary><table> <tr> <td><strong>FrustrationBadge.spec.ts</strong><dd><code>Add unit tests for frustration badge component</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9842/files#diff-0edf3db60bd51c6430b52f694b3d9ec1e49aeed4ff0ca6f582c63f5f04465542">+161/-0</a> </td> </tr> <tr> <td><strong>FrustrationEventBadge.spec.ts</strong><dd><code>Add tests for frustration event badge</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9842/files#diff-e3f0d23472fd2ead5265f258a00da30c0ee409eac0d2d0b78c20a9cfa0f18d9b">+195/-0</a> </td> </tr> <tr> <td><strong>PlayerEventsSidebar.spec.ts</strong><dd><code>Add tests for frustration filter in sidebar</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9842/files#diff-89b65487bce928cbff9e6f17ea7b2288a5b44918c408d48f17e834454d8f6c60">+176/-0</a> </td> </tr> <tr> <td><strong>VideoPlayer.spec.ts</strong><dd><code>Add tests for frustration markers in video timeline</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9842/files#diff-ee567bd4fd196facb768c7a15cbd7e14feff6be027d3bb78e65ae811319ca82c">+149/-0</a> </td> </tr> <tr> <td><strong>AppSessions.spec.ts</strong><dd><code>Add tests for frustration count column</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9842/files#diff-8729444f05a0c753cc1f6fbb229e0ab7fd2ac46bd6ea454131ff80314d57a888">+101/-1</a> </td> </tr> <tr> <td><strong>SessionViewer.spec.ts</strong><dd><code>Add tests for frustration summary display</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9842/files#diff-f6bc78695d658452861ef8cd068a3c15e8a244e8df6de12104f4ecb4ccf6291a">+214/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>6 files</summary><table> <tr> <td><strong>FrustrationBadge.vue</strong><dd><code>Implement frustration count badge component</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9842/files#diff-d0f7499816baa57b7a815ec601553328be240fce38e66e68a8b7674516f49656">+124/-0</a> </td> </tr> <tr> <td><strong>FrustrationEventBadge.vue</strong><dd><code>Implement frustration event badges component</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9842/files#diff-092623e0f5b95471d97cd4f39f065d35ea154df9051a44908c1aec3ea84ca682">+134/-0</a> </td> </tr> <tr> <td><strong>PlayerEventsSidebar.vue</strong><dd><code>Integrate frustration filter and badges in sidebar</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9842/files#diff-a7d04eb87cd7588ba4811d79c6d32696a58d737a24931258329be4f96cee7610">+45/-10</a> </td> </tr> <tr> <td><strong>VideoPlayer.vue</strong><dd><code>Render frustration markers and tooltips</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9842/files#diff-5cb7c9f5d73672eaaabf9214cfeb949f533772e87780829664fac444e3c6fa35">+35/-8</a> </td> </tr> <tr> <td><strong>AppSessions.vue</strong><dd><code>Add frustration_count column and badge slot</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9842/files#diff-08359708ae507d81dcdc60e3c05ba4f56a40f4a61718074cd6019bf2ceb87575">+21/-1</a> </td> </tr> <tr> <td><strong>SessionViewer.vue</strong><dd><code>Display frustration summary and parse types</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9842/files#diff-9f7a183be1e2cfcb3c3c852c059f66003dd4f3f586421b012e1b835724929ca1">+33/-3</a> </td> </tr> </table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>*.json</strong><dd><code>Add `frustrationCount` translations to locale files</code> </dd></td> <td><a href=""></a></td> </tr> </table></details></td></tr><tr><td><strong>Additional files</strong></td><td><details><summary>11 files</summary><table> <tr> <td><strong>de.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9842/files#diff-78f24ecb2dbcfc38fdf3ec22b2559a5b40d236ea689d1c55f5d3e87168310264">+2/-1</a> </td> </tr> <tr> <td><strong>en.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9842/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+1/-0</a> </td> </tr> <tr> <td><strong>es.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9842/files#diff-ac2a2167b8b973e3f776f9fe3b43bef4576470d8ad33f3d7cfaff6edff0e5778">+2/-1</a> </td> </tr> <tr> <td><strong>fr.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9842/files#diff-db80e762b88ddf183820c050cdc6b215e6b02b365b5e73f5152af46b0d26f1a2">+2/-1</a> </td> </tr> <tr> <td><strong>it.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9842/files#diff-2de78074a5f887afddce60d694ead9322e6ab223eb70251c13819f3028bdc70d">+2/-1</a> </td> </tr> <tr> <td><strong>ja.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9842/files#diff-092e49c5f9fbc1b539ab9c2866d108d0ce1d314022b4c294eb4611b285e7bbd3">+2/-1</a> </td> </tr> <tr> <td><strong>ko.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9842/files#diff-50e27ca1b4825a5026f3a251bfcf79c97cab07cfade2ebd512d332453d707c48">+2/-1</a> </td> </tr> <tr> <td><strong>nl.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9842/files#diff-a1706021687ae5d8a1c006c49eab3946174fecd895f9b70a89c2e76d97250906">+2/-1</a> </td> </tr> <tr> <td><strong>pt.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9842/files#diff-38e804f64cb5e0e451849fc84e9b46e53c954a4a4263d51c18665ad45f4b4815">+2/-1</a> </td> </tr> <tr> <td><strong>tr.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9842/files#diff-6f0f131e9e2591480c4c5d1eaffc72d02dc31cbd8d3f90d8f012f08cabac8818">+2/-1</a> </td> </tr> <tr> <td><strong>zh.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/9842/files#diff-8818055db58f83230aeea4ebfd4cec31d924e8c47b6f91298e356959ab25339e">+2/-1</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |
||
|
|
39961fe7e8 |
chore: update npm dependencies (2026-01-05) (#9900)
### **User description** - Updated packages to their latest versions - Regenerated package-lock.json - All tests passing 🤖 Automated update by GitHub Actions ___ ### **PR Type** Other ___ ### **Description** - Bumps production dependencies to latest versions - Updates devDependencies and regenerates lockfile - Verifies all tests still pass after update ___ <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Dependencies</strong></td><td><table> <tr> <td> <details> <summary><strong>package.json</strong><dd><code>Update npm package versions</code> </dd></summary> <hr> web/package.json <ul><li>Upgraded multiple production dependencies<br> <li> Updated various devDependencies versions<br> <li> Regenerated package-lock.json accordingly</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/9900/files#diff-b861012a5dd72b8a9f3281b7cf09f5a779c98569d040b1bbc1db50f1b15e7cce">+40/-40</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |
||
|
|
8776d2645d |
chore: improve tab navigation UX and FQN priority selector (#9879)
### **User description** ## Summary - Added component state preservation using keep-alive for instant tab switching - Replaced FQN priority dropdown with dual-list selector for better multi-item management - Added refresh buttons to all tabs for manual data reload ## Changes - Tab caching via Quasar's keep-alive prop (no redundant API calls) - Dual-list interface for FQN priority dimensions with search and bulk transfer - Refresh buttons on Correlation Settings and correlation telemetry tabs ## Benefits - Instant tab switching with preserved state - Faster dimension selection workflow - Better UX for managing correlation settings ___ ### **PR Type** Enhancement ___ ### **Description** - Add dual-list interface for dimension selection - New `DualListSelector.vue` component - Integrated into FQN priority settings - Add manual refresh buttons on tabs - Enable component caching on tab panels |
||
|
|
e312f84aae |
chore: add super-cluster sync for incidents, service discovery, and semantic groups
- Add queue processors for incidents, service_streams, semantic_groups - Register 3 new queues in super_cluster_queue/mod.rs (16 total) - Add publishers in org_config.rs, incidents.rs with error logging - Add module-level docs and error context to all processors - Derive Clone for ServiceRecord (required for message serialization) - Enterprise: Add 3 message enums, queue traits, 8 publisher functions |
||
|
|
d2e656c767 |
fix: home view skeleton issue fixed - 9833 (#9886)
### **PR Type**
Enhancement
___
### **Description**
- Refactored `HomeViewSkeleton` layout and classes
- Switched to CSS variables and grid styling
- Updated tile, chart and header skeleton elements
- Simplified `HomeView.vue` loading wrapper
___
### Diagram Walkthrough
```mermaid
flowchart LR
HV[HomeViewSkeleton]
HV -- "contains" --> Streams["Streams section"]
HV -- "contains" --> Tiles["Tiles grid section"]
HV -- "contains" --> FD["Functions & Dashboards column"]
HV -- "contains" --> C1["Alerts Chart skeleton"]
HV -- "contains" --> C2["Pipelines Chart skeleton"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>HomeViewSkeleton.vue</strong><dd><code>Refactor
skeleton layout and theming</code>
</dd></summary>
<hr>
web/src/components/shared/HomeViewSkeleton.vue
<ul><li>Wrapped root <code>div</code> in <code>feature-card</code> with
padding utilities<br> <li> Replaced custom containers with
<code>tiles-grid</code> and <code>feature-card</code><br> <li> Updated
SkeletonBox variants and sizes for consistency<br> <li> Refactored
scoped SCSS to use CSS variables and grid</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9886/files#diff-cfcdd350ab12b088eb8bc8717b3d2c3a6b530c6c78d27c581126f6e4c7ccbda4">+168/-100</a></td>
</tr>
<tr>
<td>
<details>
<summary><strong>HomeView.vue</strong><dd><code>Simplify skeleton
loading wrapper</code>
</dd></summary>
<hr>
web/src/views/HomeView.vue
<ul><li>Removed inline style from loading wrapper<br> <li> Simplified
<code>v-if="isLoadingSummary"</code> container<br> <li> Ensured
<code>HomeViewSkeleton</code> displays correctly</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9886/files#diff-9af441af191d3254ef5f9db603dca75486de7638cda41a3c050e7b3c33d68280">+1/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
2803da752b |
fix: OAuth/DEX redirect infinite loop on router nodes (#9869)
### **PR Type**
Enhancement
___
### **Description**
- Configure `get_config_routes` in HTTP server
initialization
- Apply in `init_http_server`
- Apply in `init_http_server_without_tracing`
___
<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>main.rs</strong><dd><code>Configure `get_config_routes`
in HTTP init</code>
</dd></summary>
<hr>
src/main.rs
<ul><li>Added <code>.configure(get_config_routes)</code> to HTTP server
setup<br> <li> Updated both <code>init_http_server</code> and <br>
<code>init_http_server_without_tracing</code></ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9869/files#diff-42cb6807ad74b3e201c5a7ca98b911c5fa08380e942be6e4ac5807f8377f87fc">+2/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
e259008d9c |
fix: add metrics query retention configuration option (#9887)
___
### **PR Type**
Enhancement
___
### **Description**
- Add `metrics_query_retention` environment config option
- Import and apply new retention in time bound calc
- Override partition level when retention is daily
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Load `metrics_query_retention`"]
B["unwrap_partition_time_level"]
C{"Retention == Daily?"}
D["Set level to Daily"]
E["Compute duration"]
F["Return time_end + duration"]
A --> B --> C
C -- "yes" --> D
C -- "no" --> E
D --> E --> F
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>config.rs</strong><dd><code>Add metrics_query_retention
config</code>
</dd></summary>
<hr>
src/config/src/config.rs
<ul><li>Add <code>ZO_METRICS_QUERY_RETENTION</code> with default
"hourly"<br> <li> Introduce <code>metrics_query_retention: String</code>
field</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9887/files#diff-9aeee4a74c0520daa40f9b81c7016f5b6b3254375b968dd7598e745630980d62">+2/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Bug fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>mod.rs</strong><dd><code>Use metrics_query_retention in
time bound</code>
</dd></summary>
<hr>
src/infra/src/file_list/mod.rs
<ul><li>Import <code>get_config</code> for accessing config<br> <li> Use
<code>metrics_query_retention</code> in time bound calc<br> <li>
Override partition level when retention is daily</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9887/files#diff-3df833bc826eb12e0819620d1fe316ef1ac352d293c11e57cc3df0da3c031e93">+8/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
e991234939 |
fix: Create Alert from dashboard setup - alert name with spacing issue. (Backend) (#9890)
### **User description** ## 🤖 Auto-Implementation (Backend) **Bug Fix:** Create Alert from dashboard setup - alert name with spacing issue. **Source Issue:** openobserve#9875 📚 **Complete Design Documentation:** https://github.com/openobserve/designs/tree/main/e2e-dev/openobserve/2026-01/issue-9875-create-alert-from-dashboard-setup-alert-name-with- - [Backend Plan](https://github.com/openobserve/designs/tree/main/e2e-dev/openobserve/2026-01/issue-9875-create-alert-from-dashboard-setup-alert-name-with-/plans/backend-plan.md) - [Backend Implementation](https://github.com/openobserve/designs/tree/main/e2e-dev/openobserve/2026-01/issue-9875-create-alert-from-dashboard-setup-alert-name-with-/implementations/backend-implementation.md) - [API Contract](https://github.com/openobserve/designs/tree/main/e2e-dev/openobserve/2026-01/issue-9875-create-alert-from-dashboard-setup-alert-name-with-/api-contract.json) - [Validation Results](https://github.com/openobserve/designs/tree/main/e2e-dev/openobserve/2026-01/issue-9875-create-alert-from-dashboard-setup-alert-name-with-/validations/backend-validation.md) ## Changes - ✅ Backend code (Rust) - ✅ Unit + integration tests - ✅ All quality gates passed ## Related PRs Frontend PR: #FRONTEND_PR_NUMBER (to be linked) Closes openobserve#9875 --- 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com> ___ ### **PR Type** Bug fix ___ ### **Description** - Replace spaces in generated alert names - Use underscores for panel title sanitization - Prevent validation errors for alert names ___ <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>AddAlert.vue</strong><dd><code>Sanitize alert names with underscores</code> </dd></summary> <hr> web/src/components/alerts/AddAlert.vue <ul><li>Updated alert name template literal<br> <li> Added <code>.replace(/\s+/g, '_')</code> on <code>panelTitle</code><br> <li> Changed prefix to <code>Alert_from_</code> with underscores</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/9890/files#diff-7b426bb23e9ed0250c3877d6d97b099c42b2d20e22ddf4459915381b2233a0a8">+1/-1</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: Claude Code Bot <noreply@anthropic.com> Co-authored-by: claude-code-bot <claude-code-bot@openobserve.ai> |
||
|
|
8c568e264e |
fix: dashboard share-url tab redirection issue caused by the route path of url (#9885)
### **PR Type**
Bug fix
___
### **Description**
- Add reactive dependency on `route.fullPath` in share URL
___
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>ViewDashboard.vue</strong><dd><code>Add
`route.fullPath` dependency to computed URL</code>
</dd></summary>
<hr>
web/src/views/Dashboards/ViewDashboard.vue
<ul><li>Inserted <code>void route.fullPath</code> to trigger
reactivity<br> <li> Ensures <code>dashboardShareURL</code> recomputes on
URL change</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9885/files#diff-052badb6758aff09ceaf1645869b9ba96125e6a0ea21abb01a8ee0a40d6467f3">+2/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
68759b4354 |
fix: sync distinct stream retention to original stream (#9871)
### **User description**
This adds functionality to always sync original stream retention to the
distinct stream created for that stream.
This also includes a once-off migration to sync the retention for
existing streams
___
### **PR Type**
Enhancement
___
### **Description**
- Bump DB schema version to 24
- Add migration syncing existing distinct stream retention
- Sync retention on settings update for distinct streams
- Refactor distinct stream naming logic
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Original Stream Settings"] --> B["Generate Distinct Stream Name"]
C["Migration: Sync Retention"] --> B
D["Settings Update Handler"] --> B
```
<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>Bump database schema
version</code>
</dd></summary>
<hr>
src/config/src/config.rs
- bumped `DB_SCHEMA_VERSION` from 23 to 24
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9871/files#diff-9aeee4a74c0520daa40f9b81c7016f5b6b3254375b968dd7598e745630980d62">+1/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>mod.rs</strong><dd><code>Register new
migration</code>
</dd></summary>
<hr>
src/infra/src/table/migration/mod.rs
- register new migration in migrator list
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9871/files#diff-7ee42a714d3d56c663da0412d15514613222055aebb5b50dafbc051a656a36f6">+2/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>m20260107_000001_sync_distinct_stream_retention.rs</strong><dd><code>Add
migration for distinct stream retention</code>
</dd></summary>
<hr>
src/infra/src/table/migration/m20260107_000001_sync_distinct_stream_retention.rs
<ul><li>add new migration file for retention sync<br> <li> iterate all
streams and update distinct retention<br> <li> support enterprise
super-cluster propagation</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9871/files#diff-e077e2b4452a91f484015bd939eae29bec994be01a67eb4e71e5f111c761c755">+115/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>distinct_values.rs</strong><dd><code>Refactor naming
and retention logic</code>
</dd></summary>
<hr>
src/service/metadata/distinct_values.rs
<ul><li>extract <code>get_distinct_stream_name</code> function<br> <li>
use helper instead of inline formatting<br> <li> update distinct stream
retention during ingest</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9871/files#diff-3fb2320197c6e8e900658f5a24158e922610eadcbf081ab0df230f770ef27e07">+35/-6</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>stream.rs</strong><dd><code>Sync retention on settings
save</code>
</dd></summary>
<hr>
src/service/stream.rs
<ul><li>on <code>save_stream_settings</code>, sync distinct stream
retention<br> <li> add <code>get_stream_retention</code> helper
function<br> <li> skip metadata streams when syncing</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9871/files#diff-41452a7fb29b4634437174fd6aecf6a9050dbfdef41b9077a21d59af3d79e9ed">+68/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
---------
Signed-off-by: Yashodhan Joshi <yjdoc2@gmail.com>
Co-authored-by: Yashodhan Joshi <yjdoc2@gmail.com>
|
||
|
|
5ac09c5018 |
fix: notify users when stale build (#9849)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |
||
|
|
4fd2ef051f | fix: rewrite match_all should also update other filter column index (#9872) | ||
|
|
780b7cf89b |
fix: remove delete bad dashboards migration (#9860)
### **User description**
From v0.14.6-rc9 to v0.40.0 migration is currently broken for dashboards
with label position . This pr fixes this by removing the migration. The
dashboard migration generally happens through UI, no migration needed by
backend.
___
### **PR Type**
Bug fix
___
### **Description**
- Remove `delete_bad_dashboards` migration logic
- Convert `up` function into no-op stub
- Delete JSON parsing and schema definitions
___
<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>m20250107_160900_delete_bad_dashboards.rs`</strong><dd><code>Simplify
delete_bad_dashboards migration</code>
</dd></summary>
<hr>
`src/infra/src/table/migration/m20250107_160900_delete_bad_dashboards.rs`
<ul><li>Dropped <code>chrono</code> and <code>sea_orm</code> imports<br>
<li> Simplified <code>up</code> to do nothing<br> <li> Removed
<code>can_parse_data</code> and version modules</ul>
</details>
</td>
<td><a href=""></a></td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
a84969ad4b |
test: add Bug #9788 test for Share URL disabled state (#9858)
### **User description** Add automated test to validate Share button behavior when ZO_WEB_URL is not configured. Uses Playwright route mocking to simulate backend configuration without requiring separate test environment. Changes: - Add Bug #9788 test in shareLink.spec.js with API route mocking - Mock /config endpoint to set web_url="" for testing disabled state - Validate Share button is disabled with informative tooltip - Add ZO_WEB_URL env variable to CI/CD playwright.yml Test validates: - Share button visibility - Disabled state when ZO_WEB_URL not configured - Tooltip: "Share URL is disabled until ZO_WEB_URL is configured" Fixes: https://github.com/openobserve/openobserve/issues/9788 🤖 Generated with [Claude Code](https://claude.com/claude-code) ___ ### **PR Type** Tests ___ ### **Description** - Add test for disabled share button without ZO_WEB_URL - Mock `/config` API endpoint and verify tooltip - Set `ZO_WEB_URL` env variable in CI workflow - Exclude `@bug-9788` tests in rerun commands ___ <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>shareLink.spec.js</strong><dd><code>Add test for disabled share button</code> </dd></summary> <hr> tests/ui-testing/playwright-tests/Logs/shareLink.spec.js <ul><li>Added new functional test for Bug #9788 scenario<br> <li> Mocked <code>/config</code> endpoint to simulate missing <code>web_url</code><br> <li> Asserts share button visibility, disabled state, and tooltip</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/9858/files#diff-7ee6e1f00c7f0d5464334b39d3eefbe741cd4ee271ba7c5ca4b1e492be53a2d1">+79/-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>CI workflow: set ZO_WEB_URL and exclude tests</code> </dd></summary> <hr> .github/workflows/playwright.yml <ul><li>Defined <code>ZO_WEB_URL</code> environment variable in CI<br> <li> Updated rerun commands to exclude <code>@bug-9788</code> tests</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/9858/files#diff-7afcd2d8f7b49bda74843f209eefb7b2da45f7e7803bf2e4bd636699b76aa2d3">+3/-2</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: Claude <noreply@anthropic.com> |
||
|
|
d0b256c6af |
fix: UI console error fix (#9857)
Error details: 1. Uncaught "Stream Not Found" 2. Error in getOrganizationSettings: AxiosError: Request failed with status code 403 3. Error: ResizeObserver loop completed with undelivered notifications. 4. [handleError]:: TypeError: can't access property "dataplanes", e.source is undefined 5. [handleError]:: Cannot read properties of undefined (reading 'config') |
||
|
|
b90334fa27 | chore(deps): bump rsa from 0.9.9 to 0.9.10 (#9867) | ||
|
|
88136889b3 | fix: ci for release (#9868) | ||
|
|
4566976b43 | ci: updated runner for oss (#9864) | ||
|
|
4096d07c48 |
fix: metrics cancel query button css improved (#9863)
### **PR Type**
Enhancement
___
### **Description**
- Adjusted padding for metrics cancel button
- Removed padding on JSON editor save button
___
<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>Index.vue</strong><dd><code>Adjust metrics cancel
button padding</code>
</dd></summary>
<hr>
web/src/plugins/metrics/Index.vue
- Updated `q-btn` padding from "sm md" to "xs lg"
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9863/files#diff-a6734928ea4dcb5244e90de5a16fe6f5cafa95ccf58430ac7b548a065daf3d61">+1/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>DashboardJsonEditor.vue</strong><dd><code>Remove JSON
editor save button padding</code>
</dd></summary>
<hr>
web/src/views/Dashboards/DashboardJsonEditor.vue
- Removed `padding="sm lg"` from save button
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9863/files#diff-e3852754d3a888bea3d2ceb9433111d178119e3d86c82e103695ee1ffd3efbfa">+0/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
6a4cebc263 | fix: update loading progress handling in PromQL response (#9859) | ||
|
|
2dc4850e09 |
fix: use url incident id to show the incident drawer (#9850)
### **PR Type**
Bug fix
___
### **Description**
- Load incident details from URL query parameter
- Remove `incident` prop from detail drawer
- Stop passing `selectedIncident` prop in incident list
___
### Diagram Walkthrough
```mermaid
flowchart LR
List["IncidentList.vue"] -- "open drawer" --> Drawer["IncidentDetailDrawer.vue"]
Drawer -- "watch ?incident_id" --> Query["router.currentRoute.query.incident_id"]
Query -- "trigger loadDetails(id)" --> API["IncidentService API"]
```
<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>IncidentDetailDrawer.vue</strong><dd><code>Switch to
URL-based incident loading</code>
</dd></summary>
<hr>
web/src/components/alerts/IncidentDetailDrawer.vue
<ul><li>Removed <code>incident</code> prop definition and usage<br> <li>
Updated <code>setup</code> signature to ignore props<br> <li> Added
watcher on <code>router.currentRoute.query.incident_id</code><br> <li>
Calls <code>loadDetails</code> with URL parameter if present</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9850/files#diff-6973d58a5f49658b07d3533d4db5d32cc6430433b51732481e7497243dadb0b0">+7/-11</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>IncidentList.vue</strong><dd><code>Drop incident prop
in list drawer</code>
</dd></summary>
<hr>
web/src/components/alerts/IncidentList.vue
<ul><li>Removed <code>:incident="selectedIncident"</code> binding<br>
<li> Now opens drawer without passing incident prop</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9850/files#diff-953ad015996758a8c86e489499cd3b0a614501b99b0c9c5c242a299e34c24ff2">+0/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
5b54ee3c58 |
fix: toggle button issue on add alert page (#9856)
### **PR Type**
Enhancement
___
### **Description**
- Changed `size` prop to "30px"
- Removed `color="primary"` prop
- Updated toggle CSS classes
___
<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>AlertSettings.vue</strong><dd><code>Adjust toggle UI
sizing</code>
</dd></summary>
<hr>
web/src/components/alerts/steps/AlertSettings.vue
<ul><li>Updated <code>size</code> prop from <code>"md"</code> to
<code>"30px"</code><br> <li> Removed <code>color="primary"</code>
prop<br> <li> Simplified CSS classes to <code>text-bold
o2-toggle-button-xs</code></ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9856/files#diff-1d5bfd6a1ea672884193649b1271d751d6f3b8ec84af759071c9bfd169a8ab28">+2/-3</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
2ed4eeff48 |
fix: fixed toggle button issue for small size (#9852)
### **PR Type**
Bug fix
___
### **Description**
- Add class to `q-toggle` in AddEnrichmentTable
- Adjust padding and font-size on toggles
- Add left margin class to Stream toggle
- Apply custom sizing to IndexList toggles
___
<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>AddEnrichmentTable.vue</strong><dd><code>Style append
toggle in AddEnrichmentTable</code>
</dd></summary>
<hr>
web/src/components/functions/AddEnrichmentTable.vue
<ul><li>Added <code>lookup-table-append-toggle</code> class to
<code>q-toggle</code><br> <li> Defined padding and font-size for
<code>.q-toggle__inner</code><br> <li> Made
<code>.q-toggle__thumb:before</code> background transparent</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9852/files#diff-9aad551dbc051edfdb3994a664506ed6d5e27dcb64f9c2fa917b02e51a35d86e">+12/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>Stream.vue</strong><dd><code>Add left margin to Stream
toggle</code>
</dd></summary>
<hr>
web/src/components/pipeline/NodeForm/Stream.vue
<ul><li>Added <code>q-ml-md</code> class to stream
<code>q-toggle</code><br> <li> Ensured consistent left margin on
toggle</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9852/files#diff-1a17ced9dc89022502cab0a6f9b97b413c2a2c4f8219733d063fc0180d361739">+1/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>IndexList.vue</strong><dd><code>Style toggles in
IndexList logs</code>
</dd></summary>
<hr>
web/src/plugins/logs/IndexList.vue
<ul><li>Added <code>indexlist-stream-toggle</code> class to
<code>q-toggle</code><br> <li> Updated <code>size</code> attribute from
"20px" to 20<br> <li> Defined padding, font-size, transparent thumb in
CSS</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9852/files#diff-08f058f883b659e713e606991a7ea37ae1ff016b7cccef970489ab5840dc3d09">+15/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
0284e5ab5a |
feat: tenant management using service accounts (#9838)
### **User description** Design at : service_account_enhancements/FEATURE_TENANT_MANAGEMENT_SERVICE_ACCOUNTS ___ ### **PR Type** Enhancement, Tests ___ ### **Description** - Add session expiry cache with cleanup - Implement `assume_service_account` endpoint - Enforce `allow_static_token` policy for service accounts - Automate service account creation and tenant admin role ___ ### Diagram Walkthrough ```mermaid flowchart LR A["Create Organization"] -- "adds service account" --> B["DB org_users (allow_static_token=false)"] B -- "assign tenant admin role" --> C["OpenFGA"] A -- "respond with ServiceAccountTokenInfo" --> D["Client"] E["AssumeServiceAccount API"] -- "create session" --> F["DB sessions with expiry"] F -- "cache token & expiry" --> G["USER_SESSIONS & USER_SESSIONS_EXPIRY"] H["AuthExtractor"] -- "validate session token + expiry" --> I["Request Auth"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Configuration changes</strong></td><td><details><summary>5 files</summary><table> <tr> <td><strong>config.rs</strong><dd><code>Add session expiry cache mapping</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9838/files#diff-cda0d9179ed982fa5f0989c9b26f21cfa49dd1de28195a98135650ffcc7c602a">+1/-0</a> </td> </tr> <tr> <td><strong>config.rs</strong><dd><code>Bump DB schema version to 23</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9838/files#diff-9aeee4a74c0520daa40f9b81c7016f5b6b3254375b968dd7598e745630980d62">+1/-1</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Import new session meta module</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9838/files#diff-bab79e8da2d0d9f903cb1a6187d922c6de63d3e4561e8ce633660b664b4e859f">+1/-0</a> </td> </tr> <tr> <td><strong>m20251230_000001_add_allow_static_token_to_org_users.rs</strong><dd><code>Migration: add allow_static_token to org_users</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9838/files#diff-2c713c6a1665f7cc5b19eda98ed6663e4908201052e31bd3c6643aa48c03130b">+55/-0</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Register new migration for allow_static_token</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9838/files#diff-7ee42a714d3d56c663da0412d15514613222055aebb5b50dafbc051a656a36f6">+2/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>20 files</summary><table> <tr> <td><strong>organization.rs</strong><dd><code>Add service_account fields and response types</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9838/files#diff-4f089715a7ac4f78b45039d773f2fccbb4fbc6a409e0ab9ceee1fcf7911bc44b">+24/-0</a> </td> </tr> <tr> <td><strong>user.rs</strong><dd><code>Include `org_name` in `UserOrg` defaults</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9838/files#diff-e13b3a981fd70182b9738a6b0ecfdee915c5b36757703a87741e1eddf3f6e786">+3/-1</a> </td> </tr> <tr> <td><strong>auth.rs</strong><dd><code>Enhance session auth extraction and expiry logic</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9838/files#diff-9bc2b1841504a435f66ad094f72ddbe7b7fa75e5e1557b8adbfe36f7f0592e1b">+101/-8</a> </td> </tr> <tr> <td><strong>session.rs</strong><dd><code>Define assume_service_account request/response schemas</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9838/files#diff-cc73e168e23e2cd5d98749492c12493cff611bc9cecfa3d45e8c6a0e9a3ba135">+50/-0</a> </td> </tr> <tr> <td><strong>user.rs</strong><dd><code>Add `org_name` field to `UserOrg` meta</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9838/files#diff-fc77f1b0e696889335f118cd5c1d69b7e3b385f48dd8e94c02a69912242e689b">+2/-0</a> </td> </tr> <tr> <td><strong>jwt.rs</strong><dd><code>Populate `org_name` in JWT auth mapping</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9838/files#diff-232cab74f4cbf135af424744272e17732fbda8ac005d33c0acb4597e65479d02">+8/-1</a> </td> </tr> <tr> <td><strong>validator.rs</strong><dd><code>Enforce service account static token policy</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9838/files#diff-f4d4b51574b378a8c372345ea48875834a4eadacfac33fa4d0ceca1e0ef96b35">+58/-11</a> </td> </tr> <tr> <td><strong>assume_service_account.rs</strong><dd><code>Implement `assume_service_account` HTTP endpoint</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9838/files#diff-3cdbc33e83fda4c90aae59b6213861646ce7031b092e1f052c4c3c8e94ac468b">+208/-0</a> </td> </tr> <tr> <td><strong>org.rs</strong><dd><code>Return service_account info on org creation</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9838/files#diff-b47c0c1a8a78524196176430268eecdbfaf6f46d6b95873d3cbe70cfd67182b0">+12/-5</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Register assume_service_account route</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9838/files#diff-02556e3f515441b5d2b6bbea7829df488beac03c4cc41309a6638ae3c0e0aec6">+1/-0</a> </td> </tr> <tr> <td><strong>org_users.rs</strong><dd><code>Add `allow_static_token` to OrgUsers entity</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9838/files#diff-aec40965f56c43f49b6c162e7f7cfd549af23e0dcd9980f1e863ddb30eba357b">+1/-0</a> </td> </tr> <tr> <td><strong>org_users.rs</strong><dd><code>Support `allow_static_token` in ORM models</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9838/files#diff-8e62ecba19308fdaaecfdb3d1f23021c926e244a510d9452dfbd71ac8f35ee9f">+33/-0</a> </td> </tr> <tr> <td><strong>sessions.rs</strong><dd><code>Add session expiry persistence and cleanup</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9838/files#diff-945b60afd1f074c5f3bf875317896181829b19153938184bad9098c75ab44b48">+11/-12</a> </td> </tr> <tr> <td><strong>org_users.rs</strong><dd><code>Add `add_with_flags` for org_users</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9838/files#diff-3cbb516ea021b4c03cf4b5f9de2ebcd4a8afee0722a4bcc5c39cb78f485900b6">+73/-0</a> </td> </tr> <tr> <td><strong>organization.rs</strong><dd><code>Default `service_account` in org DB functions</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9838/files#diff-ce65cea926a09721a8fea14d07fe188bc2b887218e95d74a8bffefb54001da50">+3/-0</a> </td> </tr> <tr> <td><strong>session.rs</strong><dd><code>Enhance session caching with expiry checks</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9838/files#diff-64311ff8ef53118e7611a2a2a28c5380a0e8b8213139b2c2108c728b1d460a2b">+152/-17</a></td> </tr> <tr> <td><strong>user.rs</strong><dd><code>Map `org_name` in DB user mapping</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9838/files#diff-6ee6b0fc9ed03224d4ddf0b7b631c6f81ff7d1d579bdb98d2c5d4453852eb5d6">+4/-2</a> </td> </tr> <tr> <td><strong>organization.rs</strong><dd><code>Add service account creation & tenant role logic</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9838/files#diff-6b3c3c2b027c1158c0d41302cc69dfcd20ab68a6a4fa365cda403f838940bbb4">+270/-7</a> </td> </tr> <tr> <td><strong>session.rs</strong><dd><code>Use `set_with_expiry` for session creation</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9838/files#diff-2d2f0c7a3be0a3d7d953c01974be5e093c8d42953952e435bc7b3a0faed6bf38">+3/-1</a> </td> </tr> <tr> <td><strong>users.rs</strong><dd><code>Add `create_service_account_if_not_exists` helper</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9838/files#diff-98da2588a28d62bb2e301d989836125f89f89b76272cd7f75e08ec4deeea5f38">+56/-7</a> </td> </tr> </table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>mod.rs</strong><dd><code>Include `allow_static_token` in test fixtures</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9838/files#diff-2ba3bceb0d80c8008da06e45374c1f744441375e2c28b55e6a55a1be3337e79b">+1/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Formatting</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>mod.rs</strong><dd><code>Export assume_service_account module</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9838/files#diff-69dda3b2107f353d44361f3f47fad6f504470d26f888dec797664fb7de35ab08">+1/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>2 files</summary><table> <tr> <td><strong>mod.rs</strong><dd><code>Mask static tokens in API docs and logic</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9838/files#diff-095d70f65b6e69bf7de0180fcbcddcd7c89c4cf00095d7b06f039a07e73916bb">+13/-3</a> </td> </tr> <tr> <td><strong>openapi.rs</strong><dd><code>Document assume_service_account in OpenAPI</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9838/files#diff-edb8ce232c0cd08366879f642788a75d99f6bab64b4c0e77391281fdb9241e90">+3/-0</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |
||
|
|
bf45ace0cc |
fix: table chart number column alignment issue caused by copy cell button (#9843)
### **PR Type**
Bug fix
___
### **Description**
- Add conditional copy button placement based on alignment
- Show copy icon only when cell has value
- Remove obsolete wrapper and CSS styling
___
### Diagram Walkthrough
```mermaid
flowchart LR
Cell["Table cell"]
Cell -- "align right" --> BtnLeft["Copy button left"]
BtnLeft --> Value["Cell value"]
Cell -- "non-right align" --> Value2["Cell value"]
Value2 --> BtnRight["Copy button right"]
```
<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>TableRenderer.vue</strong><dd><code>Conditional copy
button placement</code>
</dd></summary>
<hr>
web/src/components/dashboards/panels/TableRenderer.vue
<ul><li>Added conditional copy buttons based on column alignment<br>
<li> Placed button left for right-aligned columns<br> <li> Placed button
right for other columns<br> <li> Removed wrapper div and
copy-cell-content CSS</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9843/files#diff-794706ea9da3a70012a0327c0464f9fd16802f78ece26055fe951716c2d73d59">+22/-12</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
1ad0b5975e |
fix: show incident detail drawer details (#9847)
### **PR Type**
Bug fix
___
### **Description**
- Pass selected incident to detail drawer
___
<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>IncidentList.vue</strong><dd><code>Add incident prop
binding to drawer</code>
</dd></summary>
<hr>
web/src/components/alerts/IncidentList.vue
- Added `:incident="selectedIncident"` prop binding
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9847/files#diff-953ad015996758a8c86e489499cd3b0a614501b99b0c9c5c242a299e34c24ff2">+1/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
b29cb44d6e |
ci: added claude PR review to github workflow (#9845)
### **User description**
added claude PR review to github workflow
___
### **PR Type**
Enhancement
___
### **Description**
- Add GitHub workflow for automated PR reviews
- Triggered on PR open, sync, ready, reopen
- Integrate Claude action with progress tracking
- Define custom prompts and allowed tools
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["PR event triggers workflow"] --> B["Checkout repository"]
B --> C["Run anthropics/claude-code-action"]
C --> D["Post inline review comments"]
```
<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>claude-pr-review.yml</strong><dd><code>Configure Claude
PR review workflow</code>
</dd></summary>
<hr>
.github/workflows/claude-pr-review.yml
<ul><li>Introduce workflow triggered on pull_request events<br> <li>
Configure checkout and Claude review steps<br> <li> Enable progress
tracking with checkboxes<br> <li> Specify custom prompts and allowed
tools</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9845/files#diff-53574b0b215fe49655d9af9b48ce745fe1b45cd4eb810c0df555b9a659caeed7">+71/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
|
||
|
|
d6a740e148 |
ci: added claude code to github workflow (#9841)
### **User description**
added claude code to github workflow
___
### **PR Type**
Enhancement
___
### **Description**
- Add Claude Code GitHub Actions workflow
- Trigger on issue comments, PR comments, and reviews containing
"@claude"
- Set up job conditions and required permissions
- Checkout repo and run `anthropics/claude-code-action`
___
### Diagram Walkthrough
```mermaid
flowchart LR
A[issue_comment@created] -->|contains "@claude"| C[Claude job]
B[pull_request_review_comment@created] -->|contains "@claude"| C
D[pull_request_review@submitted] -->|contains "@claude"| C
E[issues@opened,assigned] -->|contains "@claude"| C
C --> F[Checkout repository]
F --> G[Run Claude Code action]
```
<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>claude.yml</strong><dd><code>Add Claude Code workflow
configuration</code>
</dd></summary>
<hr>
.github/workflows/claude.yml
<ul><li>Create new "Claude Code" workflow file<br> <li> Define triggers
on issue_comment, pull_request_review_comment, <br>pull_request_review,
and issues<br> <li> Add job condition checking for "@claude" in comments
or titles<br> <li> Configure permissions and steps: checkout and run
Claude Code action</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9841/files#diff-53fec9c265fdba82268df5cd90315b8da57cce43d8e20efbf5c0bdcd1de1342e">+37/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
|
||
|
|
c96605a093 | fix: metrics streaming partition (#9839) | ||
|
|
f0527b9267 |
fix: UI tailwind changes (#9836)
issue #9539 |
||
|
|
bc5143610d | chore: support dashboard placeholder other type (#9840) | ||
|
|
3231f5f960 |
fix(e2e): consolidate and stabilize alerts-incidents-tabs tests (#9837)
### **User description**
## Summary
- Consolidated 13 test cases into 5 comprehensive tests for the
Alerts/Incidents tabs feature
- Tests 1-3: UI validation, search functionality, edge cases (enterprise
feature, running)
- Tests 4-5: Incident lifecycle actions and drawer validation
(enterprise feature, skipped - requires incidents to exist)
- Added incident-related POM methods to alertsPage.js
- Fixed view tab locators to use correct AppTabs pattern (tab-alerts,
tab-incidents)
- Added `waitForViewTabsReady()` method for stable test setup
- Added incident cleanup patterns to cleanup.spec.js
- Marked entire suite as @enterprise feature since Alerts/Incidents is
enterprise-only
## Test Results
- 3 passed, 2 skipped (~32s)
## Test plan
- [x] Run alerts-incidents-tabs.spec.js - all 3 OSS tests pass
- [x] Verify 2 enterprise tests are correctly skipped
- [x] Cleanup patterns added for incident_e2e_* resources
___
### **PR Type**
Enhancement, Tests
___
### **Description**
- Enhance AlertsPage POM with incident locators
- Add helpers for view tabs and loading overlay
- Consolidate comprehensive alerts-incidents E2E tests
- Extend cleanup to include incident_e2e patterns
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Navigate to Alerts Page"] --> B["waitForLoadingOverlayToDisappear"]
B --> C["waitForAlertListPageReady"]
C --> D["waitForViewTabsReady"]
D --> E1["Test1: View UI Validation"]
D --> E2["Test2: Search Functionality"]
D --> E3["Test3: Edge Cases"]
```
<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>alertsPage.js</strong><dd><code>Enhance AlertsPage with
incident methods and locators</code>
</dd></summary>
<hr>
tests/ui-testing/pages/alertsPages/alertsPage.js
<ul><li>Added locators for incidents, drawer, and page structure<br>
<li> Introduced waitForViewTabsReady and loading overlay helpers<br>
<li> Added assertion helpers for alerts/incidents visibility<br> <li>
Implemented incident lifecycle and drawer methods</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9837/files#diff-79ee01d6d7f145f19207b93b87143b545a1188cfc6a82bc8c45fecfbf68f8a1d">+329/-8</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>commonActions.js</strong><dd><code>Use
`alert-list-page` in navigation check</code>
</dd></summary>
<hr>
tests/ui-testing/pages/commonActions.js
- Updated navigateToAlerts to check `alert-list-page`
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9837/files#diff-4d726dd2bdb34b2c90a31798ff49b6df5bc952bd049b7c38bebb18b6db0076e2">+2/-2</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>alerts-incidents-tabs.spec.js</strong><dd><code>New
Alerts/Incidents tabs E2E tests</code>
</dd></summary>
<hr>
tests/ui-testing/playwright-tests/Alerts/alerts-incidents-tabs.spec.js
<ul><li>Added new comprehensive E2E suite for Alerts/Incidents tabs<br>
<li> Consolidates view UI, search, and edge case tests<br> <li> Skips
enterprise incident action tests</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9837/files#diff-53a1a0dc2f68166f18211c151ef356b87a34b39fe6b3d2af5263a4036ae2dd99">+413/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>alertsIncidentsTabs.spec.js</strong><dd><code>Remove
legacy alertsIncidentsTabs spec</code>
</dd></summary>
<hr>
tests/ui-testing/playwright-tests/Alerts/alertsIncidentsTabs.spec.js
- Removed deprecated Alerts & Incidents tab spec file
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9837/files#diff-3776665660a181de2d08e4d3bccc481191e7ac88f4e4b0943c869ffa4eb12ffd">+0/-347</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>cleanup.spec.js</strong><dd><code>Add `incident_e2e`
cleanup patterns</code>
</dd></summary>
<hr>
tests/ui-testing/playwright-tests/cleanup.spec.js
- Extended cleanup patterns for `incident_e2e` resources
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9837/files#diff-c214275a512fa285a7e4f2ab61dfcb42d71a0436b0e4241f94d7b45693587983">+7/-4</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
8fb89109b3 |
fix: 9658 - update query on stream change (#9823)
### **User description** fixes: https://github.com/openobserve/openobserve/issues/9658 ___ ### **PR Type** Bug fix, Tests ___ ### **Description** - Auto-update SQL query FROM clause on stream change - regenerate select * query - Add comprehensive Playwright E2E tests ___ <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>ScheduledPipeline.vue</strong><dd><code>Add auto-update SQL FROM clause watcher</code> </dd></summary> <hr> web/src/components/pipeline/NodeForm/ScheduledPipeline.vue <ul><li>Added watcher on <code>selectedStreamName</code> for SQL tab<br> <li> Parsed and replaced <code>FROM</code> clause when stream changes<br> <li> Ensured conditions: non-empty query and matching old stream<br> <li> Graceful error handling on parse failures</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/9823/files#diff-63d8f838bb880356e7804b4a57fd9223d4f2c189de7aadc7cf33cba723b29aaf">+57/-1</a> </td> </tr> </table></td></tr><tr><td><strong>Tests</strong></td><td><table> <tr> <td> <details> <summary><strong>scheduled-pipeline-stream-auto-update.spec.js</strong><dd><code>Add scheduled pipeline stream auto-update tests</code> </dd></summary> <hr> tests/ui-testing/playwright-tests/Pipelines/scheduled-pipeline-stream-auto-update.spec.js <ul><li>Introduce E2E tests verifying SQL auto-update behavior<br> <li> Validate preservation of WHERE and complex clauses<br> <li> Test manual edit protection and initial load cases<br> <li> Skip PromQL tab scenario</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/9823/files#diff-8cc925b4f4019d670b4f4a82a9dd5e3f9c29155d6b261e6dfb7ab946f3ff7d8d">+480/-0</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com> |
||
|
|
238bc56af4 |
fix: add axis label rotation and truncation options in latency insights dashboard (#9834)
### **PR Type**
Enhancement
___
### **Description**
- Add axis label rotation option
- Add axis label truncation width option
___
<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>useLatencyInsightsDashboard.ts</strong><dd><code>Add
axis label rotation & truncation</code>
</dd></summary>
<hr>
web/src/composables/useLatencyInsightsDashboard.ts
<ul><li>Added <code>axis_label_rotate</code> property to chart
config<br> <li> Added <code>axis_label_truncate_width</code> property to
chart config</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9834/files#diff-960dec4a653d7c079157499a2473d0e87bd8b61463e1c3f633e7682ba763a4b1">+2/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
20438076dd |
refactor: deduplicate ingestion handler code
Extract process time tracking and ingestion check logic into helper functions: - `get_process_time()` - consolidates slow log threshold check - `insert_process_time_header()` - adds o2_process_time header - Replace `match` with `if let Err` for cleaner error handling - Remove unused `_in_req` parameters from handler functions Reduces code duplication across `bulk`, `multi`, `json`, `hec`, `otlp_logs_write` handlers. |
||
|
|
a3a334710b |
fix: logs highlighting issues (#9754)
This PR fixes the issue when user has [ , { , < , ' , ( as single char
without closing character for the same we were losing the last character
|
||
|
|
85a952f4eb |
feat: add dynamic axis label rotation and truncation support in dashboard charts (#9808)
### **User description** Design at: https://github.com/openobserve/designs/blob/main/dashboards/axis-label-rotation/design.md ### **PR Type** Enhancement ___ ### **Description** - Add dynamic axis label rotation support - Add label truncation with dynamic width handling - Calculate dynamic nameGap and bottom spacing - Provide UI fields for configuring rotation/truncation ___ ### Diagram Walkthrough ```mermaid flowchart LR A["Panel Config\naxis_label_rotate\naxis_label_truncate_width"] B["calculateDynamicNameGap\ncalculateRotatedLabelBottomSpace"] C["Adjust grid.bottom spacing"] D["Set axisLabel.rotate/overflow/width/margin"] E["Set xAxis/yAxis nameGap\nand nameTextStyle"] A -- "pass config" --> B B -- "compute extra space" --> C B -- "compute gap/margins" --> D B -- "compute nameGap" --> E ``` <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>convertPromQLData.ts</strong><dd><code>Add dynamic label spacing and rotation logic</code> </dd></summary> <hr> web/src/utils/dashboard/convertPromQLData.ts <ul><li>Introduce <code>calculateDynamicNameGap</code> and <code>calculateRotatedLabelBottomSpace</code><br> <li> Compute <code>additionalBottomSpace</code> for grid.bottom<br> <li> Set xAxis <code>name</code>, <code>nameGap</code>, <code>nameTextStyle</code><br> <li> Apply <code>axisLabel.rotate</code>, <code>overflow</code>, <code>width</code>, <code>margin</code></ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/9808/files#diff-68d70ba6c622911d48cdb567940dc404a4a6468b86c6d24fb54e5f1d8aa5ca2a">+125/-8</a> </td> </tr> <tr> <td> <details> <summary><strong>convertSQLData.ts</strong><dd><code>Implement dynamic axis label rotation and spacing</code> </dd></summary> <hr> web/src/utils/dashboard/convertSQLData.ts <ul><li>Add <code>calculateDynamicNameGap</code> & <code>calculateRotatedLabelBottomSpace</code><br> <li> Update grid.bottom calculation with extra spacing<br> <li> Adjust axisLabel properties (rotate, width, overflow, margin)<br> <li> Apply dynamic <code>nameGap</code> across chart types</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/9808/files#diff-88c0e865040a20b2c8bb7d77e7f6bd187a5b07c1645c120223bc9d59603752c3">+208/-25</a></td> </tr> <tr> <td> <details> <summary><strong>ConfigPanel.vue</strong><dd><code>Add UI controls for label rotation and truncation</code> </dd></summary> <hr> web/src/components/dashboards/addPanel/ConfigPanel.vue <ul><li>Add inputs for <code>axis_label_rotate</code> and <code>axis_label_truncate_width</code><br> <li> Conditionally render controls by chart type<br> <li> Bind new config fields to panel data model</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/9808/files#diff-c3a6e64dff02b58bb7cdc3f0668990b41ff41544b4c5e991bbcd989ad4bba3f8">+66/-0</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ ___ ### **PR Type** Enhancement, Tests ___ ### **Description** - Add axis label rotation and truncate configs - Compute dynamic nameGap and bottom spacing - Integrate rotation/truncate in data converters - Update ConfigPanel UI and unit tests ___ ### Diagram Walkthrough ```mermaid flowchart LR A["Panel Config axis_label_rotate & axis_label_truncate_width"] B["calculateDynamicNameGap"] C["calculateRotatedLabelBottomSpace"] D["convertPromQLData / convertSQLData"] E["chart grid.bottom & xAxis nameGap settings"] A --> B A --> C B -- "nameGap" --> D C -- "bottom space" --> D D -- "apply spacing & truncation" --> E ``` <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>useDashboardPanel.ts</strong><dd><code>Add new axis label rotate/truncate defaults</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9808/files#diff-fbba1700750053b9eaf38ddd30dab84531bc44131c795ebb713811e4930cd7cb">+2/-0</a> </td> </tr> <tr> <td><strong>convertDataIntoUnitValue.ts</strong><dd><code>Introduce dynamic nameGap and bottom space functions</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9808/files#diff-14c6fe442ef231566ec411f9e0262cdd24ec912fc67b9154eec743282ab7211a">+88/-0</a> </td> </tr> <tr> <td><strong>convertPromQLData.ts</strong><dd><code>Integrate rotation/truncate logic into PromQL converter</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9808/files#diff-68d70ba6c622911d48cdb567940dc404a4a6468b86c6d24fb54e5f1d8aa5ca2a">+57/-8</a> </td> </tr> <tr> <td><strong>convertSQLData.ts</strong><dd><code>Apply dynamic spacing and truncation in SQL converter</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9808/files#diff-88c0e865040a20b2c8bb7d77e7f6bd187a5b07c1645c120223bc9d59603752c3">+180/-29</a></td> </tr> <tr> <td><strong>ConfigPanel.vue</strong><dd><code>Add UI inputs and tooltips for rotate/truncate</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9808/files#diff-c3a6e64dff02b58bb7cdc3f0668990b41ff41544b4c5e991bbcd989ad4bba3f8">+127/-0</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>Mock new spacing utilities in PromQL tests</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9808/files#diff-2769044ec488ef4070c2e1a28ce23ec36b945e46c903b870f8b340cbd6b05211">+2/-0</a> </td> </tr> <tr> <td><strong>convertSQLData.spec.ts</strong><dd><code>Mock new spacing utilities in SQL tests</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9808/files#diff-1dc85f7550b15820974ad93fa461de48d24bc5cbed621bffddb27250211fa88d">+2/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Configuration changes</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>mod.rs</strong><dd><code>Add schema fields for axis rotate/truncate</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9808/files#diff-cbf3fe971525ba58892400391dfd7dac7e43d6049d6b4f5a9840ad104ebc5e08">+6/-0</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: ktx-riya <riya.kukadiya@kiara.tech> |
||
|
|
4adc0ef19d | fix: add stream support for Prometheus query range endpoint in router (#9828) | ||
|
|
98319127ea |
fix: dashboard css issue (#9824)
### **PR Type**
Bug fix
___
### **Description**
- Fix group header background for field list themes
- Remove padding prop on metrics run query button
- Improve add panel apply button display 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>FieldList.vue</strong><dd><code>Add theme-based
field-group-header styling</code>
</dd></summary>
<hr>
web/src/components/dashboards/addPanel/FieldList.vue
<ul><li>Replaced static grey background with
<code>field-group-header</code> class<br> <li> Added dark mode
background variable styling<br> <li> Added light mode background color
styling<br> <li> Updated header div class attribute</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9824/files#diff-a071c06e3e26629cb4ae4751450acc39c61fa49b07a1cc4be3711697829668d4">+9/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>AddPanel.vue</strong><dd><code>Adjust add panel button
group and dropdown styles</code>
</dd></summary>
<hr>
web/src/views/Dashboards/addPanel/AddPanel.vue
<ul><li>Added <code>display: inline-flex</code> to
<code>q-btn-group</code> style<br> <li> Introduced <code>flat</code> and
<code>dense</code> props to <code>q-btn-dropdown</code></ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9824/files#diff-c9632db1ad95af95aba10161bcbc7c5608318919f228637bdafae3f3a31267e8">+3/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Bug fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>Index.vue</strong><dd><code>Remove padding prop from
metrics button</code>
</dd></summary>
<hr>
web/src/plugins/metrics/Index.vue
<ul><li>Removed <code>padding="sm"</code> attribute from run query
button<br> <li> Ensured button height consistency</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9824/files#diff-a6734928ea4dcb5244e90de5a16fe6f5cafa95ccf58430ac7b548a065daf3d61">+0/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
ec021ac29e | perf: optimize MCP tools - reduce size from 643KB to 123KB (#9825) | ||
|
|
8c8643cec5 |
fix: translation missing fields added (#9827)
### **User description** 1. Home page fixed ___ ### **PR Type** Enhancement ___ ### **Description** - Replace static HomeView labels with translations - Add `viewButton` and `noDataAvailable` translation keys - Update all locale JSON files - Remove unused CSS cursor property ___ <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>1 files</summary><table> <tr> <td><strong>HomeView.vue</strong><dd><code>Replace static labels with translation function</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9827/files#diff-9af441af191d3254ef5f9db603dca75486de7638cda41a3c050e7b3c33d68280">+8/-9</a> </td> </tr> </table></details></td></tr><tr><td><strong>Configuration changes</strong></td><td><details><summary>11 files</summary><table> <tr> <td><strong>de.json</strong><dd><code>Add `viewButton` and `noDataAvailable` translations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9827/files#diff-78f24ecb2dbcfc38fdf3ec22b2559a5b40d236ea689d1c55f5d3e87168310264">+3/-1</a> </td> </tr> <tr> <td><strong>en.json</strong><dd><code>Add `viewButton` and `noDataAvailable` translations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9827/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+2/-0</a> </td> </tr> <tr> <td><strong>es.json</strong><dd><code>Add `viewButton` and `noDataAvailable` translations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9827/files#diff-ac2a2167b8b973e3f776f9fe3b43bef4576470d8ad33f3d7cfaff6edff0e5778">+3/-1</a> </td> </tr> <tr> <td><strong>fr.json</strong><dd><code>Add `viewButton` and `noDataAvailable` translations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9827/files#diff-db80e762b88ddf183820c050cdc6b215e6b02b365b5e73f5152af46b0d26f1a2">+3/-1</a> </td> </tr> <tr> <td><strong>it.json</strong><dd><code>Add `viewButton` and `noDataAvailable` translations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9827/files#diff-2de78074a5f887afddce60d694ead9322e6ab223eb70251c13819f3028bdc70d">+3/-1</a> </td> </tr> <tr> <td><strong>ja.json</strong><dd><code>Add `viewButton` and `noDataAvailable` translations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9827/files#diff-092e49c5f9fbc1b539ab9c2866d108d0ce1d314022b4c294eb4611b285e7bbd3">+3/-1</a> </td> </tr> <tr> <td><strong>ko.json</strong><dd><code>Add `viewButton` and `noDataAvailable` translations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9827/files#diff-50e27ca1b4825a5026f3a251bfcf79c97cab07cfade2ebd512d332453d707c48">+3/-1</a> </td> </tr> <tr> <td><strong>nl.json</strong><dd><code>Add `viewButton` and `noDataAvailable` translations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9827/files#diff-a1706021687ae5d8a1c006c49eab3946174fecd895f9b70a89c2e76d97250906">+3/-1</a> </td> </tr> <tr> <td><strong>pt.json</strong><dd><code>Add `viewButton` and `noDataAvailable` translations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9827/files#diff-38e804f64cb5e0e451849fc84e9b46e53c954a4a4263d51c18665ad45f4b4815">+3/-1</a> </td> </tr> <tr> <td><strong>tr.json</strong><dd><code>Add `viewButton` and `noDataAvailable` translations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9827/files#diff-6f0f131e9e2591480c4c5d1eaffc72d02dc31cbd8d3f90d8f012f08cabac8818">+3/-1</a> </td> </tr> <tr> <td><strong>zh.json</strong><dd><code>Add `viewButton` and `noDataAvailable` translations</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/9827/files#diff-8818055db58f83230aeea4ebfd4cec31d924e8c47b6f91298e356959ab25339e">+3/-1</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |
||
|
|
8beb75de63 |
fix: share url disabled when web url is not configured (#9826)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com> |
||
|
|
09ef3a8f88 |
feat: incident detail drawer enhancements - telemetry tabs and alert graph (#9719)
### **User description** ## Summary Enhances the incident detail drawer with two new features to improve incident investigation: 1. **Telemetry Correlation Tabs** - Logs, Metrics, and Traces tabs showing related telemetry 2. **Alert Graph Visualization** - Interactive graph of services and dependencies Design at : https://github.com/openobserve/designs/tree/main/alert-correlation --- ## Feature 1: Telemetry Correlation Tabs Adds three new tabs (Logs, Metrics, Traces) that display correlated telemetry streams based on the incident's `stable_dimensions`. **Frontend Changes:** - New service method `getCorrelatedStreams()` in `web/src/services/incidents.ts` - Integrates `TelemetryCorrelationDashboard` component in embedded mode - Lazy loading: data fetched only on first tab click - Data caching: subsequent tab switches reuse loaded data - Refresh button for manual data reload - Auto time range from `first_alert_at` to `last_alert_at` - Empty state with manual search fallback - Memory cleanup on drawer close **No backend changes** - uses existing `POST /api/{org}/service_streams/_correlate` endpoint --- ## Feature 2: Alert Graph Visualization Adds "Alert Graph" tab showing interactive visualization of all services involved in an incident. **Backend Changes:** - New endpoint: `GET /api/v2/{org}/alerts/incidents/{id}/service_graph` - Returns graph nodes (services with alert counts) and edges (dependencies) - Builds from existing `topology_context` field - Gated by `O2_INCIDENTS_ALERT_GRAPH_ENABLED` env variable (default: false) - Enterprise-only with 403 handling for non-enterprise builds **Frontend Changes:** - New `IncidentServiceGraph.vue` component using ECharts - Force-directed and circular layouts - Visual encoding: node size = alert count, color = severity/root cause - Purple border for primary incident service - Stats banner and hover tooltips - Empty state when topology unavailable **Configuration:** ```bash export O2_INCIDENTS_ALERT_GRAPH_ENABLED=true # Required to enable ``` ___ ### **PR Type** Enhancement ___ ### **Description** - Add `IncidentServiceGraph` Rust models and API - Implement `get_service_graph` service logic - Extend `incidentsService` with correlation methods - Enhance `IncidentDetailDrawer` with telemetry and graph tabs --------- Co-authored-by: sai nikhil kethe <nikhil@openobserve.ai> |