mirror of
https://github.com/openobserve/openobserve.git
synced 2026-11-04 16:09:05 +00:00
4fa43fdff700364d7e1b1fc44fe67f7ae648bab4
1804
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
4fa43fdff7 |
fix: stream detail page (schema) layout changed (#8585)
### **User description**
1. This PR introduces a new tab called configuration where we moved all
the configuration settings to that tab
2. This PR introduces a compact table so that more columns are visible
and also all the stream stats above will stay at viewport always
___
### **PR Type**
Enhancement
___
### **Description**
- Redesigned schema page layout and header
- Added Configuration tab for settings
- New compact stats tiles and sticky table
- Added distinct values toggle and UX polish
___
### Diagram Walkthrough
```mermaid
flowchart LR
Header["Header: title + name + timeline"] -- "context" --> Tabs["Tabs: Schema Settings / Configuration / Extended Retention"]
Tabs -- "schema fields" --> SchemaTbl["Schema table: compact, sticky header, mini-select"]
Tabs -- "settings" --> Config["Configuration panel: retention, max range, flatten, toggles"]
Tabs -- "retention" --> ExtRet["Extended Retention: date selection + table"]
Stats["Stats tiles: Events, Storage, Compressed, Index"] -- "overview" --> Header
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>schema.vue</strong><dd><code>Schema page UI/UX overhaul
with new configuration</code>
</dd></summary>
<hr>
web/src/components/logstream/schema.vue
<ul><li>Revamped header with stream name badge and timeline.<br> <li>
Added stats tiles grid and compact layout.<br> <li> Introduced
'Configuration' tab with inputs and toggles.<br> <li> Improved schema
table: sticky header, mini-select, tooltips, <br>pagination.<br> <li>
Added 'Enable Distinct Values' setting wired to backend.<br> <li>
Updated date formatting and preserved original timestamps.<br> <li>
Adjusted per-page options and floating footer behavior.<br> <li> Added
new icons and theme-aware styling; extensive CSS updates.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8585/files#diff-9196be2ccae4054a00b0b1aa9d1e87b366c10920d6eaf9ef8c6e6293d50bcf46">+1068/-604</a></td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
4aa8424682 |
fix: check for lower case select as well in middle of the query (#8545)
### **User description** This PR fixes the issue mentioned in #8541 ___ ### **PR Type** Bug fix ___ ### **Description** - Handle lowercase SELECT in saved views - Prevent applying views to SQL queries - Use case-insensitive SELECT detection ___ ### Diagram Walkthrough ```mermaid flowchart LR InputQuery["User query input"] -- toLowerCase check --> SelectDetector["Detect 'select' anywhere"] SelectDetector -- true --> EarlyReturn["Skip applying saved views"] SelectDetector -- false --> ContinueFlow["Proceed with view application"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>Index.vue</strong><dd><code>Case-insensitive SQL detection in saved views</code> </dd></summary> <hr> web/src/plugins/logs/Index.vue <ul><li>Make SELECT detection case-insensitive.<br> <li> Detect 'select' anywhere in the query string.<br> <li> Prevent applying saved views when SQL mode detected.</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8545/files#diff-0323c3da69b369843c5d72bf4df5b00ca6b5147192a213baf331659ecf92af62">+1/-1</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ |
||
|
|
02fb65df88 |
fix: dashboard toLowercase issue (#8538) (#8563)
### **PR Type**
Bug fix
___
### **Description**
- Fix alias lowercase conversion with non-strings
___
### Diagram Walkthrough
```mermaid
flowchart LR
getDataValue["getDataValue in aliasUtils.ts"]
aliasInput["alias input (any type)"]
toStringLower["toString() then toLowerCase()"]
propertyAccess["Safe property access on obj"]
aliasInput -- "fallback path" --> toStringLower
toStringLower -- "compute lowercase key" --> propertyAccess
propertyAccess -- "return value" --> getDataValue
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>aliasUtils.ts</strong><dd><code>Safe lowercase
conversion for alias keys</code>
</dd></summary>
<hr>
web/src/utils/dashboard/aliasUtils.ts
<ul><li>Add toString() before toLowerCase().<br> <li> Prevent errors
when alias isn't a string.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8563/files#diff-5edee3a79266ff067f9767615a887375f369c6006c4c02bb46a9b6006969e284">+1/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
Co-authored-by: Abhay Padamani <141122205+ktx-abhay@users.noreply.github.com>
|
||
|
|
0f7734b7e1 |
fix: trace id added for values api (#8408)
### **PR Type**
Bug fix
___
### **Description**
- Add optional trace header to values API
- Propagate generated trace id from UI
- Use http client with custom headers
___
### Diagram Walkthrough
```mermaid
flowchart LR
UI["Logs IndexList.vue: generate trace id"] -- "pass traceparent" --> Service["stream.values() accepts traceparent"]
Service -- "set headers if present" --> HTTP["http({ headers }).get(url)"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>stream.ts</strong><dd><code>Support optional
traceparent header in service</code>
</dd></summary>
<hr>
web/src/services/stream.ts
<ul><li>Accept new <code>traceparent</code> param in <code>values</code>
method.<br> <li> Build optional headers with
<code>traceparent</code>.<br> <li> Switch to <code>http({ headers
}).get(url)</code> to send header.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8408/files#diff-021a378afe6f62526991974cd72b045a5be00aa5233281218cadce6d3d1c6abf">+9/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>IndexList.vue</strong><dd><code>Propagate trace id from
UI to service</code>
</dd></summary>
<hr>
web/src/plugins/logs/IndexList.vue
<ul><li>Generate trace context in UI.<br> <li> Pass
<code>traceparent</code> (traceId) to values API call.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8408/files#diff-08f058f883b659e713e606991a7ea37ae1ff016b7cccef970489ab5840dc3d09">+1/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
4a4ea9fcb1 |
fix: should add include search term before group by clause (#8515)
### **User description** This PR fixes the #8510 ___ ### **PR Type** Bug fix ___ ### **Description** - Insert filters before GROUP BY clause - Handle both include and exclude terms - Preserve ORDER BY and LIMIT positions - Align query splitting via group-by branch ___ ### Diagram Walkthrough ```mermaid flowchart LR Query["Incoming query"] --> CheckOB["Has ORDER BY?"] CheckOB -- Yes --> InsertBeforeOB["Insert filter before ORDER BY"] CheckOB -- No --> CheckGB["Has GROUP BY?"] CheckGB -- Yes --> InsertBeforeGB["Insert filter before GROUP BY"] CheckGB -- No --> CheckLimit["Has LIMIT?"] CheckLimit -- Yes --> InsertBeforeLimit["Insert filter before LIMIT"] CheckLimit -- No --> AppendFilter["Append filter at end/with WHERE"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>SearchBar.vue</strong><dd><code>Add group-by-aware filter insertion logic</code> </dd></summary> <hr> web/src/plugins/logs/SearchBar.vue <ul><li>Add GROUP BY branch when adding filters.<br> <li> Insert "AND"/"where" filter before GROUP BY.<br> <li> Maintain existing ORDER BY and LIMIT handling.<br> <li> Minor formatting of conditional branches.</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8515/files#diff-81893de4edf186b0556f610acb280c87baa2ffe67d3b48a60a866094c7635baf">+26/-2</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ |
||
|
|
37675d5320 |
fix: remove drilldown and compare against config on visualization rc7(#8534) (#8562)
### **PR Type**
Bug fix
___
### **Description**
- Disable drilldown on Logs page
- Guard chart compare against Logs context
- Expose page key to template
___
### Diagram Walkthrough
```mermaid
flowchart LR
ConfigPanel["ConfigPanel.vue"]
DrilldownGuard["Add 'pageKey !== logs' guard"]
CompareGuard["Guard compare UI for logs"]
ExposeKey["Return dashboardPanelDataPageKey from setup()"]
ConfigPanel -- "update Drilldown v-if" --> DrilldownGuard
ConfigPanel -- "update compare v-if" --> CompareGuard
ConfigPanel -- "export key to template" --> ExposeKey
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>ConfigPanel.vue</strong><dd><code>Disable
drilldown/compare when page key is logs</code>
</dd></summary>
<hr>
web/src/components/dashboards/addPanel/ConfigPanel.vue
<ul><li>Add <code>dashboardPanelDataPageKey !== 'logs'</code> to
Drilldown v-if.<br> <li> Add same guard to compare/series options v-if
with <code>!promqlMode</code>.<br> <li> Return
<code>dashboardPanelDataPageKey</code> from setup exports.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8562/files#diff-c3a6e64dff02b58bb7cdc3f0668990b41ff41544b4c5e991bbcd989ad4bba3f8">+5/-2</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
Co-authored-by: Abhay Padamani <141122205+ktx-abhay@users.noreply.github.com>
|
||
|
|
b2535e2fa0 |
fix: series list issue for color override config on pie chart (#8540)
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Correct series extraction for pie/donut
- Fallback to existing options logic
- Prevent invalid items via filtering
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["panelType check"] -- "pie/donut" --> B["extract from data[].name"]
A -- "other types" --> C["use existing options"]
B -- "build series list" --> D["return { series: names }"]
C -- "fallback" --> E["return options or empty series"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>ColorBySeries.vue</strong><dd><code>Properly derive
series for pie/donut charts</code>
</dd></summary>
<hr>
web/src/components/dashboards/addPanel/ColorBySeries.vue
<ul><li>Add panel type detection for pie/donut.<br> <li> Extract series
names from data[].name.<br> <li> Filter out invalid data items.<br> <li>
Preserve fallback to existing options.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8540/files#diff-2783259507b45f0b3664d9be68ca236690bbbf151472da3fa8b552d230af5b3f">+16/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
817245b43d |
fix: added additional match_all pattern to the syntax guide (#8475)
### **PR Type**
Documentation
___
### **Description**
- Expand syntax guide with match_all examples
- Add prefix, phrase prefix, regex usage
- Document case-sensitive and postfix searches
- Mirror examples for query editor and SQL
___
### Diagram Walkthrough
```mermaid
flowchart LR
Guide["Syntax guide (logs)"]
MatchAll["match_all examples"]
Prefix["Prefix & postfix"]
Phrase["Phrase prefix"]
Regex["Regex patterns"]
Case["Case-sensitive usage"]
Guide -- "adds" --> MatchAll
MatchAll -- "includes" --> Prefix
MatchAll -- "includes" --> Phrase
MatchAll -- "includes" --> Regex
MatchAll -- "includes" --> Case
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>SyntaxGuide.vue</strong><dd><code>Extend logs syntax
guide with match_all patterns</code>
</dd></summary>
<hr>
web/src/plugins/logs/SyntaxGuide.vue
<ul><li>Add match_all prefix example ('error*')<br> <li> Add phrase
prefix example ('error code*')<br> <li> Add regex-like example ('*code
40*')<br> <li> Add case-sensitive and postfix examples ('traceHits',
'*failed')</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8475/files#diff-c6e8bb651fadd2b15b5b97f5b6069a57813fb97cc3d06eef983af4def33e8806">+60/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
6e49099b5f |
fix: sql query editor rapidly increases (#8435)
### **User description** This PR fixes the issue in #8433 ___ ### **PR Type** Bug fix ___ ### **Description** - Prevent SQL editor height growth - Set minimum height to 18rem - Compute height via inline style binding - Adjust for error message presence ___ ### Diagram Walkthrough ```mermaid flowchart LR UI["Alert Form UI"] -- contains --> Editor["SQL Query Editor"] ErrorState["SQL Error State"] -- toggles --> EditorHeight["Dynamic Height Style"] Editor -- renders with --> EditorHeight ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>ScheduledAlert.vue</strong><dd><code>Stabilize SQL editor height with dynamic styles</code> </dd></summary> <hr> web/src/components/alerts/ScheduledAlert.vue <ul><li>Remove class-based height toggling.<br> <li> Add inline dynamic height style based on error state.<br> <li> Increase minimum editor height to 18rem.<br> <li> Use calc values: 100%-150px or 100%-80px.</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8435/files#diff-5e143a17ab0fa5d7817f6d9301667fb5597236f27184248c7a71728e85b8d999">+4/-2</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ |
||
|
|
6e75dc0e62 |
feat: add bulk enable/disable for alert and pipelines (#8438)
### **User description**
This adds two apis, one for bulk enable/disable of pipeline and one for
bulk enable/disable of alerts.
___
### **PR Type**
Enhancement
___
### **Description**
- Add bulk enable/disable for alerts
- Add bulk enable/disable for pipelines
- Introduce enterprise permission checks helper
- Update auth bypass for bulk endpoints
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["New models: Bulk request/response (alerts, pipelines)"]
B["Alerts: POST /v2/{org_id}/alerts/bulk/enable"]
C["Pipelines: POST /{org_id}/pipelines/bulk/enable"]
D["Enterprise permission check: check_resource_permissions"]
E["Router: register bulk endpoints"]
F["Auth: bypass for /bulk/enable paths"]
A -- "used by" --> B
A -- "used by" --> C
D -- "enforced in" --> B
D -- "enforced in" --> C
E -- "exposes" --> B
E -- "exposes" --> C
F -- "allows unauth extraction for" --> B
F -- "allows unauth extraction for" --> C
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>6
files</summary><table>
<tr>
<td><strong>auth.rs</strong><dd><code>Allow auth extractor bypass for
bulk enable endpoints</code> </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8438/files#diff-9bc2b1841504a435f66ad094f72ddbe7b7fa75e5e1557b8adbfe36f7f0592e1b">+1/-0</a>
</td>
</tr>
<tr>
<td><strong>responses.rs</strong><dd><code>Add alerts bulk enable
request/response models</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8438/files#diff-224027f90893122eea28e35778467acf1a4b5572ce612fc9bc9ec44ca8ebd9fb">+12/-0</a>
</td>
</tr>
<tr>
<td><strong>pipelines.rs</strong><dd><code>Add pipelines bulk enable
request/response models</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8438/files#diff-61bb28d7091130297c917a0530d96202fcb4b073b514410531f9fe71acfc814f">+12/-0</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Implement alerts bulk enable
endpoint with permissions</code> </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8438/files#diff-83431801d27626ef27482e67b62661f900043544a45ddf958bd027cf2fa3bd8d">+91/-2</a>
</td>
</tr>
<tr>
<td><strong>pipeline.rs</strong><dd><code>Implement pipelines bulk
enable endpoint with permissions</code></dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8438/files#diff-c69f4f94eee97ce226caddc497b2adf89e26869f2d72b0d0206dc31ab2714daf">+89/-1</a>
</td>
</tr>
<tr>
<td><strong>utils.rs</strong><dd><code>Add generic enterprise resource
permission checker</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8438/files#diff-96bb9f4a8f547c821f26c957e8505d0437095b08d2b36687531f71565d287bd6">+38/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Configuration
changes</strong></td><td><details><summary>1 files</summary><table>
<tr>
<td><strong>mod.rs</strong><dd><code>Register bulk enable endpoints in
service routes</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8438/files#diff-02556e3f515441b5d2b6bbea7829df488beac03c4cc41309a6638ae3c0e0aec6">+2/-0</a>
</td>
</tr>
</table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>openapi.rs</strong><dd><code>Expose bulk enable endpoints in
OpenAPI</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8438/files#diff-edb8ce232c0cd08366879f642788a75d99f6bab64b4c0e77391281fdb9241e90">+2/-0</a>
</td>
</tr>
</table></details></td></tr></tr></tbody></table>
</details>
___
---------
Signed-off-by: Yashodhan Joshi <yjdoc2@gmail.com>
Co-authored-by: Yashodhan Joshi <yjdoc2@gmail.com>
Co-authored-by: sai nikhil kethe <nikhil@openobserve.ai>
|
||
|
|
c77a559183 |
feat: add pipeline usage (#8295)
### **PR Type** Enhancement, Bug fix ___ ### **Description** - Add pipeline and remote usage tracking - Report usage for remote destination WAL writes - Switch pipeline channels to structured items - Fix size accounting across pipeline branches ___ ### Diagram Walkthrough ```mermaid flowchart LR A["Ingestion (Logs/Metrics)"] -- "pre-pipeline size" --> B["Usage: Pipeline"] B -- "execute pipeline" --> C["Pipeline Nodes (Condition/Function/Destination)"] C -- "local dest" --> D["Size by stream (no double count)"] C -- "remote dest WAL write" --> E["Usage: RemotePipeline"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>3 files</summary><table> <tr> <td><strong>usage.rs</strong><dd><code>Add Pipeline and RemotePipeline usage types and mapping</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8295/files#diff-b15a6adcb163dc27993c83528105a6726c44c86d8a84c5cf5d1d382c6ec8cc29">+22/-0</a> </td> </tr> <tr> <td><strong>ingest.rs</strong><dd><code>Report size before pipeline; avoid double counting</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8295/files#diff-e62118e45be183266d39ffa08491f255017954235ff0f3d6937683e314da406f">+13/-7</a> </td> </tr> <tr> <td><strong>batch_execution.rs</strong><dd><code>Add usage reporting; introduce PipelineItem; report remote WAL usage</code></dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8295/files#diff-3f6824a6eddaf1603e5cb0f1a4311ac6a45e1ffb967266ccc1f0bba944625e69">+158/-29</a></td> </tr> </table></details></td></tr><tr><td><strong>Bug fix</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>handlers.rs</strong><dd><code>Avoid ownership by cloning stream params key</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8295/files#diff-5eca8995a88fcecb6d6b8efd3c7c4496f4a96a4b060fb4ed85593574f7cf49eb">+1/-1</a> </td> </tr> </table></details></td></tr><tr><td><strong>Formatting</strong></td><td><details><summary>3 files</summary><table> <tr> <td><strong>otlp.rs</strong><dd><code>Minor formatting and flow tidy in loop</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8295/files#diff-183498d98b17ddf344cbab4da6b2d9fe89ac81112db51655c142a89023b46ef3">+1/-0</a> </td> </tr> <tr> <td><strong>json.rs</strong><dd><code>Minor formatting; prep for pipeline handling</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8295/files#diff-506987e61095a54e47f7f208dad89f9f1bce595fa6bf1ba8a7d746f2b2ff6c4a">+1/-0</a> </td> </tr> <tr> <td><strong>prom.rs</strong><dd><code>Minor formatting; prep for pipeline handling</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8295/files#diff-c4e9e1d49a2bd0fefe67684b3768c4792be63cebcf727d71a48141f5b5957b8c">+1/-0</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: sai nikhil kethe <nikhil@openobserve.ai> Co-authored-by: Shrinath Rao <shnath@openobserve.ai> |
||
|
|
1645873275 |
fix: interesting field config (#8480)
### **User description**
This provides the default tab for logs ui sidebar via config api and env
config
___
### **PR Type**
Enhancement
___
### **Description**
- Add env to set default fields tab
- Validate and expose config via status API
- Set frontend default tab based on config
- Add watcher to apply tab on toggle
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Env var ZO_LOG_PAGE_DEFAULT_FIELD_LIST"] --> B["Backend Config (Common.log_page_default_field_list)"]
B --> C["Config validation (uds|all|interesting)"]
C --> D["/api/config response (zo_config)"]
D --> E["Frontend store.state.zoConfig.log_page_default_field_list"]
E --> F["Logs UI sets default tab via setDefaultFieldTab()"]
F --> G["Watch toggle to re-apply default"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>config.rs</strong><dd><code>Introduce and validate
default field list config</code>
</dd></summary>
<hr>
src/config/src/config.rs
<ul><li>Add <code>log_page_default_field_list</code> env-config
option.<br> <li> Default to <code>uds</code>; document valid values.<br>
<li> Normalize to lowercase and validate allowed values.<br> <li>
Fallback to <code>uds</code> on invalid input.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8480/files#diff-9aeee4a74c0520daa40f9b81c7016f5b6b3254375b968dd7598e745630980d62">+14/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>mod.rs</strong><dd><code>Expose default field list in
status/config API</code>
</dd></summary>
<hr>
src/handler/http/request/status/mod.rs
<ul><li>Extend <code>ConfigResponse</code> with
<code>log_page_default_field_list</code>.<br> <li> Populate response
from common config.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8480/files#diff-ca09c9c9b020049bdbc3382c466bfcca80daac92e98760d9a9a76172abf34049">+2/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>IndexList.vue</strong><dd><code>Use config to set Logs
UI default fields tab</code>
</dd></summary>
<hr>
web/src/plugins/logs/IndexList.vue
<ul><li>Add <code>setDefaultFieldTab()</code> to pick initial tab.<br>
<li> Use backend config to select UDS vs Interesting.<br> <li> Watch
user-defined schema toggle to re-apply default.<br> <li> Remove
hardcoded default to Interesting fields.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8480/files#diff-08f058f883b659e713e606991a7ea37ae1ff016b7cccef970489ab5840dc3d09">+24/-2</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>
Co-authored-by: omkark06 <omkar@zinclabs.io>
|
||
|
|
09abc46689 |
fix: fixed searcharound and parsed unparsed sql (#8240)
### **PR Type** Enhancement, Bug fix, Tests ___ ### **Description** - Introduce streaming search composable - Add WebSocket/HTTP streaming orchestration - Implement histogram streaming and pagination - Enhance multi-stream SQL handling ___ ### Diagram Walkthrough ```mermaid flowchart LR SB["useSearchBar: query orchestration"] -- "builds request / sets method" --> SS["useSearchStream: streaming engine"] SS -- "WS/HTTP streaming" --> SWS["useSearchWebSocket/useStreamingSearch"] SS -- "histogram logic" --> HG["useHistogram"] SS -- "fields/columns" --> SF["useStreamFields"] SB -- "partitions/page-count (HTTP)" --> PAG["usePagination"] SS -- "state + URL updates" --> ST["searchState/logsUtils"] SB -- "functions/actions" --> ACT["useFunctions/useActions"] ``` <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>25 files</summary><table> <tr> <td><strong>useSearchStream.ts</strong><dd><code>New streaming search composable with WS/HTTP handlers</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-0b7e910195d1ec4b1301973bd2f4193e1e23442103f69a9fbd189d3f78547014">+2171/-0</a></td> </tr> <tr> <td><strong>useSearchBar.ts</strong><dd><code>Orchestrate search, partitions, cancel, and method selection</code></dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-489bda221a164cbee8d66aaf178acb4e0d8a860dbdf39558804fc32c9efd71e8">+1351/-0</a></td> </tr> <tr> <td><strong>logs.ts</strong><dd><code>Add logs-related TypeScript interfaces</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-637857fa918f47ffb02ebfc8a35b124001ef4f65fd180c467f0f153382d2dc76">+89/-0</a> </td> </tr> <tr> <td><strong>index.ts</strong><dd><code>Export logs interfaces from barrel file</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-108f7ecc761a491fd64530704bf44f21473916e1d2ae495376dc996206104088">+1/-0</a> </td> </tr> <tr> <td><strong>useStreamFields.ts</strong><dd><code>Stream fields extraction and grid columns utilities</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-14f575947dcdd7aa0e05646be62ed15b4651a25154f679a3a08ce1bc2252acec">+1105/-0</a></td> </tr> <tr> <td><strong>usePagination.ts</strong><dd><code>Partition-aware pagination and data fetching helpers</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-74277c3b3b1f9b684913ac55ce19c72b29b477021b0ff32af44f8191b17f24a1">+869/-0</a> </td> </tr> <tr> <td><strong>logsUtils.ts</strong><dd><code>SQL parsing helpers, query transforms, and tracing</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-c8550678e2f4da95dd54d03d9893f6bfff2061460c4a2f2c324fdd3b1d392a52">+735/-0</a> </td> </tr> <tr> <td><strong>useHistogram.ts</strong><dd><code>Histogram generation, skeleton, and multi-stream support</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-4d467d6778569f239f96f3af9ec30214aa8b029892bf40a0aa038dfbb73eca6e">+609/-0</a> </td> </tr> <tr> <td><strong>searchState.ts</strong><dd><code>Centralized reactive logs search state</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-c0ac4f131ad64edd2ed811e183bb570be2f38d58c9ed958d093457a51280ec34">+412/-0</a> </td> </tr> <tr> <td><strong>constants.ts</strong><dd><code>Add logs module constants</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-70282396b9397710380ad150da4428630b1b6e4a41b40d206d43cd2eb7f3b653">+279/-0</a> </td> </tr> <tr> <td><strong>searchAround.ts</strong><dd><code>Search-around utilities for contextual queries</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-0090387d8955180e33b700e25de27dd8356a3656449a8bae3442ab476dc50494">+269/-0</a> </td> </tr> <tr> <td><strong>logsVisualization.ts</strong><dd><code>Visualization helpers for logs/histogram</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-5913cd8ca0e98529736da0801f08bf2cd1d861ad01442fbf628d1925ed4c87a1">+46/-0</a> </td> </tr> <tr> <td><strong>useLogs.ts</strong><dd><code>Integrate new composables and streaming flow</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-1040f61354f92711e0e77ed4e9bfa15586d45a94c7e2ab06cc37372068030e7b">+598/-7006</a></td> </tr> <tr> <td><strong>useStreams.ts</strong><dd><code>Stream fetching support for multi-stream scenarios</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-a083369344f022cdf8d4f536719179b1d920369e33e2e26234e70dd36d151a7c">+50/-42</a> </td> </tr> <tr> <td><strong>useSuggestions.ts</strong><dd><code>Suggestions aligned with SQL/streams changes</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-6d2ecd5b90970ea8c8f5d35c5928a2cf8bf0ed14af700db0202759158bfbbf9d">+56/-25</a> </td> </tr> <tr> <td><strong>Index.vue</strong><dd><code>Wire UI to streaming search lifecycle</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-0323c3da69b369843c5d72bf4df5b00ca6b5147192a213baf331659ecf92af62">+104/-61</a></td> </tr> <tr> <td><strong>SearchBar.vue</strong><dd><code>UI updates for new search orchestration</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-81893de4edf186b0556f610acb280c87baa2ffe67d3b48a60a866094c7635baf">+41/-27</a> </td> </tr> <tr> <td><strong>SearchHistory.vue</strong><dd><code>Adjust to new state and tracing</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-9dd167bd5e272b2057f53c16b905047eec00655a3552daad240a964d67a6f56d">+6/-2</a> </td> </tr> <tr> <td><strong>SearchResult.vue</strong><dd><code>Display streamed hits, histogram, pagination</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-5e65533aa4754bb6d0074fda18ffc1ecacded3b9ca6bc28a161c3f6b12f20195">+14/-8</a> </td> </tr> <tr> <td><strong>IndexList.vue</strong><dd><code>Support streaming responses and errors</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-08f058f883b659e713e606991a7ea37ae1ff016b7cccef970489ab5840dc3d09">+14/-10</a> </td> </tr> <tr> <td><strong>DetailTable.vue</strong><dd><code>Column updates based on streamed fields</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-80552b5d25fa6cef9fbbe430b1865d761c4b132284c2d2175afceea8cbabc8c7">+5/-2</a> </td> </tr> <tr> <td><strong>JsonPreview.vue</strong><dd><code>Handle streamed hit rendering</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-3985073134d35ff074742944b114d0905524038b42e6d2ac887fef2c8436fb16">+2/-2</a> </td> </tr> <tr> <td><strong>SearchSchedulersList.vue</strong><dd><code>Align scheduler with new search flow</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-0c0a4097c53f07712d35562b1336602bf24faddedab77a9f5717f5582dcac2f1">+2/-2</a> </td> </tr> <tr> <td><strong>TransformSelector.vue</strong><dd><code>Transform selection wired to query transforms</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-0037d8dd9cfbacc26309b26e98ae953e7ccbd0891ac2fd01c6314ebd7eed9d2c">+5/-2</a> </td> </tr> <tr> <td><strong>FunctionSelector.vue</strong><dd><code>Functions integration with streaming search</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-11d9577516700b94b5f3325e77214d0d886473e690db8c9ea981613c9fb89b68">+2/-2</a> </td> </tr> </table></details></td></tr><tr><td><strong>Miscellaneous</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>useLogs_original.ts.original</strong><dd><code>Preserve original composable for reference</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8240/files#diff-00d4815f6d83c48def131ba94f5131e6cae436bf949cc8abf9b8beacdb0aaf7f">+7033/-0</a></td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: omkark06 <omkar@zinclabs.io> Co-authored-by: Sai Nikhil <nikhil@openobserve.ai> |
||
|
|
913c41c04e | fix: general management UI in sync (#8443) | ||
|
|
7f3ee74085 | fix: o2 ui improvements latest (#8391) | ||
|
|
5fc1944621 |
test: add camelCase tests for dashboard (#8423)
### **PR Type**
Tests, Bug fix
___
### **Description**
- Add camelCase custom SQL UI tests
- Fix table data validation logic
- Validate line and table chart rendering
___
### Diagram Walkthrough
```mermaid
flowchart LR
UI["Dashboard UI tests"] -- "add camelCase SQL cases" --> Tests["Playwright specs"]
Renderer["PanelSchemaRenderer table check"] -- "fix grouping logic" --> Validation["Accurate data validation"]
Tests -- "verify table & line charts" --> Charts["Rendered charts without no-data"]
```
<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>PanelSchemaRenderer.vue</strong><dd><code>Fix table
data validation logical grouping</code>
</dd></summary>
<hr>
web/src/components/dashboards/PanelSchemaRenderer.vue
<ul><li>Correct parentheses in table branch<br> <li> Ensure x/y alias
checks grouped logically</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8423/files#diff-e5376e7e77bf3aaf6590c2522d8c2dbffcc95a8006ae0d6dc0040a37825367d6">+2/-2</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>dashboard.spec.js</strong><dd><code>Add camelCase
custom SQL UI tests</code>
</dd></summary>
<hr>
tests/ui-testing/playwright-tests/dashboards/dashboard.spec.js
<ul><li>Add test for camelCase in table SQL<br> <li> Add test for
camelCase in line SQL<br> <li> Assert data presence and chart
rendering<br> <li> Cleanup dashboards after tests</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8423/files#diff-d0fa0042783dc109334b05266edce228bad97adcb568dd1e447920596238e9b4">+136/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: ktx-vaidehi <vaidehi.akhani@kiara.tech>
|
||
|
|
6afe046998 |
fix: In logs append results if partition results are chunked (#8385)
### **User description**
If we receive chunked hits of a single partition, then append the hits.
___
### **PR Type**
Bug fix
___
### **Description**
- Track chunks per partition for hits
- Append hits when partition is chunked
- Replace hits only on first partition
- Refactor partition map to structured object
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["WebSocket search responses"] -- "metadata" --> B["Init/Increment partition"]
B -- "set chunks[partition]=0" --> C["Track chunks per partition"]
A -- "hits" --> D["Increment chunk count"]
D -- "is chunked or partition>1?" --> E["Append hits"]
D -- "else" --> F["Replace hits"]
```
<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>useLogs.ts</strong><dd><code>Chunk-aware partition
tracking and hit appending</code>
</dd></summary>
<hr>
web/src/composables/useLogs.ts
<ul><li>Introduce <code>SearchPartition</code> with
<code>partition</code> and <code>chunks</code>.<br> <li> Track chunk
counts per partition per <code>traceId</code>.<br> <li> Append hits when
single partition has multiple chunks.<br> <li> Update conditions to use
<code>partition</code> field instead of number map.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8385/files#diff-1040f61354f92711e0e77ed4e9bfa15586d45a94c7e2ab06cc37372068030e7b">+29/-10</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
171bea35a6 |
fix: restrict select * query for visualization (#8302) (#8368)
### **User description** - #8338 Resolved Issues: - Implemented a check for `ZO_QUICK_MODE_ENABLED` before enabling quick mode on logs for visualization toggle. 1. If `ZO_QUICK_MODE_ENABLED=true`, quick mode is enabled when the query is `select *`. 2. Otherwise, `select *` query is always permitted in visualization mode. - Restricted the use of `SELECT *` queries in visualization mode. - As API call triggered on changing the chart type, such changes are now disallowed for `SELECT *` queries. ___ ### **PR Type** Bug fix, Enhancement ___ ### **Description** - Block SELECT * in visualization when quick mode on - Respect quick-mode config before auto-enabling - Centralize SELECT * detection in sqlUtils - Prevent chart-type changes for SELECT * queries ___ ### Diagram Walkthrough ```mermaid flowchart LR A["sqlUtils.ts: isSimpleSelectAllQuery()"] -- "imported by" --> B["logs/Index.vue"] A -- "imported by" --> C["VisualizeLogsQuery.vue"] B -- "auto-enable quick mode only if config true" --> D["handleQuickModeChange()"] B -- "block run for SELECT * when quick mode" --> E["handleRunQueryFn()"] C -- "validate on chart type change" --> F["handleChartTypeChange()"] ``` <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>sqlUtils.ts</strong><dd><code>Add reusable SELECT * query detector</code> </dd></summary> <hr> web/src/utils/query/sqlUtils.ts <ul><li>Add <code>isSimpleSelectAllQuery</code> utility with normalization.<br> <li> Export function for reuse across components.</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8368/files#diff-dde40e8fcb5c37b06c011ede08922c44a3c025682fbc341aee97ba046b73a0e3">+17/-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>Enforce quick mode/config and block SELECT * runs</code> </dd></summary> <hr> web/src/plugins/logs/Index.vue <ul><li>Import shared <code>isSimpleSelectAllQuery</code>.<br> <li> Remove local duplicate detector.<br> <li> Auto-enable quick mode only if config enabled.<br> <li> Block visualize run for SELECT * when quick mode enabled.</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8368/files#diff-0323c3da69b369843c5d72bf4df5b00ca6b5147192a213baf331659ecf92af62">+32/-16</a> </td> </tr> <tr> <td> <details> <summary><strong>VisualizeLogsQuery.vue</strong><dd><code>Validate chart type changes against SELECT * queries</code> </dd></summary> <hr> web/src/plugins/logs/VisualizeLogsQuery.vue <ul><li>Replace v-model with explicit <code>selectedChartType</code> prop handling.<br> <li> Add <code>handleChartTypeChange</code> validating against SELECT * when quick mode.<br> <li> Import shared <code>isSimpleSelectAllQuery</code> and logs context.</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8368/files#diff-979b01d943d58c5d70faeeac5948b7f02f0b2392a12b84ef07ba7f7393ab0261">+38/-2</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: ktx-akshay <akshay.patil@kiara.tech> |
||
|
|
c68cbcb8da |
fix: update table chart no data validation logic (#8422)
### **PR Type**
Bug fix
___
### **Description**
- Fix table chart no-data validation
- Separate table logic from other charts
- Ensure presence check on x/y aliases
- Prevent false negatives with single row
___
### Diagram Walkthrough
```mermaid
flowchart LR
Renderer["PanelSchemaRenderer.vue"]
Charts["Non-table charts validation"]
Table["Table-specific validation"]
Metric["Metric validation (unchanged)"]
Renderer -- "refine validation" --> Charts
Renderer -- "add distinct logic" --> Table
Renderer -- "keep existing flow" --> Metric
```
<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>PanelSchemaRenderer.vue</strong><dd><code>Refine table
chart data validation logic</code>
</dd></summary>
<hr>
web/src/components/dashboards/PanelSchemaRenderer.vue
<ul><li>Remove table from generic chart validation branch.<br> <li> Add
table-specific data presence checks.<br> <li> Allow single-row tables
with any x/y value.<br> <li> Keep gauge and others using stricter alias
checks.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8422/files#diff-e5376e7e77bf3aaf6590c2522d8c2dbffcc95a8006ae0d6dc0040a37825367d6">+10/-2</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
5b81317d71 |
fix: dashboard ensure case-insensitive comparison for stream field validation for camelCase (#8424)
### **PR Type**
Bug fix
___
### **Description**
- Make stream field validation case-insensitive
- Prevent false errors for camelCase vs snake_case
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Query field names"] -- "toLowerCase()" --> B["Normalized names"]
C["Available stream fields"] -- "toLowerCase()" --> D["Normalized fields"]
B -- "compare" --> D
E["Errors array"] -- "only push if unmatched" --> F["Accurate validation"]
```
<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>convertDataIntoUnitValue.ts</strong><dd><code>Case-insensitive
comparison for stream field validation</code>
</dd></summary>
<hr>
web/src/utils/dashboard/convertDataIntoUnitValue.ts
<ul><li>Compare field names using toLowerCase().<br> <li> Avoid mismatch
when cases differ (e.g., camelCase).<br> <li> Update filter predicate
for custom X field errors.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8424/files#diff-14c6fe442ef231566ec411f9e0262cdd24ec912fc67b9154eec743282ab7211a">+4/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: ktx-akshay <akshay.patil@kiara.tech>
|
||
|
|
6479cb8f5a |
fix: axisvalue issue on go to logs page drilldown #8404 (#8405)
### **PR Type**
Bug fix
___
### **Description**
- Add `__axisValue` to drilldown payload
- Fallback to name when value missing
- Improve logs page drilldown accuracy
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["Drilldown event params"] --> B["Extract value/name"]
B --> C["Set __axisValue from value[0]"]
B --> D["Fallback to name if missing"]
C --> E["Build drilldown payload"]
D --> 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>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>PanelSchemaRenderer.vue</strong><dd><code>Add robust
axis value to drilldown data</code>
</dd></summary>
<hr>
web/src/components/dashboards/PanelSchemaRenderer.vue
<ul><li>Add <code>__axisValue</code> to the drilldown data object.<br>
<li> Use first element of <code>value</code> array when available.<br>
<li> Fallback to <code>name</code> when <code>value[0]</code> is
absent.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8405/files#diff-e5376e7e77bf3aaf6590c2522d8c2dbffcc95a8006ae0d6dc0040a37825367d6">+3/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
ad23d41b56 |
fix: handle empty hits with streaming aggs #8411 (#8412)
### **PR Type**
Bug fix
___
### **Description**
- Skip state updates for empty streaming hits
- Prevent overwriting data with empty arrays
- Apply fix across loader code paths
___
### Diagram Walkthrough
```mermaid
flowchart LR
Source["searchRes (streaming_aggs)"] -- "hits length > 0 ?" --> Check["Check hits length"]
Check -- "Yes" --> Update["Update state.data[currentQueryIndex]"]
Check -- "No" --> Skip["Skip state 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>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>usePanelDataLoader.ts</strong><dd><code>Guard state
updates against empty streaming hits</code>
</dd></summary>
<hr>
web/src/composables/dashboard/usePanelDataLoader.ts
<ul><li>Guard assignments with hits length checks.<br> <li> Avoid
replacing state when hits are empty.<br> <li> Apply checks in three
streaming_aggs branches.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8412/files#diff-5a42e9493a7bcd722b88e61fd38883c4f61001bc9cafa399f65f8eafda3aace9">+16/-7</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
---------
Co-authored-by: omkark06 <omkar@zinclabs.io>
|
||
|
|
ab156bad8d |
fix: changed code-mirror to monaco-editor (#8047)
### **PR Type** Enhancement, Bug fix ___ ### **Description** - Replace CodeMirror with Monaco editor - Add Monaco autocomplete and markers - Update build to bundle Monaco - Remove re-render key from logs UI ___ ### Diagram Walkthrough ```mermaid flowchart LR CM["CodeMirror-based editor"] -- Replaced by --> ME["Monaco editor integration"] ME -- Autocomplete/Markers --> UX["Improved editor UX"] Build["Vite config"] -- Add monaco plugin/chunks --> Bundle["Optimized bundles"] UI["Logs and SearchBar"] -- Minor fixes/cleanup --> Stability["Reduced re-renders"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>3 files</summary><table> <tr> <td><strong>CodeQueryEditor.vue</strong><dd><code>Replace CodeMirror with Monaco, add features</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8047/files#diff-52a36bf2d64e590036ed1c1f89b07a4a6b971a84e4fae9b4272cbc69d63f9bef">+369/-980</a></td> </tr> <tr> <td><strong>Index.vue</strong><dd><code>Cleanups, visualization flow, formatting tweaks</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8047/files#diff-0323c3da69b369843c5d72bf4df5b00ca6b5147192a213baf331659ecf92af62">+105/-78</a></td> </tr> <tr> <td><strong>SearchBar.vue</strong><dd><code>Editor placeholder, menus, toggle guards</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8047/files#diff-81893de4edf186b0556f610acb280c87baa2ffe67d3b48a60a866094c7635baf">+148/-82</a></td> </tr> </table></details></td></tr><tr><td><strong>Dependencies</strong></td><td><details><summary>3 files</summary><table> <tr> <td><strong>CodeQueryEditorDarkTheme.ts</strong><dd><code>Remove legacy CodeMirror dark theme</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8047/files#diff-4ee0166b549a9a7d6a91e72d546dffd2d031b0ad6015ef5f735b67742e13c66d">+0/-230</a> </td> </tr> <tr> <td><strong>CodeQueryEditorLightTheme.ts</strong><dd><code>Remove legacy CodeMirror light theme</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8047/files#diff-4e80117fff859d80b9dde6898e8026f2c2514c43244e48e2b639527409d38682">+0/-246</a> </td> </tr> <tr> <td><strong>package.json</strong><dd><code>Remove CodeMirror deps; add Monaco and plugin</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8047/files#diff-b861012a5dd72b8a9f3281b7cf09f5a779c98569d040b1bbc1db50f1b15e7cce">+2/-16</a> </td> </tr> </table></details></td></tr><tr><td><strong>Configuration changes</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>vite.config.ts</strong><dd><code>Integrate Monaco plugin and chunking</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8047/files#diff-9430906049744cbbfe5d0b382b2466843a42cfebf755ff86fec850b0712258ef">+25/-15</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: ktx-abhay <abhay.padamani@kiara.tech> Co-authored-by: Bhargav <BJP232004@GMAIL.COM> |
||
|
|
8ba5bac002 |
fix: dashboard camelCase issue in query (#8407)
### **PR Type**
Enhancement
___
### **Description**
- Add `getDataValue` for case-insensitive access
- Refactor data utils to use accessor
- Improve robustness of chart/table conversions
- Handle missing labels and keys safely
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["aliasUtils.getDataValue"] -- "import and use" --> B["convertSQLData"]
A -- "import and use" --> C["convertTableData"]
A -- "import and use" --> D["convertGeoMapData"]
A -- "import and use" --> E["convertMapsData"]
A -- "import and use" --> F["convertSankeyData"]
B -- "robust key lookup" --> G["Charts options"]
C -- "robust key lookup" --> H["Table columns/rows"]
```
<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>aliasUtils.ts</strong><dd><code>Introduce
case-insensitive data accessor</code>
</dd></summary>
<hr>
web/src/utils/dashboard/aliasUtils.ts
<ul><li>Add <code>getDataValue</code> helper for alias lookup<br> <li>
Falls back to lowercase key match</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8407/files#diff-5edee3a79266ff067f9767615a887375f369c6006c4c02bb46a9b6006969e284">+18/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>convertGeoMapData.ts</strong><dd><code>Geo map uses
case-insensitive field access</code>
</dd></summary>
<hr>
web/src/utils/dashboard/convertGeoMapData.ts
<ul><li>Use <code>getDataValue</code> for lat/long/weight access<br>
<li> Validate numeric values via accessor<br> <li> Build series data
with accessor</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8407/files#diff-a09221c91ab7a83aee9ba1d2ad0d5129bc5e2fb45960676677fa35a0f9d3e640">+14/-9</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>convertMapsData.ts</strong><dd><code>Choropleth data
access via accessor</code>
</dd></summary>
<hr>
web/src/utils/dashboard/convertMapsData.ts
<ul><li>Use <code>getDataValue</code> for country and value<br> <li>
Ensure mapping works regardless of alias casing</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8407/files#diff-5f61730637542ed11dfb6ef6e4bc72480289b16636243c98d1b628a97cbdfa55">+6/-2</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>convertSQLData.ts</strong><dd><code>SQL conversion
refactored to accessor-based reads</code>
</dd></summary>
<hr>
web/src/utils/dashboard/convertSQLData.ts
<ul><li>Replace direct key reads with <code>getDataValue</code><br> <li>
Fix time-series detection and filling logic<br> <li> Safe label access
with optional chaining<br> <li> Improve aggregation and uniqueness
checks</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8407/files#diff-88c0e865040a20b2c8bb7d77e7f6bd187a5b07c1645c120223bc9d59603752c3">+50/-30</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>convertSankeyData.ts</strong><dd><code>Sankey
conversion uses case-insensitive access</code>
</dd></summary>
<hr>
web/src/utils/dashboard/convertSankeyData.ts
<ul><li>Use <code>getDataValue</code> for source/target/value<br> <li>
Filter validity via accessor</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8407/files#diff-5d71a65195d723600a75f7c378badd487236fa8d1b93f8c3ee4a9f214945719e">+14/-6</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>convertTableData.ts</strong><dd><code>Table conversion
uses robust accessor and mappings</code>
</dd></summary>
<hr>
web/src/utils/dashboard/convertTableData.ts
<ul><li>Sample and read fields with <code>getDataValue</code><br> <li>
Case-insensitive column/units/color config mapping<br> <li> Safer label
and timestamp formatting<br> <li> Transpose logic uses accessor</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8407/files#diff-a672094c46e697ee7b7a3949a901cc1f7f88ec06cddaf67370474b508d5b0960">+29/-10</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
9bdcc8d3f8 |
fix: removed the check for show add destination button (#8402)
### **PR Type**
Bug fix
___
### **Description**
- Enable Add Destination button always
- Remove templates-length disable condition
___
### Diagram Walkthrough
```mermaid
flowchart LR
BTN["Add Destination Button"] -- remove disable binding --> ENABLED["Always enabled"]
```
<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>PipelinesDestinationList.vue</strong><dd><code>Remove
conditional disable on Add button</code>
</dd></summary>
<hr>
web/src/components/alerts/PipelinesDestinationList.vue
<ul><li>Removed <code>:disable="!templates.length"</code> from Add
button.<br> <li> Button now clickable regardless of templates
array.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8402/files#diff-088c66f5a34e73a5350a794a772e5d905262277337c937dd36f4295072203ebf">+0/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
Co-authored-by: sai nikhil kethe <nikhil@openobserve.ai>
|
||
|
|
976fced81a |
fix: UI support for uuid-v7 timestamp traceid's in traces (#8286)
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Auto-adjust time range from trace bounds
- Sync URL params with trace start/end
- Expose method to update SearchBar datetime
- Minor cleanup and inline documentation
___
### Diagram Walkthrough
```mermaid
flowchart LR
query["Trace query result"] --> check["Has single hit with start/end?"]
check -- "yes" --> compute["Compute seconds (floor/ceil)"]
compute -- "Index.vue" --> updateSB["SearchBar.updateNewDateTime()"]
compute -- "TraceDetails.vue" --> urlUpdate["Update URL from/to"]
urlUpdate --> detailsFetch["Fetch trace details with new range"]
```
<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>Auto-update time range
after single trace query</code>
</dd></summary>
<hr>
web/src/plugins/traces/Index.vue
<ul><li>Detect single-trace queries with bounds.<br> <li> Update
SearchBar datetime via new helper.<br> <li> Add
<code>updateNewDateTime</code> wrapper with docs.<br> <li> Remove
redundant filter expansion call.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8286/files#diff-952e26660e4d6aadd292ea2ef7b314e139a4f516d0b3931e20d42d6394700d07">+25/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>SearchBar.vue</strong><dd><code>Expose API to
programmatically set absolute datetime</code>
</dd></summary>
<hr>
web/src/plugins/traces/SearchBar.vue
<ul><li>Add <code>updateNewDateTime</code> method to set absolute
range.<br> <li> Ensure datetime ref updates consistently.<br> <li> Minor
formatting and comments.<br> <li> Export new method from setup.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8286/files#diff-43405981dab6359bdfba1ef176d74d3c557fc349f98cf6b1662fd4a021448eb1">+14/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Bug fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>TraceDetails.vue</strong><dd><code>Sync URL and fetch
window with trace time bounds</code>
</dd></summary>
<hr>
web/src/plugins/traces/TraceDetails.vue
<ul><li>Derive start/end from trace meta when available.<br> <li>
Normalize to seconds and update URL query.<br> <li> Use updated range
for details fetch.<br> <li> Add <code>updateUrlQueryParams</code> helper
with docs.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8286/files#diff-bc7fe6b6339ee2cde6494c0982d4b860847447e79f7431f07d598e0446df06f2">+31/-2</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
7bf9770b9a |
fix: sorting issue in query management page (#8305)
### **User description**
This PR fixes the issue that is related to sorting doesn't work properly
for more number of records for execution duration and query range
___
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Centralize duration utilities in `zincutils`
- Fix sorting by using raw seconds
- Render durations via table slots
- Improve query range formatting
___
### Diagram Walkthrough
```mermaid
flowchart LR
utils["zincutils.ts: add time helpers"] -- "import/use" --> runningList["RunningQueriesList.vue: slot-based render"]
utils -- "import/use" --> summaryList["SummaryList.vue: slot-based render"]
runningQueries["RunningQueries.vue: data shaping"] -- "use raw values" --> tables["Tables sort correctly"]
```
<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>zincutils.ts</strong><dd><code>Add shared time/duration
utilities</code>
</dd></summary>
<hr>
web/src/utils/zincutils.ts
<ul><li>Add <code>localTimeToMicroseconds</code> helper.<br> <li> Add
<code>getDuration</code> returning seconds and formatted.<br> <li>
Export these utilities for reuse.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8305/files#diff-d3d59688cccdcc6c84ebe88b698c6910030abecc3125f4c0ef81b0df023699ba">+23/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>RunningQueriesList.vue</strong><dd><code>Render
durations via slots using utils</code>
</dd></summary>
<hr>
web/src/components/queries/RunningQueriesList.vue
<ul><li>Add table slots to format <code>duration</code> and
<code>queryRange</code>.<br> <li> Import and expose
<code>getDuration</code> and <code>durationFormatter</code>.<br> <li>
Display duration from <code>created_at</code> via util.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8305/files#diff-eb568491630bd1b80935cc0b02498d40274ede0e5be78593a0b49ca17fbbe627">+13/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>SummaryList.vue</strong><dd><code>Format summary
durations with table slots</code>
</dd></summary>
<hr>
web/src/components/queries/SummaryList.vue
<ul><li>Add slots to format <code>duration</code> and
<code>queryRange</code>.<br> <li> Import and expose
<code>durationFormatter</code>.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8305/files#diff-d844d0a406c5fe3b58bc254f838bfa51352721174666ebd43bbf008aa6db6f5f">+12/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Bug fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>RunningQueries.vue</strong><dd><code>Use raw values and
shared duration util</code>
</dd></summary>
<hr>
web/src/components/queries/RunningQueries.vue
<ul><li>Import <code>getDuration</code> from utils.<br> <li> Keep
<code>duration</code> and <code>queryRange</code> as raw values.<br>
<li> Remove local <code>getDuration</code> impl.<br> <li> Adjust
pagination code formatting.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8305/files#diff-6f0e18626a986d934c08c368ac383179c56bfcd914a27619ba748f43629c926b">+6/-14</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
52e11d3ee7 |
fix: o2 UI table improvements (#8033)
### **User description** This PR improves the following `Fix: checkboxes as per design for alert list Fix: general setting, platform settings modified as per design Fix: numeric input in general settings as per design Fix: introduced all variables according to design Fix: secondary button, primary button, tabs, search input added Fix: another major change related to tabs, sticky header and footer table Fix: light mode q-toggle redesign done for both lg and small Fix: pipeline list as per new design Fix: added removed padding at the child level for pipeline editor Fix: function list table as per design changed Fix: made filtering rows based upon filter query this is done to avoid the issue of the table showing some height when the filter is applied and there are no results Fix: enrichment table list updated with latest design Fix: added border to the last row when having less rows when filter is applied or not applied Fix: function list bottom header to take functions Fix: function list header as per design Fix: stream list table as per design Fix: report list table as per new design Fix: users list table changed as per design Fix: added filter check for height so to avoid the issue of the table showing some height when the filter is applied and there are no results Fix: service account list table changed as per design Fix: organization list table updated as per design Fix: user groups as per design with app table additional props Fix: app roles tables list updated as per design Fix: made group roles virtual scroll to false Fix: group users, roles, service accounts tables as per new design system Fix: search icon in IAM tables as per design Fix: search history table update as per new design Fix: search scheduler list table updated as per design Fix: space between app tabs and search in log stream page Fix: pagination logic modified due to pagination component introduced Fix: aggregation to streaming aggregation label change in management page Fix: change sub text for streaming aggregation in management page Fix: q-toggle for dark mode Fix: report list added additional checks Fix: alert destination table as per design Fix: destination list, template list tables updated as per design Fix: cipher keys table as per design Fix: regex pattern list updated as per design Fix: search input placeholder text fixed Fix: per page options consistent with streams page Fix: import and pipeline editor buttons changed as per design Fix: added primary and secondary buttons in all listing pages Fix: increased pipeline editor height Fix: add stream in pipeline should not have more space in x direction Fix: secondary, primary, and delete buttons modified in pipeline nodes Fix: IAM add pages in sync Fix: introduce toggle button in the entire application Fix: alert folder list made sticky top title and search input Fix: import alert primary and secondary button changed Fix: action scripts table modified as per design Fix: add action script file changed Fix: add enrichment table submit and cancel at start Fix: add stream submit and cancel buttons at start Fix: create report changed as per new design Fix: real user monitoring get started button Fix: data source page reset rum token, reset token to primary button Fix: add destination button position changed Fix: add cipher key UI modified according to add report Fix: organization settings toggle changed Fix: home view layout spacing fixed Fix: remove negative bg for delete button` ___ ### **PR Type** Enhancement ___ ### **Description** - Adopt new design system across tables - Introduce uniform sticky headers/footers - Replace filters with tabs and styled inputs - Improve pagination, per-page options ___ ### Diagram Walkthrough ```mermaid flowchart LR design["New design tokens/components"] tables["Tables (Lists across app)"] headers["Sticky headers/footers"] filters["Tabs + styled search"] pagination["Unified pagination options"] ux["Consistent UX across themes"] design -- applied to --> tables tables -- enable --> headers tables -- replace --> filters tables -- standardize --> pagination tables -- results in --> ux ``` <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>19 files</summary><table> <tr> <td><strong>LogStream.vue</strong><dd><code>Header redesign, tabs, sticky table, pagination</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-56f4223b74568c10bc305741cc9fc3a8830184a251b4eaa6a2649033bc6200e3">+82/-95</a> </td> </tr> <tr> <td><strong>AlertList.vue</strong><dd><code>Header styling, search/toggle redesign, sticky table</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-be3e41b823e163b226ffc270d95cc4981e59c600851e4e0d10ee5e4ee994ac8e">+59/-62</a> </td> </tr> <tr> <td><strong>ActionScipts.vue</strong><dd><code>Styled header/search, computed filtering, sticky table</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-6cfeff0b8dbbaba52b13ba67d6f4f8fdc3c58996eccdfae2ad0db2e7aee20f08">+71/-65</a> </td> </tr> <tr> <td><strong>User.vue</strong><dd><code>New header/search, client filtering, footer pagination</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-e973c2a665f9b27b94673ba64cc5b23650300836a727a2e07673c8e26305aee5">+63/-53</a> </td> </tr> <tr> <td><strong>HomeView.vue</strong><dd><code>Card layout spacing and grouping tweaks</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-9af441af191d3254ef5f9db603dca75486de7638cda41a3c050e7b3c33d68280">+110/-109</a></td> </tr> <tr> <td><strong>ServiceAccountsList.vue</strong><dd><code>New header/search, client filter, sticky table/footer</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-3afe835bcfbec3fda2e9550850c29581092ee0717e7dd8de8888e774a0048d24">+63/-59</a> </td> </tr> <tr> <td><strong>General.vue</strong><dd><code>Platform settings UX revamp with GroupHeader</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-a191d0eb2843df5efa7f18d411a216e86558b49f7b6cdfa9501d69414b933fc3">+144/-63</a></td> </tr> <tr> <td><strong>PipelinesList.vue</strong><dd><code>Header/tabs/search restyle, sticky table, export button</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-85e3ef322f3eea0fc6d74d89431ba338a1153cb82ee06bef0f7c5f439c04267d">+52/-31</a> </td> </tr> <tr> <td><strong>EnrichmentTableList.vue</strong><dd><code>Header/search restyle, client filtering, sticky table</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-6a29e253f59405d3c0f756dba36afd7483f10ad86927cbbc3348ede6372c3077">+45/-38</a> </td> </tr> <tr> <td><strong>TemplateList.vue</strong><dd><code>Header/search/buttons restyle, sticky table/footer</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-7df66364d7d69a26cfa25cbc555d0e090c2f73e51c8386d9b0435bae4412564c">+43/-43</a> </td> </tr> <tr> <td><strong>FunctionList.vue</strong><dd><code>Header/search restyle, client filtering, sticky table</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-6ff9af50a1597504b7f0dca91e61cf30c800b4a17b4be2ed2c3a4f7a7b2d7068">+49/-39</a> </td> </tr> <tr> <td><strong>ReportList.vue</strong><dd><code>Header/tabs/search restyle, sticky table/footer, filters</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-f7d700f7e67fbaba3c58ab5d2c614925db743101828214445ce9dae35dc29067">+38/-32</a> </td> </tr> <tr> <td><strong>ExternalDestination.vue</strong><dd><code>Form controls restyle, large toggles, delete node dialog</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-7ed6a9ef676d7d6db5440d4157512f731bad58716c351ca39015125a8a9d2df5">+74/-15</a> </td> </tr> <tr> <td><strong>AlertsDestinationList.vue</strong><dd><code>Header/search/buttons restyle, sticky table/footer</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-e9d05ba6c071c0e2f5d9ef7acdef757f79910abd6897b29e27b069a10d4ba8de">+43/-41</a> </td> </tr> <tr> <td><strong>GroupHeader.vue</strong><dd><code>New shared section header component</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-63133a31279f4f8d5631b5d33f5b12927f9dc6616b714e8c0ffc727696abbc2b">+64/-0</a> </td> </tr> <tr> <td><strong>_variables.scss</strong><dd><code>Introduce/adjust design tokens and variables</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-b3e37ee00c17b89ad1177c5592504277aa645b374095c065ea8b3782df5e89a2">+289/-0</a> </td> </tr> <tr> <td><strong>RegexPatternList.vue</strong><dd><code>Apply unified table/header/search styles</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-524927acd9f5bb07b71bfac489e747470108574e21a6dde63ea7c1f219cea853">+62/-56</a> </td> </tr> <tr> <td><strong>CipherKeys.vue</strong><dd><code>Apply unified table/header/search styles</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-950b715cff2c964d8542512692030c370733b57d698abf40e1dcb3cce2cfaf7a">+45/-45</a> </td> </tr> <tr> <td><strong>PipelinesDestinationList.vue</strong><dd><code>Apply unified table/header/search styles</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-088c66f5a34e73a5350a794a772e5d905262277337c937dd36f4295072203ebf">+41/-39</a> </td> </tr> </table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>TemplateList.spec.ts</strong><dd><code>Update tests to match new UI structure</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-83d9701e7e491fb1ac667d1e1833ec58153c04ad844560778d06d50b85bd4bc6">+0/-20</a> </td> </tr> </table></details></td></tr><tr><td><strong>Additional files</strong></td><td><details><summary>54 files</summary><table> <tr> <td><strong>alertTemplatesPage.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-f4ebd248b2140051e74dbbbd1aabe344f01c80704ce5857e9c28a04350e018f3">+17/-17</a> </td> </tr> <tr> <td><strong>alertsPage.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-79ee01d6d7f145f19207b93b87143b545a1188cfc6a82bc8c45fecfbf68f8a1d">+5/-5</a> </td> </tr> <tr> <td><strong>dashboard-chart.js</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-573a312576fce62d8e14f2bbb5f9b7d9a552d746304dce3d79862edddd24de76">+3/-0</a> </td> </tr> <tr> <td><strong>AppTable.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-efcf66a9e913b5d3a7c2eea800b7f4e54d9e5268307131482fd40f32e2074d8e">+30/-13</a> </td> </tr> <tr> <td><strong>EditScript.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-bf406d8f31f66d50e11b2c41f5ec13daabb4bb2e4f4612c5ff44675817ed2eca">+37/-34</a> </td> </tr> <tr> <td><strong>AddAlert.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-7b426bb23e9ed0250c3877d6d97b099c42b2d20e22ddf4459915381b2233a0a8">+12/-10</a> </td> </tr> <tr> <td><strong>AddDestination.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-61b295458e13049a538f5014124855d58dce664dfbd644b57a964a37a07b7a3f">+15/-12</a> </td> </tr> <tr> <td><strong>AddTemplate.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-2508a43827e6b35c07f3222deebd9945101ca6bc32b9dc592e6253ab99908bba">+11/-11</a> </td> </tr> <tr> <td><strong>ImportAlert.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-0f40dbf2757672e39ad16b86dddc59b568ca2e6ca36850420cd7be617da12d38">+6/-6</a> </td> </tr> <tr> <td><strong>ImportDestination.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-814b8ef1dbb4eebca9dfab72452d9a90d5f3fa5886dea8e82ac0bde44f66b445">+6/-6</a> </td> </tr> <tr> <td><strong>ImportTemplate.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-d22684c5142a49b8925a9dba1ef67631128caa95de66e71ba2a5b8120a0b91c6">+7/-6</a> </td> </tr> <tr> <td><strong>ScheduledAlert.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-5e143a17ab0fa5d7817f6d9301667fb5597236f27184248c7a71728e85b8d999">+6/-4</a> </td> </tr> <tr> <td><strong>VariablesInput.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-23a647aa1acfc95bc726629f0daa54005e3da1ed5b16482ceccef0649f680a74">+8/-11</a> </td> </tr> <tr> <td><strong>AddCipherKey.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-ff5ae3a9b070fe2b3650f177ced0d87e9449ae7375a0b117ee299238293df110">+27/-15</a> </td> </tr> <tr> <td><strong>AddFolder.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-41d2f8fac44084c004d8386ea4cc32e9c5d3e33266c4009cc855e57fb00a41af">+12/-14</a> </td> </tr> <tr> <td><strong>FolderList.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-b97284b1720dfb524e425f49acd70f1a4e59da3d493eb2d4b3de8551b2da7141">+47/-22</a> </td> </tr> <tr> <td><strong>AddEnrichmentTable.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-9aad551dbc051edfdb3994a664506ed6d5e27dcb64f9c2fa917b02e51a35d86e">+12/-10</a> </td> </tr> <tr> <td><strong>FunctionsToolbar.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-8283d2ff9c4a66b4b59eac306672aca2d54655a462e2ddb88e14e039d79dcdaf">+18/-18</a> </td> </tr> <tr> <td><strong>AddGroup.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-dd49436305aadc01990cd6d9ea0abf97b964195920a1b49e64e8868fcc8afa6c">+19/-23</a> </td> </tr> <tr> <td><strong>AppGroups.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-402fb2a5338e60fdc3da489f4d50b5cf52f06b4e884a6fe7b82441c9fa5ea22c">+33/-22</a> </td> </tr> <tr> <td><strong>EditGroup.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-6be040722d1492644adbf65250d44d28be37614d34600a73f74c816138727a40">+2/-2</a> </td> </tr> <tr> <td><strong>GroupRoles.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-d7d1d9ec26ff77175b0e961e3e53e7ced45c9211eae8a0c00f7ac1cdac88ae14">+21/-8</a> </td> </tr> <tr> <td><strong>GroupServiceAccounts.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-b7afafc6b850c2d6edc2b855e78ff51d95d101937ec001a5790d130f4fb60695">+18/-7</a> </td> </tr> <tr> <td><strong>GroupUsers.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-114c767db76d4a09278c765d8aba39a1936c861488f39e7f0f6b3883499a3c40">+17/-6</a> </td> </tr> <tr> <td><strong>AddUpdateOrganization.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-bca5bebfa6d5f435715dc5fa948876de02fef95a84e3e663e5c7922d601b4b9d">+19/-20</a> </td> </tr> <tr> <td><strong>ListOrganizations.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-572ed99323d3e36d126074eccc10b68f6eef983d92f89d06b205fef0925c93a3">+30/-37</a> </td> </tr> <tr> <td><strong>Quota.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-30293eb5cb924f95356d5abd4588ce0f03765ac9d4446cf5b8cbacba23c6f979">+13/-9</a> </td> </tr> <tr> <td><strong>AddRole.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-fca7dd7f91da83de52bfc40e82451a8756001af43974d592de2e03a815b21c9b">+14/-14</a> </td> </tr> <tr> <td><strong>AppRoles.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-191634ef09436199f91f442968110a01f54ae46b5ceee67476f52613ad796db4">+27/-17</a> </td> </tr> <tr> <td><strong>EditRole.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-263b6bc7d29fdf8358c8437cd637f1350aa3733cc2706eae8ff00028686cc0f5">+3/-3</a> </td> </tr> <tr> <td><strong>AddServiceAccount.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-4e6840978e90be9195797d1b73b6cd1545ddac45cef84aa08701a9d66013c61b">+26/-28</a> </td> </tr> <tr> <td><strong>AddUser.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-47543c0488c8cb5bcf77e2bb4af9d0a5dd249993cd9577c4852f7950c7aaec91">+18/-26</a> </td> </tr> <tr> <td><strong>AddStream.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-78b8c84a558e60d942bacffee365633d074042e464be465eb6984b0ee5df82b9">+11/-12</a> </td> </tr> <tr> <td><strong>ImportPipeline.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-d57fa41169daa44551a181f21ca33882004b29ab74e3040e4c56a8c849078670">+10/-12</a> </td> </tr> <tr> <td><strong>AssociateFunction.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-24a5b2df69327a6477227ea674939dea19dd6d393b4bfcf807089d71e6391152">+25/-18</a> </td> </tr> <tr> <td><strong>Condition.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-4c3e624233c9e0355c7ded3b26dc74971b867be63e24f92a5e639284f60639dd">+20/-17</a> </td> </tr> <tr> <td><strong>ScheduledPipeline.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-63d8f838bb880356e7804b4a57fd9223d4f2c189de7aadc7cf33cba723b29aaf">+21/-19</a> </td> </tr> <tr> <td><strong>Stream.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-1a17ced9dc89022502cab0a6f9b97b413c2a2c4f8219733d063fc0180d361739">+26/-21</a> </td> </tr> <tr> <td><strong>PipelineEditor.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-68c21f647336067eb79737ce9aca2d49632f2fa1c0878bcfdae55607e3473a15">+21/-19</a> </td> </tr> <tr> <td><strong>StreamSelection.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-461440be35cc15b6b78700c8a61747ea9fb601a750af5292fa2d04b6fc96d595">+10/-10</a> </td> </tr> <tr> <td><strong>CreateReport.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-cf2258c64249d4f28b2a103558bce3af1c87f0b2f23fe0652b458b8c20bb9c64">+28/-30</a> </td> </tr> <tr> <td><strong>AddRegexPattern.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-a3783cfbdd32609bfff45ecfa23542854cad7ae60c3d29fedb832312a4de03dc">+9/-12</a> </td> </tr> <tr> <td><strong>ImportRegexPattern.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-e8e1bcb5a02311504d7d571090eab27a270aaa71cae185ad2703023e2e70a31e">+6/-6</a> </td> </tr> <tr> <td><strong>OrganizationManagement.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-21e2431538cb6b76e5ef5b367c6df8fc02ad8f6c1294f438be9937c7481ea9ff">+16/-2</a> </td> </tr> <tr> <td><strong>OrganizationSettings.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-54860a5d84362fe3ade0c3a50d7bacb02af3d21e1012517a0140e21f9ddabfc1">+11/-13</a> </td> </tr> <tr> <td><strong>FilterCreatorPopup.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-7fa80f0424ed3b2e60b0e3ba77493b0e5d3ef98ddcf40cd103fe433d326221d7">+16/-2</a> </td> </tr> <tr> <td><strong>en.json</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+5/-3</a> </td> </tr> <tr> <td><strong>SearchHistory.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-9dd167bd5e272b2057f53c16b905047eec00655a3552daad240a964d67a6f56d">+30/-18</a> </td> </tr> <tr> <td><strong>SearchSchedulersList.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-0c0a4097c53f07712d35562b1336602bf24faddedab77a9f5717f5582dcac2f1">+53/-27</a> </td> </tr> <tr> <td><strong>app.scss</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-5703d12504b0395cbfbbfad02a592bc391496026e5f03743102ce06c210ea05f">+414/-8</a> </td> </tr> <tr> <td><strong>Functions.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-ad825ec1b8d58aec9bf5d2553ea09394a30b22ac59d708bcf9e56168ca1daaf6">+1/-2</a> </td> </tr> <tr> <td><strong>IdentityAccessManagement.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-60b63024c98ee8927e12f9ebec93e99ba7ff419038cfe1cc57d49de1f6f342d6">+1/-1</a> </td> </tr> <tr> <td><strong>Ingestion.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-97b8e8ed2a1260a39442563c7447d4f6d4830a37d47258920d6f94a292cd2d77">+9/-9</a> </td> </tr> <tr> <td><strong>RealUserMonitoring.vue</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8033/files#diff-dd099485ccafdabc8f9e63bf1610e7044680f3b7ae19a9e9c5645b351c7a8701">+3/-1</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: Shrinath Rao <shnath@openobserve.ai> Co-authored-by: ktx-akshay <akshay.patil@kiara.tech> |
||
|
|
0730d5f7a4 |
fix: landing page / Home page revamp (#6729)
### **User description**
1. This PR implements the latest UI of landing page / Home page with 2
charts for showing alerts and pipelines
2.
___
### **PR Type**
Enhancement
___
### **Description**
- Redesigned Home page layout and tiles
- Added alerts and pipelines charts
- Implemented theme-aware icons and styles
- Added loading state for summary fetch
___
### Diagram Walkthrough
```mermaid
flowchart LR
HomeView["HomeView.vue"]
SummaryAPI["Summary fetch & parsing"]
Charts["CustomChartRenderer charts"]
Tiles["Responsive metric tiles"]
Theming["Dark/Light computed icons & styles"]
Loading["Loading spinner state"]
HomeView -- "fetches org summary" --> SummaryAPI
SummaryAPI -- "sets metrics & statuses" --> Tiles
SummaryAPI -- "feeds alert/pipeline data" --> Charts
HomeView -- "applies theme classes" --> Theming
HomeView -- "shows while fetching" --> Loading
```
<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>HomeView.vue</strong><dd><code>Home page redesign with
charts and theme-aware UI</code>
</dd></summary>
<hr>
web/src/views/HomeView.vue
<ul><li>Rebuilt template with responsive sections and tiles.<br> <li>
Added alerts pie and pipelines bar charts via CustomChartRenderer.<br>
<li> Introduced loading state, improved summary parsing, and theme-aware
<br>icons.<br> <li> Added extensive SCSS for dark/light theming and
layout.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/6729/files#diff-9af441af191d3254ef5f9db603dca75486de7638cda41a3c050e7b3c33d68280">+568/-229</a></td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
---------
Signed-off-by: Yashodhan Joshi <yjdoc2@gmail.com>
Co-authored-by: Taiming Liu <liutaiming3@gmail.com>
Co-authored-by: Yashodhan Joshi <yjdoc2@gmail.com>
Co-authored-by: ByteBaker <42913098+ByteBaker@users.noreply.github.com>
|
||
|
|
15177ad58c |
feat: Display Alert name on the frontend - QueryManager View (#8378)
### **User description**
# PR Type
Fix / Enhancement
# Description
Similar to Dashboard names, we are also going to display the alert names
on the frontend. To do this we need to include the alert_name detail in
the SearchEventContext payload which will be tracked by the
QueryManager. The frontend update will make the alert name be displayed
as query_source - just like dashboard name.
___
### **PR Type**
Enhancement
___
### **Description**
- Add `alert_name` to search context
- Propagate field through proto and conversions
- Display alert source in RunningQueries
- Simplify test context init with defaults
___
### Diagram Walkthrough
```mermaid
flowchart LR
ProtoDef["cluster/search.proto adds 'alert_name'"] -- regenerates --> ProtoGen["generated cluster.rs includes alert_name"]
ProtoGen -- maps via From --> MetaModel["meta/search.rs SearchEventContext"]
AlertsEval["alerts/alert.rs evaluate()"] -- sets --> MetaModel
MetaModel -- exposed in usage --> Frontend["RunningQueries.vue shows alert name"]
```
<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>search.rs</strong><dd><code>Add alert_name to
SearchEventContext and mappings</code>
</dd></summary>
<hr>
src/config/src/meta/search.rs
<ul><li>Add <code>alert_name</code> field to
<code>SearchEventContext</code>.<br> <li> Map <code>alert_name</code> in
From/Into proto conversions.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8378/files#diff-373e83a31e5bbc82fba05d7ae274b0dbd624ed748272232cf7eb8b8c3b2f3afc">+4/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>alert.rs</strong><dd><code>Set alert_name in alert
evaluation context</code>
</dd></summary>
<hr>
src/service/alerts/alert.rs
<ul><li>Populate <code>search_event_ctx.alert_name</code> during alert
evaluation.<br> <li> Initialize mutable context then assign alert
name.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8378/files#diff-574be3504bf4d855c65fd3d7a10797a970237ff552edac4962b474b3983e094e">+3/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>RunningQueries.vue</strong><dd><code>Display alert name
as query source in UI</code>
</dd></summary>
<hr>
web/src/components/queries/RunningQueries.vue
<ul><li>Compute <code>query_source</code> based on
<code>search_type</code>.<br> <li> Show <code>folder/dashboard</code>
for dashboards.<br> <li> Show <code>alert_name(alert_key)</code> for
alerts.<br> <li> Fallback to <code>-unknown-</code> when missing.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8378/files#diff-6f0e18626a986d934c08c368ac383179c56bfcd914a27619ba748f43629c926b">+10/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>search.proto</strong><dd><code>Proto: add alert_name to
SearchEventContext</code>
</dd></summary>
<hr>
src/proto/proto/cluster/search.proto
- Add `optional string alert_name = 8;` to `SearchEventContext`.
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8378/files#diff-789f17326b818d5fbd1b5b752bed17e5341fde3d3261951634edcf78cacf3dbe">+1/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Dependencies</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>cluster.rs</strong><dd><code>Regenerated proto includes
alert_name field</code>
</dd></summary>
<hr>
src/proto/src/generated/cluster.rs
- Include optional `alert_name` with tag 8 in generated struct.
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8378/files#diff-542d8f27a174c845740ca1c3fe0b697db89c3db666437c1c4dd8c9745510080c">+2/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>ingestion.rs</strong><dd><code>Simplify test context
with default struct update</code>
</dd></summary>
<hr>
src/service/self_reporting/ingestion.rs
<ul><li>Use <code>..Default::default()</code> to fill unused context
fields.<br> <li> Keep only <code>dashboard_id</code> explicitly set in
test.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8378/files#diff-3edd5f4ed1eed0f765b7b450ef0fbf587632e6b22302006a5e397049e297057f">+1/-6</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
dce3f30283 |
feat: provided search on indextype selection along with name field. (#8333)
### **PR Type**
Enhancement
___
### **Description**
- Extend filter to search index types
- Support label-to-value index type matching
- Handle empty search gracefully
- Refactor loop with match flag
___
### Diagram Walkthrough
```mermaid
flowchart LR
A["User search term"] -- "normalize to lowercase" --> B["searchTerm"]
B -- "map labels→values from streamIndexType" --> C["labelToValueMap"]
D["Rows iteration"] -- "name match OR index_type match" --> E["match = true"]
C -- "label lookup equals stored value" --> E
E -- "if match push row" --> F["filtered results"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>schema.vue</strong><dd><code>Add index type label-aware
filtering</code>
</dd></summary>
<hr>
web/src/components/logstream/schema.vue
<ul><li>Add lowercase search term handling.<br> <li> Map index type
labels to values for matching.<br> <li> Support matching by name and
index_type in both modes.<br> <li> Refactor loop using a match flag and
early checks.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8333/files#diff-9196be2ccae4054a00b0b1aa9d1e87b366c10920d6eaf9ef8c6e6293d50bcf46">+52/-9</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
5d6700fa58 | feat: add per-stream flatten level configuration (#8353) | ||
|
|
9235fa7bc3 |
feat: highlight stream fields when part of default environment quick … (#8336)
### **User description**
…mode settings
___
### **PR Type**
Enhancement, Documentation
___
### **Description**
- Highlight env quick mode fields in schema
- Add tooltip and icon for quick mode
- Localize tooltip message in English
___
### Diagram Walkthrough
```mermaid
flowchart LR
SchemaVue["schema.vue component"] -- checks --> StoreQuickFields["store.state.zoConfig.default_quick_mode_fields"]
SchemaVue -- renders --> NameCell["Field name cell with icon + tooltip"]
ThemeStore["store.state.theme"] -- selects --> QuickIcon["quick_mode(_light).svg"]
i18nEn["en.json"] -- provides --> TooltipText["logStream.envQuickModeMsg"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>schema.vue</strong><dd><code>Visual cue and tooltip for
env quick mode fields</code>
</dd></summary>
<hr>
web/src/components/logstream/schema.vue
<ul><li>Render quick mode icon next to field name.<br> <li> Show tooltip
using <code>logStream.envQuickModeMsg</code>.<br> <li> Add
<code>isEnvQuickModeField</code> helper using store config.<br> <li>
Compute icon per theme via <code>quickModeIcon</code>.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8336/files#diff-9196be2ccae4054a00b0b1aa9d1e87b366c10920d6eaf9ef8c6e6293d50bcf46">+32/-5</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>en.json</strong><dd><code>Add i18n message for quick
mode tooltip</code>
</dd></summary>
<hr>
web/src/locales/languages/en.json
<ul><li>Add <code>envQuickModeMsg</code> translation string.<br> <li>
Maintain trailing commas consistency.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8336/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+2/-1</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
aff48e3a56 |
fix: Dashboards Names needed on the QueryManager (#8335)
### **User description** # PR Type Enhancement # Description On the Query Management view, the user must be able to see the Query generating sources like Dashboards and Alerts by their names. This PR addresses this by introducing an enhancement at the backend which responds with QueryStatus carrying search_event_context which has almost all the necessary details for this change. # !WIP + Need to validate the same for Alerts + QueryList.vue needs to be updated for the same changes. + A simple test on the backend for the responses guaranteeing that SearchEventContext is populated appropriately. ___ ### **PR Type** Enhancement, Tests ___ ### **Description** - Add search event context to statuses - Enrich dashboard names in task status - Propagate dashboard/folder names to frontend - Extend UI with Query Source column ___ ### Diagram Walkthrough ```mermaid flowchart LR BESEC["Backend SearchEventContext"] -- "added to proto + structs" --> QS["QueryStatus"] QS -- "get_task_status enriches names" --> Handler["gRPC handler"] Handler -- "QueryStatusResponse includes context" --> FEAPI["Frontend APIs"] FEAPI -- "pass dashboard/folder names" --> Panels["Panel Data Loader"] Panels -- "meta and URLs include names" --> Streams["Streaming/Search services"] Streams -- "display source" --> RunningQueries["Running Queries UI"] ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>13 files</summary><table> <tr> <td><strong>search.rs</strong><dd><code>Add SearchEventContext to QueryStatus and conversions</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8335/files#diff-373e83a31e5bbc82fba05d7ae274b0dbd624ed748272232cf7eb8b8c3b2f3afc">+31/-1</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Enrich dashboard context in task status retrieval</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8335/files#diff-8dcdb10340635be8bb58d45a815569026877f6fdbb3b69a773a30698b91674b0">+19/-1</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Thread search_event_context through search and responses</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8335/files#diff-c3b85ea662a885fbd39797968928b291cb59a58f53a03f7b7dfd7ba8b6a7985a">+2/-0</a> </td> </tr> <tr> <td><strong>usePanelDataLoader.ts</strong><dd><code>Pass dashboard/folder names in requests and meta</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8335/files#diff-5a42e9493a7bcd722b88e61fd38883c4f61001bc9cafa399f65f8eafda3aace9">+14/-0</a> </td> </tr> <tr> <td><strong>useStreamingSearch.ts</strong><dd><code>Include dashboard/folder names in stream URLs</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8335/files#diff-8fce3e25a161cd458e734bd9b1f98aadefe3482da7b6529a5b1f4fa20ec115e2">+4/-0</a> </td> </tr> <tr> <td><strong>search.ts</strong><dd><code>Add dashboard/folder names to search and metrics URLs</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8335/files#diff-885ab872dbc6e7b20264df815e3ef4727f0abc86ce90d2fb47e4aff572814c75">+17/-0</a> </td> </tr> <tr> <td><strong>PanelContainer.vue</strong><dd><code>Forward dashboard/folder names to renderer</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8335/files#diff-414737cba6064461f7026e0b016afcb9620bd5bb29c4708fc170dee789dbcd4d">+4/-0</a> </td> </tr> <tr> <td><strong>PanelSchemaRenderer.vue</strong><dd><code>Accept and propagate dashboard/folder name props</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8335/files#diff-e5376e7e77bf3aaf6590c2522d8c2dbffcc95a8006ae0d6dc0040a37825367d6">+12/-0</a> </td> </tr> <tr> <td><strong>RunningQueries.vue</strong><dd><code>Show query source from search_event_context</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8335/files#diff-6f0e18626a986d934c08c368ac383179c56bfcd914a27619ba748f43629c926b">+1/-0</a> </td> </tr> <tr> <td><strong>RunningQueriesList.vue</strong><dd><code>Add Query Source column to table</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8335/files#diff-eb568491630bd1b80935cc0b02498d40274ede0e5be78593a0b49ca17fbbe627">+7/-0</a> </td> </tr> <tr> <td><strong>RenderDashboardCharts.vue</strong><dd><code>Provide dashboard/folder names to panel containers</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8335/files#diff-313f7c69102161242c893c863c50f1f1cd1fc19b68b5c99bf840b4b5c72f0f2e">+12/-0</a> </td> </tr> <tr> <td><strong>ViewDashboard.vue</strong><dd><code>Supply dashboard and folder names to charts view</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8335/files#diff-052badb6758aff09ceaf1645869b9ba96125e6a0ea21abb01a8ee0a40d6467f3">+2/-0</a> </td> </tr> <tr> <td><strong>search.proto</strong><dd><code>Define SearchEventContext and add to QueryStatus</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8335/files#diff-789f17326b818d5fbd1b5b752bed17e5341fde3d3261951634edcf78cacf3dbe">+11/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Dependencies</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>cluster.rs</strong><dd><code>Generate proto for SearchEventContext and QueryStatus field</code></dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8335/files#diff-542d8f27a174c845740ca1c3fe0b697db89c3db666437c1c4dd8c9745510080c">+20/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>RunningQueriesList.spec.ts</strong><dd><code>Update tests for new Query Source column</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8335/files#diff-b1229a7a60180bf83bd9c81e1306941b8414522339566763c92b5d06c979ff38">+1/-1</a> </td> </tr> </table></details></td></tr><tr><td><strong>Configuration changes</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>launch.json</strong><dd><code>Add LLDB config for server debugging</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8335/files#diff-bd5430ee7c51dc892a67b3f2829d1f5b6d223f0fd48b82322cfd45baf9f5e945">+19/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>en.json</strong><dd><code>Add i18n key for Query Source column</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8335/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+2/-1</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: ktx-vaidehi <vaidehi.akhani@kiara.tech> |
||
|
|
78a5919dae | fix: dashboard search text for variables SQL query (#8342) | ||
|
|
b0fc9eac6a | chore(deps-dev): bump vite from 6.3.5 to 6.3.6 in /web (#8343) | ||
|
|
b863826d9f | fix: organization related issues (#8130) | ||
|
|
547d94fe45 |
fix: cloud pricing related changes (#8284)
### **PR Type**
Enhancement
___
### **Description**
- Update Pro plan pricing details
- Add remote destination pricing tier
- Introduce optional 30-day retention add-on
- Adjust enterprise layout spacing
___
### Diagram Walkthrough
```mermaid
flowchart LR
PricingVue["Pro plan pricing config"] -- "updated rates + new items" --> BillingUI["Billing features list"]
BillingUI -- "renders revised pricing" --> Users["End-users"]
EnterpriseVue["Enterprise plan layout"] -- "increase bottom margin" --> UISpacing["Visual spacing adjustment"]
```
<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>enterprisePlan.vue</strong><dd><code>Adjust enterprise
plan section spacing</code>
</dd></summary>
<hr>
web/src/enterprise/components/billings/enterprisePlan.vue
<ul><li>Increase bottom margin from 30px to 58px<br> <li> Maintain
features section structure</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8284/files#diff-f7fa88084375d33ceff7ec4816843de2705f2ed393590b9d1d993a67ff8ac29b">+1/-1</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>proPlan.vue</strong><dd><code>Revise Pro plan pricing
and features</code>
</dd></summary>
<hr>
web/src/enterprise/components/billings/proPlan.vue
<ul><li>Update 'Data Processed' to $0.20/GB<br> <li> Add 'Each remote
destination' at $0.45/GB<br> <li> Remove 'API Access' line item<br> <li>
Add '30 days additional retention' at $0.10/GB</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8284/files#diff-b5678b2763909484d6475adf5af690b3d382d8438520adcfc1428b66cf7ad7d5">+3/-2</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
ecfb6db33d |
fix: introduce reo dot dev (#8279)
### **User description** 1. This PR introduces reo dot dev in the application ___ ### **PR Type** Enhancement, Tests ___ ### **Description** - Integrate Reo.dev analytics SDK - Add route meta titles across app - Track key button clicks and pages - Set dynamic document titles ___ ### Diagram Walkthrough ```mermaid flowchart LR main["App bootstrap (main.ts)"] -- "init + setup titles" --> reo["Reo Analytics Service"] router["Vue Router"] -- "meta.title -> document.title" --> dom["Document Title"] router -- "afterEach" --> reo views["Views & Components"] -- "useReo().track/identify" --> reo config["aws-exports.ts"] -- "REO_CLIENT_KEY + flags" --> reo pkg["package.json"] -- "add dependency" --> reo ``` <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>1 files</summary><table> <tr> <td><strong>aws-exports.ts</strong><dd><code>Add Reo.dev client key to config</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-74d362ad26d23cf7e76c13e3daeb72d37923a335074d512a543d0f5bfa6a30d2">+1/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>37 files</summary><table> <tr> <td><strong>router.ts</strong><dd><code>Add meta titles for primary routes</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-a1827956e5a817edc7efb5f4516e7cc4d453e15ea9e9d970aafb8360b09fc78e">+43/-5</a> </td> </tr> <tr> <td><strong>useEnterpriseRoutes.ts</strong><dd><code>Add meta titles for enterprise routes</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-962367ed3d329e73232da2c262cf10c60b14820dd43e95e94302cdcb2f080cbe">+28/-1</a> </td> </tr> <tr> <td><strong>useManagementRoutes.ts</strong><dd><code>Add meta titles for management routes</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-b71a1d39b1fab0749f0668d5f16382536fbda6e2f0c92c56a972fb5d8b5835f5">+22/-0</a> </td> </tr> <tr> <td><strong>main.ts</strong><dd><code>Initialize Reo analytics and page titles</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-37b29c5a3b76595194070205d9a0cdedcd717bf7c4367022d1e2667395962f2e">+9/-0</a> </td> </tr> <tr> <td><strong>index.ts</strong><dd><code>Set document title from route meta</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-8d302fe8581dca01e60aaf346dfdb0f8e24731551e7e5f91e5da9fc64250f7d2">+7/-0</a> </td> </tr> <tr> <td><strong>reodotdev_analytics.ts</strong><dd><code>New Reo.dev analytics service with queueing</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-1df83f0fa6b7599b6cd3ad863ff77d8abc4351b651932ad4d0359690148e1180">+168/-0</a> </td> </tr> <tr> <td><strong>ActionScipts.vue</strong><dd><code>Track add action scripts button click</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-6cfeff0b8dbbaba52b13ba67d6f4f8fdc3c58996eccdfae2ad0db2e7aee20f08">+6/-0</a> </td> </tr> <tr> <td><strong>AddAlert.vue</strong><dd><code>Track alert save/update button clicks</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-7b426bb23e9ed0250c3877d6d97b099c42b2d20e22ddf4459915381b2233a0a8">+13/-1</a> </td> </tr> <tr> <td><strong>AddDestination.vue</strong><dd><code>Track destination save actions</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-61b295458e13049a538f5014124855d58dce664dfbd644b57a964a37a07b7a3f">+10/-0</a> </td> </tr> <tr> <td><strong>AddTemplate.vue</strong><dd><code>Track template save actions</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-2508a43827e6b35c07f3222deebd9945101ca6bc32b9dc592e6253ab99908bba">+10/-0</a> </td> </tr> <tr> <td><strong>AlertList.vue</strong><dd><code>Track alert add/hide form button actions</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-be3e41b823e163b226ffc270d95cc4981e59c600851e4e0d10ee5e4ee994ac8e">+10/-0</a> </td> </tr> <tr> <td><strong>AlertsDestinationList.vue</strong><dd><code>Track add destination action</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-e9d05ba6c071c0e2f5d9ef7acdef757f79910abd6897b29e27b069a10d4ba8de">+8/-0</a> </td> </tr> <tr> <td><strong>PipelinesDestinationList.vue</strong><dd><code>Track add pipeline destination action</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-088c66f5a34e73a5350a794a772e5d905262277337c937dd36f4295072203ebf">+8/-0</a> </td> </tr> <tr> <td><strong>TemplateList.vue</strong><dd><code>Track add template action</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-7df66364d7d69a26cfa25cbc555d0e090c2f73e51c8386d9b0435bae4412564c">+8/-0</a> </td> </tr> <tr> <td><strong>AddFolder.vue</strong><dd><code>Track save new folder action</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-41d2f8fac44084c004d8386ea4cc32e9c5d3e33266c4009cc855e57fb00a41af">+6/-0</a> </td> </tr> <tr> <td><strong>FolderList.vue</strong><dd><code>Track add folder button click</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-b97284b1720dfb524e425f49acd70f1a4e59da3d493eb2d4b3de8551b2da7141">+6/-0</a> </td> </tr> <tr> <td><strong>AddFolder.vue</strong><dd><code>Track dashboard folder saving</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-3bd1ba28ba29b71469aac901fd8000480c3db6c0f2dbc86ea55221787ae3ffd2">+6/-0</a> </td> </tr> <tr> <td><strong>AddEnrichmentTable.vue</strong><dd><code>Track save enrichment table</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-9aad551dbc051edfdb3994a664506ed6d5e27dcb64f9c2fa917b02e51a35d86e">+6/-0</a> </td> </tr> <tr> <td><strong>AddFunction.vue</strong><dd><code>Track save/cancel function actions</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-ebfd6c538f3cd3ecb9ab17550fd76e2e89e7a1abccc83a7505077e4af3eee110">+10/-1</a> </td> </tr> <tr> <td><strong>EnrichmentTableList.vue</strong><dd><code>Track add/update enrichment table</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-6a29e253f59405d3c0f756dba36afd7483f10ad86927cbbc3348ede6372c3077">+10/-0</a> </td> </tr> <tr> <td><strong>FunctionList.vue</strong><dd><code>Track add/update function actions</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-6ff9af50a1597504b7f0dca91e61cf30c800b4a17b4be2ed2c3a4f7a7b2d7068">+10/-0</a> </td> </tr> <tr> <td><strong>AddGroup.vue</strong><dd><code>Track save group action</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-dd49436305aadc01990cd6d9ea0abf97b964195920a1b49e64e8868fcc8afa6c">+7/-0</a> </td> </tr> <tr> <td><strong>AppGroups.vue</strong><dd><code>Track add group action</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-402fb2a5338e60fdc3da489f4d50b5cf52f06b4e884a6fe7b82441c9fa5ea22c">+7/-0</a> </td> </tr> <tr> <td><strong>AddUpdateOrganization.vue</strong><dd><code>Track save organization action</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-bca5bebfa6d5f435715dc5fa948876de02fef95a84e3e663e5c7922d601b4b9d">+7/-0</a> </td> </tr> <tr> <td><strong>AddRole.vue</strong><dd><code>Track save role action</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-fca7dd7f91da83de52bfc40e82451a8756001af43974d592de2e03a815b21c9b">+7/-0</a> </td> </tr> <tr> <td><strong>AppRoles.vue</strong><dd><code>Track add role button click</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-191634ef09436199f91f442968110a01f54ae46b5ceee67476f52613ad796db4">+7/-0</a> </td> </tr> <tr> <td><strong>AddServiceAccount.vue</strong><dd><code>Track create/update service account</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-4e6840978e90be9195797d1b73b6cd1545ddac45cef84aa08701a9d66013c61b">+28/-17</a> </td> </tr> <tr> <td><strong>ServiceAccountsList.vue</strong><dd><code>Track add service account action</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-3afe835bcfbec3fda2e9550850c29581092ee0717e7dd8de8888e774a0048d24">+6/-0</a> </td> </tr> <tr> <td><strong>AddUser.vue</strong><dd><code>Track create/update user actions</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-47543c0488c8cb5bcf77e2bb4af9d0a5dd249993cd9577c4852f7950c7aaec91">+18/-5</a> </td> </tr> <tr> <td><strong>Login.vue</strong><dd><code>Identify user on login; delayed redirect</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-4c2da0196f97e92fff1a813ce1337a4e94f6592b054e0f5c326ee137657003ff">+11/-3</a> </td> </tr> <tr> <td><strong>AddStream.vue</strong><dd><code>Track save stream action</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-78b8c84a558e60d942bacffee365633d074042e464be465eb6984b0ee5df82b9">+8/-0</a> </td> </tr> <tr> <td><strong>PipelineEditor.vue</strong><dd><code>Track node additions and save/cancel</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-68c21f647336067eb79737ce9aca2d49632f2fa1c0878bcfdae55607e3473a15">+48/-0</a> </td> </tr> <tr> <td><strong>CreateReport.vue</strong><dd><code>Track save/cancel report actions</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-cf2258c64249d4f28b2a103558bce3af1c87f0b2f23fe0652b458b8c20bb9c64">+11/-0</a> </td> </tr> <tr> <td><strong>ReportList.vue</strong><dd><code>Track add report navigation</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-f7d700f7e67fbaba3c58ab5d2c614925db743101828214445ce9dae35dc29067">+7/-0</a> </td> </tr> <tr> <td><strong>Dashboards.vue</strong><dd><code>Track add dashboard/folder actions</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-8da3187db8ce3d795d0f196ede6b2290221ffa3e27b15dcc2b645e44dd196213">+10/-0</a> </td> </tr> <tr> <td><strong>LogStream.vue</strong><dd><code>Track add stream button click</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-56f4223b74568c10bc305741cc9fc3a8830184a251b4eaa6a2649033bc6200e3">+9/-1</a> </td> </tr> <tr> <td><strong>Login.vue</strong><dd><code>Identify user after SSO; delayed redirect</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-a135c379ef6ac8f92199ea5f7ff19a227971a9b0a87ccccf87c0268740522c2c">+11/-2</a> </td> </tr> </table></details></td></tr><tr><td><strong>Dependencies</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>package.json</strong><dd><code>Add Reo.dev dependency</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8279/files#diff-b861012a5dd72b8a9f3281b7cf09f5a779c98569d040b1bbc1db50f1b15e7cce">+1/-0</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ |
||
|
|
aaf06d2118 |
feat: use uuid v7 for internal trace ids (#8261)
### **PR Type**
Enhancement, Tests
___
### **Description**
- Switch trace IDs to UUID v7
- Add timestamp extraction from trace ID
- Improve HTTP header parsing robustness
- Add frontend UUID v7 utils and tests
___
### Diagram Walkthrough
```mermaid
flowchart LR
RustGen["Rust: generate_trace_id uses UUID v7"] -- "u128 -> OTel TraceId" --> OTel["OpenTelemetry TraceId"]
RustExtract["Rust: get_start_time_from_trace_id"] -- "parse v7 timestamp" --> QueryTime["Adjust query time window"]
HTTP["HTTP traces handler"] -- "robust headers + trace_id param" --> RustExtract
WebUtil["Web utils: getUUIDv7 + generateTraceContext"] -- "v7 traceId, v4 spanId" --> BrowserTraces["Browser trace context"]
TestsRust["Rust tests"] -- "validate v7, ordering, parsing" --> RustGen
TestsWeb["Web tests"] -- "validate v7, ordering, context" --> WebUtil
```
<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>ider.rs</strong><dd><code>Switch to UUID v7 and add
timestamp extraction</code>
</dd></summary>
<hr>
src/config/src/ider.rs
<ul><li>Generate trace IDs using <code>Uuid::now_v7()</code>.<br> <li>
Add <code>get_start_time_from_trace_id</code> to extract microsecond
timestamp.<br> <li> Expand tests for v7 validity, ordering, and
parsing.<br> <li> Strengthen span ID and snowflake generator tests.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8261/files#diff-6ea42b8eab8ba0708f93f9a8b44056d9a9e6ac42517ffba12f81420d6b0bd2b0">+279/-17</a></td>
</tr>
<tr>
<td>
<details>
<summary><strong>mod.rs</strong><dd><code>Robust headers and time-window
from trace_id</code>
</dd></summary>
<hr>
src/handler/http/request/traces/mod.rs
<ul><li>Make Content-Type/header parsing tolerant to errors.<br> <li>
Allow <code>trace_id</code> param or filter to set time window.<br> <li>
Derive query window from UUID v7 timestamp.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8261/files#diff-64694c886c809b6efe449e6eba9fbb33d31ce5a3c49cea1a30006fc1d9522665">+37/-2</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>zincutils.ts</strong><dd><code>Frontend UUID v7 support
and trace context</code>
</dd></summary>
<hr>
web/src/utils/zincutils.ts
<ul><li>Import and expose <code>getUUIDv7</code>.<br> <li> Use UUID v7
for traceId in trace context.<br> <li> Keep spanId generation via UUID
v4.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8261/files#diff-d3d59688cccdcc6c84ebe88b698c6910030abecc3125f4c0ef81b0df023699ba">+8/-2</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>zincutils.spec.ts</strong><dd><code>Tests for UUID v7
and trace context</code>
</dd></summary>
<hr>
web/src/utils/zincutils.spec.ts
<ul><li>Add tests for <code>getUUIDv7</code> validity, uniqueness,
ordering.<br> <li> Validate trace context uses v7 traceId.<br> <li>
Ensure uniqueness of trace and span IDs.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8261/files#diff-225d7ad1afe0a7e6f522c267bfd9ac4928cb5c23047fc6c02a287519a34aacb7">+45/-0</a>
</td>
</tr>
</table></td></tr><tr><td><strong>Dependencies</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>Cargo.toml</strong><dd><code>Add uuid v7
dependency</code>
</dd></summary>
<hr>
Cargo.toml
- Add `uuid` crate with v7 feature.
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8261/files#diff-2e9d962a08321605940b5a657135052fbcef87b5e360662bb527c96d9a615542">+1/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>Cargo.toml</strong><dd><code>Add uuid to config crate
dependencies</code>
</dd></summary>
<hr>
src/config/Cargo.toml
- Wire `uuid` crate via workspace dependency.
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8261/files#diff-a70836e42ee2ff2af5068df047dd443758a0edc910d8ec5a01780396a69c9a9e">+1/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
d44db085fb |
fix: dashboard unit tests (#8239)
### **PR Type**
Tests, Enhancement
___
### **Description**
- Add comprehensive unit tests for data loaders
- Add WebSocket/streaming values tests
- Add annotations data workflow tests
- Improve loader mocks and error handling
___
### Diagram Walkthrough
```mermaid
flowchart LR
specs["Add dashboard composables specs"] -- "usePanelDataLoader" --> panelLoader["Panel data loading tests"]
specs -- "useValuesWebSocket" --> valuesWS["Field values WS/stream tests"]
specs -- "useAnnotationsData" --> annotations["Annotations data workflow 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>Tests</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>usePanelDataLoader.spec.ts</strong><dd><code>Comprehensive
tests for panel data loader</code>
</dd></summary>
<hr>
web/src/composables/dashboard/usePanelDataLoader.spec.ts
<ul><li>Add extensive tests for loadData flow<br> <li> Mock services,
WS, streaming, cache, annotations<br> <li> Cover variables, partitions,
PromQL, histograms<br> <li> Validate error, abort, and cache
behaviors</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8239/files#diff-f8306bde2ca2b3902674ef12091f2867c7e8b13d4d59d39d4d4152704326c09a">+2666/-0</a></td>
</tr>
<tr>
<td>
<details>
<summary><strong>useValuesWebSocket.spec.ts</strong><dd><code>Tests for
values WebSocket and fetching paths</code>
</dd></summary>
<hr>
web/src/composables/dashboard/useValuesWebSocket.spec.ts
<ul><li>Test trace ID management and handlers<br> <li> Verify
WS/stream/REST field values paths<br> <li> Validate response merging and
meta updates<br> <li> Cover error and edge-case handling</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8239/files#diff-9c2dfef7fc575383b8084ce0d4a81a8cdf3db555182dd175adc4f2292a6e9771">+719/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>useAnnotationsData.spec.ts</strong><dd><code>Unit tests
for annotations data composable</code>
</dd></summary>
<hr>
web/src/composables/dashboard/useAnnotationsData.spec.ts
<ul><li>Test add/edit annotation UI state flows<br> <li> Verify
notifications and watchers<br> <li> Test dashboard panel extraction
logic<br> <li> Handle error and edge scenarios</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8239/files#diff-e37e9b0c45ffb85d81b95d7aa109858be3a825e70d25fd2e1876bcf89693a191">+582/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>usePanelCache.spec.ts</strong><dd><code>Tests for panel
cache behavior</code>
</dd></summary>
<hr>
web/src/composables/dashboard/usePanelCache.spec.ts
<ul><li>Add unit tests for panel cache composable<br> <li> Validate
get/save interactions and edge cases</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8239/files#diff-e6aaaf3ac620a36599bb16bc25a0368299a05f9514788366bb98e34f27a9d9d1">+524/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>useCancelQuery.spec.ts</strong><dd><code>Tests for
cancel query composable</code>
</dd></summary>
<hr>
web/src/composables/dashboard/useCancelQuery.spec.ts
<ul><li>Add tests for canceling running queries<br> <li> Cover WS and
streaming cancellation paths</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8239/files#diff-b32a712642618ba717898c9722d44f0bc76a439fe03948e5d3123bcc783c1908">+542/-0</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>useAnnotations.spec.ts</strong><dd><code>Tests for
annotations composable</code>
</dd></summary>
<hr>
web/src/composables/dashboard/useAnnotations.spec.ts
<ul><li>Add tests for annotations fetching logic<br> <li> Cover success
and error flows</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8239/files#diff-9e2e3a05f1f983e70a15029a64d007d4fc69f6bbc623cf6c03a8bac53e0b3cd3">+310/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
424502c91a |
fix: fixed traces error handling (#8236)
### **PR Type**
Bug fix
___
### **Description**
- Prevent undefined error messages in traces UI
- Safely build HTML for error details
- Reset error detail before each query
- Robust parsing of backend error responses
___
### Diagram Walkthrough
```mermaid
flowchart LR
Query["User runs trace query"] -- "API error" --> Catch["Catch error"]
Catch -- "extract error/message/code" --> Parse["Normalize error fields"]
Parse -- "set errorMsg/errorCode/errorDetail" --> State["UI state updated"]
State -- "render" --> Renderer["SanitizedHtmlRenderer shows details"]
```
<details> <summary><h3> File Walkthrough</h3></summary>
<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
<td>
<details>
<summary><strong>Index.vue</strong><dd><code>Harden traces error
handling and rendering</code>
</dd></summary>
<hr>
web/src/plugins/traces/Index.vue
<ul><li>Build error HTML with safe conditional template string.<br> <li>
Reset <code>errorDetail</code> before each query run.<br> <li> Handle
error sources: <code>error</code>, <code>message</code>, and
<code>code</code>.<br> <li> Populate <code>errorDetail</code> from
<code>error_detail</code> when available.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8236/files#diff-952e26660e4d6aadd292ea2ef7b314e139a4f516d0b3931e20d42d6394700d07">+25/-12</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
7b8571ee57 |
fix: check quick mode enabled or not while redirecting from log stream (#8245)
### **PR Type** Bug fix #8230 ___ ### **Description** - Include quick mode flag when routing - Preserve org and datetime query params - Ensure log stream redirects respect config ___ ### Diagram Walkthrough ```mermaid flowchart LR A["LogStream redirect"] -- "router.push with query" --> B["Logs view"] C["zoConfig.quick_mode_enabled"] -- "mapped to query param" --> 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>Bug fix</strong></td><td><table> <tr> <td> <details> <summary><strong>LogStream.vue</strong><dd><code>Add quick_mode query param to logs redirect</code> </dd></summary> <hr> web/src/views/LogStream.vue <ul><li>Add <code>quick_mode</code> query param on redirect.<br> <li> Value derived from <code>store.state.zoConfig.quick_mode_enabled</code>.<br> <li> Ensures logs view receives quick mode state.</ul> </details> </td> <td><a href="https://github.com/openobserve/openobserve/pull/8245/files#diff-56f4223b74568c10bc305741cc9fc3a8830184a251b4eaa6a2649033bc6200e3">+1/-0</a> </td> </tr> </table></td></tr></tr></tbody></table> </details> ___ |
||
|
|
20678e5e9d |
fix: RUM component testing (#8194)
### **PR Type** Tests, Enhancement ___ ### **Description** - Add extensive RUM component unit tests - Harden dashboard layout null checks - Initialize variables state safely - Minor UI/typing/import fixes ___ ### Diagram Walkthrough ```mermaid flowchart LR specs["Add RUM component specs"] -- validate --> dashboards["Dashboards (API/Errors/WebVitals)"] dashboards -- safer init --> vars["Variables default state"] dashboards -- guard --> layout["Ref layoutUpdate null-checks"] SearchBar["SearchBar.vue"] -- disable guard --> btn["Run Query button"] utilsDate["utils/date.ts"] -- lint fix --> commas["Trailing commas"] ``` <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>19 files</summary><table> <tr> <td><strong>ApiDashboard.spec.ts</strong><dd><code>Add comprehensive tests for API dashboard</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-53095dbafa0cb9c6eed90240cb8af9f89d118168f6af76bdf51267a667ccff2d">+1481/-0</a></td> </tr> <tr> <td><strong>SearchBar.spec.ts</strong><dd><code>Add unit tests for RUM SearchBar</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-8665e9741021e1ce49dcf12426e74107f678bd5708125104d95f82798f1a33a1">+715/-0</a> </td> </tr> <tr> <td><strong>SessionsList.spec.ts</strong><dd><code>Add tests for sessions list table</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-d4b43b6d94727c8fe42479141a58908fc490227bd1e87eec6d64c9351efbdcc8">+615/-0</a> </td> </tr> <tr> <td><strong>ErrorEvents.spec.ts</strong><dd><code>Add tests for error events table</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-81b9f9fcb1fd9a2f50bb512de7de11353519d95d7c276999eb8efa9e315a91d2">+567/-0</a> </td> </tr> <tr> <td><strong>ErrorTags.spec.ts</strong><dd><code>Add tests for error tags view</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-c6f52cc79dd03d5b9bb6fb66a7c2ca29b66cd2e8bcaf1fa071d52cd43f388f59">+622/-0</a> </td> </tr> <tr> <td><strong>PlayerEventsSidebar.spec.ts</strong><dd><code>Add tests for player events sidebar</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-89b65487bce928cbff9e6f17ea7b2288a5b44918c408d48f17e834454d8f6c60">+570/-0</a> </td> </tr> <tr> <td><strong>ErrorsList.spec.ts</strong><dd><code>Add tests for errors list</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-e65880c9658bdfd0cc8c6dc2144760f924ef4cf6919010e5f48b2ed47f134745">+491/-0</a> </td> </tr> <tr> <td><strong>WebVitalsDashboard.spec.ts</strong><dd><code>Add tests for Web Vitals dashboard</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-62eb2eceb30d2aa28e78d4ee898d09aae3d1f0fa176d4bca91055b50024e6c9f">+546/-0</a> </td> </tr> <tr> <td><strong>ErrorHeader.spec.ts</strong><dd><code>Add tests for error header</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-4b0143e04fd73e173ae4e9696d2654543eaf0c0a85e6610d267a3b2ec3f145d8">+459/-0</a> </td> </tr> <tr> <td><strong>VideoPlayer.spec.ts</strong><dd><code>Add tests for RUM video player</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-ee567bd4fd196facb768c7a15cbd7e14feff6be027d3bb78e65ae811319ca82c">+485/-0</a> </td> </tr> <tr> <td><strong>ErrorSessionReplay.spec.ts</strong><dd><code>Add tests for error session replay</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-40ee2b3a9b103e5c6e5e431609444f0296d2bee46f3f1dd2c606c86e22d8ffe5">+482/-0</a> </td> </tr> <tr> <td><strong>ErrorStackTrace.spec.ts</strong><dd><code>Add tests for error stack trace view</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-a52e17d1791c4e34e92e7e5953d4df509f4dc8a49910865efc0f13bffc9b2096">+423/-0</a> </td> </tr> <tr> <td><strong>ErrorEventDescription.spec.ts</strong><dd><code>Add tests for error event description</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-f3a969642703ccec1b54c32c7ef3c2a85d9e9ea15f322ef362eefe71ae736acd">+495/-0</a> </td> </tr> <tr> <td><strong>ErrorDetail.spec.ts</strong><dd><code>Add tests for error detail view</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-8517542d07e62e45104db342cc69f85a1c07776aecbee8279456d3000f8dd2da">+420/-0</a> </td> </tr> <tr> <td><strong>AppTable.spec.ts</strong><dd><code>Add tests for generic AppTable</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-37e20196ead408438033e30d909300ef1c02b01fa690e2d4b8cd21472202e4da">+425/-0</a> </td> </tr> <tr> <td><strong>ErrorsDashboard.spec.ts</strong><dd><code>Add tests for Errors dashboard</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-1330edb3964758b7c9cfbdfb077eac5fcce30b8b4d2f204d69ab71c4041d37c5">+383/-0</a> </td> </tr> <tr> <td><strong>ErrorTypeIcons.spec.ts</strong><dd><code>Add tests for error type icons</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-737652a4154b05c932a34cf218c3c1432ff8efc557d512813a6879830baf668b">+368/-0</a> </td> </tr> <tr> <td><strong>ErrorTag.spec.ts</strong><dd><code>Add tests for single error tag</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-d4bf1e6d4e71451a9ce8ead11328edff5064cb3693b01b53ce653694710045ef">+355/-0</a> </td> </tr> <tr> <td><strong>SessionLocationColumn.spec.ts</strong><dd><code>Add tests for session location column</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-b853b01be9d14931163c1ae8f5287c28f1d43df2a45e113519d853d3a14c1b41">+346/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>5 files</summary><table> <tr> <td><strong>date.ts</strong><dd><code>Add debug log and lint fixes</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-b178bce26d7ddb8d02569fa666e3250abbc1f269d7b7a1068a4bd026f4bdcd26">+3/-2</a> </td> </tr> <tr> <td><strong>ApiDashboard.vue</strong><dd><code>Safer variables init and layout guards</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-52c091831fcfb625a54f7b56a08c10694a024daa44b6b337d66260461254389e">+24/-12</a> </td> </tr> <tr> <td><strong>SearchBar.vue</strong><dd><code>Guard stream list access; import cleanup</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-d20c6ba53e6a9adfe67b2f83fe76357fb541b2764dd40cb16627599e0c80e63f">+3/-30</a> </td> </tr> <tr> <td><strong>ErrorsDashboard.vue</strong><dd><code>Initialize variables and guard layout updates</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-46138c05241c5e0911a0feba39a21dbb8452453c0e26a1d00c3493cc579f07b2">+14/-8</a> </td> </tr> <tr> <td><strong>WebVitalsDashboard.vue</strong><dd><code>Add layout null-checks and exports</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-bbb15649f6ecf4b2968a8173091ef8b2a21bfe39bff8e08f91566bca189cca09">+10/-5</a> </td> </tr> </table></details></td></tr><tr><td><strong>Miscellaneous</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>WebVitalsDashboard.spec.ts.backup</strong><dd><code>Backup spec file for Web Vitals</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8194/files#diff-407d197787cb019e97f989a21530c722baf103aab5583cf85b3f7113b9543e88">+1308/-0</a></td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ |
||
|
|
8af3495611 |
fix: cloud sync (#8222)
### **User description**
This is for syncing the changes done in cloud to main branch. No changes
for non-cloud code.
___
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Add invite listing and decline APIs
- Bypass auth for user-scoped invite routes
- Improve trial-expiry handling and logging
- Add org cache and invalidation hooks
___
### Diagram Walkthrough
```mermaid
flowchart LR
FE["Login & Invitations UI"] -- "list/accept/decline" --> API["/api/invites*, /{org}/member_subscription"]
API -- "auth bypass for user-scoped invites" --> Auth["AuthExtractor/TokenValidator"]
Auth -- "pending invites flag" --> LoginRedir["/config/redirect builds URL params"]
OrgSvc["Organization Service"] -- "generate/list/decline/delete" --> InvitesDB["Org Invites"]
OrgSvc -- "invalidate cache" --> OrgCache["Org table in-memory cache"]
Ingest["Ingestion services"] -- "trial expired -> 429" --> Clients["Ingestion Clients"]
```
<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>25
files</summary><table>
<tr>
<td><strong>user.rs</strong><dd><code>Expand invite payload with org and
inviter</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-e13b3a981fd70182b9738a6b0ecfdee915c5b36757703a87741e1eddf3f6e786">+2/-0</a>
</td>
</tr>
<tr>
<td><strong>auth.rs</strong><dd><code>Auth bypass and key handling for
invite routes</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-9bc2b1841504a435f66ad094f72ddbe7b7fa75e5e1557b8adbfe36f7f0592e1b">+36/-0</a>
</td>
</tr>
<tr>
<td><strong>jwt.rs</strong><dd><code>Return new user and pending invite
flags; defer org creation</code></dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-232cab74f4cbf135af424744272e17732fbda8ac005d33c0acb4597e65479d02">+22/-4</a>
</td>
</tr>
<tr>
<td><strong>token.rs</strong><dd><code>Allow invite/member routes
without org user; header injection</code></dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-3339b4a964c121766ef87fcec0070f27a2b7085cf81281b53154e53d33cb28cf">+34/-0</a>
</td>
</tr>
<tr>
<td><strong>ingest.rs</strong><dd><code>Suppress logging for trial
expiry errors</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-24f250254ecfdbe004af9dc0ea23f8a2c0105ae0898690ed3e565089e5d8eef9">+30/-9</a>
</td>
</tr>
<tr>
<td><strong>org.rs</strong><dd><code>Pending-only invites; delete invite
API; trial extend cache poke</code></dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-b47c0c1a8a78524196176430268eecdbfaf6f46d6b95873d3cbe70cfd67182b0">+40/-4</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Include pending_invites flag in
login redirect</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-ca09c9c9b020049bdbc3382c466bfcca80daac92e98760d9a9a76172abf34049">+4/-4</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>List pending invites and decline
invite endpoint</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-56897e42f9436a640bc70fddc25686485ba8ae1223635b32d252a0333309f748">+36/-1</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Wire new invite endpoints into
router</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-02556e3f515441b5d2b6bbea7829df488beac03c4cc41309a6638ae3c0e0aec6">+2/-0</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Add TrialPeriodExpired error
variant</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-90c725d0e77a6e7d4bcc130cf5783848a5cf0efdb304b351cd63cacf8775fc36">+2/-0</a>
</td>
</tr>
<tr>
<td><strong>organizations.rs</strong><dd><code>Add in-memory org cache
with invalidation</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-4d87f9fe379a5d161a3e7c3c77f7f320be738e6a70c785aa5ce93cb0830c0147">+77/-7</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Start cloud billing watcher on
cloud builds</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-f2e4c29b8eef22189ec704a832633c4bd135a24444f054864c98064bd0963681">+3/-0</a>
</td>
</tr>
<tr>
<td><strong>organization.rs</strong><dd><code>Invalidate org cache on
watch and mutations</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-ce65cea926a09721a8fea14d07fe188bc2b887218e95d74a8bffefb54001da50">+4/-0</a>
</td>
</tr>
<tr>
<td><strong>user.rs</strong><dd><code>Delete invites for user
helper</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-6ee6b0fc9ed03224d4ddf0b7b631c6f81ff7d1d579bdb98d2c5d4453852eb5d6">+4/-0</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Return trial expiry as dedicated
error</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-7c7b5bca85f0ced652965cae66540c96f56dfcca4f4c16b77bf7b45aac203d1b">+1/-3</a>
</td>
</tr>
<tr>
<td><strong>loki.rs</strong><dd><code>Silence trial expiry logs for Loki
ingestion</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-a970c8c4785d4e4d878218615b17eec0cf4b4976121766b002c2b2f76371bfe6">+4/-1</a>
</td>
</tr>
<tr>
<td><strong>json.rs</strong><dd><code>Map trial expiry to HTTP 429 in
JSON ingest</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-506987e61095a54e47f7f208dad89f9f1bce595fa6bf1ba8a7d746f2b2ff6c4a">+15/-6</a>
</td>
</tr>
<tr>
<td><strong>otlp.rs</strong><dd><code>Return 429 for trial expiry;
reduce noise</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-a24391bef75a4678c50724e8b5f305ec0ee8c2c74c68be9d677765de68b5d8dd">+17/-7</a>
</td>
</tr>
<tr>
<td><strong>organization.rs</strong><dd><code>Invite generation
validation; delete/decline invite flows</code></dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-6b3c3c2b027c1158c0d41302cc69dfcd20ab68a6a4fa365cda403f838940bbb4">+48/-1</a>
</td>
</tr>
<tr>
<td><strong>mod.rs</strong><dd><code>Handle trial expiry with 429;
logging tweaks</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-66f3b4f5e7927092fd6e57738687a1091b6f316638f7c58f8d7be9addb72bc30">+34/-14</a>
</td>
</tr>
<tr>
<td><strong>users.rs</strong><dd><code>Enrich invite list; optional
pending filter; cleanup on removal</code></dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-98da2588a28d62bb2e301d989836125f89f89b76272cd7f75e08ec4deeea5f38">+50/-6</a>
</td>
</tr>
<tr>
<td><strong>organizations.ts</strong><dd><code>Add decline subscription
API client</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-2c3bad4c7a9fcedd7a653599381149b82f9c350b177de9d72431013807d4c36f">+10/-7</a>
</td>
</tr>
<tr>
<td><strong>users.ts</strong><dd><code>Add pending/accept/reject invite
APIs</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-a334d8d570d9bdcaa3d4c8c2a993eff009a1ec8eb499c8a3d1a292d9224159d0">+12/-4</a>
</td>
</tr>
<tr>
<td><strong>InvitationList.vue</strong><dd><code>New UI to accept or
reject invites</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-ee97546ff1aba36cc0b24cb20782502c7c88279850cc3d540ea5685209f10702">+409/-0</a>
</td>
</tr>
<tr>
<td><strong>Login.vue</strong><dd><code>First-login invite handling and
logo tweaks</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-a135c379ef6ac8f92199ea5f7ff19a227971a9b0a87ccccf87c0268740522c2c">+178/-58</a></td>
</tr>
</table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>en.json</strong><dd><code>Add invitation-related
translations</code>
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8222/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+18/-0</a>
</td>
</tr>
</table></details></td></tr></tr></tbody></table>
</details>
___
---------
Signed-off-by: Yashodhan Joshi <yjdoc2@gmail.com>
Co-authored-by: Subhra264 <chakrabortysubhradeep556@gmail.com>
Co-authored-by: udev <uddhav@openobserve.ai>
Co-authored-by: Yashodhan Joshi <yjdoc2@gmail.com>
Co-authored-by: omkark06 <omkar@zinclabs.io>
Co-authored-by: udev <uddhavdave1@gmail.com>
|
||
|
|
46fa42a319 |
fix: dashboard unit tests (#8111)
### **PR Type** Tests, Enhancement ___ ### **Description** - Add extensive dashboard utility unit tests - Introduce Sankey builder component tests - Export helper for PromQL series props - Temporarily skip flaky UI tests ___ ### Diagram Walkthrough ```mermaid flowchart LR utils["Dashboard utils tests"] -- add --> convertDataIntoUnitValue.spec component["Sankey builder tests"] -- add --> DashboardSankeyChartBuilder.spec promql["PromQL utils"] -- export helper --> getPropsByChartTypeForSeries ui_tests["UI specs"] -- skip flaky --> MenuLink.spec & AppSessions.spec ``` <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>19 files</summary><table> <tr> <td><strong>convertDataIntoUnitValue.spec.ts</strong><dd><code>Expand coverage for formatting, colors, validation</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-e9d8a984ed78af13e4d4424c605a3a55fe6ad2a3f7e403fad156ce17ffdc3bdd">+1869/-1</a></td> </tr> <tr> <td><strong>DashboardSankeyChartBuilder.spec.ts</strong><dd><code>Add full test suite for Sankey builder</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-97b54e2aa2abc946d6ebf5624f8985260fe426cd508965408ee966d829e30872">+1279/-0</a></td> </tr> <tr> <td><strong>MenuLink.spec.ts</strong><dd><code>Skip unstable external-link test case</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-bd04ff500fc31583a430993830eed36cdf6254c2ce1a52b8a58a07b89bb9f825">+1/-1</a> </td> </tr> <tr> <td><strong>AppSessions.spec.ts</strong><dd><code>Skip flaky mount-time data fetch test</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-8729444f05a0c753cc1f6fbb229e0ab7fd2ac46bd6ea454131ff80314d57a888">+1/-1</a> </td> </tr> <tr> <td><strong>convertSQLData.spec.ts</strong><dd><code>Add SQL data conversion unit tests</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-1dc85f7550b15820974ad93fa461de48d24bc5cbed621bffddb27250211fa88d">+8632/-0</a></td> </tr> <tr> <td><strong>useDashboardPanel.spec.ts</strong><dd><code>Add unit tests for dashboard panel composable</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-5dbd79fdde0cbbb7db569095fa062931286463da0b5e72b1fbe99f56116fa5e2">+4723/-0</a></td> </tr> <tr> <td><strong>AddPanel.spec.ts</strong><dd><code>Add tests for add panel flow</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-5565bef51b35f1e9c8167eab0a22dc61c1d697dca45fe31f46cc8e5e9020ca74">+3540/-0</a></td> </tr> <tr> <td><strong>convertPromQLData.spec.ts</strong><dd><code>Add unit tests for PromQL conversion</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-2769044ec488ef4070c2e1a28ce23ec36b945e46c903b870f8b340cbd6b05211">+2086/-0</a></td> </tr> <tr> <td><strong>DashboardQueryBuilder.spec.ts</strong><dd><code>Add tests for dashboard query builder</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-f44793de54d6ac2d9c7b3dd504d8b1952cb6e6b2d984254a8466705387cb82ce">+1170/-0</a></td> </tr> <tr> <td><strong>VariableQueryValueSelector.spec.ts</strong><dd><code>Add tests for variable query selector</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-7e096d825438fc75baab2ef87cb4a04ae7ac1206e5021b71ce42cedd0984e064">+1128/-0</a></td> </tr> <tr> <td><strong>VariablesValueSelector.spec.ts</strong><dd><code>Add tests for variables value selector</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-9f234d5a15777d62cf8cd6cc9f0d68fbc0419a87ef58fbdb11de8c46ed6d17cb">+1137/-0</a></td> </tr> <tr> <td><strong>DashboardMapsQueryBuilder.spec.ts</strong><dd><code>Add tests for maps query builder</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-08c9fd103348dc8adea1c343bdaa25c176378a91656cda7f336dd622d8598fef">+1112/-0</a></td> </tr> <tr> <td><strong>viewDashboard.spec.ts</strong><dd><code>Add tests for dashboard view flow</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-0db87f5ba2d11ee942a8054598d18568ce7542e23c830fcf5d802c4338e64937">+1175/-0</a></td> </tr> <tr> <td><strong>DashboardGeoMapsQueryBuilder.spec.ts</strong><dd><code>Add tests for geomap query builder</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-d9b9e150ca7ac48d81236c882b2aa1f188e26fc2c2d13d69936c3288f305d803">+1079/-0</a></td> </tr> <tr> <td><strong>FieldList.spec.ts</strong><dd><code>Add tests for field list interactions</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-7273ac40c01bb36400c5dd32f86cce6576dc034cbec0010f6e93e22348578ed4">+971/-0</a> </td> </tr> <tr> <td><strong>DashboardErrors.spec.ts</strong><dd><code>Add tests for dashboard errors display</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-a5d738d4bafc19b5e324d0c1826f73503a8539d8900cb2f80ff1284780865ac4">+898/-0</a> </td> </tr> <tr> <td><strong>CustomMarkdownEditor.spec.ts</strong><dd><code>Add tests for custom markdown editor</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-c706715d0bc3f6b3b5e067d1926b0bd1e01b5aba291072cd612de4f9fed25c4f">+916/-0</a> </td> </tr> <tr> <td><strong>convertGeoMapData.spec.ts</strong><dd><code>Add unit tests for geomap conversion</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-c75999bb5bc4dc27c5da1fad5d556614fa139b0b2cae7c2dc200c11133141937">+1061/-0</a></td> </tr> <tr> <td><strong>TabsSettings.spec.ts</strong><dd><code>Add tests for tabs settings component</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-702a83e8e5bce6917f8cc2353dc224d37e667bdc39119f2176185cb4d2fe3b65">+820/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>1 files</summary><table> <tr> <td><strong>convertPromQLData.ts</strong><dd><code>Export chart-type series props helper</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-68d70ba6c622911d48cdb567940dc404a4a6468b86c6d24fb54e5f1d8aa5ca2a">+1/-1</a> </td> </tr> </table></details></td></tr><tr><td><strong>Additional files</strong></td><td><details><summary>83 files</summary><table> <tr> <td><strong>DateTimePickerDashboard.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-384ca377212c39553c97970a8b57888b7aea566e739ed498304360111c7884b8">+498/-0</a> </td> </tr> <tr> <td><strong>AddDashboard.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-3f4eccc613c6abad9a1103fab41aa4f8eb66a74465aea5e3b077c7c31525e91e">+338/-0</a> </td> </tr> <tr> <td><strong>AddFolder.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-3c70ca7fa32d6b2f499764c9bae0fcaf6d24a468eb71122865f79be4eed5bd45">+690/-0</a> </td> </tr> <tr> <td><strong>ExportDashboard.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-5aba49ace28e114de7b4113ea725d4cabc6e343aa0bbc41fcb4250de0dfdb1b1">+409/-0</a> </td> </tr> <tr> <td><strong>MoveDashboardToAnotherFolder.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-05b3c990e345c5c11c1631547269b3644b652b78c4185b5123d3211218adb99d">+643/-0</a> </td> </tr> <tr> <td><strong>OverrideConfigPopup.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-5c66103162fa701af8c78ba2bc62789ac8fa3f98f281309591ffd4da154fbc0e">+549/-0</a> </td> </tr> <tr> <td><strong>PanelContainer.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-d74ba5293a041ca029d5e9b8fec08d187e51a099451ab0372747d3ec175559a9">+497/-0</a> </td> </tr> <tr> <td><strong>PanelSchemaRenderer.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-897e6e12808163dfb85ea964ac97d45a8c50146672558b4d86de292daaf021ce">+827/-0</a> </td> </tr> <tr> <td><strong>QueryInspector.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-5db282f1e123d731ab4ed83d9500a87bbdd968f28c2c9f11179eaebed4f6bef6">+679/-0</a> </td> </tr> <tr> <td><strong>SelectDashboardDropdown.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-9c9dd44be67486631521fa4e8238a6e782d659afb0d71a39d394f22d21fa2d1e">+717/-0</a> </td> </tr> <tr> <td><strong>SelectFolderDropdown.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-1ff4f3a09802e742b9cc26990c827d9331529a74bc6fc1678473821dc851e1b7">+658/-0</a> </td> </tr> <tr> <td><strong>SelectTabDropdown.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-3b923039e16f1a26cce563eaefcfe3405e551eaa12ac10c4382ac4d67d9564b2">+780/-0</a> </td> </tr> <tr> <td><strong>AddAnnotation.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-c096dd81c6463d55ba96fed549d28d7c83191639ccfd5dccece303a663bfdf9b">+242/-0</a> </td> </tr> <tr> <td><strong>BackGroundColorConfig.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-e23c4dbce4cba3fd64ac480f21ab9dbdeba66bac46b2277874ee307597980707">+651/-0</a> </td> </tr> <tr> <td><strong>ChartSelection.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-88bf57e3c40ed695321a7366d2f770f6c22e5d8c1adbb057d2a805333ad57de9">+177/-0</a> </td> </tr> <tr> <td><strong>ColorBySeries.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-92afcb1fa6c34cde082443bde1c478d9e98c0074b69f9f8f2343bb0880f2c183">+224/-0</a> </td> </tr> <tr> <td><strong>ColorBySeriesPopUp.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-bd65ddc9813c2a5679b0aeb602afa55e8c15bb3b39dd48cd2489b2e6e9c51965">+224/-0</a> </td> </tr> <tr> <td><strong>ColorPaletteDropDown.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-dbe43d77b398c5f6ede77ff1006a9b7d39b405842d6ca488061e1cbcde566117">+757/-0</a> </td> </tr> <tr> <td><strong>CommonAutoComplete.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-f11b0763e1eea3c18bf2a69933d84a78df0f18b70a5b2fb3c50459c557ecc842">+588/-0</a> </td> </tr> <tr> <td><strong>ConfigPanel.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-a4e717cd660ad6fa369629f8de524f4d57bf4f71b11d3244ce41b9ed9f0379d2">+617/-0</a> </td> </tr> <tr> <td><strong>CustomChartEditor.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-00410898c60d1d7d4803eba301bf070d6b3765db0983c06b3d624c485dc1339e">+693/-0</a> </td> </tr> <tr> <td><strong>CustomHTMLEditor.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-b07faae78603a95d7cb54e4a6dde9381cad82952a76ad78e23a393fb12c635a2">+546/-0</a> </td> </tr> <tr> <td><strong>DashboardQueryEditor.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-6a37b5f775011f4014399dcb3bae3b3d85403896533c008470b1c9712db96e82">+507/-0</a> </td> </tr> <tr> <td><strong>Drilldown.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-2ffe39b111c8981f0bbf7fcf19ff815fa97a24e007dcc17a23d0e7a2ed6388a1">+605/-0</a> </td> </tr> <tr> <td><strong>DrilldownPopUp.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-73d704d414f3ea194970a4f079bc1d9fedfdf8547875758133bc1e6e335523e5">+723/-0</a> </td> </tr> <tr> <td><strong>DrilldownUserGuide.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-0015f582294fe5a56347aea7c3ce42e12100dd4363176fd8013683356aaba74a">+603/-0</a> </td> </tr> <tr> <td><strong>HistogramIntervalDropDown.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-bc0fbf96ee3ce5f28b7896b3c8f55605f68cdc3386cae22b9adc8c806af9e514">+368/-0</a> </td> </tr> <tr> <td><strong>MarkLineConfig.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-f6e52e135ac6d21bd1d12226feee88ccaf24bad358890d17af3645ef7103d3a1">+503/-0</a> </td> </tr> <tr> <td><strong>OverrideConfig.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-e05709bd1fededda3d3ed90a47d9fddb8ae171e87c7f25d07ecca1e6a8ab33ee">+571/-0</a> </td> </tr> <tr> <td><strong>PanelSidebar.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-4b5378e7a3c198d89d8de88fc9bb3ccb5829c7572d860c42d46b565fd37a2894">+622/-0</a> </td> </tr> <tr> <td><strong>QueryTypeSelector.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-3094340ad57af51f1bcbad3b63a8ab860a46905ab79997289b89b601553934fd">+777/-0</a> </td> </tr> <tr> <td><strong>SortByBtnGrp.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-7e52dbb6902695ae38e15e980407d761d528871631365a12726f9731efaccec2">+405/-0</a> </td> </tr> <tr> <td><strong>ValueMapping.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-4920ea2ac96411628202d5350adae25ea97a1cd8eede8d8bf5252e5d468d82f8">+424/-0</a> </td> </tr> <tr> <td><strong>ValueMappingPopUp.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-ef4bd7d95957a65c1efdba2d541a0242d249adc0381efcfd2e1c684c531fab6b">+553/-0</a> </td> </tr> <tr> <td><strong>ChartRenderer.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-f005709a26e4b51de30457223129ce0ca84a29c5f69a8d7c84fa35b5f3376fd6">+464/-0</a> </td> </tr> <tr> <td><strong>CustomChartRenderer.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-e5f37800aafd21baeda455df4656da5221369bb6d72880a28294b8a1a83b5f30">+679/-0</a> </td> </tr> <tr> <td><strong>GeoMapRenderer.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-7bf374bb429eafe8b265c34e63fe99df1c05e102be38125bcf3234756f95f12c">+878/-0</a> </td> </tr> <tr> <td><strong>HTMLRenderer.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-128fd699e9ae1552077c27185db37871b57e0002558f89377ec64b4e29e1d7f7">+492/-0</a> </td> </tr> <tr> <td><strong>MapsRenderer.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-588141a6c90f09e4b39ea53d03c1334c0b5cc42c9f35272a9f2eeb6e2ddb852e">+490/-0</a> </td> </tr> <tr> <td><strong>MarkdownRenderer.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-63eed3fbb6882be90c70e833f9f64e9e8c6511e4c40162aa5c1a7662fc79469d">+600/-0</a> </td> </tr> <tr> <td><strong>TableRenderer.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-550a0a669838c47473442a7d37407fead8b7cb2a05121880dd2c0522022c8c3f">+555/-0</a> </td> </tr> <tr> <td><strong>AddSettingVariable.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-3f3a2cea87e91a038695bdd8406d72680e4b665bea7a7186a84fbef91c8bdf81">+661/-0</a> </td> </tr> <tr> <td><strong>GeneralSettings.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-2b3e3d2794669f6b030b6752ef262b96d6504cb1bcd661a3cd248c21df412064">+767/-0</a> </td> </tr> <tr> <td><strong>SinglePanelMove.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-ba25253c9f76317afde347d4d6a0afbcc95bcf847640ab81a1b40fa0bd4b4bc5">+565/-0</a> </td> </tr> <tr> <td><strong>TabsDeletePopUp.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-53eadbd58dae03e5fbf9db545d58a03d0d504725544b0500d7b16c5d041668d3">+611/-0</a> </td> </tr> <tr> <td><strong>VariableAdHocValueSelector.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-82c2b639609e68e8601435e82ae21dcda2ff626853b3a5e310c69e237c34c38d">+422/-0</a> </td> </tr> <tr> <td><strong>VariableCustomValueSelector.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-8ce1eb841c0ae350a6bb846705ff9d085d1ae2c97ab409b1ff533ef7bcebfa8f">+635/-0</a> </td> </tr> <tr> <td><strong>VariableSettings.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-fb9c343df2d52c854489057d4a66a1b6c4052637ef12dca16c9b77c0a4e680f4">+696/-0</a> </td> </tr> <tr> <td><strong>VariablesDependenciesGraph.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-153d420e39a1fdf9b0918f8b765b21a5e9fe6fed4b142fd1c9e24af43c0bb525">+397/-0</a> </td> </tr> <tr> <td><strong>DashboardHeader.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-7ec062f2fc27df156ca18a22557c1f80426e3fa82c3cfd6386f48efc9e73f757">+440/-0</a> </td> </tr> <tr> <td><strong>AddTab.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-25b77cc0d60a268fc0fbd413e53b1c0ace69164ffd58dc0b0081717e4773b365">+767/-0</a> </td> </tr> <tr> <td><strong>TabList.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-1c0ad8f6163d343eba185ac20d0fe84478afd5975242abc0a957d7ac74a8a5a9">+604/-0</a> </td> </tr> <tr> <td><strong>ViewPanel.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-177dbf7e92561bc76e13819fd7a1d681f77b845071a7c0901857a26660b3ba54">+744/-0</a> </td> </tr> <tr> <td><strong>ApiDashboard.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-53095dbafa0cb9c6eed90240cb8af9f89d118168f6af76bdf51267a667ccff2d">+550/-0</a> </td> </tr> <tr> <td><strong>ErrorsDashboard.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-1330edb3964758b7c9cfbdfb077eac5fcce30b8b4d2f204d69ab71c4041d37c5">+178/-0</a> </td> </tr> <tr> <td><strong>WebVitalsDashboard.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-62eb2eceb30d2aa28e78d4ee898d09aae3d1f0fa176d4bca91055b50024e6c9f">+547/-0</a> </td> </tr> <tr> <td><strong>VisualizeLogsQuery.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-fdecf623f9a4bdfe679c6c2e4424f31cbce4a1234cb45e1de472189a46c9d4e2">+674/-0</a> </td> </tr> <tr> <td><strong>TraceBlock.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-1406f52daa846db3febbb595e81c192166b9e69bc190c5039b6c4866412b877a">+1/-1</a> </td> </tr> <tr> <td><strong>alertChartData.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-5ab33266e226684ae77d259392edb382f71436edec442411a5500451ce316b31">+259/-0</a> </td> </tr> <tr> <td><strong>calculateGridForSubPlot.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-f7067cef10cdf9d66fc91a46516c9f2bc0209489bc47fb3d1446666485269680">+374/-0</a> </td> </tr> <tr> <td><strong>colorPatette.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-d266bf5ce0a458ec9fa8120ff85c252f7a671dd6df9aece83daf7c7b05b50ed1">+576/-0</a> </td> </tr> <tr> <td><strong>convertCustomChartData.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-228c0f06dd35f43d80dc9f671803fba74ac7e218c1606247d1e44259a18b426e">+771/-0</a> </td> </tr> <tr> <td><strong>convertDashboardSchemaVersion.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-d32a1607489b29014dd8ecad34358644be46d2735cf49dfa5151671e591d6360">+537/-0</a> </td> </tr> <tr> <td><strong>convertPanelData.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-d798f99807f72b07f58e09bfe8723fdcee3dcd747f328436ef6bbd7d8f5afa36">+889/-0</a> </td> </tr> <tr> <td><strong>convertSankeyData.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-e9dce93200dba86a0e13d22ec5a0b5e0f4c5fb8349c904c8780fdb6fe675f4ae">+588/-0</a> </td> </tr> <tr> <td><strong>convertTableData.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-b3b39fac4e8b48b3ee80827502ece784d8e52f56fd2f1d80acac353fd3a9fe3f">+599/-0</a> </td> </tr> <tr> <td><strong>datetimeStartPoint.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-7c56f19e7b4c6f5738c814cb013f698fdfd065286ef4539e14a868e8e114a1c8">+214/-0</a> </td> </tr> <tr> <td><strong>getAnnotationsData.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-4b12626e491ea366087b3cdc2eb66012bf45555504313ca4664f3ae4d93b6e08">+351/-0</a> </td> </tr> <tr> <td><strong>useCustomDebouncer.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-f6c3bc11a1cdc66a9108245e3ec6080bf4f6f0b5a2eaea679546c0b1f00968c2">+307/-0</a> </td> </tr> <tr> <td><strong>variablesDependencyUtils.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-1a8fd83eb7a8b0c906e668e7e4120a40f7b9853d5bfb485a7c569ff980e4a780">+523/-0</a> </td> </tr> <tr> <td><strong>variablesUtils.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-769aea99ac476a78b01cb3bb4221b0a0f0d5fa99f3dbc8c77022088ed8024f1b">+533/-0</a> </td> </tr> <tr> <td><strong>sqlUtils.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-f22df136a6cdfbacf2b637d4902002337620c8e981dbacfdd705455ff899f12d">+1283/-8</a></td> </tr> <tr> <td><strong>visualizationUtils.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-3312f2b98f34814e89192700cc856231923839bdcd3ea687f271242762b4b3bc">+55/-0</a> </td> </tr> <tr> <td><strong>DashboardJsonEditor.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-4dfda31e9159f979559afc36652350d155429b73336f014017b27ff96ad58dcc">+551/-0</a> </td> </tr> <tr> <td><strong>DashboardSettings.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-b29b3e95fd1dfffba34ec05ed6333941f07ee79585feb5e8203eb5958919338f">+640/-0</a> </td> </tr> <tr> <td><strong>Dashboards.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-a8059d6830fa3c72dbe023f76ac813661d62871a379baa30c05204ad86c92699">+813/-0</a> </td> </tr> <tr> <td><strong>ImportDashboard.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-b29b42b94a3219b4074b132168c0b5f5b93e737dc557ba7b930d14455b38b267">+827/-0</a> </td> </tr> <tr> <td><strong>PanelLayoutSettings.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-34bcd5c5f9b7a2a682f4d4e9c10e3ab4f13a4cc54a6a20bb543f11ae8286d5a1">+423/-0</a> </td> </tr> <tr> <td><strong>RenderDashboardCharts.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-f76e3b54dc7bfd768172c8faba707c7e31bf0516837cb9073bbdf04823f67602">+700/-0</a> </td> </tr> <tr> <td><strong>ScheduledDashboards.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-f54afa04727c65f2050699e063d693d6fb1833c8e3f1f7b25002de89ab5bb2ff">+519/-0</a> </td> </tr> <tr> <td><strong>AddCondition.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-0655e4082a18c9f229d04340341bb32474ae46b3d6e29b29009ef06dcc12e54c">+425/-0</a> </td> </tr> <tr> <td><strong>DashboardFiltersOption.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-d3e73ec3d32f9068b22b3697ba8a23e3100285b7c92cc86f7d7e88477bb29bba">+878/-0</a> </td> </tr> <tr> <td><strong>Group.spec.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8111/files#diff-556364c74c348eba28f5d8bad6fb23b956008d3f6b9171316ea3ee12009201bd">+718/-0</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ --------- Co-authored-by: ktx-abhay <abhay.padamani@kiara.tech> Co-authored-by: Shrinath Rao <shnath@openobserve.ai> |
||
|
|
1989432ba7 |
feat: remove syslog (#8227)
### **User description** close #8186 ___ ### **PR Type** Enhancement, Documentation ___ ### **Description** - Remove syslog feature across codebase - Clean config and routing references - Update metadata prefixes and SBOM files - Refresh i18n and OpenAPI assets ___ ### Diagram Walkthrough ```mermaid flowchart LR SYS["Syslog feature"] -- "deprecated & removed" --> CODE["Code paths"] CODE -- "delete flags/routes" --> CFG["Configuration"] CODE -- "remove storage keys" --> META["Metadata prefixes"] CODE -- "update specs" --> SBOM["SBOM/XML assets"] CODE -- "update docs/i18n" --> WEB["Web locales & OpenAPI"] ``` <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>mod.rs</strong><dd><code>Remove syslog config import from job module</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-f2e4c29b8eef22189ec704a832633c4bd135a24444f054864c98064bd0963681">+3/-26</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Stop glob importing config; drop syslog usage</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-ca09c9c9b020049bdbc3382c466bfcca80daac92e98760d9a9a76172abf34049">+1/-3</a> </td> </tr> <tr> <td><strong>meta.rs</strong><dd><code>Drop `/syslog` from metadata item prefixes</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-1797798cd07803457a6273ef793d56568d8c91e743f6c4649c6db733325fb0af">+1/-2</a> </td> </tr> <tr> <td><strong>config.rs</strong><dd><code>Remove syslog-related configuration options</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-9aeee4a74c0520daa40f9b81c7016f5b6b3254375b968dd7598e745630980d62">+0/-34</a> </td> </tr> <tr> <td><strong>config.rs</strong><dd><code>Purge syslog feature flag and defaults</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-cda0d9179ed982fa5f0989c9b26f21cfa49dd1de28195a98135650ffcc7c602a">+0/-25</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Clean references tied to syslog ingestion</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-5061e662a8899b7e00e5744bd72f808b28ac479a8921ac519f7409bffdc4438a">+0/-60</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Delete syslog router endpoints</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-02556e3f515441b5d2b6bbea7829df488beac03c4cc41309a6638ae3c0e0aec6">+0/-5</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Detach syslog handler wiring</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-99620cff6123acf0598ed2ec9d1c06f02cb0ddece1bef898047eb303d0b71fc2">+0/-1</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Remove syslog-specific log ingestion paths</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-ce72aea3fa4c44904cbd9ec07bd844bec71b49c9676d667b14056aa5798f96b2">+0/-2</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Clean DB interactions for syslog keys</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-b7e3bf7f0ac23dd084c0c817a310a4d5e7a64ff532746d182986ef940fa03fd0">+0/-2</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Adjust request handling without syslog</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-a1cfd40da1ab6cd4db0181fd8664965034298047b3b7c3320c5385897a7c4aed">+0/-2</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Unexport syslog services</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-1b15316505c31acccb26ba66d920fdb0894567d08d2bf1e3457716d128a67b83">+0/-2</a> </td> </tr> <tr> <td><strong>mod.rs</strong><dd><code>Remove syslog metadata definitions</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-fbf797574839e69491ea0429141c038c0ff96297bdf3d8c60d60cdc4acec74b1">+0/-2</a> </td> </tr> </table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>2 files</summary><table> <tr> <td><strong>integration_test.rs</strong><dd><code>Update tests to exclude syslog paths</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-7ff815b68943f08bef79f083c09e55ca8c18db8e25033034b12fa31f1d43dab4">+0/-57</a> </td> </tr> <tr> <td><strong>useIngestionRoutes.spec.ts</strong><dd><code>Update UI tests to remove syslog routes</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-3b7ebacf9481f4643a2b56ffe53ab161fc89d416e280d45b48568866a4dee40c">+0/-1</a> </td> </tr> </table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>20 files</summary><table> <tr> <td><strong>openapi.rs</strong><dd><code>Remove syslog routes from OpenAPI</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-edb8ce232c0cd08366879f642788a75d99f6bab64b4c0e77391281fdb9241e90">+0/-5</a> </td> </tr> <tr> <td><strong>config.cdx.xml</strong><dd><code>Update config component index (remove syslog)</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-41ee11320f37e20fc96f754d35a890df5068af5072fd5388169d1cf305a1ed3b">+15011/-4611</a></td> </tr> <tr> <td><strong>wal.cdx.xml</strong><dd><code>Update WAL component index references</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-3d72e8b949a91b0bd78e97aa3ebf69e2887e2851223ea3d10fedeb0125c35a19">+19476/-358</a></td> </tr> <tr> <td><strong>openobserve.cdx.xml</strong><dd><code>Refresh SBOM root; remove syslog entries</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-454f38f03cf69f6b5358f5a528be4214ec2d33081b9e98ebe5d92c8bef47dc48">+14015/-7932</a></td> </tr> <tr> <td><strong>infra.cdx.xml</strong><dd><code>Update infra component index, no syslog</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-e51bf18198bc65a604b53ee18152ad9f2453ab7870d5be949022058e054ada73">+14127/-6086</a></td> </tr> <tr> <td><strong>proto.cdx.xml</strong><dd><code>Update proto index; purge syslog mentions</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-a15fa99b53917ea85b4e268bb7612d43ee881dbe4ecf70a6682bb919b1f2f219">+8000/-1513</a></td> </tr> <tr> <td><strong>ingester.cdx.xml</strong><dd><code>Adjust ingester index excluding syslog</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-e72a9be4ba2aaff1a6b837a7f7149489603f8fe720766757c4291082e98b5a65">+15845/-4615</a></td> </tr> <tr> <td><strong>flight.cdx.xml</strong><dd><code>Add/refresh flight component index</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-f41393a0191b0560da893a5e24b2e4529f7c9bb34fc71231a532b8790630cba2">+19900/-0</a></td> </tr> <tr> <td><strong>hi.json</strong><dd><code>Remove syslog strings from Hindi locale</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-1e7b52b5c4e762db2c923d0d3efb6d693702825ed3a1a112d3069f26b0d5f605">+0/-13</a> </td> </tr> <tr> <td><strong>fr.json</strong><dd><code>Remove syslog strings from French locale</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-db80e762b88ddf183820c050cdc6b215e6b02b365b5e73f5152af46b0d26f1a2">+0/-13</a> </td> </tr> <tr> <td><strong>tr.json</strong><dd><code>Remove syslog strings from Turkish locale</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-6f0f131e9e2591480c4c5d1eaffc72d02dc31cbd8d3f90d8f012f08cabac8818">+0/-13</a> </td> </tr> <tr> <td><strong>de.json</strong><dd><code>Remove syslog strings from German locale</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-78f24ecb2dbcfc38fdf3ec22b2559a5b40d236ea689d1c55f5d3e87168310264">+0/-13</a> </td> </tr> <tr> <td><strong>ko.json</strong><dd><code>Remove syslog strings from Korean locale</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-50e27ca1b4825a5026f3a251bfcf79c97cab07cfade2ebd512d332453d707c48">+0/-13</a> </td> </tr> <tr> <td><strong>it.json</strong><dd><code>Remove syslog strings from Italian locale</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-2de78074a5f887afddce60d694ead9322e6ab223eb70251c13819f3028bdc70d">+0/-13</a> </td> </tr> <tr> <td><strong>nl.json</strong><dd><code>Remove syslog strings from Dutch locale</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-a1706021687ae5d8a1c006c49eab3946174fecd895f9b70a89c2e76d97250906">+0/-13</a> </td> </tr> <tr> <td><strong>es.json</strong><dd><code>Remove syslog strings from Spanish locale</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-ac2a2167b8b973e3f776f9fe3b43bef4576470d8ad33f3d7cfaff6edff0e5778">+0/-13</a> </td> </tr> <tr> <td><strong>pt.json</strong><dd><code>Remove syslog strings from Portuguese locale</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-38e804f64cb5e0e451849fc84e9b46e53c954a4a4263d51c18665ad45f4b4815">+0/-13</a> </td> </tr> <tr> <td><strong>zh.json</strong><dd><code>Remove syslog strings from Chinese locale</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-8818055db58f83230aeea4ebfd4cec31d924e8c47b6f91298e356959ab25339e">+0/-13</a> </td> </tr> <tr> <td><strong>ja.json</strong><dd><code>Remove syslog strings from Japanese locale</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-092e49c5f9fbc1b539ab9c2866d108d0ce1d314022b4c294eb4611b285e7bbd3">+0/-13</a> </td> </tr> <tr> <td><strong>en.json</strong><dd><code>Remove syslog strings from English locale</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+0/-13</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>Update dependencies/features after syslog removal</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-2e9d962a08321605940b5a657135052fbcef87b5e360662bb527c96d9a615542">+0/-3</a> </td> </tr> </table></details></td></tr><tr><td><strong>Additional files</strong></td><td><details><summary>10 files</summary><table> <tr> <td><strong>syslog.rs</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-dc6813e31e32c23aae5760091460d2ec4023d37ae73e49d29052d9f4e9f2e1fa">+0/-43</a> </td> </tr> <tr> <td><strong>websocket.rs</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-48f05dcd4b6f1d8345cb5707e1a3c34eedd76d94a3c3904eeabd799c7820789d">+0/-90</a> </td> </tr> <tr> <td><strong>mod.rs</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-58010c6e78f69dc57c353890a807371cd43c2b4cceeeb1e9378130f26d898397">+0/-143</a> </td> </tr> <tr> <td><strong>mod.rs</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-66207bd699343342402f88cdd331f4c549783754e4921d0c8d43e026e2d8e575">+0/-135</a> </td> </tr> <tr> <td><strong>syslog_server.rs</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-cb7610142582b44885f673583ab16262c3b9ca6de1f59a9def65e503360665a0">+0/-137</a> </td> </tr> <tr> <td><strong>report_server.cdx.xml</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-d7a2fd1b635919119af9187ef44188c384bd01e444e74a9d15eaa21b0840b7ed">+20472/-0</a></td> </tr> <tr> <td><strong>syslog.rs</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-4c0e9282e3d2352f9a382099901fe034bae2961eed01d764f16ad52f27f55db4">+0/-180</a> </td> </tr> <tr> <td><strong>syslog.rs</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-4bc46f36fad79f5df8c42b8a8d5d8c4a70b1320b966bcff3421deeb96a1981fa">+0/-559</a> </td> </tr> <tr> <td><strong>syslogs_route.rs</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-325df35568c993fc0727bfb0499b682e6bd30af781687706306b3bdb429c49e2">+0/-191</a> </td> </tr> <tr> <td><strong>syslog.ts</strong></td> <td><a href="https://github.com/openobserve/openobserve/pull/8227/files#diff-69ec0272ddac65f2cc96c79d84ca3933fc335a8d21ab5dd6909d71ea02a46486">+0/-37</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ |
||
|
|
1e9761ba61 |
feat: logs page highlighting (#8059)
### **User description** This PR helps to highlight text in logs page and also adds a left border for each depending upon the status of the logs ___ ### **PR Type** Enhancement ___ ### **Description** Add LogsHighLighting component for semantic highlighting Highlight query terms across logs and JSON Visual status indicators via colored borders/lines FTS-aware coloring for selected columns ___ ### Diagram Walkthrough ```mermaid flowchart LR Highlighter["LogsHighLighting.vue (new)"] -- "used by" --> Detail["DetailTable.vue"] Highlighter -- "used by" --> JsonPrev["JsonPreview.vue"] Highlighter -- "used by" --> Table["TenstackTable.vue"] Status["statusParser.ts (new)"] -- "row/log status color" --> Detail Status -- "row status stripe" --> Table Colors["keyValueParser.ts (new)"] -- "theme colors" --> Highlighter Composable["useTextHighlighter.ts (new)"] -- "highlight + semantic color" --> Highlighter Search["SearchResult.vue"] -- "pass highlight + FTS keys" --> Table ``` <details> <summary><h3> File Walkthrough</h3></summary> <table><thead><tr><th></th><th align="left">Relevant files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>8 files</summary><table> <tr> <td><strong>LogsHighLighting.vue</strong><dd><code>New component for semantic JSON/log highlighting</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8059/files#diff-4ef4ac0444004add270de4da30fa39bafd95bd7f1c408d28cf6737655fc152eb">+324/-0</a> </td> </tr> <tr> <td><strong>DetailTable.vue</strong><dd><code>Add status top border and inline highlighting</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8059/files#diff-80552b5d25fa6cef9fbbe430b1865d761c4b132284c2d2175afceea8cbabc8c7">+21/-6</a> </td> </tr> <tr> <td><strong>JsonPreview.vue</strong><dd><code>Use highlighter for key/value rendering</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8059/files#diff-3985073134d35ff074742944b114d0905524038b42e6d2ac887fef2c8436fb16">+8/-14</a> </td> </tr> <tr> <td><strong>SearchResult.vue</strong><dd><code>Provide highlight query and FTS keys downstream</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8059/files#diff-5e65533aa4754bb6d0074fda18ffc1ecacded3b9ca6bc28a161c3f6b12f20195">+16/-0</a> </td> </tr> <tr> <td><strong>TenstackTable.vue</strong><dd><code>Integrate highlighter and add status stripe</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8059/files#diff-bc3c669f5ab65a42ae378df1f7d6b35014c9c220790bdcc72b47f55d1385dc22">+34/-6</a> </td> </tr> <tr> <td><strong>useTextHighlighter.ts</strong><dd><code>New composable for text highlighting logic</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8059/files#diff-b18d6e5b667ce7b485a0592cddcaf47cf68b10b6a1b75bd006f21917c4343147">+486/-0</a> </td> </tr> <tr> <td><strong>keyValueParser.ts</strong><dd><code>Theme-aware color palette utilities</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8059/files#diff-efcf08bdfe13eeac90f7dadbdb5892ae614d49b16f4f75bfc6225700d0ba7b73">+53/-0</a> </td> </tr> <tr> <td><strong>statusParser.ts</strong><dd><code>Derive log severity and colors</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8059/files#diff-c189f5de10234dccf5f5e5b332dbb41f54c21a366ed4817c963bbf2e954d620a">+246/-0</a> </td> </tr> </table></details></td></tr><tr><td><strong>Bug fix</strong></td><td><details><summary>2 files</summary><table> <tr> <td><strong>Index.vue</strong><dd><code>Fix column update timeout scoping</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8059/files#diff-0323c3da69b369843c5d72bf4df5b00ca6b5147192a213baf331659ecf92af62">+3/-3</a> </td> </tr> <tr> <td><strong>useLogs.ts</strong><dd><code>Correct FTS key detection logic</code> </dd></td> <td><a href="https://github.com/openobserve/openobserve/pull/8059/files#diff-1040f61354f92711e0e77ed4e9bfa15586d45a94c7e2ab06cc37372068030e7b">+1/-1</a> </td> </tr> </table></details></td></tr></tr></tbody></table> </details> ___ |
||
|
|
d4078b8553 |
fix: manually clear the input using updateInputValue function (#8203)
### **User description**
1. in index list that is there in logs page when user adds any filter
and clicks on the row instead of toggle , then the filter stays there it
should be cleared
___
### **PR Type**
Bug fix, Enhancement
___
### **Description**
- Clear index filter after stream selection
- Add ref to stream select component
- Use Quasar updateInputValue via nextTick
___
### Diagram Walkthrough
```mermaid
flowchart LR
UI["IndexList.vue QSelect (stream)"] -- "ref=streamSelect" --> Ref["Access component ref"]
Ref -- "nextTick" --> Safe["DOM ready"]
Safe -- "updateInputValue('')" --> Clear["Clear filter input"]
Clear -- "then" --> Change["Trigger onStreamChange(\"\")"]
```
<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>IndexList.vue</strong><dd><code>Clear QSelect input on
stream selection</code>
</dd></summary>
<hr>
web/src/plugins/logs/IndexList.vue
<ul><li>Add ref <code>streamSelect</code> to QSelect.<br> <li> Clear
QSelect input on multi-stream change using nextTick +
<br>updateInputValue.<br> <li> Clear QSelect input on single-stream
select using nextTick + <br>updateInputValue.<br> <li> Keep existing
stream change handling intact.</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8203/files#diff-08f058f883b659e713e606991a7ea37ae1ff016b7cccef970489ab5840dc3d09">+21/-0</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|
||
|
|
ef1bf5996b |
fix: dashboard config height issue (#8201)
### **PR Type**
Bug fix
___
### **Description**
- Fix sidebar height overflow in panel sidebar
- Remove redundant inline height on right column
- Ensure viewport-based sizing for config panel
___
### Diagram Walkthrough
```mermaid
flowchart LR
View["AddPanel.vue layout"] -- "drop inline height" --> Column["Right column .col-auto"]
Column -- "hosts" --> Sidebar["PanelSidebar.vue .sidebar-content"]
Sidebar -- "set viewport height" --> CSS["height: calc(100vh - 176px)"]
```
<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>PanelSidebar.vue</strong><dd><code>Use viewport-based
height for sidebar content</code>
</dd></summary>
<hr>
web/src/components/dashboards/addPanel/PanelSidebar.vue
<ul><li>Replace flex/min-height with fixed viewport-based height<br>
<li> Keep vertical scroll via overflow-y: auto</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8201/files#diff-8e63f9f02875ae5308688ef83d5a8d12383dd32b298475e85a210d6c7334af79">+1/-2</a>
</td>
</tr>
<tr>
<td>
<details>
<summary><strong>AddPanel.vue</strong><dd><code>Clean inline height to
prevent overflow issues</code>
</dd></summary>
<hr>
web/src/views/Dashboards/addPanel/AddPanel.vue
<ul><li>Remove inline style height: 100% on right column<br> <li>
Simplify layout to rely on CSS sizing</ul>
</details>
</td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8201/files#diff-c9632db1ad95af95aba10161bcbc7c5608318919f228637bdafae3f3a31267e8">+2/-2</a>
</td>
</tr>
</table></td></tr></tr></tbody></table>
</details>
___
|