Commit Graph
2690 Commits
Author SHA1 Message Date
Abhay Padamani 754f43bea4 feat: dashboard locale format support as unit (#12805)
## #12644 

Dashboard panels let users pick a **unit** to format values (bytes,
seconds,
currencies, percent, etc.). This adds one new unit — **"Locale Format"**
— that
renders plain numbers with locale-aware thousand/decimal separators
using
`Intl.NumberFormat`, automatically driven by the user's selected UI
language.

Example for `1234567.89`:

| App language | Rendered |
|---|---|
| English (`en-gb`) | `1,234,567.89` |
| German (`de`) | `1.234.567,89` |
| French (`fr`) | `1 234 567,89` |

<img width="317" height="391" alt="image"
src="https://github.com/user-attachments/assets/53ca9444-0636-49d8-a92f-3a44fc79433e"
/>

## Metric chart type copy button support
<img width="599" height="267" alt="image"
src="https://github.com/user-attachments/assets/03c9c36e-ad5a-4096-bf85-8a9851fcd3c5"
/>


Design At: designs/dashboards/locale-format-unit
2026-06-22 10:29:56 +00:00
Ashish Kolheandgithub-actions[bot] 0e0f9d2762 chore: menu bar font size (#12795)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-06-22 09:46:19 +00:00
Sai Nikhil 8f66d5feeb fix: refresh usage report banner when on usage tab (#12801) 2026-06-22 07:24:47 +00:00
Aswani Karteek Yadavilli 58b17814c8 fix(pipelines): prevent preview popup from overflowing viewport (#12729)
This PR fixes a UI layout bug where the pipeline graph preview popup
would overflow past the right edge of the viewport when hovering over
the View action button. By setting the side prop of OTooltip to left,
the preview card renders to the left of the button, keeping it fully
visible.
2026-06-22 05:41:30 +00:00
Hengfei Yang 21d3141029 fix: add some logs for wal check (#12778) 2026-06-19 12:33:56 +00:00
ktx-mihirandgithub-actions[bot] 8b3bd75783 fix: ux revamp form validation migration v1 (#12747)
- Form with zod validation migration for dashboards , getstarted ,
createdestination(pipeline) , addregexpattern

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-06-19 11:30:27 +00:00
Abhay Padamani f5c3f3321b fix: promql builder issues (#12771)
- label filters list not coming
- promql panel on edit, stream shows logs streams even stream type is
metrics
2026-06-19 11:13:57 +00:00
ktx-kirtanandktx-vaidehi 50ff6fcbe6 fix: left nav menu (#12776)
Co-authored-by: ktx-vaidehi <vaidehi.akhani@kiara.tech>
2026-06-19 10:51:26 +00:00
ktx-vaidehi af2162d300 fix: table chart text color (#12779) 2026-06-19 10:31:52 +00:00
ktx-vaidehi 9b0e0be08b fix: empty state when loading (#12775) 2026-06-19 08:58:43 +00:00
Bhargav 29475e9b8e fix: Logs page UI fixes (#12757) 2026-06-19 05:07:20 +00:00
Bhargav b517eb39e1 fix: dashboard bar chart comparison not showing data fix (#12765) 2026-06-19 04:25:52 +00:00
Sai Nikhil 78aa35cd00 fix: ai observability issues (#12762)
1. The name is missing on score config list table

datetime error when user is clicking on arrow in quality page / any one
of the score config overview

replace hardcoded badges to obadge in all list page

when user goes to llm sessions it is taking user to traces submenu
2026-06-18 18:15:04 +00:00
ktx-vaidehi d67ca68d1b fix: dashboard issues (#12754)
- #12750
2026-06-18 13:01:06 +00:00
Sai Nikhil d32dcfc75a fix: additional datasources of database (#12751) 2026-06-18 11:19:58 +00:00
Omkar Kesarkhane ea6c34ef90 fix: added streaming progress bar in logs explorer (#12741)
## What changed

Adds a streaming progress bar (the same `LoadingProgress.vue` used by
dashboard panels) to the logs results table and histogram chart. The
skeleton loader in `TenstackTable.vue` now hides once any rows exist,
keeping data visible while streaming updates replace values in-place.

## Why

During `streaming_aggs`, hits arrive and replace chunk-by-chunk while
`loading` stays `true` until the stream `end` signal. The full skeleton
covered the table on every refresh, so users couldn't watch the
incremental updates. The progress bar signals an in-progress refresh
without hiding existing data.
2026-06-18 05:58:54 +00:00
Bhargav c44c25fa50 fix: function error reset fix (#12739) 2026-06-18 04:43:38 +00:00
ktx-vaidehi f1913e6d97 test: form e2e (#12632) 2026-06-17 11:52:13 +00:00
Neha PandClaude Opus 4.7 5e426a09c2 fix(tests): use generic selectors in AI regression test instead of rum-content-text (#12730)
## Summary

- The AI integrations regression test (`datasources-regression.spec.js`)
was using `.first()` to select the first integration in the sidebar, but
manifest-backed rich-content cards placed at the top of each category
render `AIRichSetupCard` or `AIIntegrationCard` — neither contains the
`[data-test="rum-content-text"]` element that the test expects.
- Fix: navigate directly to the "agno" child route and click the
agno-specific tab (`[data-test="ai-integrations-item-agno"]`). Agno is a
known stub integration without rich content that always uses the
`CopyContent` fallback.

## Test plan

- [ ] CI Playwright run: `Data Sources Regression Bug Fixes` suite
passes on chromium

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-17 10:32:06 +00:00
Omkar Kesarkhane 72c028b244 fix: Field list field-expansion fixes (#12731)
## What changed

- **FieldValuesPanel.vue** — Added `tw:relative` to the loading wrapper
so the `OInnerLoading` overlay (which is `absolute inset-0`) is
contained within the expanded section instead of spilling over the
entire field row.
- **IndexList.vue** — Reworked `cancelTraceId` to use
`cancelStreamQueryBasedOnRequestId` (HTTP stream abort) instead of the
now-removed `cancelSearchQueryBasedOnRequestId`. Updated
`cancelFilterCreator` to call `cancelTraceId`, clear `isLoading`, and
empty `traceIdMapper` entries.
- **FieldValuesPanel.spec.ts** — Regression test asserting the loading
wrapper carries `tw:relative`.
- **IndexList.spec.ts** — Un-skipped two previously skipped cancel tests
and updated them to assert on `mockCancelStreamQueryBasedOnRequestId`.
Added new regression tests for the `cancelFilterCreator` →
`cancelTraceId` flow on collapse.

## Why

The loading overlay (`OInnerLoading`) uses `absolute inset-0`
positioning. Without a positioned ancestor, it escaped to the nearest
parent (`.o-field-list__row`), covering the field row and the collapse
toggle. This made it impossible for users to collapse a slow-loading
field to cancel the request. The cancel logic itself was also broken —
it referenced a WebSocket-based cancel function that no longer matched
the actual HTTP-stream transport used for field values.
2026-06-17 10:04:10 +00:00
Bhargavandhengfei yang aed1c82562 fix: auto non-sql mode fix (#12725)
Co-authored-by: hengfei yang <hengfei.yang@gmail.com>
2026-06-17 08:50:49 +00:00
Subhra264 259a837314 fix: replace multiple user custom roles api calls with one single api call (#12660) 2026-06-17 06:02:01 +00:00
Bhargav d0c276bdbc fix: edit user not visible and usage stream selection fix (#12718) 2026-06-17 05:08:31 +00:00
Omkar Kesarkhaneandgithub-actions[bot] b444ad3063 fix: added no state components for Service Graph and Services Catalog (#12662)
## What changed

- Created `useWidenRange` composable with extracted `periodToLabel` /
`nextWiderPeriod` pure functions to eliminate duplicate widen-range
logic across `ServiceGraphNoDataState`, `ServicesCatalogNoDataState`,
`TracesNoEventsState`, and `LogsNoEventsState`.
- Added `getEffectiveTimeRange` to `utils/date.ts` to deduplicate inline
datetime-parsing if/else blocks in `ServiceGraph.vue` and
`ServicesCatalog.vue`.
- Created two new animated SVG illustrations (`EmptyServiceGraph.vue` —
horizontal tree topology with one root node calling two children;
`EmptyServicesCatalog.vue` — table card with three service rows and
pulsing status dots), registered them in the OEmptyState preset system,
and added i18n keys across all 12 languages.
- Added dedicated empty-state components `ServiceGraphNoDataState.vue`
and `ServicesCatalogNoDataState.vue` with an "Expand time range" action
card (matching the `TracesNoEventsState.vue` pattern), wired via emit
chain through `ServiceGraph.vue` / `ServicesCatalog.vue` up to
`Index.vue`'s `onWidenTracesRange`.

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-06-17 04:50:54 +00:00
Omkar Kesarkhane cec4fa5fe7 fix: Telemetry correlation header UI fixes (#12709)
## What changed

- Passes `matchedSetId` and `chipDimensions` as new computed props from
`IncidentDetailDrawer.vue` to the embedded
`TelemetryCorrelationDashboard`, enabling the "View by" subject tabs in
the incident view
- Adds an `OBadge` showing the selected subject as `label = value` after
the subject toggle tabs in `CorrelationEventHeader.vue`
- Fixes the responsive overflow logic so the first context chip can
overflow when space runs out, and the overflow indicator shows "N
Fields" when all chips are hidden instead of a bare "+N"
- Renders hidden overflow chips as stacked `OBadge` components in
`OTooltip`'s `#content` slot instead of a `\n`-joined string

## Why

Incidents opened without a source trace or log event had no
`matchedSetId` / `chipDimensions` passed to the correlation dashboard,
so the "View by" subject toggle (Pod, Node, etc.) never rendered. The
badge was also missing to visually indicate which subject is active.
2026-06-17 04:12:59 +00:00
Omkar Kesarkhane 7207ea1aba fix: traces error filter not getting reset on resetting query (#12702)
#12703 

## What changed

Removed the `showErrorOnly` key from `searchObj.meta` state and replaced
it with a `computed` property that derives from
`activeIncludeFilterValues` — specifically checking whether
`span_status` includes `"ERROR"`. The `SearchResult.vue` component now
receives `showErrorOnly` as a prop from `Index.vue` instead of reading
it from the shared composable state. `TracesMetricsDashboard.vue` had
its own writable `showErrorOnly` computed removed since it no longer
needs to sync a top-level state key.

## Why

The user identified that `showErrorOnly` was redundant state — the
information is already encoded in
`activeIncludeFilterValues["span_status"]`. Keeping both in sync was
unnecessary maintenance burden. Deriving it from the existing filter
state is the single source of truth and eliminates the risk of the flag
and the actual query filters diverging.
2026-06-16 12:21:43 +00:00
Bhargav a818c47c5d fix: minor UI issue fix (#12699) 2026-06-16 12:20:23 +00:00
Bhargav a3655b2bd5 fix: retain filter operator while creating associated node in edit pi… (#12697)
…peline
2026-06-16 11:29:45 +00:00
Bhargav 4d02849d00 fix: on home page, overview table investigate UI was broken (#12696) 2026-06-16 11:08:44 +00:00
Bhargav 35f3334d8c fix: correlation settings pagination fix (#12694) 2026-06-16 10:30:44 +00:00
Bhargavandsai nikhil kethe c097cea561 fix: Data sources tab for AI integration (#12478)
Co-authored-by: sai nikhil kethe <nikhil@openobserve.ai>
2026-06-16 10:06:46 +00:00
Windforce17andHengfei Yang 2fad21a807 perf(traces): order spans by timestamp column instead of start_time (#12692)
## What

In the traces **spans-mode** list view, the query was built as:

```sql
SELECT * FROM "<stream>" [WHERE ...] ORDER BY start_time <dir>
```

`start_time` is a regular column, so the engine has to perform a full
re-sort of the result set. This change makes the query order by the
configured timestamp column (`_timestamp`) whenever the active sort
column is the default `start_time`:

```sql
SELECT * FROM "<stream>" [WHERE ...] ORDER BY _timestamp <dir>
```

## Why

- Span data is physically stored sorted by the timestamp column, and the
  backend has a dedicated optimizer for timestamp-sorted segments.
- A span's `_timestamp` is monotonically equivalent to its `start_time`,
  so the **visible row order is unchanged**.
- This avoids the costly full re-sort that `ORDER BY start_time` forces,
  improving query latency for the trace/spans view.

## Scope / Notes

- Change is contained to `web/src/plugins/traces/Index.vue`
  (spans-mode query builder in `getQueryData`).
- Only the default `start_time` sort is remapped. Any explicit
  non-`start_time` sort column the user picks is passed through
  unchanged.
- The `sortBy` UI state still reports `start_time`, so the sort
  indicator and reset logic are unaffected.
- Not in scope: the single-trace span fetch in `TraceDetails.vue` still
  uses `ORDER BY start_time` (can be addressed separately).

## Testing

- Verified the generated spans SQL now uses the timestamp column for the
  default sort and produces the same visible ordering.

Co-authored-by: Hengfei Yang <hengfei.yang@gmail.com>
2026-06-16 08:21:41 +00:00
082572169d fix: co-relation UI and filtering (#12527)
Co-authored-by: Omkar Kesarkhane <127078473+omkarK06@users.noreply.github.com>
Co-authored-by: omkark06 <omkar@zinclabs.io>
2026-06-16 08:14:32 +00:00
Bhargav 7aaeada9b2 fix: split zincutils file (#12689) 2026-06-16 07:42:44 +00:00
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
Sai Nikhil 562c0dfca2 fix: add AI Observability checks (#12668) 2026-06-15 14:59:55 +00:00
ktx-mihirandktx-vaidehi 84ac76b36f fix: layout revamp ui and bug fixes (#12666)
- alert history title truncate and drawer width increase
- management page content left align and padding
- horizontal scroll in table without resizing columns
- print dashboard header and back button reset print mode
- x-axis name overlapping tick labels and legend
- print dashboard header sticky and scroll fix

---------

Co-authored-by: ktx-vaidehi <vaidehi.akhani@kiara.tech>
2026-06-15 13:45:30 +00:00
d20cd2e47a chore: theme & font ux changes (#12645)
Co-authored-by: ktx-vaidehi <vaidehi.akhani@kiara.tech>
Co-authored-by: Bhargav <BJP232004@GMAIL.COM>
2026-06-15 13:01:28 +00:00
Bhargavandcopilot-swe-agent[bot] 298427deb3 fix: grouped unauthorized error message (#12651)
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
2026-06-15 11:34:33 +00:00
udev 6761ce2dbf fix: refactor online evals (#12654)
move online evals to enterprise repo
2026-06-15 10:13:55 +00:00
Neha PandClaude Opus 4.7 291903345e test: add E2E regression tests for 10 Needs-Automation issues (#12111)
## Summary

Adds Playwright E2E regression tests for **10 closed `Needs-Automation`
issues** across alerts, logs, pipelines, data sources, landing page, and
reports. This is Batch 1 of 3.

All tests pass against the dev environment
(`https://dev.o2aks1.internal.zinclabs.dev`).

## New Spec Files

| File | Issue | Description |
|------|-------|-------------|
| `datasources-regression.spec.js` |
[#11682](https://github.com/openobserve/openobserve/issues/11682) | AI
integration credentials persist on tab re-click |
| `landing-regression.spec.js` |
[#11604](https://github.com/openobserve/openobserve/issues/11604) |
Slack button opens functional page (not blank) |
| `reports-regression-bugs.spec.js` |
[#11231](https://github.com/openobserve/openobserve/issues/11231) |
Report timestamp not shifted by timezone on save |

## Tests Added to Existing Files

| File | Issue | Description |
|------|-------|-------------|
| `alerts-regression-bugs.spec.js` |
[#11315](https://github.com/openobserve/openobserve/issues/11315) | Bulk
alert import dialog opens without premature errors |
| `alerts-regression-bugs.spec.js` |
[#4342](https://github.com/openobserve/openobserve/issues/4342) | Alert
name with special characters `#`, `%`, `:` works |
| `alerts-regression-bugs.spec.js` |
[#4288](https://github.com/openobserve/openobserve/issues/4288) | SQL
`default` keyword without quotes works in alerts |
| `logs-regression-bugs.spec.js` |
[#10103](https://github.com/openobserve/openobserve/issues/10103) |
Explain Query close does not break results |
| `logs-regression-bugs.spec.js` |
[#8641](https://github.com/openobserve/openobserve/issues/8641) |
Non-SQL multi-stream query works without error |
| `logs-regression-bugs.spec.js` |
[#5839](https://github.com/openobserve/openobserve/issues/5839) | Shared
logs page displays searchbar correctly |
| `pipeline-regression.spec.js` |
[#11483](https://github.com/openobserve/openobserve/issues/11483) | No
duplicate notifications on pipeline destination save |
| `pipeline-regression.spec.js` |
[#11267](https://github.com/openobserve/openobserve/issues/11267) |
Evaluation template has proper UI styling |

## Removed

- `traces-regression-bugs.spec.js`: removed 4 skipped tests for features
unavailable in the dev environment
([#11392](https://github.com/openobserve/openobserve/issues/11392),
[#11318](https://github.com/openobserve/openobserve/issues/11318),
[#11280](https://github.com/openobserve/openobserve/issues/11280),
[#11590](https://github.com/openobserve/openobserve/issues/11590))

## POM Changes

- `logsPage.js`: added `clickExplainQuery()` method (reuses existing
`clickMoreOptionsButton()`)

## CI

- `playwright_regression.yml`: added `DataSources-Regression` and
`Reports-Regression` shards; added `landing-regression.spec.js` to
`GeneralTests-Regression`

## Framework Compliance

- All tests use PageManager via POM methods (no raw
`page.locator('[data-test=...]')` for interactions)
- All tests use `expect()` assertions (no conditional `test.skip()` for
false positives)
- All describe blocks have `beforeEach`/`afterEach` with structured
logging
- All tests tagged with `@bug-XXXXX`, `@P1`/`@P2`/`@P3`, `@regression`

## Test Plan

- [x] All 10 tests pass individually against dev environment
- [x] No framework violations (POM-first, no conditional skips)
- [ ] CI run on this PR

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-06-15 10:12:52 +00:00
143bff7330 fix: add API for triggering license limit check manually (#12621)
This adds a UI and API based trigger for re triggering license check
limits, so we do not have to restart nodes

---------

Signed-off-by: Yashodhan Joshi <yjdoc2@gmail.com>
Co-authored-by: Yashodhan Joshi <yjdoc2@gmail.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-06-15 09:53:53 +00:00
Subhra264 f0428d318d fix: add roles api to replace multiple api calls to get role permissions (#12606)
Currently, on the roles edit page, the frontend makes role permission
api for each and every resources. So, for current 41 resources, there
are 41 concurrent api calls, each going through the openfga rbac check
middleware. That means, there are 41 concurrent redundant openfga
checks, and then 41 openfga query to get the role permissions.

This pr adds another api `org_id/roles/role_name/permissions` that
combines all the resource permissions of the given role name and return
the same eliminating the need for making api calls for each rbac
resource.
2026-06-15 05:39:02 +00:00
Omkar Kesarkhaneandgithub-actions[bot] 8612943766 fix: fixed Trace details Log stream selection UI (#12625)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-06-14 18:15:56 +00:00
Ashish Kolheandgithub-actions[bot] 525d5dfbe7 chore: logs page suggest time range and ask ai fix (#12626)
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-06-12 13:26:25 +00:00
Abhay Padamani ab7bdd5e31 feat: metrics page share url support (#12607)
Design At:
https://github.com/openobserve/designs/blob/main/metrics-page/share-url/version2
2026-06-12 18:06:21 +05:30
Omkar Kesarkhane 284dc439e9 fix: added stream-change confirmation dialogs across Traces tabs (#12618)
## What changed

Adds stream-change confirmation dialogs across Traces tabs. When a user
changes the stream in **Service Graph** or **Services Catalog**, the
change is no longer applied silently — instead an `ODialog` prompts the
user to confirm, since changing the stream clears the existing query in
the Traces/Spans tabs.

## Why

Previously, stream selection was only synced one-way: changing the
stream in Traces/Spans propagated to all other tabs. Changing the stream
in Service Graph or Services Catalog did not sync back because those
tabs don't show a query — so doing so could erase an active query in
Traces/Spans without user awareness. This change ensures the user is
explicitly asked before clearing their query.
2026-06-12 10:28:44 +00:00
02b86a0068 fix: minor UI fixes (#12622)
Co-authored-by: ktx-kirtan <124270523+ktx-kirtan@users.noreply.github.com>
Co-authored-by: ktx-riya <riya.kukadiya@kiara.tech>
Co-authored-by: ktx-akshay <akshay.patil@kiara.tech>
Co-authored-by: ktx-vaidehi <vaidehi.akhani@kiara.tech>
Co-authored-by: Omkar Kesarkhane <127078473+omkarK06@users.noreply.github.com>
2026-06-12 10:19:50 +00:00
ktx-akshay d890d8a293 fix: resolve Firefox logs page empty space before log rows (#12476) 2026-06-12 09:41:14 +00:00
udevandsai nikhil kethe 12fffe4709 fix: online evals rbac list and edit role page (#12623)
- **edit role fixes**
- **fix rbac list apis**

---------

Co-authored-by: sai nikhil kethe <nikhil@openobserve.ai>
2026-06-12 09:41:07 +00:00