Fixed issue where user click on include/exclude button without selecting
or deselecting new values from the list
---------
Co-authored-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com>
Co-authored-by: Bhargav <undefined@users.noreply.github.com>
Clicking the AI button in the query editor was toggling SQL mode off,
and closing it was forcing SQL mode back on. Removed the mutual
exclusivity between nlpMode and sqlMode so they operate independently.
1. Filter from Trace Details — Enable users to apply field filters
directly from within the Trace Details view (e.g., clicking a field
value adds it as a filter)
2. Removed Tags and Process tabs from Trace details sidebar.
3. Add JSON and table view support in Attributes tab
---------
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
Adds `resetSearchError()` to searchState and calls it at the start of
`extractPatternsForCurrentQuery` so stale error messages from a failed
logs search are cleared before patterns are fetched.
---------
Co-authored-by: Neha P <neha@openobserve.ai>
Co-authored-by: Claude <noreply@anthropic.com>
Adds persistent, cross-session field value suggestions to the SQL query
editor. When a user types field = , field IN (, field LIKE ',
str_match(field, etc., the autocomplete popup now shows real values seen
in previous searches — not just keywords and field names.
Values are captured passively from search results and field expansions,
stored in IndexedDB, and served from an in-memory cache. Zero impact on
existing UI performance.
What's new
Value capture — two sources:
Run Query (useStreamFields.ts) — after each search, up to 100 result
rows are scanned and field values extracted into IndexedDB in a browser
idle callback
Field expansion (useFieldValuesStream.ts, IndexList.vue) — when a user
clicks > on a field in the left panel, the Values API response is also
captured
Persistence layer (fieldValueDB.ts — new):
IndexedDB database o2FieldValues, store fieldValues
Composite key: org|streamType|streamName|fieldName — fully isolated per
org, stream type, and stream
Merge strategy: new values are unioned with existing, capped at 50 per
field
7-day sliding TTL — fields from streams you stop using expire
automatically
Opportunistic housekeeping (5% chance per search) via by_expires and
by_updated indexes
Orchestration layer (useFieldValueStore.ts — new):
captureFromSearchHits — schedules extraction + batch IDB write via
requestIdleCallback
captureFromValuesApi — schedules single-field IDB write
getFieldValuesForSuggestion — reads with 60s in-memory cache (500-entry
cap) so keystrokes never hit IDB
Safari fallback: setTimeout(0) when requestIdleCallback is unavailable
All IDB errors caught silently — feature degrades gracefully in private
browsing
Suggestion engine (useSuggestions.ts):
New analyzeSqlWhereClause function detects when cursor is after an
operator expecting a value using a 4-alternative regex covering =, !=,
<>, >=, <=, >, <, IN (, NOT IN (, LIKE, NOT LIKE, str_match(,
fuzzy_match(
Cursor-sliced matching handles Monaco's auto-closing brackets correctly
Smart insertText quoting: numeric/boolean values unquoted, strings
wrapped in '...', open-quote detection avoids double-quoting
sortText prefixed with \x01 so value suggestions always sort above
keywords and functions
In-session values (current search) take precedence over stored values
(previous sessions)
Monaco popup fix (CodeQueryEditor.vue):
hideSuggestWidget → nextTick → triggerSuggest pattern ensures the popup
always refreshes, fixing cases where it was already in "Showing" state
(e.g. typing LIKE ')
Traces support (traces/SearchBar.vue):
Field expansion in traces was already writing to IDB (via
useFieldValuesStream with stream_type: "traces")
Added 3 lines to set org/streamType/streamName on autoCompleteData so
the read side works too
Remove O2_SERVICE_GRAPH_ENABLED and O2_SERVICE_GRAPH_QUERY_TIME_RANGE_MINUTES.
Service graph now runs unconditionally on enterprise ingester nodes.
Query window defaults to 60m constant; UI time range picker controls actual queries.
Also remove checks for this on the UI. Keep only enterprise level checks.
Add data-test="inspector-sql-query-content" attribute to the SQL query
pre element in the View Query dialog for reliable test automation.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude <noreply@anthropic.com>