Commit Graph
4169 Commits
Author SHA1 Message Date
ktx-vaidehi 4ce6a16dbd fix: dashboard refresh warning when no variables present (#8191)
### **PR Type**
Bug fix


___

### **Description**
- Prevent refresh warning without dashboard variables

- Reset refreshed variables state when none exist


___

### Diagram Walkthrough


```mermaid
flowchart LR
  A["Dashboard load"] -- "No variables present" --> B["Set variablesData to idle"]
  A -- "No variables present" --> C["Set refreshedVariablesData to idle"]
  B -- "Prevents spurious warnings" --> D["Clean UX"]
  C -- "Avoid stale refreshed state" --> D
```



<details> <summary><h3> File Walkthrough</h3></summary>

<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
  <td>
    <details>
<summary><strong>ViewDashboard.vue</strong><dd><code>Reset refreshed
variables state when none exist</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/views/Dashboards/ViewDashboard.vue

<ul><li>When no variables exist, also reset
<code>refreshedVariablesData</code>.<br> <li> Set
<code>refreshedVariablesData.isVariablesLoading</code> to false.<br>
<li> Clear <code>refreshedVariablesData.values</code> array.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8191/files#diff-052badb6758aff09ceaf1645869b9ba96125e6a0ea21abb01a8ee0a40d6467f3">+2/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___
2025-08-29 15:02:16 +05:30
Bhargav 5d05004e69 fix: redirect to login page on unauthorised error with http2 streaming (#8185)
### **PR Type**
Bug fix, Enhancement


___

### **Description**
- Handle non-JSON error responses safely

- Redirect on 401 during stream reading

- Preserve normal AbortError behavior


___

### Diagram Walkthrough


```mermaid
flowchart LR
  req["HTTP streaming request"] -- "response.ok" --> ok["Process stream with worker"]
  req -- "not ok (error)" --> parseErr["Try parse JSON error"]
  parseErr -- "success" --> onErr["onError(traceId, payload)"]
  parseErr -- "fail" --> throwResp["Throw raw response"]
  stream["Read stream loop"] -- "AbortError" --> ignore["Ignore, expected cancel"]
  stream -- "status === 401" --> redirect["Logout, clear storage, reload"]
  stream -- "other error" --> logOnError["console.error + onError"]
```



<details> <summary><h3> File Walkthrough</h3></summary>

<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
  <td>
    <details>
<summary><strong>useStreamingSearch.ts</strong><dd><code>Safer error
parsing and 401 redirect in streaming</code>&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/composables/useStreamingSearch.ts

<ul><li>Wrap non-ok response handling in try/catch.<br> <li> Throw raw
response if JSON parsing fails.<br> <li> On stream read errors, handle
401 by logout/clear/reload.<br> <li> Keep AbortError ignored; log and
propagate other errors.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8185/files#diff-8fce3e25a161cd458e734bd9b1f98aadefe3482da7b6529a5b1f4fa20ec115e2">+14/-5</a>&nbsp;
&nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___
2025-08-29 13:09:55 +05:30
Hengfei YangandAshish Kolhe 42e965899b feat: support use cookie to do cli command (#8189)
### **User description**
We can use cookie to make requests for CLI command for the case enabled
SSO can't use username & password.

```
ZO_CLI_USER_COOKIE=""
```

For now only used for CLI command.


___

### **PR Type**
Enhancement


___

### **Description**
- Add cookie-based CLI authentication

- Fallback to basic auth when no cookie

- Introduce config `ZO_ROOT_USER_COOKIE`


___

### Diagram Walkthrough


```mermaid
flowchart LR
  CFG["Config: add root_user_cookie"] -- "read env ZO_ROOT_USER_COOKIE" --> CLI["CLI HTTP request builder"]
  CLI -- "cookie present" --> HDR["Set Cookie header"]
  CLI -- "cookie empty" --> BASIC["Use basic_auth(email,password)"]
```



<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>http.rs</strong><dd><code>Add Cookie header auth with
fallback</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

src/cli/basic/http.rs

<ul><li>Read <code>root_user_cookie</code> from config.<br> <li> Use
Cookie header when provided.<br> <li> Fallback to basic auth if cookie
empty.<br> <li> Preserve JSON body handling.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8189/files#diff-790b7780a51e8eecd4754b623af8d15ad87baaaf29455ba646e2e410f83f5498">+7/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>config.rs</strong><dd><code>Support cookie env in auth
config</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

src/config/src/config.rs

<ul><li>Add <code>root_user_cookie</code> to <code>Auth</code>
struct.<br> <li> Map to env var <code>ZO_ROOT_USER_COOKIE</code>.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8189/files#diff-9aeee4a74c0520daa40f9b81c7016f5b6b3254375b968dd7598e745630980d62">+2/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___

---------

Co-authored-by: Ashish Kolhe <ashish.j.kolhe@gmail.com>
v0.15.0
2025-08-29 08:31:28 +08:00
e2ad15f0c0 test: Framework rework Playwright e2e tests (#8118)
### **PR Type**
Tests, Enhancement


___

### **Description**
- Migrate sanity tests to enhanced framework

- Add robust SanityPage page-object methods

- Introduce logging and wait helpers

- Refactor service account tests setup


___

### Diagram Walkthrough


```mermaid
flowchart LR
  Specs["Playwright specs (sanity, serviceAccount)"]
  Utils["Enhanced test utils (fixtures, logger, waits)"]
  Pages["New page objects (SanityPage, etc.)"]
  Archives["Old specs archived (_old)"]

  Specs -- "use" --> Utils
  Specs -- "call" --> Pages
  Legacy["Legacy inline flows"] -- "moved to" --> Archives
  Legacy -- "replaced by" --> Pages
```



<details> <summary><h3> File Walkthrough</h3></summary>

<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>sanityPage.js</strong><dd><code>New Sanity page object with
robust flows</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-a0ac0217ef875311dc536edb97deda19927a64e73cede62123b97cbe7df113b8">+669/-0</a>&nbsp;
</td>

</tr>

</table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>2
files</summary><table>
<tr>
<td><strong>sanity.spec.js</strong><dd><code>Refactor to enhanced
fixtures and page object</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-89290ca55858ff744863278ee9381e32276c37a6c0718fb3f9dcba71a6451d91">+159/-442</a></td>

</tr>

<tr>
<td><strong>serviceAccount.spec.js</strong><dd><code>Migrate service
account tests to enhanced setup</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-270e1e217b97afe4d451df3a48a0bfb14db453241adf1b7388342292707d5bb1">+114/-36</a></td>

</tr>

</table></details></td></tr><tr><td><strong>Miscellaneous</strong></td><td><details><summary>2
files</summary><table>
<tr>
<td><strong>sanity.spec_old.js</strong><dd><code>Archive legacy sanity
spec implementation</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-51cb8e6cd5047c3d1ace254fa770ae74a3c13aa97e93315132dede6c4a84739a">+498/-0</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>sanity2.spec_old.js</strong><dd><code>Archive legacy sanity2
spec with helpers</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-0e189adff26af46cfcc03f014d522c6a37ac268f7ad3e1a3ace1267bd64161e3">[link]</a>&nbsp;
&nbsp; </td>

</tr>
</table></details></td></tr><tr><td><strong>Additional
files</strong></td><td><details><summary>31 files</summary><table>
<tr>
  <td><strong>playwright.yml</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-7afcd2d8f7b49bda74843f209eefb7b2da45f7e7803bf2e4bd636699b76aa2d3">+7/-8</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>package.json</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-a41ba7975823b7b2dc071285391f835fbefd33bfffeb5aa2fba3ae15425cc64f">+2/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>changeOrgPage.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-1061a261a5b7ae8ffd6c4b48e382bb262289aacca97207aa15f00053b822038b">+224/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>enrichmentPage.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-98a7e60352ddf3be23cf70170559e637ef448c189cd9414448e9afff897c3019">+507/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>schemaLoadPage.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-6f0791c152c7a17e60e0167d52c4032edc6384553b69b9a94b81e380e98dd1d3">+265/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>schemaPage.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-1c0c0fc2fdbebae8c8aa7bef5ba92d31dee65238272581453e6f2b9a3f135468">+397/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>userPage.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-bba64431d6702ebcfd265dd690f81d8c06a285fb09016c4823ed3490403ed777">+26/-7</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>iamPage.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-e537da3c3eaa929da94df90ba76b3b17f08792c9de268de899d310d13740efcf">+13/-5</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>page-manager.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-565eab8b3c767ae50c9d05e591621d14f66b81af84d6b5ea6efe136c1c3933df">+11/-1</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>pipelinesPage.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-d5f2771fd1139c174c46d09a9ab2da0ea4588b853e2b87e4728322d072542f49">+9/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>reportsPage.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-bc6b666f3862dce898d9ca68d036f317305b3f3d063d6eda423f2d864d36be0f">+8/-2</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>changeOrg.spec.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-d5557230e5f003c7c0129aab00855dc94501cc12a06b1f7814ff85d9fe389f47">+188/-149</a></td>

</tr>

<tr>
  <td><strong>enrichment.spec.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-f52a06db75e7593aee95da4e0b255cb0001aa6c2b416d30358858e2f39b0cdcd">+106/-319</a></td>

</tr>

<tr>
  <td><strong>schema.spec.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-72dd04280e3c77242b982bd7853ffa447428c0f9419c37a71d867ec7cd28d4b8">+121/-265</a></td>

</tr>

<tr>
  <td><strong>schemaload.spec.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-5184069ec159ab301454535a5f45967635972e108095b82401ba96cb92856c5b">+114/-184</a></td>

</tr>

<tr>
  <td><strong>usersOrg.spec.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-0bf40521e88d2cf427617e49affa14d4ebe469b6da4ea4aeef4fe3e246eb24c7">+177/-77</a></td>

</tr>

<tr>
  <td><strong>enhanced-baseFixtures.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-3657cfe42414b97b6676be58109d3c3f92e8ba2f52bb09840b65ac9f9c889997">+137/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>framework-test.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-d3d8309ee6bdfb8edd0e39b4f8d2008ffe07775f130882a60b0509b29ae1a15d">+33/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>global-setup.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-06323dad7214f86b41b62e121e716eeea0054bc4d950c6bcf4a0efe53894acc8">+147/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>global-teardown.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-f3a6f320a6dd08450cf34d96f07847b9324fff8415f768963252ce0e1e35315e">+30/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>slack-reporter.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-29fdf4df416fe8e9965be16bc0419787175c227c385ac37560da40dc935328f5">+162/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>test-logger.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-9ad67a2a3dbfce3994655b30eb07c0a1b795ce0dc10ae9785481f9472394ce5e">+202/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>wait-helpers.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-fdf1e3fd5f38875694acd5e3f0a140ed89326ce8a2910f07b18d1004fd5d2165">+331/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>playwright.config.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-91cb9615068914b2e4f5d66fcbed50d3e9771ea2d882f8e8048bbe54eab3c414">+19/-7</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>changeOrg.spec_old.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-1a658a67b111f3f391520406aed0a66793d0e91c3157dca683a6e3603ff37bc6">+239/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>enrichment.spec_old.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-92bb2446bdc69b0b0a88ea39a9ae169f5266e6021df70ea50149f0c624f1b7f9">+325/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>sanity2_consolidated.spec_old.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-59079f7e0748f2f8d484ea6537936f8bfc488793799fa118c5f92c710645e175">+76/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>schema.spec_old.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-61f5d68bba432d1c3c14d155e24088dd5849e90df5f4e636bf79c6477947105e">+275/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>schemaload.spec_old.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-f230c8cf8362435b93ca2346369054471f362221d4209308616eb256970f8c8e">+188/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>serviceAccount.spec_old.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-fed6804e49039a3e8ad282d4db4ddf9da8afc954bdb4c4dbc0cdeccbe1f3f1c0">+138/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>usersOrg.spec_old.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8118/files#diff-e7b7c318f5ca80a33d8351d60134f6ff3983d89e76e517eb0d8e94ca9b30fac9">+211/-0</a>&nbsp;
</td>

</tr>
</table></details></td></tr></tr></tbody></table>

</details>

___

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Neha P <144308844+neha00290@users.noreply.github.com>
Co-authored-by: ktx-akshay <akshay.patil@kiara.tech>
2025-08-29 00:30:23 +05:30
BhargavandHengfei Yang 8da2600ff4 fix: issue 8180 remove add to table icon from timestamp (#8188)
### **PR Type**
Bug fix


___

### **Description**
- Hide overlay for timestamp field

- Prevent adding timestamp to selected fields

- Scope UI actions using store timestamp config


___

### Diagram Walkthrough


```mermaid
flowchart LR
  UI["IndexList.vue UI controls"] -- checks --> Store["zoConfig.timestamp_column"]
  Store -- identifies --> TimestampField["Timestamp field rows"]
  UI -- v-if hides --> Overlay["Field overlay actions"]
  UI -- condition prevents --> AddFieldBtn["Add field (visibility) button"]
```



<details> <summary><h3> File Walkthrough</h3></summary>

<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
  <td>
    <details>
<summary><strong>IndexList.vue</strong><dd><code>Disable overlay and add
controls for timestamp field</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></summary>
<hr>

web/src/plugins/logs/IndexList.vue

<ul><li>Hide <code>.field_overlay</code> when row is timestamp.<br> <li>
Block "add field" icon for timestamp rows.<br> <li> Use
<code>store.state.zoConfig.timestamp_column</code> to gate actions.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8188/files#diff-08f058f883b659e713e606991a7ea37ae1ff016b7cccef970489ab5840dc3d09">+2/-2</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___

---------

Co-authored-by: Hengfei Yang <hengfei.yang@gmail.com>
2025-08-28 22:13:40 +05:30
Hengfei YangandBhargav 2c0395124f feat: deprecated syslog (#8187)
### **User description**
impl #8186


___

### **PR Type**
Enhancement, Tests


___

### **Description**
- Mark syslog modules as deprecated

- Add allow(deprecated) to callers

- Block enabling syslog setting

- Remove syslog-related tests and OpenAPI types


___

### Diagram Walkthrough


```mermaid
flowchart LR
  meta["meta::syslog module"] -- "mark deprecated" --> callers["call sites"]
  callers -- "add allow(deprecated)" --> compile_ok["compiles with warnings suppressed"]
  db_set["db::syslog::toggle_syslog_setting"] -- "reject enable=true" --> error["returns deprecation error"]
  openapi["OpenAPI schema"] -- "remove syslog types" --> spec["updated API spec"]
  tests["syslog tests"] -- "removed" --> leaner["reduced test surface"]
```



<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>config.rs</strong><dd><code>Suppress deprecation warnings
for syslog globals</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8187/files#diff-cda0d9179ed982fa5f0989c9b26f21cfa49dd1de28195a98135650ffcc7c602a">+2/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>mod.rs</strong><dd><code>Allow deprecated syslog handlers;
annotate endpoints</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8187/files#diff-58010c6e78f69dc57c353890a807371cd43c2b4cceeeb1e9378130f26d898397">+6/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>mod.rs</strong><dd><code>Suppress deprecation in API scope
setup</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8187/files#diff-02556e3f515441b5d2b6bbea7829df488beac03c4cc41309a6638ae3c0e0aec6">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>mod.rs</strong><dd><code>Allow deprecated syslog server
wiring</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8187/files#diff-66207bd699343342402f88cdd331f4c549783754e4921d0c8d43e026e2d8e575">+3/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>mod.rs</strong><dd><code>Allow deprecated syslog cache/watch
tasks</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8187/files#diff-f2e4c29b8eef22189ec704a832633c4bd135a24444f054864c98064bd0963681">+4/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>syslog_server.rs</strong><dd><code>Allow deprecated syslog
server run linkage</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8187/files#diff-cb7610142582b44885f673583ab16262c3b9ca6de1f59a9def65e503360665a0">+2/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>syslog.rs</strong><dd><code>Allow deprecated syslog ingest;
remove tests</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8187/files#diff-4bc46f36fad79f5df8c42b8a8d5d8c4a70b1320b966bcff3421deeb96a1981fa">+3/-14</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>syslogs_route.rs</strong><dd><code>Allow deprecated route
endpoints; remove tests</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8187/files#diff-325df35568c993fc0727bfb0499b682e6bd30af781687706306b3bdb429c49e2">+7/-52</a>&nbsp;
&nbsp; </td>

</tr>

</table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>6
files</summary><table>
<tr>
<td><strong>mod.rs</strong><dd><code>Mark syslog meta module as
deprecated</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8187/files#diff-fbf797574839e69491ea0429141c038c0ff96297bdf3d8c60d60cdc4acec74b1">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>mod.rs</strong><dd><code>Mark syslog HTTP request module
deprecated</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8187/files#diff-a1cfd40da1ab6cd4db0181fd8664965034298047b3b7c3320c5385897a7c4aed">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>openapi.rs</strong><dd><code>Remove syslog types from
OpenAPI imports</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8187/files#diff-edb8ce232c0cd08366879f642788a75d99f6bab64b4c0e77391281fdb9241e90">+0/-2</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>mod.rs</strong><dd><code>Deprecate syslog DB
module</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8187/files#diff-b7e3bf7f0ac23dd084c0c817a310a4d5e7a64ff532746d182986ef940fa03fd0">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>mod.rs</strong><dd><code>Deprecate syslog logs
module</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8187/files#diff-ce72aea3fa4c44904cbd9ec07bd844bec71b49c9676d667b14056aa5798f96b2">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>mod.rs</strong><dd><code>Deprecate syslogs_route service
module</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8187/files#diff-1b15316505c31acccb26ba66d920fdb0894567d08d2bf1e3457716d128a67b83">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

</table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>syslog.rs</strong><dd><code>Remove unit tests for syslog
meta types</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8187/files#diff-dc6813e31e32c23aae5760091460d2ec4023d37ae73e49d29052d9f4e9f2e1fa">+0/-127</a>&nbsp;
</td>

</tr>
</table></details></td></tr><tr><td><strong>Error
handling</strong></td><td><details><summary>1 files</summary><table>
<tr>
<td><strong>syslog.rs</strong><dd><code>Block enabling syslog; allow
deprecated routes/cache</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8187/files#diff-4c0e9282e3d2352f9a382099901fe034bae2961eed01d764f16ad52f27f55db4">+11/-0</a>&nbsp;
&nbsp; </td>

</tr>
</table></details></td></tr></tr></tbody></table>

</details>

___

---------

Co-authored-by: Bhargav <BJP232004@GMAIL.COM>
2025-08-28 21:24:21 +05:30
Sai Nikhil 4ef004011f fix: search scheduler issue (#8181) 2025-08-28 19:18:47 +08:00
Ashish Kolhe 2514b88d87 fix: skip alert evaluation when stream not found (#8179)
### **PR Type**
Bug fix, Enhancement


___

### **Description**
- Add schema cache lookup helper

- Skip alert evaluation if stream missing

- Improve error message for missing stream


___

### Diagram Walkthrough


```mermaid
flowchart LR
  A["Alert evaluation"] -- "resolve stream names" --> B["Per-stream checks"]
  B -- "schema missing" --> C["Return error: skip evaluation"]
  B -- "schema exists" --> D["Fetch settings & validate period"]
```



<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>mod.rs</strong><dd><code>Introduce schema cache lookup
utility</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></summary>
<hr>

src/infra/src/schema/mod.rs

<ul><li>Add <code>get_stream_schema_from_cache</code> async helper.<br>
<li> Build cache key via <code>mk_key</code> prefix strip.<br> <li>
Return cloned <code>Schema</code> from
<code>STREAM_SCHEMAS_LATEST</code>.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8179/files#diff-386fd4fad1e48ab0a90516cab1947b1888b270b2fe912f30d2255cc38e6c519b">+14/-0</a>&nbsp;
&nbsp; </td>

</tr>
</table></td></tr><tr><td><strong>Bug fix</strong></td><td><table>
<tr>
  <td>
    <details>
<summary><strong>mod.rs</strong><dd><code>Skip alerts when referenced
stream missing</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

src/service/alerts/mod.rs

<ul><li>Validate each referenced stream exists in schema cache.<br> <li>
Short-circuit with clear error to skip evaluation.<br> <li> Keep
existing max query range validation.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8179/files#diff-ba9b65130898444f7815fd6068bdb0dc590612f74cc893f79d91b0afc44cc851">+9/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___
2025-08-28 15:27:07 +05:30
Abhay Padamani 3f3d12f9e7 fix: visualization sync for saved views (#8168) (#8176)
### **User description**
- Save visualization which contains Dashboard configs as a Saved view.
- CSS issue for config on visualization page.
- `All fields must have alias to visualize` Error msg refactor.

**Note:** On the Logs to Visualize, we use the default chart type(line
or table chart). If a saved visualization view is applied from the Logs
page, it will switch to the Visualization page and select the default
chart type. However, applying a saved visualization view while already
on the Visualization page will work as expected.


___

### **PR Type**
Enhancement, Bug fix


___

### **Description**
- Persist visualization config in saved views

- Sync visualization config to URL on apply

- Improve alias validation error messaging

- Fix sidebar layout and overflow behavior


___

### Diagram Walkthrough


```mermaid
flowchart LR
  SV["Saved View apply"] -- "merge extractedObj" --> SO["searchObj"]
  SO -- "has visualizationData?" --> RD["restoreVisualizationData()"]
  RD -- "set type/config" --> DPD["dashboardPanelData"]
  DPD -- "getVisualizationConfig()" --> VC["visualizationData"]
  VC -- "encode & push" --> URL["router.replace(query.visualization_data)"]

  Save["Save View action"] -- "collect visualizationData" --> SVObj["savedSearchObj.data.visualizationData"]

  UI1["PanelSidebar.vue"] -- "flex layout & shrink fixes" --> UX["Stable sidebar height/scroll"]
  UI2["VisualizeLogsQuery/AddPanel"] -- "full height sidebar container" --> UX
  Valid["Alias validation"] -- "refined messages" --> 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><table>
<tr>
  <td>
    <details>
<summary><strong>PanelSidebar.vue</strong><dd><code>Make sidebar
flex-based with stable scrolling</code>&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/components/dashboards/addPanel/PanelSidebar.vue

<ul><li>Prevent separator shrinking via flex-shrink.<br> <li> Sidebar
becomes flex column with min-height fixes.<br> <li> Header marked
non-shrinking.<br> <li> Content uses flex:1 with proper overflow.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8176/files#diff-8e63f9f02875ae5308688ef83d5a8d12383dd32b298475e85a210d6c7334af79">+7/-2</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>SearchBar.vue</strong><dd><code>Persist and restore
visualization config for saved views</code>&nbsp; </dd></summary>
<hr>

web/src/plugins/logs/SearchBar.vue

<ul><li>Import helpers to get/encode visualization config.<br> <li> Add
restoreVisualizationData to set config/type and sync URL.<br> <li> Apply
restoration when loading saved views.<br> <li> Include visualizationData
when saving views in visualize mode.<br> <li> Refine alias validation
error message.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8176/files#diff-81893de4edf186b0556f610acb280c87baa2ffe67d3b48a60a866094c7635baf">+49/-1</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>VisualizeLogsQuery.vue</strong><dd><code>Full-height
container for config sidebar</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></summary>
<hr>

web/src/plugins/logs/VisualizeLogsQuery.vue

- Ensure config sidebar container takes full height (two places).


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8176/files#diff-979b01d943d58c5d70faeeac5948b7f02f0b2392a12b84ef07ba7f7393ab0261">+2/-2</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>AddPanel.vue</strong><dd><code>Full-height PanelSidebar
in add panel views</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/views/Dashboards/addPanel/AddPanel.vue

- Ensure PanelSidebar container takes full height in both layouts.


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8176/files#diff-c9632db1ad95af95aba10161bcbc7c5608318919f228637bdafae3f3a31267e8">+2/-2</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></td></tr><tr><td><strong>Bug fix</strong></td><td><table>
<tr>
  <td>
    <details>
<summary><strong>Index.vue</strong><dd><code>Clarify alias requirement
error text</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/plugins/logs/Index.vue

- Refine alias validation error message.


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8176/files#diff-0323c3da69b369843c5d72bf4df5b00ca6b5147192a213baf331659ecf92af62">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___
2025-08-28 14:11:36 +05:30
sktrpathi 75fc81cecf chore: remove bogus unit tests (#8172)
### **User description**
A significant chunk of API unit tests were not testing any actual
business logic, but performing trivial actions such as
struct-field-access, derive trait validation such as `Eq`, `PartialEq`,
`Clone`, `Serialize` etc, and many of the tests were also just comparing
constant values.

They added no value to the test suite and have now been removed from the
codebase, making the tests more focused.

Additionally,
- A lot of flaky tests have been corrected. These used to fail due to
occasional race conditions when ran locally.
- Some mock setup and teardown functions have also been cleaned up,
which makes tests a lot more consistent.


___

### **PR Type**
Tests, Enhancement


___

### **Description**
- Remove trivial, non-value unit tests

- Relax flaky assertions and panics handling

- Improve test isolation via DB/cache resets

- Minor test output formatting improvements


___

### Diagram Walkthrough


```mermaid
flowchart LR
  tests["Remove trivial/boilerplate tests"] -- cleaner suite --> stability["Stabilize assertions and panics"]
  stability -- reduce flakiness --> isolation["DB/Cache resets in tests"]
  isolation -- consistent runs --> outputs["Improve test log formatting"]
```



<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>11
files</summary><table>
<tr>
<td><strong>organization.rs</strong><dd><code>Remove struct-field and
default-value trivial tests</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-4f089715a7ac4f78b45039d773f2fccbb4fbc6a409e0ab9ceee1fcf7911bc44b">+4/-325</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>mod.rs</strong><dd><code>Drop JSON roundtrip serialization
tests; tidy imports</code>&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-c4bd542e4e07ed7706b0643086f5a7d4edbb3647c7ceedbe4bea516c5274d8bd">+1/-183</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>auth.rs</strong><dd><code>Remove Debug/PartialEq trivial
tests; format strings</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-9bc2b1841504a435f66ad094f72ddbe7b7fa75e5e1557b8adbfe36f7f0592e1b">+2/-104</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>main.rs</strong><dd><code>Make tracing test tolerant; ignore
enterprise tests</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-42cb6807ad74b3e201c5a7ca98b911c5fa08380e942be6e4ac5807f8377f87fc">+23/-60</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>event.rs</strong><dd><code>Remove constants and simple
struct creation tests</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-689769712cbd6bd02beba078c1e1dfc188e2be39ab19a0e232b8bd12bc7f1e78">+1/-95</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>validator.rs</strong><dd><code>Ensure test isolation with
ORM init and cache clears</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-f4d4b51574b378a8c372345ea48875834a4eadacfac33fa4d0ceca1e0ef96b35">+28/-22</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>mod.rs</strong><dd><code>Make base URI tests robust to env
errors</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-d7987e62dcc7b1ec1bd4aeabef94f85d8c41b2ea33de5ab78660794fa4d51a9e">+25/-4</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>users.rs</strong><dd><code>Use best-effort cleanup; clear
caches; improve logs</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-98da2588a28d62bb2e301d989836125f89f89b76272cd7f75e08ec4deeea5f38">+12/-9</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>integration_test.rs</strong><dd><code>Compact println
formatting and panic messages</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-7ff815b68943f08bef79f083c09e55ca8c18db8e25033034b12fa31f1d43dab4">+3/-3</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>config.rs</strong><dd><code>Remove strict zero-length
assertions on globals</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-cda0d9179ed982fa5f0989c9b26f21cfa49dd1de28195a98135650ffcc7c602a">+1/-13</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>schema.rs</strong><dd><code>Remove unused constant import in
tests</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-a5ea87a7766cb24619f64a6100f385f4b42c47af7d33b8e2f060229c536d7418">+1/-8</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></details></td></tr><tr><td><strong>Additional
files</strong></td><td><details><summary>26 files</summary><table>
<tr>
  <td><strong>authz.rs</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-28a815d1c4728aff854a9996de0ba3d3dafe1bea6bfb0cf2a9f4186c40f985b6">+0/-52</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>loki.rs</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-121c166af5eab8b9cb83716afa7b65fa7856c006c809b3d910ced184c52ec587">+0/-7</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>proxy.rs</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-7f12a4f2483e737671ac41f9c35b411e7323e0ff2731ad92a3b309e144d1316a">+0/-46</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>service.rs</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-61d456e7217d19bcec3920a4d1c17fd396a257c81e5394655db3632a057bdd9e">+0/-7</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>service_account.rs</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-878ad520e1c84500cc21ff6fc4088c8da64ff2febd79e60c0d4cc8c695c49798">+0/-80</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>traces.rs</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-bda8182c1f17a8360337c769edade0cb9478ff1443dd6aedce7f526afbe97afe">+0/-106</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>user.rs</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-e13b3a981fd70182b9738a6b0ecfdee915c5b36757703a87741e1eddf3f6e786">+0/-101</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>auth_tests.rs</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-2688cbdc0b009b3f0dd829c69ab86c6a7d0778ab3e65e916a410a76aa6ae6480">+0/-2961</a></td>

</tr>

<tr>
  <td><strong>mod.rs</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-2aa59ce4464e7dbabdb9367fc8bb8c1b489c914b8690577d4916870463ab12db">+0/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>action.rs</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-fc87c75a7df9539d7e7ee6184dfab02d4a8932323e81f95d57c05363aa44752d">+0/-18</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>mod.rs</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-5bf716db7e1d91dfbd427a2e320ce407c4f0c92d55d68f8e636daed1b02abd56">+0/-13</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>reports.rs</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-d2117a3d67d4ec47b0017861845c92143baf917e10e6746df5dd97f925f81eeb">+0/-10</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>destinations.rs</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-e0ba33d95ef7f0eac13bdac7e750462907a0308f01c027ea206d058e282c977b">+0/-103</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>inverted_index.rs</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-8bf9d9403f05f53f0c6fd5e6a6dbf0204ea80465b233567552cb7395d08d1c3c">+0/-22</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>meta_store.rs</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-45018c838da377fa9ded9305a1ee752adde06acdb607addf26c95f5747537615">+0/-6</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>ratelimit.rs</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-fa7dc03fb526c09d5eb58021872d821fcd72eeb4d6a670224f5286012485bc3d">+0/-10</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>timed_annotations.rs</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-f94b4d6d12d68e7054ad33601e666b08e4594586013dc34384fa21b1df5fe6e8">+0/-12</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>mod.rs</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-ca09c9c9b020049bdbc3382c466bfcca80daac92e98760d9a9a76172abf34049">+0/-34</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>m20250611_000002_populate_reports_table.rs</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-8247af6d6f8ccb6a5a51daff4cb1e352585be2d1c785d86ae5ebfea1dbc1099c">+0/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>folders.rs</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-402482c22fda5dff8f33382ac11d0908f693975dec7c08b37b1c5fe24a20486a">+0/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>bulk.rs</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-2017dbe9076c78a7e7919ed5c8738729123d630038803cef0ce2c356d6fa2c48">+0/-9</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>ingestion.rs</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-3edd5f4ed1eed0f765b7b450ef0fbf587632e6b22302006a5e397049e297057f">+0/-7</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>mod.rs</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-2f7f0bac01afc6e37908521d1d33d05fcd650b7a08792062976e1e7465b4a1f9">+0/-42</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>footer_cache.rs</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-f9278e53ed7131c953fc30f8b15cda801b74b81fb2d570fe7f80a3b7fc1de872">+0/-7</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>mod.rs</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-1602f85399080c1e2838d1ef1d62af23d96f353379e49a7770026e892c954018">+0/-20</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>mod.rs</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8172/files#diff-66f3b4f5e7927092fd6e57738687a1091b6f316638f7c58f8d7be9addb72bc30">+0/-31</a>&nbsp;
&nbsp; </td>

</tr>
</table></details></td></tr></tr></tbody></table>

</details>

___
2025-08-28 09:14:33 +05:30
Loakesh Indiran 087b921dd4 fix: unify cache delay secs across result cache, aggs cache and metrics cache (#8171)
## New Env:

- `ZO_CACHE_DELAY_SECS` default 300 secs (5mins)

### **PR Type**
Enhancement, Bug fix


___

### **Description**
- Rename retention config to cache-centric

- Unify delay logic across subsystems

- Update env var to ZO_CACHE_DELAY_SECS

- Align WAL, compaction, caching timings


___

### Diagram Walkthrough


```mermaid
flowchart LR
  Config["Config Limit: cache_delay_secs"] --> WAL["WAL retention and flush timing"]
  Config --> Ingester["Ingester flush loop"]
  Config --> ParquetMove["Parquet move age checks"]
  Config --> Compaction["Merge/downsample scheduling windows"]
  Config --> PromQLCache["PromQL cache/store time windows"]
  Config --> GRPCSearch["gRPC search need_wal decision"]
```



<details> <summary><h3> File Walkthrough</h3></summary>

<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><details><summary>7
files</summary><table>
<tr>
<td><strong>wal.rs</strong><dd><code>Replace retention time with cache
delay in WAL expiry</code>&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8171/files#diff-4928ae81597b28facdc3644f786ac14c60b0a406e1c7b8eac7232fbafbcbb6e3">+2/-2</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>lib.rs</strong><dd><code>Use cache_delay_secs for periodic
flush interval</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8171/files#diff-603267e2f712eeb4bc46fdff981f1fad1f3a9d3b989a7db4b3c0984fc5b1ed43">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>writer.rs</strong><dd><code>Apply cache_delay_secs to WAL
age threshold</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8171/files#diff-d1a9b1542cc2758afe4fa67abd454dd818718f4e1c7570303519af5a58d6301f">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>parquet.rs</strong><dd><code>Use cache_delay_secs in file
age selection</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8171/files#diff-27f710981cfe1b938aeeb53abaed05961596c32e2edf3b8a2a59d3e72b2f542b">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>merge.rs</strong><dd><code>Unify compaction scheduling
windows with cache_delay_secs</code></dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8171/files#diff-0ab016dbd5129c9c285c9c459bf78928147bce97dc92a03aa754da3da71168d7">+2/-2</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>mod.rs</strong><dd><code>Use cache_delay_secs for need_wal
decision</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8171/files#diff-53b070c152a50ae30476e20bb02779a6b2b84b604f8610cb6604307acd931668">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>mod.rs</strong><dd><code>Unify cluster need_wal cutoff using
cache_delay_secs</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8171/files#diff-63910f18561d2d84326bc989187e779e2bf1ecd02b2310da55632210810f4d89">+1/-3</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></details></td></tr><tr><td><strong>Configuration
changes</strong></td><td><details><summary>1 files</summary><table>
<tr>
<td><strong>config.rs</strong><dd><code>Rename config field and env var
to cache_delay_secs</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8171/files#diff-9aeee4a74c0520daa40f9b81c7016f5b6b3254375b968dd7598e745630980d62">+2/-2</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

</table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>mod.rs</strong><dd><code>Align cache set window and tests to
cache_delay_secs</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8171/files#diff-697dba801a55938e37c08346a3fbfad808edf0eb47b7cb4d65b4d2ac6843577e">+2/-2</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></details></td></tr></tr></tbody></table>

</details>

___
2025-08-27 21:34:05 +05:30
Ashish Kolhe 7bda973b58 fix: sql generation for quick alerts (#8169)
### **PR Type**
Bug fix


___

### **Description**
- Fix WHERE placement in grouped alert SQL

- Ensure filter applied before GROUP BY/HAVING

- Minor spacing cleanup in non-grouped query


___

### Diagram Walkthrough


```mermaid
flowchart LR
  buildSQL["build_sql in alerts/mod.rs"]
  groupCase["Grouped query path"]
  noGroupCase["Non-grouped query path"]
  bug["WHERE placed after FROM"]
  fix["Move WHERE before GROUP BY/HAVING"]

  buildSQL -- "when group_by present" --> groupCase
  groupCase -- "was" --> bug
  bug -- "now" --> fix

  buildSQL -- "when no group_by" --> noGroupCase
  noGroupCase -- "retain WHERE placement" --> fix
```



<details> <summary><h3> File Walkthrough</h3></summary>

<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Bug
fix</strong></td><td><table>
<tr>
  <td>
    <details>
<summary><strong>mod.rs</strong><dd><code>Correct SQL clause ordering
for grouped alert queries</code>&nbsp; &nbsp; &nbsp; &nbsp;
</dd></summary>
<hr>

src/service/alerts/mod.rs

<ul><li>In grouped path, insert WHERE before GROUP BY/HAVING.<br> <li>
Replace extraneous space and ensure proper clause order.<br> <li> Keep
WHERE inclusion in non-grouped path; minor spacing tweak.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8169/files#diff-ba9b65130898444f7815fd6068bdb0dc590612f74cc893f79d91b0afc44cc851">+2/-2</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___
2025-08-27 20:06:17 +05:30
Neha PandShrinath Rao 7218fa3439 test: e2e-cte-queries (#8070)
### **PR Type**
Tests


___

### **Description**
- Add advanced CTE logs query e2e tests

- Cover strings, NULLs, joins, unions

- Add error-rate and aggregation analysis

- Add complex multi-part query typing/validation


___

### Diagram Walkthrough


```mermaid
flowchart LR
  CTEs["Add advanced CTE query tests"]
  String["String ops & NULL handling"]
  Joins["JOINs and UNIONs"]
  Analytics["Error-rate and aggregations"]
  Robust["Multi-part typing + validation"]
  CTEs -- "new tests" --> String
  CTEs -- "new tests" --> Joins
  CTEs -- "new tests" --> Analytics
  CTEs -- "new tests" --> Robust
```



<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>logsqueries.cte.spec.js</strong><dd><code>Expand CTE
logs e2e coverage with advanced cases</code>&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

tests/ui-testing/playwright-tests/Logs/logsqueries.cte.spec.js

<ul><li>Add tests for string manipulation CTEs<br> <li> Add NULL
handling and LEFT JOIN CTE tests<br> <li> Add UNION and error-rate
analysis CTE tests<br> <li> Add complex multi-part CTE with typing and
validation</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8070/files#diff-153f79d86888d9e3a82f42a15242cacb3a126c263aee91cada88ae04dffacd36">+110/-0</a>&nbsp;
</td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___

---------

Co-authored-by: Shrinath Rao <shnath@openobserve.ai>
2025-08-27 18:24:39 +05:30
Huaijin dfa041446e fix: cache with distinct and explain panic (#8166) 2025-08-27 19:19:06 +08:00
dependabot[bot] e2c83c28d3 chore(deps): bump sha.js from 2.4.11 to 2.4.12 in /web (#8094) 2025-08-27 19:18:34 +08:00
Sai Nikhil 1501a6e606 fix: index type for schema check env for fts or secondar index fields (#8165) 2025-08-27 19:18:05 +08:00
ktx-akshay 8fb78048ec test: add and improve visualization test cases (#8135)
### **PR Type**
Tests, Enhancement


___

### **Description**
- Add robust visualize E2E tests

- Introduce dashboard helpers and verifications

- Improve page object with new locators

- Enable visualize spec in CI workflow


___

### Diagram Walkthrough


```mermaid
flowchart LR
  PO["Page Object: visualise.js"] -- "new helpers, locators" --> SPEC["Tests: visualize.spec.js"]
  SPEC -- "uses helpers to validate charts & dashboards" --> DASH["Dashboard flows"]
  WF["CI Workflow"] -- "enable" --> 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>Enhancement</strong></td><td><table>
<tr>
  <td>
    <details>
<summary><strong>visualise.js</strong><dd><code>Page object extended
with dashboard and chart helpers</code>&nbsp; &nbsp; &nbsp; &nbsp;
</dd></summary>
<hr>

tests/ui-testing/pages/dashboardPages/visualise.js

<ul><li>Import expect from Playwright<br> <li> Add dashboard and query
editor locators<br> <li> Add helpers: fillLogsQueryEditor,
checkDashboardErrors, <br>verifyChartRenders, verifyChartTypeSelected,
addPanelToNewDashboard<br> <li> Update stream index toggle selector and
refine <br>runQueryAndWaitForCompletion</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8135/files#diff-c14ac1db3e4aa86190d7525e8e38c410bcbbae7f46b01890e74937cc11be67e6">+140/-7</a>&nbsp;
</td>

</tr>
</table></td></tr><tr><td><strong>Tests</strong></td><td><table>
<tr>
  <td>
    <details>
<summary><strong>visualize.spec.js</strong><dd><code>Comprehensive
visualize E2E tests and assertions</code>&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

tests/ui-testing/playwright-tests/dashboards/visualize.spec.js

<ul><li>Add randomized dashboard/panel naming<br> <li> Add reusable SQL
queries and stream constants<br> <li> Add new tests for large datasets,
stream persistence, chart defaults, <br>dashboard query persistence, and
error-free chart switching<br> <li> Skip flaky/legacy tests and adjust
flows to use new helpers</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8135/files#diff-d144f23552ec150db375c89e52c3a53ede9ff3fa5dcd6092694fbe0a308d22ec">+281/-459</a></td>

</tr>
</table></td></tr><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
  <td>
    <details>
<summary><strong>playwright.yml</strong><dd><code>Enable visualize E2E
spec in CI</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

.github/workflows/playwright.yml

- Enable dashboards/visualize.spec.js in Playwright matrix


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8135/files#diff-7afcd2d8f7b49bda74843f209eefb7b2da45f7e7803bf2e4bd636699b76aa2d3">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___
2025-08-27 16:43:55 +05:30
udev b4eac8f607 fix: Inc UT coverage (#8128)
increase UT coverage
improve the email regex to catch `doubledotsequence` in email
2025-08-27 12:41:11 +05:30
Hengfei Yang 48115e1ab9 fix: enhance machine id check (#8160)
### **User description**
- Add duplicated machine id check
- Add 4 random chars for generate parquet filename
- Use Atomic replace unsafe code


___

### **PR Type**
Bug fix, Enhancement


___

### **Description**
- Centralize node ID generation logic

- Replace unsafe globals with atomics

- Detect and resolve duplicate node IDs

- Truncate long Snowflake IDs when parsing


___

### Diagram Walkthrough


```mermaid
flowchart LR
  A["Cluster register (etcd/nats)"] -- "collect node ids" --> B["generate_node_id()"]
  B -- "new id" --> C["LOCAL_NODE_ID (AtomicI32)"]
  C -- "reload if changed" --> D["Snowflake ID generator"]
  E["set_status()"] -- "detect duplicate id" --> B
  F["CLI parse-id"] -- "truncate to 19 digits" --> G["parse i64"]
  H["Parquet filename"] -- "append 4-hex random" --> I["unique file path"]
```



<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><details><summary>1 files</summary><table>
<tr>
<td><strong>cli.rs</strong><dd><code>Truncate IDs longer than 19 digits
before parse</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8160/files#diff-cb1eb3e74723d891353ccf1e2e5e0d246d2e78a5e69dbe4c73006ea8412d65e0">+8/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

</table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>10
files</summary><table>
<tr>
<td><strong>etcd.rs</strong><dd><code>Use centralized node-id generation
and atomics</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8160/files#diff-37c2c2803d1c12ebb4ef9299bc79c9e6740fc5f19f7f4d84e7cfbb610b9561a9">+3/-17</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>mod.rs</strong><dd><code>Add reusable generate_node_id
utility</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8160/files#diff-d15434a27e2b8406811f5a707b605203b603dad4a262c0642326be860bd2b568">+17/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>nats.rs</strong><dd><code>Centralize id generation; detect
duplicates; reload</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8160/files#diff-901773980aa255942e7865b977fe63811f31511ac40bc512d6bbb14dbb54bece">+20/-17</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>cluster.rs</strong><dd><code>Replace unsafe globals with
AtomicI32</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8160/files#diff-68d7195ab7cccf22579c4944a37c8a2f592392c30371ce907fadf62fca6f97dd">+3/-3</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>ider.rs</strong><dd><code>Read machine id atomically;
support reload</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8160/files#diff-6ea42b8eab8ba0708f93f9a8b44056d9a9e6ac42517ffba12f81420d6b0bd2b0">+10/-2</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>cluster.rs</strong><dd><code>Node equality includes id;
NodeStatus i32</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8160/files#diff-a2667c1be522ce095796a7066e02631a7e01acc85a46573e1e3a157d2aefb7c3">+4/-3</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>mod.rs</strong><dd><code>Add 4-hex random suffix to
filenames</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8160/files#diff-30f42c3685037c219f0033617f032b23a7f74624ba4ae6c4e3687af401304591">+2/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>schema.rs</strong><dd><code>Initialize generators using
atomic node id</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8160/files#diff-4696a44abde2df4ac48fed716f930bfdcc01759bdfcfd8d802821c6dd857bff9">+7/-3</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>mod.rs</strong><dd><code>Generate record ids using atomic
node id</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8160/files#diff-7c7b5bca85f0ced652965cae66540c96f56dfcca4f4c16b77bf7b45aac203d1b">+2/-2</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>schema.rs</strong><dd><code>Use atomic node id for stream
generators</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8160/files#diff-d9596182a0c7a46a6a7ff5cee822554cdae05ceec312f86c93b538db9f73bbfd">+7/-2</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></details></td></tr></tr></tbody></table>

</details>

___
2025-08-27 11:08:05 +08:00
Loakesh Indiran c78f58325a fix: ingester writer channel closed (#8155)
### **User description**
- During ingestion there are instances where the writer channel is
closed. And this will need an app restart.
- So instead when we do get_writer check if channel is closed and if it
is creates a new writer


___

### **PR Type**
Bug fix


___

### **Description**
- Detect closed writer channels and refresh

- Remove stale writers from cache on close

- Add channel-closed helper on Writer

- Improve rotate error log with writer index


___

### Diagram Walkthrough


```mermaid
flowchart LR
  GW["get_writer()"] -- "cache hit + channel open" --> RET["return cached Writer"]
  GW -- "cache hit but channel closed" --> RM["remove from cache"]
  RM -- "proceed to slow path" --> CREATE["create new Writer"]
  GW -- "cache miss" --> CREATE
  W["Writer"] -- "is_channel_closed()" --> GW
  TTL["check_ttl()"] -- "log with idx on error" --> LOG["enhanced error log"]
```



<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>writer.rs</strong><dd><code>Handle closed writer
channels and improve logging</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

src/ingester/src/writer.rs

<ul><li>Check cached writer channel state before returning.<br> <li>
Remove closed-channel writers from cache and recreate.<br> <li> Add
Writer::is_channel_closed helper method.<br> <li> Enhance rotate error
log to include writer index.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8155/files#diff-d1a9b1542cc2758afe4fa67abd454dd818718f4e1c7570303519af5a58d6301f">+22/-2</a>&nbsp;
&nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___
2025-08-26 19:57:25 +05:30
sktrpathi 05d0c67704 chore: add UTs, run fmt and clippy (#8153)
### **User description**
- also increase minimum coverage threshold


___

### **PR Type**
Tests, Enhancement


___

### **Description**
- Add extensive unit tests for metrics

- Add comprehensive tests for logs bulk API

- Add tests for traces response and helpers

- Increase minimum coverage thresholds
2025-08-26 18:51:25 +05:30
Sai Nikhil 12fc60af15 fix: unit test latest v2.0 (#8151)
### **User description**
added unit test cases for missing files


___

### **PR Type**
Tests, Enhancement


___

### **Description**
- Add extensive unit tests coverage

- Expose internals for testability

- Improve VRL language modularity

- Export utility for reuse in tests


___

### Diagram Walkthrough


```mermaid
flowchart LR
  specs["Add comprehensive spec files"] -- drive coverage --> composables["Composable internals exposed for tests"]
  composables -- supports --> store["Store mocks and helpers updated"]
  language["VRL language keywords exported"] -- reuse in tests --> specs
  billing["Export formatDate utility"] -- reuse in tests --> specs
```



<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>4
files</summary><table>
<tr>
<td><strong>SearchBar.spec.ts</strong><dd><code>Add 145+ tests for
SearchBar methods</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-63ac75d3fe278dad233e7dd7c51b3b33076d54a776b89ae05190d8522130c78b">+2196/-0</a></td>

</tr>

<tr>
<td><strong>useStreams.spec.ts</strong><dd><code>Rewrite and expand
useStreams unit tests</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-513e2d53c46c553904a054e9c2cd12d33e800afc54fe5b4192c9782382ecd79b">+727/-175</a></td>

</tr>

<tr>
<td><strong>useStreams.ts</strong><dd><code>Expose internal helpers for
testing</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-a083369344f022cdf8d4f536719179b1d920369e33e2e26234e70dd36d151a7c">+11/-1</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>store.ts</strong><dd><code>Add meta_org to default store
state</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-0f8dff694a1fcfaa42d432168e435b7a2aa122d075fedfd6e75e532aca3b2a73">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

</table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>2
files</summary><table>
<tr>
<td><strong>vrlLanguage.ts</strong><dd><code>Export VRL keywords and
refactor usage</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-d8baadeb1ccdabd0e424d3f335476417990ae5f680645db52ba03a94b75afd7a">+7/-4</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>convertBillingData.ts</strong><dd><code>Export formatDate
for external use</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-56fa0a54f04a4fd9d5a715f5dbfe80ebcb852a39720160399e427021f75185ec">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></details></td></tr><tr><td><strong>Additional
files</strong></td><td><details><summary>41 files</summary><table>
<tr>
  <td><strong>AddOpenobserveType.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-d4c9e84859e41b57861e8ec93d08f28111c13c5ca1143c0613f9e3f55051a2f2">+365/-11</a></td>

</tr>

<tr>
  <td><strong>FolderList.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-0c62fad007c4194fb43b3986b2cbdfb7f6317e8e1e4e402d78ec44c951e7973b">+941/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>AppOrganizations.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-0be0b81d3cd8b7003dc2aaf283fbe3f2434963086540a4d6bf1dd513fe9ed19f">+1021/-0</a></td>

</tr>

<tr>
  <td><strong>User.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-52945c253c25b4961ba3c66891234a74aa62c69e70f70ee67388bb406f0847cd">+779/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>User.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-e973c2a665f9b27b94673ba64cc5b23650300836a727a2e07673c8e26305aee5">+10/-3</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>LogstashDatasource.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-2cd019295a25886a037e6ede5cad795b52851a377f48beb46f3897bc6d64a20b">+425/-2</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>Login.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-746b43968d685362866c3f97bf2b5e0846bac7463fe1ecb080c1c7d962cb855b">+229/-1</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>AssociatedRegexPatterns.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-4ca41bf14fd6a3c79a3877324a7c7520a25d1d33f97fe947b2f6dd4bbf6ca5b4">+310/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>AssociatedRegexPatterns.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-c6fce5e1c83798991b6ff19effb23c67af59f38fac0b9e56dcab7a09d139f550">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>Nodes.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-65fde080f2ef775dab71d503b730bf029d13640ac241ded1dc22a72185a12082">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>OrganizationManagement.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-bff2884ebe60873c476c6a826739f210aca57e39cd503ca0026e48388be48697">+1090/-0</a></td>

</tr>

<tr>
  <td><strong>OrganizationManagement.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-21e2431538cb6b76e5ef5b367c6df8fc02ad8f6c1294f438be9937c7481ea9ff">+3/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>OrganizationSettings.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-03458cff72df35e454f83d964d2505e87b9c37e4488333e0d18a7757f2b1ebe4">+777/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>useEnterpriseRoutes.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-ce0d8e19a397a63cfe5a423399b9c8f8f08eb0e30913ba9b885a00f5703d2ede">+784/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>useIngestionRoutes.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-3b7ebacf9481f4643a2b56ffe53ab161fc89d416e280d45b48568866a4dee40c">+1013/-0</a></td>

</tr>

<tr>
  <td><strong>useManagementRoutes.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-28a4eb5ed72bef3db05dca1f8e45eef0836819fe0c747783b22cce966d7d6ad4">+608/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>useAiChat.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-666a3e460b35ed780ab299fb01537fe3afdb12dabe2b363d5d91a08a728903f9">+614/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>useAiChat.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-830ee4f21bdbbd0fa5c5c0f43b0a1d0200831e07ccddc91982cf0371c801b046">+3/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>MainLayout.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-59def4c2a6d83249918d30d825ccfb0aa4ce9616586fe13f16a7e29b3827cdbc">+495/-22</a></td>

</tr>

<tr>
  <td><strong>MainLayout.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-91e4134141264c4624d4eb4cfa987b33ed31eb6f551e089c0b26f2610dd54362">+6/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>MetricLegends.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-87f5d1b4980d975625d85d549607833927202ebffe226643723bc733c344622f">+575/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>MetricList.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-cfe67d5bd5005164060b2b219a86074a5b6330e1759260803e54e89255aeb86a">+976/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>MetricList.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-bba38d43b27f28395343746a2de5411a2b18ab093d1843ad6bd413ba50a2b236">+5/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>SyntaxGuideMetrics.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-e83d30b644b4e25b1867e748793726b149a5f8e5e94aac273d32b9fa9f9d73a6">+505/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>HomeView.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-73e32dfbcdec6f87abe68984231fb1227502397e28fd1d91cd9579024010fb82">+771/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>Nodes.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-bc3ed81e6399bf6502b432ec0935da08fd0a824adb265a4f579002b4bca13474">+688/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>convertBillingData.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-07358b9d1c1df7af083b9843924628f0525bb2c2552ee5e1392b461a99cec321">+492/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>convertLogData.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-39de9d9ab51415a842d8aa8cee7fa1beb7234eaed7dfcb996a579a2ef4930b4c">+516/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>convertLogData.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-92a6bf770bda75f5e07d57d6cc472f8defa9db6abf02e58de542988b311fed55">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>promQLUtils.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-801511331f719d887e0c2df01bfe47bee812895fb67fde768f3b33ba48ace614">+577/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>sqlUtils.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-f22df136a6cdfbacf2b637d4902002337620c8e981dbacfdd705455ff899f12d">+2074/-15</a></td>

</tr>

<tr>
  <td><strong>sqlUtils.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-dde40e8fcb5c37b06c011ede08922c44a3c025682fbc341aee97ba046b73a0e3">+4/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>vrlLanguage.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-8b8d40ee6bba3647f6e5964e1011778519325e45dbde2cf9abc64e3f9308d3e8">+866/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>vrlLanguageDefinition.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-7885cf603efcffce2a031eaab866f260d0f699f1a52b961ecd77f0bf8aa72039">+651/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>AppAlerts.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-7ac6d93d3aa4a91d52bd751822e423a21158e09bfe70cf96fba46f42376d2acf">+798/-27</a></td>

</tr>

<tr>
  <td><strong>Ingestion.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-81be229daf4204aaa0133a1c4cab618bbac68ab704b74ecf3e121636f16c6e61">+1026/-0</a></td>

</tr>

<tr>
  <td><strong>Ingestion.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-97b8e8ed2a1260a39442563c7447d4f6d4830a37d47258920d6f94a292cd2d77">+68/-64</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>Login.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-92c3c0344a73a30eadb1c98f849f7297c460f50804cdbb2d34dd374fbcf83d74">+1183/-0</a></td>

</tr>

<tr>
  <td><strong>ShortUrl.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-3838b4efef178fdab0ba9652f21468b36918b3ca9b84783c564cde2a6556ed39">+326/-29</a></td>

</tr>

<tr>
  <td><strong>ShortUrl.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-b7ffcc5de24f9e1db5a3a8e78a686727360f9061ca6f9f8ae60456c3d603f9b7">+7/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>User.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8151/files#diff-1c14af61b2a316a418e1c7b79ff459ea61e1d1ac1f57b7c768421aa8cdd58cd1">+528/-113</a></td>

</tr>
</table></details></td></tr></tr></tbody></table>

</details>

___
2025-08-26 17:31:15 +05:30
Sai Nikhil f31304597d fix: unit test cases added (#8133)
### **PR Type**
Tests, Enhancement


___

### **Description**
- Add extensive unit tests across modules

- Expose internal methods for testability

- Extend props for query component metadata

- Minor query and ingestion component updates


___

### Diagram Walkthrough


```mermaid
flowchart LR
  ImportPipelineSpec["ImportPipeline.spec.ts (new tests)"]
  RunningQueriesSpec["RunningQueries.spec.ts (new tests)"]
  RunningQueriesListSpec["RunningQueriesList.spec.ts (new tests)"]
  PlansSpec["Billing plans.spec.ts (new tests)"]
  OtelLogsSpec["Logs OtelConfig.spec.ts (new tests)"]
  ImportPipelineVue["ImportPipeline.vue (expose internals)"]
  QueryListVue["QueryList.vue (add metaData prop)"]

  ImportPipelineSpec -- tests --> ImportPipelineVue
  RunningQueriesSpec -- tests --> RunningQueriesVue["RunningQueries.vue (updated)"]
  RunningQueriesListSpec -- tests --> RunningQueriesListVue["RunningQueriesList.vue"]
  PlansSpec -- tests --> BillingServices["Billing services"]
  OtelLogsSpec -- tests --> OtelLogsVue["OtelConfig.vue (logs)"]
  QueryListSpec["QueryList.spec.ts (new tests)"] -- tests --> QueryListVue
```



<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>11
files</summary><table>
<tr>
<td><strong>ImportPipeline.spec.ts</strong><dd><code>Add thorough unit
tests for ImportPipeline</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8133/files#diff-228ad64e4e9ffc0096add762a2619f4531b1fdd638a18b02d031f98bda0f76fd">+1083/-0</a></td>

</tr>

<tr>
<td><strong>RunningQueries.spec.ts</strong><dd><code>Add comprehensive
tests for RunningQueries view</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8133/files#diff-b73fab81a4d70291bca59d1f0f408f872705829fadad6b8b6fe1165d8f022490">+680/-0</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>RunningQueriesList.spec.ts</strong><dd><code>Add unit tests
for RunningQueriesList table</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8133/files#diff-b80dbf8f275c5bbdae8c5b1b336a67d3dbc6aa8e6f27dd4b8be548c1e6eafae3">+664/-0</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>plans.spec.ts</strong><dd><code>Add unit tests for billing
plans component</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8133/files#diff-4398fd7c1bd0322c6a964f63b59dd79a190c2f089792460ec43dfa1cd9a8063f">+664/-0</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>OtelConfig.spec.ts</strong><dd><code>Add unit tests for logs
OtelConfig generator</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8133/files#diff-46fbf1ab0a2ead705ff5593e115166853ebdfc66e463f893b7e8934bb50bacde">+340/-0</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>invoiceTable.spec.ts</strong><dd><code>Add unit tests for
invoice table</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8133/files#diff-a95d419747ed8c8f054d4633d524261b34d709e091af3b0ee656f1bb0c01599c">+655/-0</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>OtelConfig.spec.ts</strong><dd><code>Add tests for
recommended OtelConfig</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8133/files#diff-f6c9086bfb3685c0483782e995b01687f40fc0d68d752fe70222512c735c79be">+529/-0</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>SummaryList.spec.ts</strong><dd><code>Add tests for queries
summary list</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8133/files#diff-b29217e2817d222ee871ba8a205c2e89a832e59a02f0964a85a118c321f41772">+392/-0</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>invoiceHistory.spec.ts</strong><dd><code>Add tests for
invoice history component</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8133/files#diff-0a63edfe6e4c010c3f80c7afe0f22a394e666591702c376d89e4cc3d0f1f499b">+381/-0</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>QueryList.spec.ts</strong><dd><code>Add tests for QueryList
component</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8133/files#diff-e08f882439ac0d15ee00d96205df02345821408ab81bade0267f780b66b956e2">+345/-0</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>enterprisePlan.spec.ts</strong><dd><code>Add tests for
enterprise plan component</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8133/files#diff-afe194ebfc98f24482cc388a5e8482174dd48e74c302d24c00b2c9b309b0a2d1">+271/-0</a>&nbsp;
</td>

</tr>

</table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>4
files</summary><table>
<tr>
<td><strong>ImportPipeline.vue</strong><dd><code>Expose internal methods
via setup return</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8133/files#diff-d57fa41169daa44551a181f21ca33882004b29ab74e3040e4c56a8c849078670">+16/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>QueryList.vue</strong><dd><code>Support additional metaData
prop</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8133/files#diff-3daa87342834ae1e5bc6d74cb6dbd640b5b5fbb8df15c3cfe43b74c84f872d5d">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>RunningQueries.vue</strong><dd><code>Update logic to align
with new tests</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8133/files#diff-6f0e18626a986d934c08c368ac383179c56bfcd914a27619ba748f43629c926b">+14/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>OtelConfig.vue</strong><dd><code>Minor updates to support
tested behavior</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8133/files#diff-f5f5b0e070bcd827d74339487f2dd8353be1e9095fc4edf6c8c59b6b4dd56ea2">+8/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></details></td></tr></tr></tbody></table>

</details>

___
2025-08-26 16:35:32 +05:30
harish0101-ops d1657b077d fix: 8107 Correct alert URL query for condition (#8143) 2025-08-26 17:32:43 +08:00
Bhargav 6484335345 feat: added oracle database page under datasource (#8140)
### **PR Type**
Enhancement, Documentation


___

### **Description**
- Add Oracle ingestion route and page

- Include Oracle in database tabs and i18n

- Link Oracle docs in ingestion helper


___

### Diagram Walkthrough


```mermaid
flowchart LR
  Routes["Ingestion routes"] -- add --> OracleRoute["/ingestion/database/oracle"]
  DatabaseTabs["Database.vue tabs"] -- show --> OracleTab["Oracle tab"]
  OracleTab -- loads --> OracleComponent["Oracle.vue"]
  IngestionHelper["useIngestion.ts"] -- adds doc URL --> OracleDocs["Oracle documentation link"]
  i18n["en.json"] -- adds key --> OracleLabel["ingestion.oracle"]
```



<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>useIngestionRoutes.ts</strong><dd><code>Add Oracle
ingestion route</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/composables/shared/useIngestionRoutes.ts

<ul><li>Import <code>Oracle.vue</code> component.<br> <li> Register
<code>oracle</code> child route with <code>routeGuard</code>.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8140/files#diff-29b1f8a3bf25d16999da323aefcd8cd0eff4647a0c0d737abd355a008492b2ae">+9/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>Database.vue</strong><dd><code>Add Oracle tab in
database list</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></summary>
<hr>

web/src/components/ingestion/Database.vue

- Add Oracle tab entry with icon, label, and route.


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8140/files#diff-9f043be1b81e96e163d333d8fac934fbd8cf9009076eeaaf2bd8ee360a3e913c">+12/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>Oracle.vue</strong><dd><code>Create Oracle ingestion
component</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/components/ingestion/databases/Oracle.vue

<ul><li>New Oracle ingestion component with copyable content.<br> <li>
Links to Oracle documentation via composable.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8140/files#diff-7b4b75f7f33025d817df39548bd9209f634f26b7c494c868a3fe1c17eca75765">+37/-0</a>&nbsp;
&nbsp; </td>

</tr>
</table></td></tr><tr><td><strong>Documentation</strong></td><td><table>
<tr>
  <td>
    <details>
<summary><strong>useIngestion.ts</strong><dd><code>Include Oracle docs
URL</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/composables/useIngestion.ts

- Add `oracle` docs URL to `databaseDocURLs`.


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8140/files#diff-3691717c742137402219c92e4bb4a5943d2676e058e2320bd009faa40ee2ce6a">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>en.json</strong><dd><code>Add i18n label for
Oracle</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/locales/languages/en.json

- Add `ingestion.oracle` label.


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8140/files#diff-892aa3d75ab6e129ef9116aa21bec1b9a15ba69ce5366d2a19128078c690d824">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___
2025-08-26 12:39:30 +05:30
Bhargav e9204d8bbc fix: added spacing between box (#8149)
### **PR Type**
Enhancement


___

### **Description**
- Add right margin to home cards

- Improve spacing between dashboard boxes

- Visual polish on HomeView layout


___

### Diagram Walkthrough


```mermaid
flowchart LR
  A["HomeView.vue"] -- "add q-mr-lg" --> B["Card containers"]
  B -- "improved spacing" --> C["Home page layout"]
```



<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>Add right margin to
HomeView card containers</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/views/HomeView.vue

<ul><li>Add <code>q-mr-lg</code> to three <code>.card-container</code>
divs.<br> <li> Improves horizontal spacing between home page cards.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8149/files#diff-9af441af191d3254ef5f9db603dca75486de7638cda41a3c050e7b3c33d68280">+3/-3</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___
2025-08-26 11:59:07 +05:30
Bhargav dd0fbf147a fix: remove environment option from list (#8141)
### **PR Type**
Enhancement


___

### **Description**
- Split index options for environment fields

- Remove env options from default list

- Conditionally render options based on row settings

- Expose new env options in component state


___

### Diagram Walkthrough


```mermaid
flowchart LR
  UI["Schema Index Select (QSelect)"]
  RowCheck["isEnvironmentSettings(row)"]
  DefaultOpts["streamIndexType"]
  EnvOpts["streamIndexTypeEnv"]
  State["Component exports"]

  UI -- evaluates --> RowCheck
  RowCheck -- true --> EnvOpts
  RowCheck -- false --> DefaultOpts
  EnvOpts -- provided as :options --> UI
  DefaultOpts -- provided as :options --> UI
  EnvOpts -- added to --> State
```



<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>Split and conditionally
apply environment index options</code>&nbsp; &nbsp; </dd></summary>
<hr>

web/src/components/logstream/schema.vue

<ul><li>Add <code>streamIndexTypeEnv</code> with environment-only
options.<br> <li> Remove environment options from
<code>streamIndexType</code>.<br> <li> Conditionally set QSelect
<code>:options</code> based on
<br><code>isEnvironmentSettings(row)</code>.<br> <li> Expose
<code>streamIndexTypeEnv</code> from setup return.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8141/files#diff-9196be2ccae4054a00b0b1aa9d1e87b366c10920d6eaf9ef8c6e6293d50bcf46">+7/-3</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___
2025-08-26 11:12:03 +05:30
Huaijin d0fab62ee4 chore: add metrics for custom ExecutionPlan (#8131) 2025-08-26 12:44:24 +08:00
Huaijin d9d44af904 fix: lincense-checker in ci/cd (#8145) 2025-08-26 11:55:22 +08:00
udev 77e50caea5 fix: make config reactive to env changes (#7996) (#8092)
### **User description**
fix #7996 sync to main


___

### **PR Type**
Bug fix, Enhancement


___

### **Description**
- Make periodic jobs react to config changes

- Introduce reusable `spawn_pausable_job!` macro

- Fix env var name `ZO_SEARCH_JOB_RUN_TIMEOUT`

- Replace fixed intervals with dynamic getters


___

### Diagram Walkthrough


```mermaid
flowchart LR
  CFG["get_config() (dynamic)"]
  MACRO["spawn_pausable_job! macro"]
  JOBS["Background jobs (GC, compactor, alerts, stats, etc.)"]
  ENV["Env vars (e.g., ZO_SEARCH_JOB_RUN_TIMEOUT)"]

  ENV -- "drives" --> CFG
  CFG -- "intervals/pause_if" --> MACRO
  MACRO -- "spawns/controls" --> JOBS
```



<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><details><summary>2 files</summary><table>
<tr>
<td><strong>mod.rs</strong><dd><code>Heartbeat interval now read each
loop</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8092/files#diff-d15434a27e2b8406811f5a707b605203b603dad4a262c0642326be860bd2b568">+2/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>config.rs</strong><dd><code>Fix search job timeout env var
name</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8092/files#diff-9aeee4a74c0520daa40f9b81c7016f5b6b3254375b968dd7598e745630980d62">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

</table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>16
files</summary><table>
<tr>
<td><strong>mod.rs</strong><dd><code>Export pausable_job utilities
module</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8092/files#diff-f5df40ca59915d9d58ad04ea2440e6ebf29388afaeb8cb0d6c63d2a979df0c17">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>pausable_job.rs</strong><dd><code>Add pausable job spawning
macro and helpers</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8092/files#diff-7e2dce7a3942789804bae659939c214c4eeb68d89315e23a08139214c339ea24">+143/-0</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>disk.rs</strong><dd><code>Use pausable job for disk cache
GC</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8092/files#diff-af63f2c5d85313779df0204c9689e50a6c3916e3aadc24e54e23ec640a584fcb">+4/-10</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>memory.rs</strong><dd><code>Use pausable job for memory
cache GC</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8092/files#diff-ff00d697a9b223ef2858c5e41111a8918e7cc347dc22891c02bda6982682eee1">+4/-16</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>lib.rs</strong><dd><code>Mem persist uses dynamic sleep
interval</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8092/files#diff-603267e2f712eeb4bc46fdff981f1fad1f3a9d3b989a7db4b3c0984fc5b1ed43">+4/-5</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>alert_manager.rs</strong><dd><code>Make alert/search jobs
pausable and reactive</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8092/files#diff-7e30858abad652a860186eb047347305488f52356112b1495dd53ce740316d7c">+61/-104</a></td>

</tr>

<tr>
<td><strong>compactor.rs</strong><dd><code>Refactor compactor jobs to
pausable macro</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8092/files#diff-550629b7ebf6460b36fdd46cdfea466c3d3f1e30023c71ee54b87e7998efc500">+134/-188</a></td>

</tr>

<tr>
<td><strong>parquet.rs</strong><dd><code>Use dynamic interval for file
push loop</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8092/files#diff-27f710981cfe1b938aeeb53abaed05961596c32e2edf3b8a2a59d3e72b2f542b">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>flatten_compactor.rs</strong><dd><code>Flatten generator via
pausable macro</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8092/files#diff-dd30b917380ba55bd17aadeaee6aa2c87a67e861257a6a14ba2113a9b3015030">+15/-20</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>mod.rs</strong><dd><code>Wire jobs with reactive spawning;
telemetry</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8092/files#diff-f2e4c29b8eef22189ec704a832633c4bd135a24444f054864c98064bd0963681">+21/-13</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>promql.rs</strong><dd><code>Make metrics leader push
pausable/optional</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8092/files#diff-15414a41d64eb87bc5c0cd00a07213b3f99c31b346e8e2c36178f7276a1f058c">+26/-31</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>stats.rs</strong><dd><code>Stats jobs via pausable macro;
conditional start</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8092/files#diff-f3ca67d9d2c68beeafd6e5de947dbc9a648ac2d2699c5dc87458c369887d09b9">+51/-42</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>telemetry.rs</strong><dd><code>Remove legacy telemetry loop
(replaced)</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8092/files#diff-e82cf6d4c890bfaa5e711293b599d7f7a742bb96180639815ede33958b1bc1d9">+0/-36</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>storage.rs</strong><dd><code>Make enrichment merge job
pausable</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8092/files#diff-335bb1eea9193dc398da6838c6a6a11dd6f09e984a1ed4a2e611618a427754f0">+42/-35</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>distinct_values.rs</strong><dd><code>Periodic flush via
pausable macro</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8092/files#diff-3fb2320197c6e8e900658f5a24158e922610eadcbf081ab0df230f770ef27e07">+11/-18</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>mod.rs</strong><dd><code>Audit publish via pausable macro,
optional run</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8092/files#diff-c6255010f7a87d6acdb3ad04954fc9f2c27350ae319c53a1857b120aa06408a3">+17/-15</a>&nbsp;
</td>

</tr>
</table></details></td></tr></tr></tbody></table>

</details>

___
2025-08-26 08:22:37 +05:30
Sai Nikhil 15c019fe93 fix: regex patterns introduce search as well (#8134)
### **User description**
1. we are now support both redaction or dropping of matched regex field
during search time and ingestion time


___

### **PR Type**
Enhancement, Bug fix


___

### **Description**
- Add confirmation dialog before removing pattern

- Support deselecting apply_at with safe revert

- Generalize redact/drop copy beyond ingestion

- Track dialog state and handlers


___

### Diagram Walkthrough


```mermaid
flowchart LR
  UI["AssociatedRegexPatterns.vue"]
  Dialog["ConfirmDialog component"]
  State["showWarningDialogToRemovePattern state"]
  Logic["apply_at change handler"]
  Revert["transformApplyAtValue + cancel handler"]
  Actions["handleAddOrRemovePattern"]

  UI -- "imports & registers" --> Dialog
  UI -- "manages" --> State
  Logic -- "empty selection triggers" --> State
  State -- "cancel" --> Revert
  State -- "ok" --> Actions
  Revert -- "restore previous apply_at" --> UI
```



<details> <summary><h3> File Walkthrough</h3></summary>

<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
  <td>
    <details>

<summary><strong>AssociatedRegexPatterns.vue</strong><dd><code>Confirmation
and apply_at handling improvements</code>&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/components/logstream/AssociatedRegexPatterns.vue

<ul><li>Add ConfirmDialog to confirm pattern removal.<br> <li> Introduce
state and handlers for removal flow.<br> <li> Allow empty apply_at to
trigger confirmation; revert on cancel.<br> <li> Simplify redact/drop
help text; remove hardcoded ingestion fallback.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8134/files#diff-c6fce5e1c83798991b6ff19effb23c67af59f38fac0b9e56dcab7a09d139f550">+57/-11</a>&nbsp;
</td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___
2025-08-25 20:59:43 +05:30
Sai Nikhil 952ccb7396 fix: indexlist field select issue fixed (#8139)
### **User description**
This PR solves the issue of field selection when user selects from side
panel


___

### **PR Type**
Bug fix


___

### **Description**
- Fix timeout reference in column update

- Prevent stale timeout and ensure clearTimeout works

- Use component-scoped `updateColumnsTimeout`


___

### Diagram Walkthrough


```mermaid
flowchart LR
  UpdateSelectedColumns["updateSelectedColumns()"] --> CheckTimeout["Check this.updateColumnsTimeout"]
  CheckTimeout --> ClearTimeout["clearTimeout(this.updateColumnsTimeout)"]
  ClearTimeout --> SetTimeout["this.updateColumnsTimeout = setTimeout(...)"]
  SetTimeout --> UpdateGrid["this.updateGridColumns()"]
```



<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>Correct timeout scoping for
grid column updates</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/plugins/logs/Index.vue

<ul><li>Replace external ref with
<code>this.updateColumnsTimeout</code>.<br> <li> Clear existing timeout
via component property.<br> <li> Store new setTimeout handle on
component instance.<br> <li> Ensure grid columns update after 50ms.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8139/files#diff-0323c3da69b369843c5d72bf4df5b00ca6b5147192a213baf331659ecf92af62">+3/-3</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___
2025-08-25 20:02:20 +05:30
Huaijin 35789a2f76 chore: update datafusion to v49.0.2 (#8136) 2025-08-25 21:00:11 +08:00
Bhargav 0a63a10032 fix; UI unit test case v7.2 (#8132)
### **PR Type**
Tests, Enhancement


___

### **Description**
- Add comprehensive settings unit tests

- Introduce regex patterns test suite

- Expand MSW handlers for settings APIs

- Add mock data for regex patterns


___

### Diagram Walkthrough


```mermaid
flowchart LR
  Specs["New settings/regex spec files"] -- "use" --> MSW["MSW rest handlers"]
  MSW -- "serve" --> Mocks["Regex patterns mock data"]
  Specs -- "mount" --> Components["Settings components"]
```



<details> <summary><h3> File Walkthrough</h3></summary>

<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Tests</strong></td><td><details><summary>6
files</summary><table>
<tr>
<td><strong>AddRegexPattern.spec.ts</strong><dd><code>Add end-to-end
unit tests for AddRegexPattern</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8132/files#diff-8010ecaba14a295a81248da3901421fe133feb14b178512a4690d2c76eabde03">+626/-0</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>CipherKeys.spec.ts</strong><dd><code>Add full unit tests for
Cipher Keys page</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8132/files#diff-017c69ca1a10dd456e41c8fd188539c6b8c57c0437351710a177358ae3db1fef">+787/-0</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>General.spec.ts</strong><dd><code>Add unit tests for General
settings and branding</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8132/files#diff-f3b556321cf5c1b7cfcc36507d050f70ea355971d718ddb6bafa6faf2dc6d298">+851/-0</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>NoRegexPatterns.spec.ts</strong><dd><code>Add unit tests for
empty Regex Patterns state</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8132/files#diff-92a31474de14534958fdf8056a7e6ab9334493c92740fe1ed738fabf01de18cd">+361/-0</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>index.spec.ts</strong><dd><code>Add unit tests for Settings
index navigation and tabs</code>&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8132/files#diff-7c2e13b69b48077a1e82e767fa048995d42d4bef03362f19ad0897f7e2a4dfb3">+543/-0</a>&nbsp;
</td>

</tr>

<tr>
<td><strong>regexPatterns.ts</strong><dd><code>Add mock data for regex
patterns and results</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8132/files#diff-c7324fdbffcb15b12d0597c7235234970331a4e4819611e1241a00b1b936f570">+41/-0</a>&nbsp;
&nbsp; </td>

</tr>

</table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>handlers.ts</strong><dd><code>Extend MSW handlers for
settings and regex APIs</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8132/files#diff-fa72375a2848d474b311c07cf6aef7d6117b1f4d88f56a74c9207f39df72333c">+96/-0</a>&nbsp;
&nbsp; </td>

</tr>
</table></details></td></tr></tr></tbody></table>

</details>

___
2025-08-25 16:59:40 +05:30
Omkar Kesarkhane 91265a75ab fix: Parsing nested "WITH" query to extract stream names (#8062) (#8076)
### **PR Type**
Bug fix, Enhancement


___

### **Description**
- Robust nested WITH table extraction

- Prevent visualize with invalid states

- Improve VRL editor visualize warning UX

- Minor UI formatting and accessibility tweaks


___

### Diagram Walkthrough


```mermaid
flowchart LR
  SQLParser["SQL parser in useLogs.ts"] -- "extract nested tables" --> Streams["Selected streams list"]
  Toggle["Visualize toggle handler"] -- "validate state & query" --> Errors["User notifications"]
  Editor["VRL editor in SearchBar.vue"] -- "read-only + banner on visualize" --> UX["Improved UX feedback"]
```



<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>Robust nested WITH tables
extraction</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/composables/useLogs.ts

<ul><li>Add recursive extraction for WITH tables<br> <li> Protect
recursion with depth limit<br> <li> Prevent circular refs via
WeakSet<br> <li> Handle FROM, WHERE, SELECT subqueries</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8076/files#diff-1040f61354f92711e0e77ed4e9bfa15586d45a94c7e2ab06cc37372068030e7b">+49/-6</a>&nbsp;
&nbsp; </td>

</tr>
</table></td></tr><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
  <td>
    <details>
<summary><strong>SearchBar.vue</strong><dd><code>Visualize validations
and VRL editor UX</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></summary>
<hr>

web/src/plugins/logs/SearchBar.vue

<ul><li>Validate visualize toggle states and queries<br> <li> Make VRL
editor read-only with warning in visualize<br> <li> Safe access to
selectedStreamFields<br> <li> UI/formatting and tooltip consistency</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8076/files#diff-81893de4edf186b0556f610acb280c87baa2ffe67d3b48a60a866094c7635baf">+134/-75</a></td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___
2025-08-25 16:08:39 +05:30
Omkar Kesarkhane e92ed4bcc2 fix: Traces Component Testing (#7877)
### **PR Type**
Tests, Enhancement, Bug fix


___

### **Description**
- Extensive unit tests for TraceDetailsSidebar and TraceTree

- Add data-test attributes across trace components

- Handle zero duration in formatTimeWithSuffix

- Fix highlightSearch quoting and JSON formatting


___



<details> <summary><h3> File Walkthrough</h3></summary>

<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody></tr></tbody></table>

</details>

___
2025-08-25 15:09:13 +05:30
Abhay Padamani 4963bd648d fix: parse cte query to extract stream name (#8102) (#8116)
### **User description**
- #8080
- #8098


___

### **PR Type**
Bug fix, Enhancement


___

### **Description**
- Fix stream selection for CTE queries

- Add robust stream extraction utility

- Make query updates async-aware

- Adjust watchers to trigger reliably


___

### Diagram Walkthrough


```mermaid
flowchart LR
  SQL["SQL query (incl. CTE)"] -- parse --> Extract["getStreamNameFromQuery()"]
  Extract -- returns stream --> Panel["useDashboardPanel: updateQueryValue()"]
  Panel -- set --> StreamField["currentQuery.fields.stream"]
  Watcher["Vue watch hooks"] -- trigger on changes --> Panel
```



<details> <summary><h3> File Walkthrough</h3></summary>

<table><thead><tr><th></th><th align="left">Relevant
files</th></tr></thead><tbody><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
  <td>
    <details>
<summary><strong>FieldList.vue</strong><dd><code>Stabilize watcher for
stream type changes</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></summary>
<hr>

web/src/components/dashboards/addPanel/FieldList.vue

<ul><li>Change watcher source to array form.<br> <li> Ensure stream list
reloads on type changes.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8116/files#diff-a071c06e3e26629cb4ae4751450acc39c61fa49b07a1cc4be3711697829668d4">+5/-3</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>sqlUtils.ts</strong><dd><code>Add robust stream
extractor for SQL/CTE queries</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/utils/query/sqlUtils.ts

<ul><li>Add <code>getStreamNameFromQuery</code> to parse SQL/CTE.<br>
<li> Safeguard recursion and circular refs with WeakSet.<br> <li> Handle
FROM, WHERE, SELECT subqueries.<br> <li> Gracefully handle parser
errors.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8116/files#diff-dde40e8fcb5c37b06c011ede08922c44a3c025682fbc341aee97ba046b73a0e3">+76/-0</a>&nbsp;
&nbsp; </td>

</tr>
</table></td></tr><tr><td><strong>Bug fix</strong></td><td><table>
<tr>
  <td>
    <details>
<summary><strong>useDashboardPanel.ts</strong><dd><code>Async query
parsing and CTE-aware stream resolution</code>&nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/composables/useDashboardPanel.ts

<ul><li>Import <code>getStreamNameFromQuery</code>.<br> <li> Make
<code>updateQueryValue</code> async and await in watcher.<br> <li> Use
stream name from parser for selection, including CTE.<br> <li> Remove
redundant parsing branch; minor bug introduced in logs flag.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8116/files#diff-fbba1700750053b9eaf38ddd30dab84531bc44131c795ebb713811e4930cd7cb">+15/-23</a>&nbsp;
</td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___
2025-08-25 13:58:39 +05:30
Abhay Padamani 8e9fe66e92 fix: config sync on logs to visualization toggle main (#8115)
### **User description**
Steps:
1. Go to logs page.
2. Select stream and render logs.
3. Toggle to visualization
4. modify chart type or chart configs.
5. Go back to logs page.
6. Again switch to visualization.(config should be synced and default
chart type will be automatically selected).

- Share visualization will always sync config and chart type both.


___

### **PR Type**
Bug fix, Enhancement


___

### **Description**
- Restore visualization config from URL reliably

- Preserve chart type on first toggle

- Prevent re-trigger during URL restoration

- Persist visualization_data across routes


___

### Diagram Walkthrough


```mermaid
flowchart LR
  LogsPage["Logs page toggle"] -- "to visualize" --> RestoreURL["Restore config from URL"]
  RestoreURL -- "preserve config + maybe type" --> ExtractFields["Extract fields (auto-select?)"]
  ExtractFields -- "build data" --> VizData["visualizeChartData"]
  VizData -- "update" --> URLSync["updateUrlQueryParams"]
  URLSync -- "persist visualization_data" --> RouterQuery["Router query params"]
```



<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>Robust restore, preserve,
and sync visualization state</code>&nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/plugins/logs/Index.vue

<ul><li>Add flags <code>isRestoringFromUrl</code>,
<code>isFirstVisualizationToggle</code>.<br> <li> Always decode URL
<code>visualization_data</code>; preserve config and first-toggle
<br>type.<br> <li> Conditional auto-chart selection via
<code>extractVisualizationFields</code>.<br> <li> Build
histogram/queries safely; fix dateTime assignment condition.<br> <li>
Restore preserved config post-extraction; update URL after switch.<br>
<li> Skip type watcher while restoring; minor refactors and safety
checks.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8115/files#diff-0323c3da69b369843c5d72bf4df5b00ca6b5147192a213baf331659ecf92af62">+106/-60</a></td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>useLogs.ts</strong><dd><code>URL persistence and scoped
visualization config encoding</code>&nbsp; </dd></summary>
<hr>

web/src/composables/useLogs.ts

<ul><li>Narrow <code>getVisualizationConfig</code> to
<code>config</code> and <code>type</code>.<br> <li> Persist
<code>visualization_data</code> in URL across modes.<br> <li>
Encode/decode flow refined; remove eager restore on init.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8115/files#diff-1040f61354f92711e0e77ed4e9bfa15586d45a94c7e2ab06cc37372068030e7b">+19/-20</a>&nbsp;
</td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___
2025-08-25 13:12:05 +05:30
Ashish Kolhe ebe5c0e73e feat: search time patterns (#8104)
### **PR Type**
Enhancement, Tests, Documentation


___

### **Description**
- Apply regex patterns at search time

- Map projections to source columns

- Integrate enterprise pattern manager

- Add tests for projection extraction


___

### Diagram Walkthrough


```mermaid
flowchart LR
  SearchReq["Search request"] -- "execute query" --> DatafusionPlan["DataFusion logical plan"]
  DatafusionPlan -- "extract projection mappings" --> ProjMap["ProjectionColumnMapping"]
  SearchReq -- "fetch hits" --> Hits["Search results (hits)"]
  ProjMap -- "guide field processing" --> PatternMgr["Pattern manager (enterprise)"]
  Hits -- "apply regex patterns" --> Hits2["Transformed 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><details><summary>6
files</summary><table>
<tr>
<td><strong>mod.rs</strong><dd><code>Expose projections module in
meta</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8104/files#diff-bab79e8da2d0d9f903cb1a6187d922c6de63d3e4561e8ce633660b664b4e859f">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>projections.rs</strong><dd><code>Add ProjectionColumnMapping
structure</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8104/files#diff-2432b13a92a92cdbd1aa1ee0fbdde05827a67c37081e7f0ecc127a4effbe3101">+26/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>mod.rs</strong><dd><code>Post-process hits with regex
patterns</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8104/files#diff-f07bfacc0501b9c234e64b16c1dd8eb0ae8fcbe231f90c81fed72bcc94946f74">+61/-2</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>mod.rs</strong><dd><code>Register regex_projections planner
module</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8104/files#diff-70bb941c2eef1365e5ead1a59b65c5397457b9197a4e22596e18d17db7eaf922">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>cache.rs</strong><dd><code>Apply regex patterns to cached
responses</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8104/files#diff-55769b7cb67b550daf45363c6d7d569b39d4a6235f6a68c091beb40f16b6511e">+10/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>execution.rs</strong><dd><code>Apply regex patterns in
streaming paths</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8104/files#diff-75d432351865224f0b00d7cc819554c2ad5fa1f777e9c645d91a3fd5c1113bc0">+35/-1</a>&nbsp;
&nbsp; </td>

</tr>

</table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>regex_projections.rs</strong><dd><code>Extract projection
source columns with tests</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8104/files#diff-b329e80dfa025fabb0ef51b6dc25285aaadc00ab7862157deb0eb7b0b01bb494">+500/-0</a>&nbsp;
</td>

</tr>

</table></details></td></tr><tr><td><strong>Documentation</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>AssociatedRegexPatterns.vue</strong><dd><code>Enable UI
section for detect-at choice</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8104/files#diff-c6fce5e1c83798991b6ff19effb23c67af59f38fac0b9e56dcab7a09d139f550">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></details></td></tr></tr></tbody></table>

</details>

___
2025-08-25 11:49:23 +05:30
Huaijin cde4ba7e83 fix: tantivy result cache to access plan (#8126) 2025-08-25 13:04:13 +08:00
sktrpathi 459d901e9b chore: add UTs, run fmt and clipyy (#8122)
### **PR Type**
Tests, Enhancement
2025-08-24 19:25:47 +05:30
Sai Nikhil c5bc2f97c2 fix: made fn editor by default false (#8000)
This PR fixes the issue #7960
2025-08-24 10:35:57 +05:30
Sai Nikhil 4c03ed1a43 fix: normalize the limit to 100 by default (#8075) (#8078)
### **User description**
1. This PR changes the user limits to 100 by default while validating
the query so it will solve the issue of larger limit
2. we dont change the original query but instead while sending for the
validation we replace the limit if it is greater than 100 to 100
3. it will also detect limit in the entire query so multiple limit is
possible in ctes , sub queries so handled that as well
4. if no limit then we will simply return it


___

### **PR Type**
Bug fix, Enhancement


___

### **Description**
- Normalize SQL LIMIT during validation

- Cap LIMIT to 100 across query parts

- Preserve original user query intact

- Handle multiple LIMIT/OFFSET safely


___

### Diagram Walkthrough


```mermaid
flowchart LR
  A["User SQL"] -- "pass to validation" --> B["normalizeLimit(sql, 100)"]
  B -- "replace LIMIT > 100" --> C["Capped SQL for validation"]
  B -- "no LIMIT found" --> D["Original SQL for 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>Enhancement</strong></td><td><table>
<tr>
  <td>
    <details>
<summary><strong>Query.vue</strong><dd><code>Add SQL LIMIT normalization
for validation path</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/components/pipeline/NodeForm/Query.vue

<ul><li>Use normalizeLimit before assigning query SQL for
validation.<br> <li> Implement normalizeLimit to cap LIMIT to maxLimit
(default 100).<br> <li> Support multiple LIMIT/OFFSET occurrences via
regex replacement.<br> <li> Add error handling and comments; keep
original query unchanged.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8078/files#diff-6247cbd506bcf963372f2e429507fc579af95f003df246889b478da11326a657">+36/-1</a>&nbsp;
&nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___
2025-08-24 09:38:03 +05:30
Sai Nikhil f78f5d79c8 fix: added unit test cases (#8121)
### **User description**
with this PR the coverage is 

-----------------------------------------------|---------|----------|---------|---------|-------------------------------------------------------------------------------------
File | % Stmts | % Branch | % Funcs | % Lines | Uncovered Line #s

-----------------------------------------------|---------|----------|---------|---------|-------------------------------------------------------------------------------------
All files | 48.05 | 82.25 | 50.81 | 48.05 |


___

### **PR Type**
Enhancement, Tests, Bug fix


___

### **Description**
- Add comprehensive unit tests across modules

- Expose component internals for testability

- Safely access org identifier with optional chaining

- Minor exports to composables for testing


___

### Diagram Walkthrough


```mermaid
flowchart LR
  components["Vue components"]
  expose["Expose methods/refs via defineExpose"]
  specs["New/expanded unit tests"]
  fixOrg["Optional chaining for org identifier"]
  composables["Composables export additions"]

  components -- "defineExpose, returns additions" --> expose
  expose -- "enables" --> specs
  components -- "query params use ?.identifier" --> fixOrg
  composables -- "export more helpers" --> specs
```



<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><details><summary>1 files</summary><table>
<tr>
<td><strong>index.vue</strong><dd><code>Use optional chaining for org
identifier in routes</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-699c63979f851c48ad440a078e93282fd797a18fc065e5331b2e41122ddb8b69">+15/-13</a>&nbsp;
</td>

</tr>

</table></details></td></tr><tr><td><strong>Tests</strong></td><td><details><summary>39
files</summary><table>
<tr>
<td><strong>Stream.vue</strong><dd><code>Expose stream form methods and
state for tests</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-1a17ced9dc89022502cab0a6f9b97b413c2a2c4f8219733d063fc0180d361739">+33/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>RealTimeAlert.vue</strong><dd><code>Expose alert editor
methods/data for tests</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-c3ae6b47832eb33f9ca877cc7165d079de14850e5c5d43a227102ba40326b9d8">+19/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>ExternalDestination.vue</strong><dd><code>Expose destination
form functions and state</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-7ed6a9ef676d7d6db5440d4157512f731bad58716c351ca39015125a8a9d2df5">+22/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>PerformanceSummary.vue</strong><dd><code>Export additional
helpers and imports for tests</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-fdf59594c111c1af03772c9deef4ba07cf2c2d00c9609737a0ea3e3c76fb1c1b">+3/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>StreamFieldInputs.vue</strong><dd><code>Expose field input
handlers and state</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-c8173413939f320f197b0f8790e619da18666f79009345f72b3325e89bbb7566">+17/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>FilterGroup.vue</strong><dd><code>Expose group manipulation
helpers for testing</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-8d5a73bea3aa0b5c86d48cda4a61ee3e30f27797ac2a5add1ee8bd66c75bef23">+17/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>ImportDestination.vue</strong><dd><code>Expose validation
and helper functions</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-814b8ef1dbb4eebca9dfab72452d9a90d5f3fa5886dea8e82ac0bde44f66b445">+7/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>PipelinesDestinationList.vue</strong><dd><code>Expose list
helper functions and selectedPerPage</code>&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-088c66f5a34e73a5350a794a772e5d905262277337c937dd36f4295072203ebf">+6/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>SearchBar.vue</strong><dd><code>Expose additional editor and
action handlers</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-81893de4edf186b0556f610acb280c87baa2ffe67d3b48a60a866094c7635baf">+11/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>ImportTemplate.vue</strong><dd><code>Expose template
validation and helpers</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-d22684c5142a49b8925a9dba1ef67631128caa95de66e71ba2a5b8120a0b91c6">+6/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>IndexList.vue</strong><dd><code>Expose websocket/search
helper functions</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-08f058f883b659e713e606991a7ea37ae1ff016b7cccef970489ab5840dc3d09">+11/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
<td><strong>ImportAlert.vue</strong><dd><code>Expose alert validation
helpers</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-0f40dbf2757672e39ad16b86dddc59b568ca2e6ca36850420cd7be617da12d38">+4/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>AlertsDestinationList.vue</strong><dd><code>Expose
destination list helpers for tests</code>&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-e9d05ba6c071c0e2f5d9ef7acdef757f79910abd6897b29e27b069a10d4ba8de">+7/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>SysLog.vue</strong><dd><code>Expose syslog route helpers and
state</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-2f538c29fd1d51aa470edad915666faca1deade7413645f033f2a67354b3726c">+9/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>TelegrafConfig.vue</strong><dd><code>Expose ingestionURL in
setup for tests</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-f934fcfd5f71fff85e099f5ddf133a1cdd2a02aa3ade339dee73d54474480acf">+2/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>schema.vue</strong><dd><code>Expose schema helpers and
formatters</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-9196be2ccae4054a00b0b1aa9d1e87b366c10920d6eaf9ef8c6e6293d50bcf46">+7/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>AssociatedRegexPatterns.vue</strong><dd><code>Expose pattern
state/check helpers</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-c6fce5e1c83798991b6ff19effb23c67af59f38fac0b9e56dcab7a09d139f550">+6/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>AddFolder.vue</strong><dd><code>Return defaultValue for
tests</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-41d2f8fac44084c004d8386ea4cc32e9c5d3e33266c4009cc855e57fb00a41af">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>ImportRegexPattern.vue</strong><dd><code>Expose regex
pattern validation and helpers</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-e8e1bcb5a02311504d7d571090eab27a270aaa71cae185ad2703023e2e70a31e">+4/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>SearchSchedulersList.vue</strong><dd><code>Expose date
helpers and router</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-0c0a4097c53f07712d35562b1336602bf24faddedab77a9f5717f5582dcac2f1">+5/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>MoveAcrossFolders.vue</strong><dd><code>Expose getModuleName
from setup</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-3826ffbf7e4cbae5b621527c9df856e1bd3b349b78d4a6c514b6967636d04237">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>SearchResult.vue</strong><dd><code>Expose row/partition
helpers and column sizes</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-5e65533aa4754bb6d0074fda18ffc1ecacded3b9ca6bc28a161c3f6b12f20195">+5/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>AddUpdateTicket.vue</strong><dd><code>Expose
validation/upload methods via expose</code>&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-bd6f97ffe635a2127610e0bbc94b1c9fe40a6ca1dff98e72efc4a449116c59db">+2/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>usage.vue</strong><dd><code>Expose getUsage and
router</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-87c1e1d75e488a25773db68ada1e49913ad50be7971fbb588939941a3ea6302b">+2/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>Databricks.vue</strong><dd><code>Expose database config
state</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-2ff8f0c23b75de8b87f86d00af9de4f6c8ceb335ade6cbef227cb37f26d42ae6">+4/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>SqlServer.vue</strong><dd><code>Expose database config
state</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-23653eb1e4b5fa9fc519ac44cdf06b01e645d61c86340e59fcf58eb11702008f">+5/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>JsonPreview.vue</strong><dd><code>Expose getTracesStreams
function</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-3985073134d35ff074742944b114d0905524038b42e6d2ac887fef2c8436fb16">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>VisualizeLogsQuery.vue</strong><dd><code>Expose hovered
series and metadata</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-979b01d943d58c5d70faeeac5948b7f02f0b2392a12b84ef07ba7f7393ab0261">+2/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>FrontendRumConfig.vue</strong><dd><code>Expose defaultConfig
for tests</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-a90414833508a6d5f76b245c65f2a2ff067ada5e1c5c09b1b53598a4881e2676">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>OpenTelemetry.vue</strong><dd><code>Expose ingestionURL in
setup</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-45be3e74a543860331e1cbb11c299a81d5f2e49030bcc3eab03dd6db09f93c5b">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>Index.vue</strong><dd><code>Expose ingestRoutes for
tests</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-a8ce6281b41747a4c58b111d6c31a57f8597b2c33f79d9b236af548d5683b200">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>PipelineFlow.vue</strong><dd><code>Expose store and
setViewport</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-9c7475a54f0c895dd49eb0c5b53fe0a76ceff0520f667a9cb065b364557ced50">+2/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>MessageQueues.vue</strong><dd><code>Expose
messageQueueTabs</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-ab520bb9b203fc532d2544ba60b140600cbc0efb9773e000c1867076275780bc">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>Database.vue</strong><dd><code>Expose
databaseTabs</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-9f043be1b81e96e163d333d8fac934fbd8cf9009076eeaaf2bd8ee360a3e913c">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>Languages.vue</strong><dd><code>Expose
languagesTabs</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-5ac446e8fed967883b402dfe4ff686717138a76f0333c2416a6b6f955a0086fc">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>Networking.vue</strong><dd><code>Expose
networkingTabs</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-ca61b8331afde2b46c0a193e0cc31e2b6b8a915aad1841fbbda229450af02726">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>Recommended.vue</strong><dd><code>Expose
recommendedTabs</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-d52f7f52bf8f6d3d639e5d0a550bed82223cd4fbd3eee3c257b7f80e0b8ee6d2">+1/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
<td><strong>SearchBar.spec.ts</strong><dd><code>Rewrite and expand
SearchBar unit tests</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-63ac75d3fe278dad233e7dd7c51b3b33076d54a776b89ae05190d8522130c78b">+1058/-1118</a></td>

</tr>

<tr>
<td><strong>GCPConfig.spec.ts</strong><dd><code>Add unit tests for GCP
config logic</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-76e896e96fdae254b7b569e0d3afdea55b05c7777d6eda2da0374fe782d74457">+533/-0</a>&nbsp;
</td>

</tr>

</table></details></td></tr><tr><td><strong>Enhancement</strong></td><td><details><summary>1
files</summary><table>
<tr>
<td><strong>usePromqlSuggestions.ts</strong><dd><code>Export additional
suggestion helpers/state</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-250bf4b2d8cb3845005f72188d73ab954359f841e15c4f217708beac1493e83a">+4/-0</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>
</table></details></td></tr><tr><td><strong>Additional
files</strong></td><td><details><summary>101 files</summary><table>
<tr>
  <td><strong>App.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-e5d10660c09127e3b4234cd8fe18303e53db38e43a1c5a6edb13032afbebe28f">+291/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>AutoRefreshInterval.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-4fae96431d981a4338e96dd393820e3497ed56382adc77fab6024f6efd15bd4c">+320/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>ConfirmDialog.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-16ffba01e15b66513827b99a68c002b567e65bd1124f9bcf7c4db8db5795df8a">+61/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>CopyContent.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-a09160ad7355806c5f4f5b0194a6026ed7c24a77f3de0bce58ffa67c4e97de4d">+348/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>CustomDateTimePicker.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-f3c4dc21e87d485ae2d167b1f4e993ffc00b941b207a664ea504468842f4d428">+338/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>DateTime.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-ee6ae1a77af32afb0b0410cbe812d546c8639815748908e716d48a189695d8ec">+543/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>MenuLink.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-bd04ff500fc31583a430993830eed36cdf6254c2ce1a52b8a58a07b89bb9f825">+56/-4</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>PendingSubscriptionWarning.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-a38d050077b70a4e16ed3fa89df6978e0d15284b824fc1840ed3d0f10403f9f8">+301/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>ResumePipelineDialog.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-ca982d78b8c120585dcf75837fbc09426c3fa2dd7e0f3a8d6cdbf9954aee6027">+136/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>RouteTabs.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-f4940a707bb9a1790b34d87c2588bb957876214edbfaf0072b2519afe230d077">+400/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>SanitizedHtmlRenderer.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-b45de775a1fc42af052b7af7b5c0b40512fab530db228a548e5bbe0510e774de">+350/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>FileItem.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-189b4998b9446d2b44aa820117eb54f555e15fb5d12dbd5bf61b4722fbc85b4e">+395/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>ScriptEditor.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-7989b3c2125f44e258f2e1e12dbb6e0608c2cfd6165619815501c8a4548b641c">+408/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>ScriptToolbar.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-5057edcc2e7f7f2bd115d1ad3b00bb668607662edee60131ba04fd078e41eaef">+412/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>AddAlert.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-84362398fea8abd9acf30f4f40ba8d4cf27348677454017bd4e6f568d5176ac6">+5/-3</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>AlertsDestinationList.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-796a77635e67bca70cc19a671e1862438f78a9391ede0e936763e2204bd7a876">+709/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>FilterCondition.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-d09ca687da324598f7c1f17610406dda5c47faba21b1eba5dd606ce8f5a2671e">+463/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>FilterGroup.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-1628547d4b6650b1e87817989b84ffb25895c64ad789457b094860fcd7f13447">+1405/-0</a></td>

</tr>

<tr>
  <td><strong>ImportAlert.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-553f61b4cb949550d09d7016031a29361e4aaa22ad86f20781787bc4ccf43272">+951/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>ImportDestination.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-cf334a840c66788867f54f726f5d9431f8e1197637c641469a34e63facfcb180">+815/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>ImportTemplate.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-1a14d1b5cdc535c0fd982bcb6c02af07b647d5013922084df5d208c673eefaff">+875/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>PipelinesDestinationList.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-f749b2cdb5476b289a38418201bf27c69a7e9ab01237f6ffefc7b23392c3ff71">+529/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>RealTimeAlert.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-3b33541be3d07c04f1afd3b0a716e683b804b4f8adcba09b4fc5f3ddd0c14ef6">+693/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>ScheduledAlert.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-c85c209fe2d6eb3e8a223ddc1124e713f21ce3bbddf657be931cf8726f2e2934">+1197/-0</a></td>

</tr>

<tr>
  <td><strong>VariablesInput.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-1c6c211f8e8e49e12619c73ac450cfdc6f92f5ffc533bf09716477fa37154786">+353/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>AddCipherKey.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-1ae71f00dfb6f9424d2443856ca3a419aaf2ee0c08900f7ef2ca44e41c1982e9">+507/-467</a></td>

</tr>

<tr>
  <td><strong>AppDialog.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-28cde24b3e035186bbdf389f3c7560ba087588fd52d377c5615d50a6b5ad3dc7">+443/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>AppTabs.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-1a762da82b05a89aaea5cfac75315972be2fcc622d8dcabd9bb6e10a091a2e9d">+132/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>JsonEditor.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-be62ee12fe0b191ed850f0d8c6be49abc52596a06bfd10ac037ecc8f758d2660">+107/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>LoadingProgress.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-6096c465ac03fdbe599251405ff150d38ffc2f42be501d93723a6cc9f8eeae52">+153/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>RelativeTime.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-1ab920651a73975c32a1e00c0c6c0596866bf65b6aeec005e0d17f5084fddfef">+75/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>AddFolder.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-c47fb42fd03cf2b19f7c1da98ec484699730d00d2a5ae348002df727c6f009b4">+545/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>FieldList.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-b32e6b73a1268169f32fcd0a092350e543c3d4ffb00eef685aed4ba8c36ac6a1">+907/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>MoveAcrossFolders.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-4bce3286733956ade6e6f93cc65f471314a07e610b7e3f57a95050f683fc688a">+1385/-0</a></td>

</tr>

<tr>
  <td><strong>AddFunction.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-5bf8cf7b136d01ade73a969358f28642eca484ee1f93008f2787405bc928c0df">+883/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>EnrichmentSchema.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-020714ac53ba9e0397b5f0d7fa40bbb54638a30858d2e85693e117e3616c03d1">+394/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>FullViewContainer.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-498a7631461da0b1acbb272f4e1be20f999a28cdbf66f3e2f86b2f59b82841fd">+503/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>FunctionList.spec.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-555eb5d72b94d73c66cc303b1e3cece61564b622f7b1010219a23761c21f4c55">+0/-618</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>TestFunction.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-c1b26d908f381d548650300e436d7b2e22410ef4e3d6508287c951add6633f3c">+598/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>ServiceAccountsList.spec.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-7b77b3425b30af8671b95b2c74702c89cf374669c2dc67a0b49ec182d30bedcd">+415/-99</a></td>

</tr>

<tr>
  <td><strong>AscSort.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-afc2d5fea4960d77d9f0487a89139f5409c9f55e34c3a58aedc8664cb9465c36">+200/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>DescSort.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-f6c074687e3f02ec34f0c398f64a100f5511baf1789e5dd280d48f999dfd8505">+231/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>FunctionIcon.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-5ce858f61f52bf2fdad1dc34d3ecdd852f38c66e329b6f71a4eb25f745530ada">+313/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>PipelineIcon.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-28fb2dcadc48a4bf7407fe99d2dddcd4993b430fe8398db23c786abd9cdad427">+340/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>Custom.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-75fb68bb0e3ab0416c7a6840bd615a0432026c0675b7b8db80cedd8a29f07d0f">+941/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>Database.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-890a9b5f5bde73f36522a300d5ada6f14fae2a94bdb3f061ac3e7d1d0cb9cd8e">+775/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>DevOps.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-8dbbccb5f29f0766ead95f3aea538f5f5b85ec3b2ff8fbedbaff50f0c5771ab4">+331/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>Languages.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-34642bc2e6238f98a78fe2185eadd4995749ae336204bfb6095620369268e7d1">+753/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>MessageQueues.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-eee646fcdd254e0be152dfb3f2c6749b1710b6ec6be272b8c5f865b83d2853df">+526/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>Networking.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-aff8de29d05af2b04cc0b83ab292896c79a6d68cfb3649c10ec517679b73e97e">+659/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>Others.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-56f4544b83413f5b8d87c5fec280204b75388a0686c388445b3eceaef523f10e">+493/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>Recommended.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-86de7fab5e678188cf1b96d463809fa645abd8d1a19d86cd3f2214b12fac3c43">+557/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>Security.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-952301dec9efb69bbdc3b82753e8a7c86d64a67e3cd544fcc50f118fcd1d017e">+623/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>Server.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-80a46b98c8aef2059b9d25de464c3450aa3310c02d1a4bbfcd32a706b5d0334c">+667/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>Databricks.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-0cc6f4230b08c6d1f888bae4c5d9f11169714506be5f3be77b371ced9d084936">+350/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>Postgres.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-046ae7ca570ff9960c83ec5fca8a95110a5158ceafda48549bdf47ccc5c71b71">+498/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>SqlServer.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-33abd49e96a5a6ecb0e07f76f3b55cb53a12674ddd450890ec185eb85e33fae3">+313/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>Curl.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-755d02153c11d74b259e12605ae3ad203b01507c4f778347616ed4c1ba542024">+374/-24</a></td>

</tr>

<tr>
  <td><strong>FileBeat.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-d4f433b57979c49407559afd1b9a35131cf823a29596882f46aca6aa8789a777">+389/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>FluentBit.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-9bb84df5402b65026cdf6fe4ead0937f825f129538f4e7e6291492a9b9ade289">+362/-27</a></td>

</tr>

<tr>
  <td><strong>Fluentd.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-b0d737e6ac8536493791c38acde3b0b339bae519b8ce58fb780f794bc31f62d1">+382/-23</a></td>

</tr>

<tr>
  <td><strong>LogstashDatasource.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-2cd019295a25886a037e6ede5cad795b52851a377f48beb46f3897bc6d64a20b">+522/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>SysLog.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-98526471b0f8a5a7547c205c9da6f8b4e62f20c6ee728b687225d4ee1c564758">+966/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>SyslogNg.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-c1afe13c4d7ccf6c9e360c4beff423e785f52c05b58340acf5d0e11fbc77bfc3">+787/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>Vector.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-35a48d805d8ded5b793d07c4dbb85cfafb759d073e597758cb999ed28eaf3f31">+571/-26</a></td>

</tr>

<tr>
  <td><strong>ingestionIndex.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-aa6c7d67f4885ef49f587f3dde7760ba3eabea6478e776aede5f86ab4ca76e75">+570/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>CloudWatchMetrics.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-d2e18e89f6400e04f77e4dff297030ffdf6306038d7cfe08315e0736cd0520f4">+615/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>PrometheusConfig.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-9026aa740243dc87d7be703fad5ad83e8ebdbb907b20b0f75a653ea3514dd6b4">+416/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>TelegrafConfig.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-9de7588766a4cc480d9b053d4c6dd34bad93c4e85c6580c2d8f04073f8f0fa25">+350/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>AWSConfig.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-a40ad271f4e88e42c4e746b5ce54ef0dceca122bedf3f9fa1f0571765001c680">+500/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>FrontendRumConfig.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-28bda2968dbbe401bacf2ce4a95e566d4672d59dafdf309d9a66dd567734af9a">+945/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>OpenTelemetry.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-489085e78e204c6e2b6dfdf21f1e48fef86d4bc4dd6f36869f9a2164027b3b7b">+554/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>Login.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-746b43968d685362866c3f97bf2b5e0846bac7463fe1ecb080c1c7d962cb855b">+994/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>AssociatedRegexPatterns.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-4ca41bf14fd6a3c79a3877324a7c7520a25d1d33f97fe947b2f6dd4bbf6ca5b4">+1384/-0</a></td>

</tr>

<tr>
  <td><strong>Schema.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-27aac0c27d14c76ae7d02277822392d29777f07fb588bc4a19d93cc0379a25e6">+593/-677</a></td>

</tr>

<tr>
  <td><strong>StreamFieldInputs.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-a421936485eb26fe8b6c1a89cd0b40de202936fd57b49957e8ac1521a4641f57">+469/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>ExternalDestination.spec.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-716d02dd388d827ba64d21320834f07a281242627dbce78a9d29fa84e2727a42">+0/-584</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>ExternalDestination.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-a404d8244c3beb0122fbd403d2b8b410a934aacd3e498c73499204db85bc790e">+1029/-0</a></td>

</tr>

<tr>
  <td><strong>Query.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-28606cc9e509c3f1c132551ed29c46ef168444b4425cf5e81e0eff65302a9d16">+950/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>Stream.spec.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-f0e36c3bdbe8da79becc97e236de086bec117c4272ef4a7691a3330835993e40">+232/-5</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>PipelineView.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-f78a1273b1fb7f5696f364f509b6bd13a1536a160b4fd98260cc8e61750e96f9">+600/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>PipelinesList.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-afcaf75b1dd20ccf66bd61334ba262512135a3f85593310890a774421d50265e">+712/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>pipelineCommonValidation.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-820d4f4f076840724bd6f0e7b5a9da1cbacea4d074249f07c957120b6601ac38">+311/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>pipelineCommonValidation.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-b2c4c50027aace8991d17030333e880b7d4808ab04d96e9c372d82d424235ef5">+1/-1</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>CreateReport.spec.js</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-8a0f39751d08a258c4997c5e68edaf167ea01477528beee2295dd9f992310cc6">+0/-1854</a></td>

</tr>

<tr>
  <td><strong>PerformanceOverview.vue</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-c37f87d6d7205b9688af8c24fa6d7847c77bf35c51d4d7d1e08e6f10f3af2942">[link]</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>PerformanceSummary.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-a2a97a13f8d5caa69d38d883576678dacecd8728386886f76d105e376879d60e">+1582/-0</a></td>

</tr>

<tr>
  <td><strong>ImportRegexPattern.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-1111ec8ccc0c9b62d4791101f69855ac22baa856dedd54827970f993147c3aed">+811/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>RegexPatternList.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-df942239cac609f116dcb4aa61405a60fc718219c77af46258c34e8e86e44080">+1005/-0</a></td>

</tr>

<tr>
  <td><strong>settingsIndex.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-fc96fd3ae93a42ba09577ee2c27416e9e729f2729146f88e146e4a9473626da2">+774/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>FilterCreatorPopup.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-4167cd3f9eec0c9df78517b7514c39dcc2c0234810010d93e311879971bd552e">+439/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>NoData.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-e7f5be4faf7164f86bdfea69049db3aae0509a8d33b037bfcf799347b3a0ab0d">+335/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>NoOrganizationSelected.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-1338e495c82b9d07995c13a6b245c919588012974c0f08096c7b93b5e143606c">+88/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td><strong>Pagination.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-8846923daf3fe7a897ab5956098564aeb6d1748db90f637fc39f4ac8a30e1234">+110/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>AddUpdateTicket.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-8f7eb6b61a8dfdab68d5e2f73e1d2bc9580e03290d287bcfb35802331165d118">+531/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>usePermissions.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-83e050b2b1753f98e357db0e2f8a6a353b24857640c3a522a73d0d2609a0bced">+513/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>useActions.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-1bd297e5011b31dca1cb4edb6ff63a705e582dfe392e34b2e781c8051be5ee5e">+158/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>useIngestion.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-495d1e7e830eecd3e430e987a7056298d67df84282b31869bb27973aec8e4f06">+606/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>useIsMetaOrg.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-635f3965352f56c275b1309753a9f1421ffb0e8bd985b1286a012217df33eab5">+123/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td><strong>useLogs.spec.ts</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-1e4dd9056495ae6a0c1cf2b8c9e803d7372c2c1426918d848bb903b424103875">+2/-2</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td><strong>Additional files not shown</strong></td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8121/files#diff-2f328e4cd8dbe3ad193e49d92bcf045f47a6b72b1e9487d366f6b8288589b4ca"></a></td>

</tr>
</table></details></td></tr></tr></tbody></table>

</details>

___
2025-08-23 12:26:28 +05:30
cc2eb93b00 test: Updated schema file and config file (#8093)
### **PR Type**
Tests, Enhancement


___

### **Description**
- Run schema tests in serial mode

- Stabilize selector for close dialog button

- Randomize schema field data type selection

- Simplify env loading via dotenv import


___

### Diagram Walkthrough


```mermaid
flowchart LR
  schemaSpec["schema.spec.js"]
  config["playwright.config.js"]

  schemaSpec -- "parallel -> serial; selector fix; random data type" --> Tests["More stable E2E tests"]
  config -- "dotenv import and config" --> Env["Unified env management"]

  Tests -- "reduced flakiness" --> Outcome["Reliable test runs"]
  Env -- "consistent variables" --> Outcome
```



<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>schema.spec.js</strong><dd><code>Stabilize schema tests
and add random data type</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

tests/ui-testing/playwright-tests/GeneralTests/schema.spec.js

<ul><li>Switch test mode to serial<br> <li> Target specific dialog for
close action<br> <li> Add randomized data type selection for new
field<br> <li> Minor waits and interactions unchanged</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8093/files#diff-72dd04280e3c77242b982bd7853ffa447428c0f9419c37a71d867ec7cd28d4b8">+10/-2</a>&nbsp;
&nbsp; </td>

</tr>
</table></td></tr><tr><td><strong>Enhancement</strong></td><td><table>
<tr>
  <td>
    <details>
<summary><strong>playwright.config.js</strong><dd><code>Simplify env
setup with direct dotenv usage</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></summary>
<hr>

tests/ui-testing/playwright.config.js

<ul><li>Import and initialize dotenv at top<br> <li> Remove custom env
loading helper<br> <li> Minor formatting and EOF newline adjustment</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8093/files#diff-91cb9615068914b2e4f5d66fcbed50d3e9771ea2d882f8e8048bbe54eab3c414">+6/-22</a>&nbsp;
&nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
Co-authored-by: Neha P <144308844+neha00290@users.noreply.github.com>
2025-08-22 22:21:22 +05:30
sktrpathi 9a11a680ae chore: add test cases (#8095)
### **User description**
- also clear over 400 clippy issues


___

### **PR Type**
Tests, Enhancement


___

### **Description**
Add extensive unit tests for enrichment storage
Expose helpers for testability in storage module
Modernize tests: clippy-friendly string formatting
Normalize constants in time-based tests
2025-08-22 21:05:46 +05:30
Bhargav 3960871ad2 fix: added test cases for iam groups (#8105)
### **PR Type**
Tests


___

### **Description**
- Add comprehensive IAM groups unit tests

- Cover create, list, edit flows

- Include roles, users, service accounts

- Verify notifications and error handling


___

### Diagram Walkthrough


```mermaid
flowchart LR
  AddGroupSpec["AddGroup.spec: create group tests"]
  AppGroupsSpec["AppGroups.spec: list/delete groups tests"]
  EditGroupSpec["EditGroup.spec: edit group tests"]
  GroupRolesSpec["GroupRoles.spec: manage roles tests"]
  GroupUsersSpec["GroupUsers.spec: manage users tests"]
  GroupSActionsSpec["GroupServiceAccounts.spec: manage service accounts tests"]

  AddGroupSpec -- "emit, validate, notify" --> AppGroupsSpec
  AppGroupsSpec -- "edit/delete navigation" --> EditGroupSpec
  EditGroupSpec -- "tabs and updates" --> GroupRolesSpec
  EditGroupSpec -- "tabs and updates" --> GroupUsersSpec
  EditGroupSpec -- "tabs and updates" --> GroupSActionsSpec
```



<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>AddGroup.spec.ts</strong><dd><code>Tests for AddGroup
dialog behaviors</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/components/iam/groups/AddGroup.spec.ts

<ul><li>Add unit tests for AddGroup dialog<br> <li> Validate input rules
and trimming<br> <li> Mock IAM createGroup and notifications<br> <li>
Test success and error scenarios</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8105/files#diff-2bf9c9935bbd22db8608e9b5e12c1f85ad8afcb9a4eacb5cee672e69e544a79e">+340/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>AppGroups.spec.ts</strong><dd><code>Tests for Groups
list and actions</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/components/iam/groups/AppGroups.spec.ts

<ul><li>Add tests for groups listing table<br> <li> Cover search, add
dialog, actions<br> <li> Mock permissions, router, and services<br> <li>
Test delete flow with notifications</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8105/files#diff-cfe60bc2c1440c6b2a41eb2db9901f922afa6adcd09ae263d4444556a1d1ac12">+486/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>EditGroup.spec.ts</strong><dd><code>Tests for EditGroup
flows and tabs</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/components/iam/groups/EditGroup.spec.ts

<ul><li>Add tests for editing group details<br> <li> Cover tabs, data
fetch, save payload<br> <li> Validate notifications and navigation<br>
<li> Mock child components and services</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8105/files#diff-7683afda02004afab5d91e031b8ae82d614ecae38c926f6b6af2d3cf9528b725">+561/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>GroupRoles.spec.ts</strong><dd><code>Tests for group
roles selection</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></summary>
<hr>

web/src/components/iam/groups/GroupRoles.spec.ts

<ul><li>Add tests for role selection table<br> <li> Cover filtering,
search, and selection sets<br> <li> Mock getRoles and permissions
state<br> <li> Verify rows/columns and edge cases</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8105/files#diff-0833bc337b21487c4ef1deffcac799a91dbaf35241374284deb328e6482c11d9">+533/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>GroupServiceAccounts.spec.ts</strong><dd><code>Tests
for service accounts management</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/components/iam/groups/GroupServiceAccounts.spec.ts

<ul><li>Add tests for service accounts selection<br> <li> Cover data
fetch, filter, search<br> <li> Validate add/remove selection logic<br>
<li> Note existing bug in removedUsers logic</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8105/files#diff-ef96f03e5a8237d18edf3b51dcf65f33d6f2938859a9a55d10eaf0f502954589">+572/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>GroupUsers.spec.ts</strong><dd><code>Tests for group
users management and org filters</code>&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/components/iam/groups/GroupUsers.spec.ts

<ul><li>Add extensive tests for users selection<br> <li> Cover org
filtering, meta org, search<br> <li> Validate selection add/remove
sets<br> <li> Theme and accessibility checks included</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8105/files#diff-7a9c6922e6c8a7d2c052f7f74ceba652af41bc123aa127a05276696278d792d8">+894/-0</a>&nbsp;
</td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___
2025-08-22 18:42:37 +05:30
Huaijin 20a5fce67c feat: improve tracing for flight (#8097)
- [x] add span for tantivy_search
- [x] improve tracing for flight

after this pr the tracing for arrow flight will like below
<img width="1770" height="506" alt="image"
src="https://github.com/user-attachments/assets/55e30700-122c-4dec-bff7-8eed0f823bce"
/>
2025-08-22 19:28:05 +08:00
Huaijin f73c29f333 chore: add unit test (#8099) 2025-08-22 18:33:34 +08:00
ktx-vaidehiandLoakesh Indiran 9a422cb34d feat: dashboard unique colors to the table column automatically. (#8051)
### **PR Type**
Enhancement


___

### **Description**
- Add unique value auto-color for tables

- Introduce typed override config schema

- Update popup UI for new config types

- Pass color mode through table pipeline


___

### Diagram Walkthrough


```mermaid
flowchart LR
  Schema["Dashboard v5 Config enum"]
  Popup["OverrideConfigPopup UI logic"]
  Convert["convertTableData column metadata"]
  Renderer["TableRenderer cell style"]
  Palette["colorPalette getColorForTable"]

  Schema -- "new type 'unique_value_color'" --> Popup
  Popup -- "persist {type, autoColor|value}" --> Convert
  Convert -- "set col.colorMode='auto'" --> Renderer
  Renderer -- "map unique values to colors" --> Palette
```



<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>mod.rs</strong><dd><code>Typed dashboard Config with
color variant</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></summary>
<hr>

src/config/src/meta/dashboards/v5/mod.rs

<ul><li>Replace <code>Config</code> struct with tagged enum.<br> <li>
Add variants: <code>Unit{value?}</code> and
<code>UniqueValueColor{auto_color}</code>.<br> <li> Adjust serde to use
<code>type</code> tag and camelCase.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8051/files#diff-da49585bbcb02bf0f737bb68739ebc248edd15c7ad9427c0e68f7728bb4a8c17">+13/-8</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>OverrideConfigPopup.vue</strong><dd><code>Popup
supports unit and auto color overrides</code>&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></summary>
<hr>

web/src/components/dashboards/OverrideConfigPopup.vue

<ul><li>Redesign popup to choose config type.<br> <li> Support unit
config and unique value color (auto).<br> <li> Normalize, transform, and
save typed configs.<br> <li> UI tweaks: width, layout, and
handlers.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8051/files#diff-f1512a15069c23bcc71ac88db5b0ab882031bf6ec9d53a84de2fcd8adb6dec2c">+155/-62</a></td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>OverrideConfig.vue</strong><dd><code>Adapt prop shape
for typed overrides</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/components/dashboards/addPanel/OverrideConfig.vue

<ul><li>Pass override configs via <code>{ overrideConfigs }</code>
shape.<br> <li> Simplify dialog prop wiring.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8051/files#diff-54a6038f5c684ade27b88e3c6a134874b51501904441fa7849a532d10aa7d533">+3/-5</a>&nbsp;
&nbsp; &nbsp; </td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>TableRenderer.vue</strong><dd><code>Table cells
auto-colored by unique values</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></summary>
<hr>

web/src/components/dashboards/panels/TableRenderer.vue

<ul><li>Add auto-color rendering path for columns.<br> <li> Use
<code>getColorForTable</code> palette and per-column cache.<br> <li>
Fallback to value-mapping color.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8051/files#diff-794706ea9da3a70012a0327c0464f9fd16802f78ece26055fe951716c2d73d59">+24/-1</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>colorPalette.ts</strong><dd><code>Add table color
palette export</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
</dd></summary>
<hr>

web/src/utils/dashboard/colorPalette.ts

<ul><li>Export <code>getColorForTable</code> palette for tables.<br>
<li> Provide light pastel color list.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8051/files#diff-30ac812743f2388c4061647fac5e9f413bfe561f1fc5d4f6f7be82fce73f2840">+27/-0</a>&nbsp;
&nbsp; </td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>convertTableData.ts</strong><dd><code>Pipe override
color/unit configs to table</code>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></summary>
<hr>

web/src/utils/dashboard/convertTableData.ts

<ul><li>Parse typed override configs to maps.<br> <li> Set
<code>colorMode: 'auto'</code> on columns when enabled.<br> <li> Use
unit config map for formatting.</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/8051/files#diff-a672094c46e697ee7b7a3949a901cc1f7f88ec06cddaf67370474b508d5b0960">+32/-8</a>&nbsp;
&nbsp; </td>

</tr>
</table></td></tr></tr></tbody></table>

</details>

___

---------

Co-authored-by: Loakesh Indiran <66478092+Loaki07@users.noreply.github.com>
2025-08-22 15:27:19 +05:30