Commit Graph
14 Commits
Author SHA1 Message Date
Bhargav 77276036e1 fix: logs table content overlap fix and remove fuzzy_match from placeholder and syntax guide (#12670) 2026-06-15 16:48:16 +00:00
+5 ae22a74e62 feat: ux improvement main (#11838)
#11720

Design at:

https://github.com/openobserve/designs/blob/main/dashboards/ux-improvement-dialog/design.md

---------

---------

Co-authored-by: ktx-vaidehi <134508096+ktx-vaidehi@users.noreply.github.com>
Co-authored-by: Abhay Padamani <141122205+ktx-abhay@users.noreply.github.com>
Co-authored-by: Sai Nikhil <nikhil@openobserve.ai>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-authored-by: ktx-akshay <akshay.patil@kiara.tech>
Co-authored-by: Bhargav <BJP232004@GMAIL.COM>
Co-authored-by: ktx-mihir <mihir.patel@kiara.tech>
Co-authored-by: ktx-riya <riya.kukadiya@kiara.tech>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: Omkar Kesarkhane <127078473+omkarK06@users.noreply.github.com>
Co-authored-by: omkark06 <omkar@zinclabs.io>
Co-authored-by: ktx-vaidehi <vaidehi.akhani@kiara.tech>
Co-authored-by: ktx-abhay <abhay.padamani@kiara.tech>
Co-authored-by: Shrinath Rao <shnath@openobserve.ai>
2026-05-28 11:00:49 +00:00
BhargavandClaude Opus 4.7 9d13397c38 fix: home usage component (#11679)
Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-08 11:34:25 +00:00
Bhargavandgithub-actions[bot] f59f43b1d4 fix: Issue ent 1609 patterns inspector (#11648)
<h2 style="color: rgb(191, 191, 191); font-family: -apple-system,
&quot;system-ui&quot;, &quot;Segoe UI&quot;, Roboto, sans-serif;
font-style: normal; font-variant-ligatures: normal; font-variant-caps:
normal; letter-spacing: normal; orphans: 2; text-align: start;
text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px;
-webkit-text-stroke-width: 0px; white-space: normal; background-color:
rgb(25, 26, 27); text-decoration-thickness: initial;
text-decoration-style: initial; text-decoration-color:
initial;">Title</h2><p style="white-space: pre-wrap; margin-top: 0.1em;
margin-bottom: 0.2em; color: rgb(191, 191, 191); font-family:
-apple-system, &quot;system-ui&quot;, &quot;Segoe UI&quot;, Roboto,
sans-serif; font-size: 13px; font-style: normal; font-variant-ligatures:
normal; font-variant-caps: normal; font-weight: 400; letter-spacing:
normal; orphans: 2; text-align: start; text-indent: 0px; text-transform:
none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px;
background-color: rgb(25, 26, 27); text-decoration-thickness: initial;
text-decoration-style: initial; text-decoration-color: initial;"><code
style="font-family: monospace; color: rgb(140, 140, 140);
background-color: rgb(38, 38, 38); padding: 2px 4px; border-radius: 3px;
word-break: break-word; font-size: 0.9em;">feat: wildcard value
distribution popover for pattern inspector</code></p><h2 style="color:
rgb(191, 191, 191); font-family: -apple-system, &quot;system-ui&quot;,
&quot;Segoe UI&quot;, Roboto, sans-serif; font-style: normal;
font-variant-ligatures: normal; font-variant-caps: normal;
letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px;
text-transform: none; widows: 2; word-spacing: 0px;
-webkit-text-stroke-width: 0px; white-space: normal; background-color:
rgb(25, 26, 27); text-decoration-thickness: initial;
text-decoration-style: initial; text-decoration-color:
initial;">Summary</h2><ul style="padding-inline-start: 2em; color:
rgb(191, 191, 191); font-family: -apple-system, &quot;system-ui&quot;,
&quot;Segoe UI&quot;, Roboto, sans-serif; font-size: 13px; font-style:
normal; font-variant-ligatures: normal; font-variant-caps: normal;
font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start;
text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px;
-webkit-text-stroke-width: 0px; white-space: normal; background-color:
rgb(25, 26, 27); text-decoration-thickness: initial;
text-decoration-style: initial; text-decoration-color:
initial;"><li>Replaces inline Quasar<span> </span><code
style="font-family: monospace; color: rgb(140, 140, 140);
background-color: rgb(38, 38, 38); padding: 2px 4px; border-radius: 3px;
word-break: break-word; font-size:
0.9em;">q-tooltip</code><span> </span>on wildcard chips with a
new<span> </span><code style="font-family: monospace; color: rgb(140,
140, 140); background-color: rgb(38, 38, 38); padding: 2px 4px;
border-radius: 3px; word-break: break-word; font-size:
0.9em;">WildcardValuePopover</code><span> </span>that shows a bar chart
distribution of sample values</li><li>Adds<span> </span><code
style="font-family: monospace; color: rgb(140, 140, 140);
background-color: rgb(38, 38, 38); padding: 2px 4px; border-radius: 3px;
word-break: break-word; font-size:
0.9em;">useWildcardHover</code><span> </span>composable to manage hover
state with delayed hide (200ms) shared across<span> </span><code
style="font-family: monospace; color: rgb(140, 140, 140);
background-color: rgb(38, 38, 38); padding: 2px 4px; border-radius: 3px;
word-break: break-word; font-size:
0.9em;">PatternCard</code>,<span> </span><code style="font-family:
monospace; color: rgb(140, 140, 140); background-color: rgb(38, 38, 38);
padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size:
0.9em;">PatternDetailsDialog</code>, and<span> </span><code
style="font-family: monospace; color: rgb(140, 140, 140);
background-color: rgb(38, 38, 38); padding: 2px 4px; border-radius: 3px;
word-break: break-word; font-size:
0.9em;">PatternList</code></li><li>Adds<span> </span><code
style="font-family: monospace; color: rgb(140, 140, 140);
background-color: rgb(38, 38, 38); padding: 2px 4px; border-radius: 3px;
word-break: break-word; font-size:
0.9em;">addWildcardValueToSearch</code><span> </span>action to filter by
individual wildcard values (include/exclude via<span> </span><code
style="font-family: monospace; color: rgb(140, 140, 140);
background-color: rgb(38, 38, 38); padding: 2px 4px; border-radius: 3px;
word-break: break-word; font-size:
0.9em;">match_all</code>)</li><li>Hardens<span> </span><code
style="font-family: monospace; color: rgb(140, 140, 140);
background-color: rgb(38, 38, 38); padding: 2px 4px; border-radius: 3px;
word-break: break-word; font-size:
0.9em;">tokenizeTemplate</code><span> </span>to handle multiple API
response shapes for wildcard value arrays (<code style="font-family:
monospace; color: rgb(140, 140, 140); background-color: rgb(38, 38, 38);
padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size:
0.9em;">sample_values</code>,<span> </span><code style="font-family:
monospace; color: rgb(140, 140, 140); background-color: rgb(38, 38, 38);
padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size:
0.9em;">sampleValues</code>,<span> </span><code style="font-family:
monospace; color: rgb(140, 140, 140); background-color: rgb(38, 38, 38);
padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size:
0.9em;">top_values</code>, etc.)</li><li>Adds unit test coverage
for<span> </span><code style="font-family: monospace; color: rgb(140,
140, 140); background-color: rgb(38, 38, 38); padding: 2px 4px;
border-radius: 3px; word-break: break-word; font-size:
0.9em;">WildcardValuePopover</code>,<span> </span><code
style="font-family: monospace; color: rgb(140, 140, 140);
background-color: rgb(38, 38, 38); padding: 2px 4px; border-radius: 3px;
word-break: break-word; font-size:
0.9em;">useWildcardHover</code>,<span> </span><code style="font-family:
monospace; color: rgb(140, 140, 140); background-color: rgb(38, 38, 38);
padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size:
0.9em;">usePatternActions</code>, and<span> </span><code
style="font-family: monospace; color: rgb(140, 140, 140);
background-color: rgb(38, 38, 38); padding: 2px 4px; border-radius: 3px;
word-break: break-word; font-size:
0.9em;">useTemplateTokenizer</code></li><li>Updates existing tests to
match new<span> </span><code style="font-family: monospace; color:
rgb(140, 140, 140); background-color: rgb(38, 38, 38); padding: 2px 4px;
border-radius: 3px; word-break: break-word; font-size:
0.9em;">&lt;*&gt;</code><span> </span>wildcard template format and
hover-based interaction model</li></ul><h2 style="color: rgb(191, 191,
191); font-family: -apple-system, &quot;system-ui&quot;, &quot;Segoe
UI&quot;, Roboto, sans-serif; font-style: normal;
font-variant-ligatures: normal; font-variant-caps: normal;
letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px;
text-transform: none; widows: 2; word-spacing: 0px;
-webkit-text-stroke-width: 0px; white-space: normal; background-color:
rgb(25, 26, 27); text-decoration-thickness: initial;
text-decoration-style: initial; text-decoration-color: initial;">Files
changed</h2>
File | Change
-- | --
WildcardValuePopover.vue | New — popover with bar chart distribution,
auto-flip positioning
useWildcardHover.ts | New — shared hover state composable
PatternCard.vue | Replaced q-tooltip with hover → popover pattern
PatternDetailsDialog.vue | Same + wired filter-value emit
PatternList.vue | Hosts WildcardValuePopover outside virtual scroll
usePatternActions.ts | New addWildcardValueToSearch action
useTemplateTokenizer.ts | Multi-format wildcard value extraction
SearchResult.vue | Wires filter-value event to new action
*.spec.ts (6 files) | New + updated tests

<h2 style="color: rgb(191, 191, 191); font-family: -apple-system,
&quot;system-ui&quot;, &quot;Segoe UI&quot;, Roboto, sans-serif;
font-style: normal; font-variant-ligatures: normal; font-variant-caps:
normal; letter-spacing: normal; orphans: 2; text-align: start;
text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px;
-webkit-text-stroke-width: 0px; white-space: normal; background-color:
rgb(25, 26, 27); text-decoration-thickness: initial;
text-decoration-style: initial; text-decoration-color: initial;">Test
plan</h2><ul class="contains-task-list" style="padding-inline-start:
2em; color: rgb(191, 191, 191); font-family: -apple-system,
&quot;system-ui&quot;, &quot;Segoe UI&quot;, Roboto, sans-serif;
font-size: 13px; font-style: normal; font-variant-ligatures: normal;
font-variant-caps: normal; font-weight: 400; letter-spacing: normal;
orphans: 2; text-align: start; text-indent: 0px; text-transform: none;
widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px;
white-space: normal; background-color: rgb(25, 26, 27);
text-decoration-thickness: initial; text-decoration-style: initial;
text-decoration-color: initial;"><li class="task-list-item"><input
type="checkbox" disabled="" style="appearance: none; border-color:
rgb(42, 43, 44); border-style: solid; border-width: 1px; border-image:
none 100% / 1 / 0 stretch; position: relative; pointer-events: none;
vertical-align: middle; border-radius: 2px; width: 1em; height: 1em;
margin: 2px 4px 2px 2px;"><span> </span>Hover over a wildcard chip in
the pattern list → popover shows value distribution bars</li><li
class="task-list-item"><input type="checkbox" disabled=""
style="appearance: none; border-color: rgb(42, 43, 44); border-style:
solid; border-width: 1px; border-image: none 100% / 1 / 0 stretch;
position: relative; pointer-events: none; vertical-align: middle;
border-radius: 2px; width: 1em; height: 1em; margin: 2px 4px 2px
2px;"><span> </span>Hover over a wildcard chip in the pattern details
dialog → same popover</li><li class="task-list-item"><input
type="checkbox" disabled="" style="appearance: none; border-color:
rgb(42, 43, 44); border-style: solid; border-width: 1px; border-image:
none 100% / 1 / 0 stretch; position: relative; pointer-events: none;
vertical-align: middle; border-radius: 2px; width: 1em; height: 1em;
margin: 2px 4px 2px 2px;"><span> </span>Click "Include" / "Exclude" in
the popover (when wired) → adds<span> </span><code style="font-family:
monospace; color: rgb(140, 140, 140); background-color: rgb(38, 38, 38);
padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size:
0.9em;">match_all</code><span> </span>filter and switches to logs
view</li><li class="task-list-item"><input type="checkbox" disabled=""
style="appearance: none; border-color: rgb(42, 43, 44); border-style:
solid; border-width: 1px; border-image: none 100% / 1 / 0 stretch;
position: relative; pointer-events: none; vertical-align: middle;
border-radius: 2px; width: 1em; height: 1em; margin: 2px 4px 2px
2px;"><span> </span>Verify popover repositions upward when near bottom
of viewport</li><li class="task-list-item"><input type="checkbox"
disabled="" style="appearance: none; border-color: rgb(42, 43, 44);
border-style: solid; border-width: 1px; border-image: none 100% / 1 / 0
stretch; position: relative; pointer-events: none; vertical-align:
middle; border-radius: 2px; width: 1em; height: 1em; margin: 2px 4px 2px
2px;"><span> </span>Verify popover closes when mouse leaves chip and
doesn't enter popover</li><li class="task-list-item"><input
type="checkbox" disabled="" style="appearance: none; border-color:
rgb(42, 43, 44); border-style: solid; border-width: 1px; border-image:
none 100% / 1 / 0 stretch; position: relative; pointer-events: none;
vertical-align: middle; border-radius: 2px; width: 1em; height: 1em;
margin: 2px 4px 2px 2px;"><span> </span><code style="font-family:
monospace; color: rgb(140, 140, 140); background-color: rgb(38, 38, 38);
padding: 2px 4px; border-radius: 3px; word-break: break-word; font-size:
0.9em;">npm run test:unit</code><span> </span>passes</li></ul>

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-05-08 06:23:04 +00:00
Omkar Kesarkhane 508ea1e220 fix: replace vue-json-pretty with CodeQueryEditor for LLM JSON rendering (#11597)
## What changed

Replaced `VueJsonPretty` (`vue-json-pretty`) with `CodeQueryEditor.vue`
(Monaco-based) for JSON rendering in `LLMContentRenderer.vue`. Inlined
the `MessageItem` sub-component directly into the template with
`CodeQueryEditor` for JSON message content. Added `showLineNumbers` and
`stickyScroll` props to `CodeQueryEditor`. Removed the unused
`vue-json-pretty` dependency from `package.json`. Passed unique editor
IDs from `TraceDetailsSidebar` via a new `instanceId` prop to prevent
Monaco editor ID collisions.

## Why

`vue-json-pretty` formats the entire JSON tree on initial render,
causing lag on long JSON payloads. Monaco (via `CodeQueryEditor`)
renders only visible viewport lines, making performance O(visible)
instead of O(total).

## Approach

- Replaced all 7 `VueJsonPretty` instances in `LLMContentRenderer.vue`
with `<CodeQueryEditor>` in read-only mode (`:read-only="true"`,
`:show-line-numbers="false"`, `:sticky-scroll="false"`)
- Inlined the `MessageItem` sub-component as a `v-for` block with
`CodeQueryEditor` for JSON message content and the existing `v-html`
markdown renderer for non-JSON content
- Converted the component to `<script setup lang="ts">` with
`defineAsyncComponent` for `CodeQueryEditor`
- Added `showLineNumbers` and `stickyScroll` props (both default `true`)
to `CodeQueryEditor.vue` to support the JSON viewer use case
- Added a `watch` on `showLineNumbers` to dynamically toggle line
numbers in Monaco
- Passed `instanceId` from `TraceDetailsSidebar` down to
`LLMContentRenderer` to generate unique editor IDs like
`trace-id-msg-json-editor-0`

## Considered & rejected

- **Render function approach with synchronous import of
CodeQueryEditor** — rejected because it forced manual editor height
computation and module-level counters for editor IDs. Inlining
`MessageItem` as a template component was cleaner and consistent with
the other 5 template `CodeQueryEditor` locations.
- **Retaining `MessageItem` as a separate component with render
function** — rejected because the render function approach was
over-engineering for what is now a simple `v-for` with conditional
`CodeQueryEditor` / markdown branching.

## Risk

Medium. Monaco editor initialization has non-trivial overhead; rendering
multiple editors on one page (e.g., many messages in a conversation)
could impact initial render time. Reviewers should check that the
`instanceId` prop is correctly wired from `TraceDetailsSidebar` to avoid
duplicate Monaco editor IDs, and that the `tw:h-full` class application
on content-wrapper divs doesn't break non-JSON (plain text / markdown)
layouts.
2026-05-05 17:19:27 +00:00
Bhargav 4f881c513f fix: home page UI fix (#11585) 2026-05-04 13:08:49 +00:00
Sai Nikhil 729ff5181d fix: o2 assistant changes (#11544) 2026-04-30 09:47:54 +00:00
Sai Nikhilandgithub-actions[bot] 1639a35c31 fix: minor isues (#11502)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-04-28 08:52:07 +00:00
Sai Nikhil 3ae377a3cf fix: issues over autosuggestion value suggestions on query editor (#11403)
This pr fixes the issues on #11400
2026-04-27 11:29:38 +00:00
ByteBakerandHengfei Yang b948361769 chore: update copyright year to 2026 (#11166)
Co-authored-by: Hengfei Yang <hengfei.yang@gmail.com>
2026-04-07 09:57:53 +08:00
2243ef5173 feat: dashboard config panel redesign (#10917)
Design at:
https://github.com/openobserve/designs/blob/main/dashboards/config-panel-redesign/design.md

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Abhay Padamani <141122205+ktx-abhay@users.noreply.github.com>
2026-03-23 20:33:18 +05:30
Bhargav 5bd7d17421 fix: cmd+enter issue fix (#10983) 2026-03-23 10:05:23 +01:00
Bhargav 72b90a93e3 fix: Feat nlp mode (#10638) 2026-02-27 18:26:36 +08:00
Bhargav 4c551f839b fix: added unit test file ignore list and added test case files (#9807)
### **PR Type**
Tests


___

### **Description**
- Add unit tests for useSearchHistogramManager composable

- Add unit tests for useSearchPagination composable

- Add unit tests for useSearchResponseHandler composable

- Update vitest.config.ts ignore patterns


___



<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>useSearchHistogramManager.spec.ts</strong><dd><code>Add
tests for histogram manager composable</code>&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></summary>
<hr>

web/src/composables/useLogs/useSearchHistogramManager.spec.ts

<ul><li>New test suite for useSearchHistogramManager composable<br> <li>
Tests isHistogramDataMissing and shouldShowHistogram<br> <li> Tests
histogram result handling and socket requests<br> <li> Mocks
dependencies like searchState and useHistogram</ul>


</details>


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

</tr>

<tr>
  <td>
    <details>
<summary><strong>useSearchPagination.spec.ts</strong><dd><code>Add tests
for search pagination composable</code>&nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;
&nbsp; </dd></summary>
<hr>

web/src/composables/useLogs/useSearchPagination.spec.ts

<ul><li>New test suite for useSearchPagination composable<br> <li> Tests
pagination helpers: refresh, calculate, reset<br> <li> Tests page count
logic and chunked append<br> <li> Covers updateResult and
handlePageCountResponse</ul>


</details>


  </td>
<td><a
href="https://github.com/openobserve/openobserve/pull/9807/files#diff-058ee3497dc3701ca618b64984900058c85591ccf2d1e519566bd3e36989fe7e">+644/-0</a>&nbsp;
</td>

</tr>

<tr>
  <td>
    <details>
<summary><strong>useSearchResponseHandler.spec.ts</strong><dd><code>Add
tests for search response handler composable</code>&nbsp; &nbsp; &nbsp;
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </dd></summary>
<hr>

web/src/composables/useLogs/useSearchResponseHandler.spec.ts

<ul><li>New test suite for useSearchResponseHandler composable<br> <li>
Tests error message construction and error handling<br> <li> Tests
search and histogram response flows<br> <li> Mocks notifications,
pagination, histogram, and utils</ul>


</details>


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

</tr>
</table></td></tr><tr><td><strong>Configuration
changes</strong></td><td><table>
<tr>
  <td>
    <details>
<summary><strong>vitest.config.ts</strong><dd><code>Update vitest config
ignore patterns</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/vitest.config.ts

<ul><li>Extend test ignore patterns in vitest config<br> <li> Ignore
locale JSON, chart templates, type definitions<br> <li> Ignore re-export
index and mixin files<br> <li> Ignore AWS exports and constants
modules</ul>


</details>


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

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

</details>

___
2026-01-02 18:32:23 +05:30