* Improove width of expanded sections by using with of scroll cotnainer instead of table width.
* Fixing issue with broken styling.
* Fixing filter spacing issue.
* Fix flaky react-select crash in PaginatedSelect caused by debounce return value
The handleSearch debounced callback was returning the Promise from
loadOptions(). Lodash debounce returns the result of the last invocation
on subsequent calls. When react-select's onInputChange handler received
this Promise, it checked `if (nextValue != null)` — which is truthy for
a Promise — and set its internal inputValue state to the Promise object.
On the next re-render, trimString(promise) crashed with
"str.replace is not a function".
This was a latent bug exposed by the user-event v13 → v14 migration.
In v13, userEvent.type() fired all keystrokes nearly synchronously, so
the 400ms debounce never fired between keystrokes and the wrapper always
returned undefined. In v14, keystrokes are dispatched individually with
proper async handling, giving the debounce timer a chance to fire between
keystrokes — making the crash flaky depending on execution speed.
The fix: don't return the Promise from the debounced callback, so
react-select never mistakes it for a new input value.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix flaky react-select crash in PaginatedSelect caused by debounce return value
The handleSearch debounced callback was returning the Promise from
loadOptions(). Lodash debounce returns the result of the last invocation
on subsequent calls. When react-select's onInputChange handler received
this Promise, it checked `if (nextValue != null)` — which is truthy for
a Promise — and set its internal inputValue state to the Promise object.
On the next re-render, trimString(promise) crashed with
"str.replace is not a function".
This was a latent bug exposed by the user-event v13 → v14 migration.
In v13, userEvent.type() fired all keystrokes nearly synchronously, so
the 400ms debounce never fired between keystrokes and the wrapper always
returned undefined. In v14, keystrokes are dispatched individually with
proper async handling, giving the debounce timer a chance to fire between
keystrokes — making the crash flaky depending on execution speed.
The fix: don't return the Promise from the debounced callback, so
react-select never mistakes it for a new input value.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* Provide complete slice for slices render
* Improve reusability of slizes query keys.
* Refetch slices when auto refetching security events.
* adding type to the slice class
* DIsplay paginated list for slices overview.
* Expand emtpy slics list when currently slice becomes empty.
* Ensure that we always display the selected slice in the slices list.
* Refetch slices list when selecting slice, to ensure slice count is correct and matches search results.
* Fixing TS error
* Only refetch slices on slice select when we actually fetch new events.
---------
Co-authored-by: Jan Heise <jan.heise@graylog.com>
* Fix no-restricted-imports: replace lodash with native alternatives and fix import paths
Replace lodash/get with optional chaining, lodash/defaultTo with nullish
coalescing (??), lodash/max with Math.max, and swap react-router-dom Link
imports to use the project's router wrapper. Add eslint-disable for files
that are the wrapper implementations themselves.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix jsx-a11y/control-has-associated-label: add aria-label to controls
Add descriptive aria-label attributes to buttons, table cells, and other
interactive controls that were missing accessible labels.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix react/jsx-key: add missing key props to elements in iterators
Add stable key props to JSX elements inside .map() callbacks using
item IDs and unique property names as keys.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix no-param-reassign: avoid mutating function parameters
Replace reduce accumulator mutations with Object.fromEntries or spread
syntax. Use eslint-disable for browser API patterns (beforeunload).
Create new objects instead of mutating request/response parameters.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix misc TypeScript/ESLint rules: require-imports, unsafe Function type, nested ternaries, triple-slash refs, unused props/vars
- Add eslint-disable for require() in .d.ts and jest.isolateModules
- Add eslint-disable for Function type in reflux .d.ts, remove redundant
Function annotations in tests
- Refactor nested ternaries in SortUtils to if/else
- Convert triple-slash references to side-effect imports
- Fix unused prop type declarations in Timestamp and Section
- Rename catch variable e to _error in useIsLocalNode
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix testing-library/no-node-access: replace DOM traversal with TL queries
Replace .querySelector(), .firstChild, and .getElementsByClassName() with
Testing Library queries (getByRole, getByText, findByTitle, within) in
test files. Add eslint-disable where DOM access is unavoidable (Leaflet
map containers, custom text matchers).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix no-restricted-properties and prefer-user-event in tests
Replace fireEvent.submit with userEvent.click on submit buttons and
fireEvent.change with userEvent.selectOptions in ContentPackEditParameter
tests. Add submit button to ContentPackEditParameter component to enable
the userEvent.click pattern. Use eslint-disable for fireEvent.change in
InputSetupWizard test where userEvent.type causes waitFor timeouts.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix jest/expect-expect and jest/no-done-callback in tests
Add eslint-disable for it.each tests where assertions are in callback
functions that ESLint cannot statically detect. Add explicit assertion
to PivotHandler type-check test. Convert GlobalThroughputStore tests
from done-callback pattern to async/await with Promises.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix Link import path after router.tsx was removed in d4b1262
Update Button.tsx and MenuItem.tsx to import Link from
components/common/Link (the new dedicated wrapper) instead of the
deleted components/common/router.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Type reflux StoreDefinition generically and remove eslint-disable for Function type
Make StoreDefinition<T> generic so init is typed as () => void and
getInitialState as () => T. Make fields optional in 4 store state types
(ContentPacksStore, IndicesConfigurationStore, InputTypesStore,
CollectorsStore) whose getInitialState returns a subset of the full state.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Revert ContentPackEditParameter component changes and fix ESLint hints in test only
Replace fireEvent.change with userEvent.selectOptions and extract a
submitForm helper with a single eslint-disable to avoid duplicating
the disable comment across all fireEvent.submit call sites. The
component has no submit button and jsdom doesn't support implicit
form submission, so fireEvent.submit remains necessary.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Use part string as React key instead of array index in RuleBlockDisplay
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Running `prettier`.
* Address PR #25171 review feedback
- Revert aria-label additions on td/th elements; increase
jsx-a11y/control-has-associated-label depth to 3 instead
- Use screen.findByRole in Autocomplete test instead of waitFor+getByRole
- Add default value for optional field prop in Timestamp component
- Rename test helpers to expectIsDeepEqual/expectIsNumericString to
satisfy jest/expect-expect without eslint-disable
- Replace require() with jest.isolateModulesAsync + dynamic import()
in DocsHelper tests
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Remove unused findValidationState from TabKeywordTimeRange test
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix control-has-associated-label lint errors and SelectedGrantee test
Ignore td/th elements in control-has-associated-label rule (false
positives), add aria-label to backlog checkbox, and rename
checkCurrentState to expectCurrentState to remove eslint-disable.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Replace type casts with proper types in UseCreateViewForEvent
Type function parameters for getSummaryAggregation and WidgetsGenerator
so reduce() accepts generic type parameters, removing all `as` casts.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* add pluggagle source for input status badge and Page nav badge
* fix component name
* wire useInputDotBadge provider
---------
Co-authored-by: Laura Bergenthal-Grotlüschen <197286649+laura-b-g@users.noreply.github.com>
* Upgrade @testing-library/user-event from v13 to v14
Migrate all test files to the v14 API:
- Add `await` to all userEvent calls (v14 returns promises)
- Replace `paste(element, text)` with `paste(text)` or fireEvent
- Replace `{selectall}` in type() with clear() + type()
- Remove `{ ctrlKey: true }` from click(), use keyboard modifiers
- Remove redundant act() wrappers (v14 handles act internally)
- Add `userEvent.setup({ advanceTimers })` for fake timer tests
- Use fireEvent.change() for number/spinbutton controlled inputs
- Fix selectEvent.ts fake timer detection for Jest 30
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Remove unused fireEvent import in InputSetupWizard.StartInput.test
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix lint errors from user-event v14 upgrade
- Fix import group ordering in AggregationWizard test files
- Move setupUser definition before first usage in SavedSearchForm.test
- Add eslint-disable for intentional fireEvent usage on controlled inputs
- Fix eslint issues in selectEvent helper and rename createUser to setup
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Linus Pahl <linus.pahl@graylog.com>
* first draft of getting a related identifier
* add composite suggestion display
* add computed field registry logic
* fix linter
* add input failures column to Inputs list
* fix rebasing
* fix import
* update to use useMetrics hook and fix review
---------
Co-authored-by: Maxwell Anipah <maxwell.anipah@graylog.com>
Co-authored-by: Laura Bergenthal-Grotlüschen <197286649+laura-b-g@users.noreply.github.com>
* Migrate MetricsStore and GlobalThroughputStore from Reflux to React Query
Replace the Reflux-based MetricsStore and GlobalThroughputStore with a
shared MetricsProvider context that batches all metric subscriptions into
a single react-query POST to /cluster/metrics/multiple. This eliminates
Reflux from the metrics subsystem entirely.
New infrastructure:
- src/types/metrics.ts: shared metric type definitions
- src/contexts/MetricsProvider.tsx: batching context with ref-counted
subscriptions, 2s refetchInterval, fetchPeriodically
- src/hooks/useMetrics.ts: useMetrics, useNodeMetrics, useMetricsNames,
useGlobalThroughput hooks
Migrated 22 consumer files from useStore(MetricsStore) + MetricsActions
add/remove pattern to the new hooks. Deleted MetricsStore,
GlobalThroughputStore, and GlobalThroughputStore.test.ts.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix MetricsContext singleton for cross-bundle compatibility
The MetricsContext was created with plain createContext(), causing
enterprise plugin bundles to get a separate context instance. Use the
singleton pattern (matching NodesContext, StreamsContext, etc.) so the
same context instance is shared across all bundles.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix remaining MetricsStore type import in InputThroughputUtils
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Add MetricsProvider to test WrappingContainer
Tests rendering components that use useMetrics (e.g. Navigation with
GlobalThroughput) need MetricsProvider in the test wrapper, matching
how it's provided in the app via LoggedInPage.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Add useMetric and useNodeMetric convenience hooks for single metrics
Avoids the repetitive `useMemo(() => [name], [name])` wrapper pattern
when subscribing to a single metric name.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Use asMock helper in PipelineProcessingErrors test
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Fix type errors in PipelineProcessingErrors test mock data
Add missing `full_name` and `name` properties to mock meter metrics
to satisfy the `BaseMetric<MeterMetric>` type requirements.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Ousmane SAMBA <ousmane@graylog.com>
* checkpoint
* checkpoint
* fix event creation
* remove redundant code
* cleanup
* review suggestions
* Change URN to reduce ambiguity
* revert 10-minute traffic counting
* Support new event definition type in event definition form
* Make group_by optional
* block creation of generic mongoDB event definitions
* add unit test
* Batch Index Stats Requests to Avoid URL Length Overflow (#25031)
* Batch Index Stats Requests to Avoid URL Length Overflow
* CL
* refactoring
* don't leak internal constant
* adjust unit tests
---------
Co-authored-by: Florian Petersen <188503754+fpetersen-gl@users.noreply.github.com>
* Bump io.swagger.core.v3:swagger-jaxrs2-jakarta from 2.2.42 to 2.2.43 (#25114)
Bumps io.swagger.core.v3:swagger-jaxrs2-jakarta from 2.2.42 to 2.2.43.
---
updated-dependencies:
- dependency-name: io.swagger.core.v3:swagger-jaxrs2-jakarta
dependency-version: 2.2.43
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Feature: add numeric range aggregation support to Scripting API (#25103)
* feat: add numeric range aggregation support to Scripting API
Add support for numeric range aggregations in the Scripting API,
allowing users to group search results into custom numeric buckets
(e.g., response times 0-100ms, 100-500ms, 500ms+).
New classes:
- NumberRange: value class holding optional from/to Double bounds
- RangeBucket: BucketSpec implementation for numeric range buckets
- ESRangeHandler, OSRangeHandler (OS2/OS3): storage backend handlers
Modified:
- Grouping: new "ranges" field, mutually exclusive with limit/timeunit/scaling
- GroupingToBucketSpecMapper: produces RangeBucket when ranges are present
- AggregationSpecToPivotMapper: respects ranges in auto-interval logic
- All three ViewsBackendModule classes: register RangeBucket handlers
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Add integration tests for range aggregation in ScriptingApiResourceIT
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* adding changelog
* using more idiomatic code regarding the Optionals
* improving conditional
* records instead of Autovalue
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* Migrate IndexerHostsAdapter to OS java client (#25022)
* switch to java client using typed interface
* use raw json
* add test resources
* Fix documentation link for MCP Server configuration (#25107)
* Add AWS STS proxy support for assume-role credentials in utils (#25072)
* Add proxy support in AWS client utils
* Fix CloudTrail input to use proxy settings for STS as well
* Add change log
* Naming nit
* Expand tests, cleanup
* Fix missing Assume Role field on setup wizard flow
* Add Assume Role field on review page.
* Bump eslint-plugin-compat (#25125)
Bumps [eslint-plugin-compat](https://github.com/amilajack/eslint-plugin-compat) from 6.1.0 to 6.2.0.
- [Release notes](https://github.com/amilajack/eslint-plugin-compat/releases)
- [Changelog](https://github.com/amilajack/eslint-plugin-compat/blob/main/CHANGELOG.md)
- [Commits](https://github.com/amilajack/eslint-plugin-compat/compare/v6.1.0...v6.2.0)
---
updated-dependencies:
- dependency-name: eslint-plugin-compat
dependency-version: 6.2.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Bump basic-ftp from 5.0.3 to 5.2.0 in /graylog2-web-interface (#25122)
Bumps [basic-ftp](https://github.com/patrickjuchli/basic-ftp) from 5.0.3 to 5.2.0.
- [Release notes](https://github.com/patrickjuchli/basic-ftp/releases)
- [Changelog](https://github.com/patrickjuchli/basic-ftp/blob/master/CHANGELOG.md)
- [Commits](https://github.com/patrickjuchli/basic-ftp/compare/v5.0.3...v5.2.0)
---
updated-dependencies:
- dependency-name: basic-ftp
dependency-version: 5.2.0
dependency-type: indirect
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Change default time range for Events and Alerts to 30 days (#24950)
* Change default time range for Events and Alerts to 34 days
The default time range has been reduced from 180 days to 34 days to align
with typical index rotation cycles (up to 33 days). This ensures queries
stay within indexed data while providing complete coverage.
Additionally, the Events table now uses the same default time range as the
histogram. Previously, the table would search back to 1970 when no timestamp
filter was specified in the URL.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* Add changelog
* Fix issue number
* Change from 34 to 30 days.
* Add tests for fetchEvents
* Remove unneeded mocking of qualifyURL
---------
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
* Migrating some remaining JS to TS. (#25118)
* Migrating some remaining JS to TS.
* Fixing up ts & linter.
* Bump org.apache.maven.plugins:maven-surefire-plugin from 3.5.4 to 3.5.5 (#25128)
Bumps [org.apache.maven.plugins:maven-surefire-plugin](https://github.com/apache/maven-surefire) from 3.5.4 to 3.5.5.
- [Release notes](https://github.com/apache/maven-surefire/releases)
- [Commits](https://github.com/apache/maven-surefire/compare/surefire-3.5.4...surefire-3.5.5)
---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-surefire-plugin
dependency-version: 3.5.5
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Bump org.apache.maven.plugins:maven-failsafe-plugin from 3.5.4 to 3.5.5 (#25127)
Bumps [org.apache.maven.plugins:maven-failsafe-plugin](https://github.com/apache/maven-surefire) from 3.5.4 to 3.5.5.
- [Release notes](https://github.com/apache/maven-surefire/releases)
- [Commits](https://github.com/apache/maven-surefire/compare/surefire-3.5.4...surefire-3.5.5)
---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-failsafe-plugin
dependency-version: 3.5.5
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Bump org.openrewrite:rewrite-java in the openrewrite group (#25124)
Bumps the openrewrite group with 1 update: [org.openrewrite:rewrite-java](https://github.com/openrewrite/rewrite).
Updates `org.openrewrite:rewrite-java` from 8.73.1 to 8.73.2
- [Release notes](https://github.com/openrewrite/rewrite/releases)
- [Commits](https://github.com/openrewrite/rewrite/compare/v8.73.1...v8.73.2)
---
updated-dependencies:
- dependency-name: org.openrewrite:rewrite-java
dependency-version: 8.73.2
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: openrewrite
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Syslog disable autorelease (#25120)
* Keeping track of retained buffers, always releasing them after processing
* Removed logging, added cl
* Removed system.out.println from test
* Try to keep track of as few ByteBufs as possible by removing the reference to already freed ones while reading from an open channel.
* alternate approach to buffer release
* unit tests for edge cases
* CL
---------
Co-authored-by: Florian Petersen <188503754+fpetersen-gl@users.noreply.github.com>
* Fix input state action button going to set-up mode after stopping input. (#25058)
* Fix inpit state action button going to set-up mode after stopping input.
* update test
---------
Co-authored-by: Laura Bergenthal-Grotlüschen <197286649+laura-b-g@users.noreply.github.com>
* Bump react-window from 2.2.6 to 2.2.7 in /graylog2-web-interface (#25137)
Bumps [react-window](https://github.com/bvaughn/react-window) from 2.2.6 to 2.2.7.
- [Release notes](https://github.com/bvaughn/react-window/releases)
- [Changelog](https://github.com/bvaughn/react-window/blob/main/CHANGELOG.md)
- [Commits](https://github.com/bvaughn/react-window/compare/2.2.6...2.2.7)
---
updated-dependencies:
- dependency-name: react-window
dependency-version: 2.2.7
dependency-type: direct:production
update-type: version-update:semver-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Address Entity-table limitations (#24427)
* first draft of getting a related identifier
* add composite suggestion display
* add computed field registry logic
* fix test
* add Inputs page navigation (#24970)
* update dependency array
* fix title rendering
* enhance status provider to handle not running inputs
* fix linter
* dont swallow exceptions during filter parsing
* fix unit test
* Update graylog2-server/src/main/java/org/graylog2/database/suggestions/EntitySuggestion.java
Co-authored-by: Ismail Belkacim <xd4rker@users.noreply.github.com>
* fix composite filter search
---------
Co-authored-by: Ousmane SAMBA <ousmane@graylog.com>
Co-authored-by: Ousmane Samba <ousmane.samba@graylog.com>
Co-authored-by: Mohamed OULD HOCINE <106236152+gally47@users.noreply.github.com>
Co-authored-by: Laura Bergenthal-Grotlüschen <197286649+laura-b-g@users.noreply.github.com>
Co-authored-by: Ismail Belkacim <xd4rker@users.noreply.github.com>
* Adding slicing capability for the open source Events/Alerts table (#24958)
* adding slicing capability for the open source Events/Alerts table
* adding slicing capability
* fix mapping
* Do not provide sort info from slicing section to backend.
* Cleanup parameters provided to backend when fetching slices.
* Move slices renderers outside of component.
* Make usage of `parseFilters` easier to read.
* Cleanup
* Consider slices when fetching data for entity table.
* Show empty slices for event priority and type column.
* Update tests
* result cleanup, add mapping function
* remove obsolete class
* Fixing error when fetching security events.
* Enable slice by action for columns in paginated entity table only when a slices fetch function has been provided.
* fix default parameters
* Cleanup naming
* Use background color to highlight active slice, since font weight does not always apply to custom slices renderer.
* Disable filters which are conflicting with active slice.
* Update `EntityDataTable` test.
* adding tests
* Add full-backend integration tests for events slices endpoint
Adds EventsResourceSlicesIT with ES fixtures covering all slice columns
(priority, alert, event_definition_id, event_definition_type, key) and
filter combinations for the POST /events/slices endpoint.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fixing test, adding waiting method for index
* adding changelog
* Disable linter hint
* adding convenience method for MongoDB sanity checks after fixture imports
* reverting include_all to false as this is the use case we're going for now
* Use stati width for slices section.
* Do not use text overflow ellipses for count badge.
* Improve naming
* Add close button for slice section.
* Add max-height for slices list
* Make sure to not remove filter when slicing by column.
* Cleanup query param handling
* Enable batching for updating query params, to fix edge cases.
* Display slices badges in readable format.
* Fix type casting
* improved changelog
* Fixing tests by adding `DefaultQueryParamProvider` where require. In a follow-up PR we will render `DefaultQueryParamProvider` for tests by default.
* Fixing linter hint
* Format code
* Simplify slicing test
---------
Co-authored-by: Linus Pahl <linus.pahl@graylog.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* Bump fast-xml-parser from 5.3.6 to 5.3.8 in /graylog2-web-interface (#25139)
Bumps [fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser) from 5.3.6 to 5.3.8.
- [Release notes](https://github.com/NaturalIntelligence/fast-xml-parser/releases)
- [Changelog](https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.3.6...v5.3.8)
---
updated-dependencies:
- dependency-name: fast-xml-parser
dependency-version: 5.3.8
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Migrate MessagesAdapterOS to OS java client (#25105)
* migrate MessagesAdapterOS
* fix exception parsing
* rename tests
* add correct durability parsing
* adjust exception message
* make error message backwards compatible
* Showing neutral trend when delta is zero. (#25138)
* Showing neutral trend when delta is zero.
* Adding changelog snippet.
* Unnecessary data attribute.
* Render `DefaultQueryParamProvider` by default in component unit tests. (#25145)
* Render DefaultQueryParamProvider by default in wrappedTestingLibrary and remove redundant test wrappers.
* Fix `WidgetFocusProvider.test`.
* Fixing linter hints
* Fixing test
* Running lint --fix & prettier (#25152)
Co-authored-by: Dr. Lint-a-lot <garybot2@graylog.com>
* Bump less from 4.4.1 to 4.5.1 in /graylog2-web-interface (#25166)
Bumps [less](https://github.com/less/less.js) from 4.4.1 to 4.5.1.
- [Release notes](https://github.com/less/less.js/releases)
- [Changelog](https://github.com/less/less.js/blob/master/CHANGELOG.md)
- [Commits](https://github.com/less/less.js/compare/v4.4.1...v4.5.1)
---
updated-dependencies:
- dependency-name: less
dependency-version: 4.5.1
dependency-type: direct:development
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Use OS java client in data node (#25134)
* start migration
* fix cluster/node metrics and test
* fix OpensearchProcessImplTest
* avoid problems with null values
* fix node query
* await async response
* fix type
* code cleanup, removal of plain json api
---------
Co-authored-by: Tomas Dvorak <tomas.dvorak@graylog.com>
* Migrate QuerySuggestions adapter to OS java client (#25098)
* migrate QuerySuggestionsOS
* remove already resolved todo
* code cleanup
* fix field type handling
* Move common `Link` and `LinkContainer` into dedicated files. (#25146)
* Move common `Link` and `LinkContainer` into dedicated files.
* Updating test
* Migrate `LinkToNode` tofunctional component.
* Improve warning/error boxes on system input page (#25088)
* first draft of getting a related identifier
* add composite suggestion display
* add computed field registry logic
* fix test
* add Inputs page navigation (#24970)
* update dependency array
* fix title rendering
* enhance status provider to handle not running inputs
* fix linter
* dont swallow exceptions during filter parsing
* fix unit test
* refactor Inputs page notification
* Update graylog2-server/src/main/java/org/graylog2/database/suggestions/EntitySuggestion.java
Co-authored-by: Ismail Belkacim <xd4rker@users.noreply.github.com>
* fix composite filter search
* refetch input states periodically
* remve useMemo
---------
Co-authored-by: Maxwell Anipah <maxwell.anipah@graylog.com>
Co-authored-by: Maxwell <98284293+kodjo-anipah@users.noreply.github.com>
Co-authored-by: Mohamed OULD HOCINE <106236152+gally47@users.noreply.github.com>
Co-authored-by: Laura Bergenthal-Grotlüschen <197286649+laura-b-g@users.noreply.github.com>
Co-authored-by: Ismail Belkacim <xd4rker@users.noreply.github.com>
* review feedback
* fix linter warning
* revert linter fix
* remove unneeded jodatime usage
* review feedback
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: Laura Bergenthal-Grotlüschen <197286649+laura-b-g@users.noreply.github.com>
Co-authored-by: Ousmane SAMBA <ousmane@graylog.com>
Co-authored-by: Florian Petersen <188503754+fpetersen-gl@users.noreply.github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Jan Heise <jan.heise@graylog.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Matthias Oesterheld <33032967+moesterheld@users.noreply.github.com>
Co-authored-by: Ramón Márquez <ramon.marquez@graylog.com>
Co-authored-by: Dan Torrey <dan.torrey@graylog.com>
Co-authored-by: Konrad Merz <konrad@graylog.com>
Co-authored-by: Dennis Oelkers <dennis@graylog.com>
Co-authored-by: Maxwell <98284293+kodjo-anipah@users.noreply.github.com>
Co-authored-by: Ousmane Samba <ousmane.samba@graylog.com>
Co-authored-by: Mohamed OULD HOCINE <106236152+gally47@users.noreply.github.com>
Co-authored-by: Ismail Belkacim <xd4rker@users.noreply.github.com>
Co-authored-by: Linus Pahl <linus.pahl@graylog.com>
Co-authored-by: Linus Pahl <46300478+linuspahl@users.noreply.github.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Dr. Lint-a-lot <garybot2@graylog.com>
Co-authored-by: Tomas Dvorak <tomas.dvorak@graylog.com>
Co-authored-by: Maxwell Anipah <maxwell.anipah@graylog.com>
Pass the parent element to `isElementVisibleInContainer` so the scroll
hint correctly detects when a newly created widget is not fully visible
in the viewport. Previously the empty marker div was considered visible
even when the actual widget content was off-screen.
Fixes#25237
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* Move `MessageTable` component into common dir.
* Move `MessageTableEntry` to common dir.
* Move messagelist dir into message dir.
* Move `MessageDetail` component into components/common.
* Move components related to message details into message details dir.
* Move message details fields component into message details dir.
* Update imports.
* Move futher components into common dir.
* Cleanup exports.
* Fixing linter hints
* Remove `MessageTable` and `MessageList` from `common/index` for now, since it causes unrelated tests to fail.
* Cleanup
* Remove not needed file.
* fixed imports
* improving structure, adding comments
* adding changelog
* fix changelog
* remove documentation that is not sensible from method comments
* adding a not equals query, adding a special "null" case
* reverting change on Test class
* remove whitespace
* revert change
* moving asset querying to enterprise
* adding risk score
* move risk score slicing into enterprise
* fix field name
* adding changelog
* using ".." temporarily to separate field/decorator
* using pipe symbol th separate field/decorator
* settling on # to separate field/decorator
* adjusting test
* Update pr-25155.toml
* Update pr-25155.toml
* adjusting test
* adjusting test
* Set OpenAPI server URL dynamically from request headers
The OpenAPI spec now sets an absolute server URL based on the
X-Graylog-Server-URL header, falling back to http_external_uri or
http_publish_uri. This fixes client URL resolution when Graylog is
behind a reverse proxy with a path prefix.
The cached OpenAPI model is never mutated — the servers field is
replaced only in the serialized Jackson tree.
* Fix null model handling and pretty-print in OpenApiResource
Return 404 when context.read() returns null, matching the previous
BaseOpenApiResource behavior. Use DefaultPrettyPrinter for both JSON
and YAML output to preserve the pretty-print configuration, consistent
with how BaseOpenApiResource honored isPrettyPrint() for all formats.
Remove unused UriInfo parameter — it was only needed by
BaseOpenApiResource for spec filtering, which we don't use.
* Remove jakarta.servlet-api dependency from graylog2-server
This dependency was only needed because OpenApiResource extended
BaseOpenApiResource, which has ServletConfig in its method signatures.
Now that we own the serialization directly, nothing in graylog2-server
references the servlet API.
* Simplify
* Use minute average metric for input throughput
* Add changelog
* Properly type getValueFromMetric()
---------
Co-authored-by: Florian Petersen <188503754+fpetersen-gl@users.noreply.github.com>
* Replace swagger-ui-react with openapi-explorer in API Browser
Swap out the heavyweight swagger-ui-react component for the openapi-explorer
web component, removing ~250 lines of custom CSS theming in the process.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Supplying base url to OpenAPI explorer.
* Simplifying passing API prefix.
* Load openapi-explorer asynchronously for code splitting.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Adding styling.
* Adding download link.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Formatting, typing.
---------
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>