Commit graph

87193 commits

Author SHA1 Message Date
elastic-renovate-prod[bot]
0762dee55e
Update dependency query-string to v9 2025-06-16 18:14:32 +00:00
Ersin Erdal
1a8b6694b2
Upgrade Puppeteer to v24.10.1 (#223985)
This PR upgrades Puppeteer version to v24.10.1.

Tested locally, works as expected:

<img width="968" alt="Screenshot 2025-06-14 at 02 28 49"
src="https://github.com/user-attachments/assets/52ede4a6-d342-45f6-9fdf-5a01ce77fb47"
/>

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Alexi Doak <109488926+doakalexi@users.noreply.github.com>
Co-authored-by: Alexandra Doak <alexandra.doak@elastic.co>
2025-06-16 19:56:05 +02:00
Marshall Main
5ce96f455f
[Response Ops][Rule Management] Update RulesClient methods to migrate legacy SIEM actions in bulk (#219432)
## Summary
Legacy actions context: https://github.com/elastic/kibana/issues/112327

This PR modifies legacy SIEM action migration logic to migrate actions
in bulk, significantly improving performance. Response time and # of
requests to ES for SIEM rule management HTTP APIs are both significantly
reduced. When tested on 800 rules, this saves about 1-1.5 seconds per
bulk API call and eliminates hundreds of individual requests to
Elasticsearch. Bulk disable for example goes from taking ~3.3 seconds to
~2.3 seconds, and the APM transaction for the API call no longer drops
spans due to hitting the max span limit.

## Testing
I added a helper function in the quickstart tooling,
`createRuleWithLegacyAction`, to make it easier to get started with
manual testing. The function creates a connector, a rule, and then a
legacy action referencing the connector and the rule. The legacy action
(a `siem.notification` type rule) and rule can be viewed in the alerting
SO index via dev tools:
```
GET .kibana_alerting_cases/_search
{
  "query": {
    "bool": {
      "filter": {
        "term": {
          "type": "alert"
        }
      }
    }
  }
}
```
Viewing the rule details via the Security Solution UI should display
only one rule with the action as part of the rule. After making any kind
of change to the rule (enable, disable, update, etc), the dev tools
command above should show only a single rule with the action inside the
rule instead of as a separate `siem.notification` type rule.

---------

Co-authored-by: Maxim Palenov <maxim.palenov@elastic.co>
Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
2025-06-16 13:51:33 -04:00
Paul Tavares
3671c7385c
[Security Solution][Endpoint] Migration for artifacts in support of space awareness (#222700)
## Summary

PR adds migration of Response Actions and Artifacts when the space
awareness feature flag is enabled. Changes include:

- New saved object type (`security:reference-data`) to keep internal
data/information used by security solution. Currently being used to keep
migration state for both the Artifacts and Response actions migrations
- Two records will be populated in this new saved object related to the
migration being introduced here:
- ID: `SPACE-AWARENESS-ARTIFACT-MIGRATION` - keeps state information
about migration of Artifacts (see below for example)
- ID: `SPACE-AWARENESS-RESPONSE-ACTIONS-MIGRATION` - keeps state
information about migration of response actions (see below for example)
- NOTE: my goal was to also introduce a `client` for working with
internal reference data, but due to timing constraints, that will be
done at a later time
- Adds migration for Endpoint artifacts (Trusted applications, Event
filters, Blocklists, Host isolation exceptions and Endpoint exceptions)
to add the `spaceOwnerId:default` to all artifact records
- Adds migration for Response Action Requests (both Elastic Defend and
external EDRs) to populate `originSpaceId` as well `agent.policy.*`
fields.
- NOTE: when populating the `agent.policy.*` data, it may be possible
that the agent that the response action was sent to is no longer
available (ex. unenrolled). In such cases, the migration will populate
any field that it is not able to retrieve information for with the text
`MIGRATION:NOT-FOUND`


> [!IMPORTANT]
> The migration currently assumes that the `9.1.0` endpoint package is
already installed, which will not be the case with a real migration. To
test this PR, you should start a 9.1 stack with the feature flags
disabled... Install the `9.1.0` endpoint package, and then enable the
feature flags.
> We will be working on a solution handling this data condition in a
subsequent PR
2025-06-16 19:41:41 +02:00
Jatin Kathuria
5377a5d55e
[Automatic Migration] Adds ability to change settings when re-processing Rule Migration (#222542)
Handles : 

- https://github.com/elastic/security-team/issues/12236
- https://github.com/elastic/security-team/issues/12012
- https://github.com/elastic/security-team/issues/12235

## Summary

This PR adds the ability to change rule migration execution settings
when `re-processing` a migration. Now users can change :

- `connector` they want to use for this particular occasion.
- whether `prebuilt rules` should be matched or not.

This PR include below changes:


### Changes to `Re-process` workflow

Previously, clicking on `Reprocess Rules` would automatically start the
migration on the Translated Rules Page.

This has been changed to add the ability for user to change the settings
when starting the migrations can be seen below :

> [!Note]
> Sample Graph executions with `skipPrebuiltRulesMatching == true` can
be found
[here](66aedda3-8cfd-4eee-950d-7ba2f93a317e?timeModel=%7B%22duration%22%3A%227d%22%7D&searchModel=%7B%22filter%22%3A%22and%28eq%28is_root%2C+true%29%2C+and%28eq%28metadata_key%2C+%5C%22skipPrebuiltRulesMatching%5C%22%29%2C+eq%28metadata_value%2C+true%29%29%29%22%2C%22searchFilter%22%3A%22eq%28is_root%2C+true%29%22%7D&runtab=2)



https://github.com/user-attachments/assets/73c22157-f688-410d-852d-aff7be612771





### Changes to `/start` API

As can be seen below `connector_id` and new option
`skip_prebuilt_rules_matching` have been combined into a single
`settings` object.

#### Before

```ts
POST /start

{
  "connector_id": boolean,
  "retry": string,
  "langsmith_options": {
    "project_name": string,
    "api_key": string
  }
}

```
#### After
```ts
{
  "settings": {
    "connector_id": string,
    "skip_prebuilt_rules_matching": boolean
  },
  "retry": string,
  "langsmith_options": {
    "project_name": string,
    "api_key": string
  }
}


```

### Changes to `rules/{migration_id}/stats` and `rules/stats` Endpoints

Now both `stats` and `stats_all` endpoints include migration's
last_execution details.

### Changes to Langsmith Graph

A new [run-time
config](https://v02.api.js.lang.chat/interfaces/_langchain_core.runnables.RunnableConfig.html#configurable)
called `skip_prebuilt_rules_matching` has been added to the graph which
does 2 things

- conditionally skips the `matchPrebuiltRule` node as can be seen by
graphs below
- Assigns a default `prebuilt_rule_id` of `null` in the
`translationResult` node.


![image](https://github.com/user-attachments/assets/421dc4eb-4682-4f28-9305-a1d841191e7e)


### Re-processing `STOPPED` migrations

Previously we used to automatically reprocess `STOPPED` migrations with
the default `connector_id` selected by the user in `Siem Migrations`

Now, we first try to inherit the `last_execution` settings to re-start
the migration as can be seen
[here](https://github.com/elastic/kibana/pull/222542/files#diff-fa4ce089bfa7b6afec449c289c817f03eb074ae5ffcae828434255c800d9a9a2R287).
If not present, for example, for old migrations before this PR was
merged, then we use stored/default values.


### Checklist

Check the PR satisfies following conditions. 

Reviewers should verify this PR satisfies this list as well.

- [x] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [ ] This was checked for breaking HTTP API changes, and any breaking
changes have been approved by the breaking-change committee. The
`release_note:breaking` label should be applied in these situations.
- [ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
- [ ] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)

### Identify risks

Does this PR introduce any risks? For example, consider risks like hard
to test bugs, performance regression, potential of data loss.

Describe the risk, its severity, and mitigation for each identified
risk. Invite stakeholders and evaluate how to proceed before merging.

- [ ] [See some risk
examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx)
- [ ] ...
2025-06-16 19:36:47 +02:00
Cauê Marcondes
36c31d600a
[APM] Unified (APM/OTel) Trace waterfall (#222569)
closes https://github.com/elastic/kibana/issues/221032
closes https://github.com/elastic/kibana/issues/221031

New trace waterfall location:
`public/components/shared/trace_waterfall/index.tsx`

Pending items (not done on this PR):
- [ ] Add marks (non-blocking)
- [ ] Add errors count per trace node (non-blocking)
- [ ] Paginate trace fetching (non-blocking)
- [ ] Add span links (non-blocking)
- [x] Truncate item label with ellipsis
- [x] Remove vertical scroll in narrow view (caused by wrapped duration
text?)
- [ ] Remove left side gap and indentation? (FocusedTraceWaterfall only)
- [ ] Broken on mobile (UnifiedTraceWaterfall only) (non-blocking)


This PR creates a new trace waterfall that must work with both APM and
unprocessed OTel documents. It follows this simple interface to create
the waterfall:
```
export interface TraceItem {
  id: string;
  timestamp: string;
  name: string;
  traceId: string;
  duration: number;
  hasError?: boolean;
  parentId?: string;
  serviceName: string;
}
```

How to test it:
```
yarn storybook apm
```

Some examples have been created under `UnifiedTraceWaterfall` folder:

<img width="288" alt="Screenshot 2025-06-05 at 13 56 32"
src="https://github.com/user-attachments/assets/7c122364-74d8-4c4c-842f-b91c4b97fc57"
/>

---

<img width="1068" alt="Screenshot 2025-06-05 at 13 57 46"
src="https://github.com/user-attachments/assets/5d482326-55b7-4328-a0ce-de1f4760673e"
/>
<img width="1052" alt="Screenshot 2025-06-05 at 13 58 01"
src="https://github.com/user-attachments/assets/91e16223-8e4c-456f-a812-ca2fe338380e"
/>
<img width="1047" alt="Screenshot 2025-06-05 at 13 58 09"
src="https://github.com/user-attachments/assets/c027f074-32b4-41ad-9140-acbc401b8140"
/>

Traces in Discover with Otel documents:
<img width="691" alt="Screenshot 2025-06-05 at 15 07 23"
src="https://github.com/user-attachments/assets/e20448b5-4a7e-43a4-bef1-bc6da2354c94"
/>
<img width="694" alt="Screenshot 2025-06-05 at 15 07 44"
src="https://github.com/user-attachments/assets/f29572e4-98f6-41c2-bb5f-51948c29288f"
/>

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Milosz Marcinkowski <38698566+miloszmarcinkowski@users.noreply.github.com>
Co-authored-by: Milosz Marcinkowski <milosz.marcinkowski@elastic.co>
Co-authored-by: Katerina <kate@kpatticha.com>
2025-06-16 19:28:57 +02:00
Søren Louv-Jansen
cb564ebf9b
[Obs AI Assistant] Simplify visibility (#223361)
Simplify `FunctionVisibility` to only two possible states: `internal`
and `all`

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
2025-06-16 19:00:33 +02:00
Nathan Reese
e2293f9f87
[dashboard] remove persistable state service from embeddable public start contract (#223149)
Closes https://github.com/elastic/kibana/issues/223170
Closes https://github.com/elastic/kibana/issues/223168

PR does the following:
* Removes `injectReferences` from `loadDashboardState`
* `type` and `id` are populated from matching panelRef server side with
dashboard api transform.
* Dynamic action `inject` is run during embeddable bootstrapping as part
of `initializeEmbeddableDynamicActions`.
* Removes `extractReferences` from dashboard `getSerializedState`
    * extracts panelRef in `layoutManager.serializeLayout`
    * Dynamic action `extract` is run during `embeddable.serializeState`
* Updates embeddable implementations that use
`initializeEmbeddableDynamicActions` to serialize dynamic action state
with references in `serializeState`
* Removes `PersistableStateService` from `EmbeddableStart` contract
* Moves `embeddable.common` `PersistableStateService` code to
`embeddable.server`

The PR is all ready large, so the following TODOs will be addressed in
follow on work
* Move `embeddable_enhanced` plugin to package. 
* Clean-up dashboard/common folder, moving
src/platform/plugins/shared/dashboard/common/dashboard_container/persistable_state/dashboard_container_references.ts
and
src/platform/plugins/shared/dashboard/common/dashboard_saved_object/persistable_state/dashboard_saved_object_references.ts
functionality to server folder. The plan will be to break these files
into `inject_references` and `extract_references`.

### Embeddable owner test instructions
* open dashboard with panel type and drilldown. Verify drilldown works
as expected
* Create new dashboard with panel type and drilldown. Save dashboard.
Open dashboard and verify drilldown works as expected.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
2025-06-16 10:40:35 -06:00
Larry Gregory
39818955b9
Remove tech preview designation from session invalidation API (#224076)
## Summary

Removes the tech preview designation from the session invalidation API.

Resolves https://github.com/elastic/kibana/issues/224070

## Release Note
The Session Invalidation API is now marked as Stable.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
2025-06-16 18:30:51 +02:00
Joe Reuter
a8b2ac6c48
🌊 Streams: Prevent concurrent access (#222961)
This PR guards changes to the streams state that go through
`State.attemptChanges` via the newly introduced lock manager.

If two requests are happening at the same time, one of them now fails
with a 409.

## Concerns

* Lock expiry is 30s for now - is this too little? Should be good enough
for now, maybe we need to reconsider once we introduce the bulk api
* This is only guarding changes that go through the `State` class - some
things like queries and dashboards do not, so they can still be subject
to race conditions. We could sprinkle more locks over the code base, but
I would like to solve this by moving them into `State` as well, that
seems like the cleaner approach, even though a bit more effort
* Biggest question - on this PR the concurrent request fails directly
with a 409. Is this OK or should it wait and retry a couple times? I'm
in favor of starting like this and seeing if this is actually a problem.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Kevin Lacabane <kevin.lacabane@elastic.co>
2025-06-16 17:52:26 +02:00
Mark Hopkin
b08d2284a1
[Entiyt Analytics] Do not run migration tests in MKI (#224037)
## Summary

These tests rely on having system indices superuser permissions to run,
causing them to break in MKI.
2025-06-16 10:31:01 -05:00
Ania Kowalska
beaf682a1c
[OneDiscover][Tabs] Improve naming of new tabs (#223216)
## Summary

Closes #221607 

Improves naming of new tabs, so instead of determining number in tab
name as `tab count + 1` we now check the highest existing number on
default tab and add +1.

**Possible improvements:**
This logic is very similar to `onDuplicate` function, which lives in
`src/platform/packages/shared/kbn-unified-tabs/src/components/tabbed_content/tabbed_content.tsx`.
It may be worth to make it more DRY, I'm open for creating a new ticket
for this and handling it, if we agree on refactor. Or to handle it
within this PR.

My rough idea was to add a parameter to `createTabItem` which tells us
if we duplicate an item or not. If so, we should use a logic and regexes
similar to `onDuplicate` function, otherwise logic and regexes from this
PR. It adds `isDuplicate` parameter though in couple different places
causing prop drilling, so I hesitated with taking this decision on my
own.

**EDIT**
Created a new issue for extracting common parts [[OneDiscover][Tabs]
Extract common parts in creating and duplicating tabs
label](https://github.com/elastic/kibana/issues/223899#top)



### Checklist

Check the PR satisfies following conditions. 

Reviewers should verify this PR satisfies this list as well.

- [ ] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [ ] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)
- [ ] This was checked for breaking HTTP API changes, and any breaking
changes have been approved by the breaking-change committee. The
`release_note:breaking` label should be applied in these situations.
- [ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
- [ ] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)

### Identify risks

Does this PR introduce any risks? For example, consider risks like hard
to test bugs, performance regression, potential of data loss.

Describe the risk, its severity, and mitigation for each identified
risk. Invite stakeholders and evaluate how to proceed before merging.

- [ ] [See some risk
examples](https://github.com/elastic/kibana/blob/main/RISK_MATRIX.mdx)
- [ ] ...
2025-06-16 17:05:28 +02:00
Ania Kowalska
adffdde56d
[Discover] SCSS to Emotions migration part 3/4 (#222947)
## Summary

Parent issue: [[DataDiscovery] Replace SCSS with
CSS-in-JS](https://github.com/elastic/kibana/issues/209807#top)

Followed [Emotion standards
guide](https://docs.google.com/document/d/1CPflY8yCc3lZDg2BQkaMTgIkZlqiAEyMcAAvZbsjcTc/edit?pli=1&tab=t.0#heading=h.4zj1jq66y5an)

Part 3 of SCSS -> Emotion migration. Files included:

### Part 3
- `src/platform/plugins/shared/field_formats/public/index.scss`
-
`src/platform/plugins/shared/field_formats/public/lib/content_types/_html_content_type.scss`
-
`src/platform/plugins/shared/field_formats/public/lib/content_types/_index.scss`
-
`src/platform/plugins/shared/field_formats/public/lib/converters/_index.scss`
-
`src/platform/plugins/shared/field_formats/public/lib/converters/_string.scss`
-
`src/platform/plugins/shared/unified_doc_viewer/public/components/doc_viewer_source/source.scss`
-
`src/platform/plugins/shared/unified_doc_viewer/public/components/doc_viewer_table/table.scss`
-
`src/platform/plugins/shared/unified_doc_viewer/public/components/json_code_editor/json_code_editor.scss`
2025-06-16 17:04:47 +02:00
Tiago Costa
472d519d17
chore(NA): bump sass-embedded version to v1.79.6 (#223995)
Closes https://github.com/elastic/kibana/pull/193953

upgrades sass-embedded version into a more recent one.
2025-06-16 16:00:39 +01:00
Kevin Delemme
21ae3387e6
feat(streams): description (#222694)
## Summary
Resolves https://github.com/elastic/streams-program/issues/292

This PR shows the streams description below its name using an InlineEdit
component.

I had to pass the refreshDefinition function in the tabs/dashboard and
use it whenever we update the list of dashboards since I had an issue
with using the outdated definition in case we updated the dashboards
list without fully refreshing the page.




https://github.com/user-attachments/assets/2e742263-a9d1-447a-9222-4b2c33d79958

---------

Co-authored-by: Joe Reuter <johannes.reuter@elastic.co>
2025-06-16 10:56:40 -04:00
Charis Kalpakis
8b9c27e80b
[ska][x-pack] copy configs and ftr_content_provider under x-pack/platform/test/functional 2025-06-16 17:47:02 +03:00
Elena Stoeva
5c0b6b0fe7
[Watcher] Revert back to using .watches system index (#223898)
Fixes https://github.com/elastic/kibana/issues/221820
Fixes https://github.com/elastic/kibana/issues/220879

## Summary

This PR reverts https://github.com/elastic/kibana/pull/204296 and
https://github.com/elastic/kibana/pull/218853 as these PRs caused issues
in the UI due to limitations in the Query Watches API. Therefore, we are
temporarily reverting back to fetching watches through the `.watches`
system index until we have better support from the Query Watches API.

**How to test:**
1. Start Es with `yarn es snapshot --license=trial` and Kibana with
`yarn start` (no need to test in serverless as Watcher is not available
there.
2. Navigate to Stack Management -> Watcher and create multiple watches
(the more, the better). Make sure you create watches of different types
(advanced/json or threshold), watches with or without names, etc. There
are different watches and use cases described in the
[documentation](https://www.elastic.co/docs/explore-analyze/alerts-cases/watcher).
Also, adding sample data sets is helpful so that you can get watches to
execute and have values under the "Condition last met" and "Last
checked" columns.
3. After creating various watches, open the table with watches and make
sure that all functionalities work correctly. For example:
- All watches are displayed, check with >10 watches and different page
sizes.
- Sorting works for all columns.
- Search bar works as expected and searching by partial id is supported.
- Deleting watches updates the table correctly.


https://github.com/user-attachments/assets/d0da9c24-7389-481d-8a16-a0d01bda0e80

## Release notes:
This update resolves multiple issues in Watcher UI that were introduced
in 8.18.0, 8.18.1, 9.0.0, and 9.1.0, including the table not displaying
more than 10 watches, an error banner appearing unexpectedly in certain
scenarios, and the search bar functionality not working as expected.
2025-06-16 15:26:24 +01:00
Joe Reuter
dad316c894
🌊 Streams: Use ES implementation for normalization (#222970)
This PR removes the painless implementation of log document
normalization and switches to the Elasticsearch version which is meant
as the source of truth.

This shouldn't change behavior at all.
2025-06-16 15:58:05 +02:00
David Olaru
51a2689aa1
[Scout] Test config distribution system (#221739)
## Summary

### Test track
This is an entity that offers an easy way to distribute test loads to
run in parallel by assigning them to lanes. The main metric used to
determine on which lane of a test track a test load should go is
*estimated runtime*.

Other than load routing functions, the track itself doesn't hold any
logic that pertains to the distribution strategy. In the current
implementation, you can:
- add new lanes
- add a load to a new lane
- add a load to a lane based on it's current capacity

The test track also offers an easy way to serialise the specification,
which holds all relevant information that describes how the load is
distributed across lanes, along with some useful stats about the lanes
and the combined runtime.

Notes:
- A lane's capacity is represented by the difference between the current
estimated runtime and the target runtime
- If a lane's capacity has been reached or exceeded, the lane status
becomes `closed`
- If a lane's expected runtime exceeds the target runtime, the lane is
considered **congested**

### Test config stats
By querying Scout test event data collected from previous runs, we can
gather knowledge about each individual test config duration which is
crucial when deciding how we distribute the test loads to run in
parallel.

The following duration aggregations are recorded when test config stats
are collected: `avg`, `median`, `95th percentile`, `99th percentile`,
`max`.

The `95th percentile` value is what's currently used as the estimated
runtime.

### CLI: `scout update-test-config-stats`
Used to fetch the latest test config stats from Scout test events stored
in an Elasticsearch instance and store them locally under
`.scout/test_config_stats.json`.

This assumes that the test events used to calculate the stats have been
collected from Buildkite.

### CLI: `scout create-test-track`
Given a list of test config manifests, it distributes the enabled
configs on a test track and outputs the track specification to a file.

The estimated runtime for each config is determined from the test config
stats stored under `.scout/test_config_stats.json`.

The _target runtime_ of the track and _maximum lane count_ are
configurable to provide some flexibility depending on the use case.

If stats for a config are not available, the estimated runtime will
default to the target runtime of the track, effectively placing the
config on a separate lane, if the maximum lane count hasn't been already
reached.

#### Distribution strategy
- sort all test loads in descending order based on estimated runtime
- assign each load to the least loaded lane
- open a new lane no open lanes are available or adding it to an
existing lane would lead to congestion

This strategy is fairly basic, but it's pretty effective. It prioritises
maximum lane saturation and avoids lane congestion.

#### Example usage
Distribute stateful configs on a test track
```shell
node scripts/scout.js create-test-track \
  --configManifest $(echo .buildkite/*_stateful_configs.yml | sed 's/ / --configManifest /g')
```

---------

Co-authored-by: Cesare de Cal <cesare.decal@elastic.co>
2025-06-16 15:57:00 +02:00
Angela Chuang
ed9f4e9a64
[Security Assistant] EIS usage callout (#221566)
## Summary
https://github.com/elastic/security-team/issues/12656
https://github.com/elastic/kibana/pull/220782/files#


To test:
1.
https://p.elstc.co/paste/w06HF7Yw#2tr6JjZXmUbjQ6TQdpgdenH4YOjiWdAoHCZ3OpRi5JG
2. locally:

```
export VAULT_ADDR=https://secrets.elastic.co:8200/
vault login --method=oidc
node scripts/eis.js
```

Callouts will not appear again once dismissed. Please clear the local
storage if you want them to show up again.

<img width="2557" alt="Screenshot 2025-05-29 at 15 53 21"
src="https://github.com/user-attachments/assets/506925cb-5bce-4a66-918e-cd9e000c7088"
/>



onboarding hub:
<img width="2559" alt="Screenshot 2025-05-29 at 09 32 14"
src="https://github.com/user-attachments/assets/4c8b99e5-156e-4062-95a9-fa45c101b858"
/>

Assistant:
<img width="1282" alt="Screenshot 2025-06-11 at 15 16 09"
src="https://github.com/user-attachments/assets/30d47a05-ded1-4c3e-9540-6ad97fda0a8b"
/>

Conversation:
<img width="674" alt="452997822-5c0b3933-b253-474e-92a5-d8793ebff819"
src="https://github.com/user-attachments/assets/97506996-9a85-45bb-a728-79df37bd592e"
/>

Integration:
<img width="2559" alt="Screenshot 2025-05-28 at 21 28 11"
src="https://github.com/user-attachments/assets/ec564dac-2aed-4ac5-ad2c-67728d6f3eda"
/>

Attack Discovery:
<img width="2560" alt="Screenshot 2025-06-11 at 15 35 08"
src="https://github.com/user-attachments/assets/9816fc43-0e6e-40b2-862b-82673330c4da"
/>


```
feature_flags.overrides:
  securitySolution.attackDiscoveryAlertsEnabled: true
  securitySolution.assistantAttackDiscoverySchedulingEnabled: true
```
<img width="2560" alt="Screenshot 2025-06-11 at 15 30 53"
src="https://github.com/user-attachments/assets/7089626f-a416-4260-92f0-1be3f06cf5d3"
/>



Connectors:
<img width="2559" alt="Screenshot 2025-06-10 at 11 15 41"
src="https://github.com/user-attachments/assets/74773473-ff1c-41c1-bdd5-fe6e64b9a497"
/>




### Checklist

Check the PR satisfies following conditions. 

Reviewers should verify this PR satisfies this list as well.

- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: florent-leborgne <florent.leborgne@elastic.co>
Co-authored-by: Viduni Wickramarachchi <viduni.ushanka@gmail.com>
2025-06-16 15:35:35 +02:00
Gergő Ábrahám
28c230d587
[EDR Workflows] Add dns event collection for macOS for Elastic Defend (#223566)
## Summary

Adds `DNS` to Defend policy config:
<img width="952" alt="image"
src="https://github.com/user-attachments/assets/de5aabe2-544a-49ae-82c2-59f9ffbca8c4"
/>

There is no migration for existing policies.

For new policies, it is enabled by default for
- Complete EDR
- Data Collection

and disabled for other configs.


### Checklist

Check the PR satisfies following conditions. 

Reviewers should verify this PR satisfies this list as well.

- [x] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios

---------

Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
2025-06-16 15:25:47 +02:00
Damian Polewski
77038d35c3
[ES UI Shared][Ingest Pipelines] Fix missing title for API Request flyout in Ingest Pipelines > Edit pipeline page (#223563)
Closes #217963

This PR fixes an issue where API Request flyout in Ingest Pipelines >
New pipeline page is missing title.
2025-06-16 15:24:44 +02:00
Umberto Pepato
73a2469bff
[ResponseOps][MaintenanceWindows] Fix startDate not forwarded to custom recurrence component (#223949)
## Summary

- Forwards `startDate` correctly to the `CustomRecurringSchedule`
component. The missing prop caused the monthly custom frequency
sub-options to not show up.
- Fixes the `CustomRecurringSchedule` component type to correctly
reflect the required prop.
- Removes the `custom-recurring-form` data test subject from the
`<CustomRecurringSchedule>` JSX tag. The test subject wasn't forwarded
to any DOM element, but the only test with an assertion using that test
subject was passing because it was checking its absence
(`not.toBeInTheDocument()`).

## Verification steps

1. Open the Maintenance Window creation page
2. Toggle "Repeat" on
3. In the recurrence form, check that all the custom frequencies work,
showing the correct sub-options
2025-06-16 14:37:01 +02:00
Ania Kowalska
d017a33f99
[Discover Tabs] Change default tab naming (#223195)
## Summary

Closes #217627 

This PR:
- changes tab name truncation to middle truncation
- changes default tab naming from "Untitled Session" to "Untitled"
<img width="1067" alt="Screenshot 2025-06-10 at 11 30 42"
src="https://github.com/user-attachments/assets/d45c078b-0c90-4459-8b54-4e9faaa996a6"
/>



### Checklist

Check the PR satisfies following conditions. 

Reviewers should verify this PR satisfies this list as well.

- [ ] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)
- [ ] This was checked for breaking HTTP API changes, and any breaking
changes have been approved by the breaking-change committee. The
`release_note:breaking` label should be applied in these situations.
- [ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
- [x] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)

---------

Co-authored-by: Davis McPhee <davis.mcphee@elastic.co>
2025-06-16 12:45:40 +02:00
Alejandro García Parrondo
1a842cbbc0
[Discover] Remove actions header internal padding (#223175) (#223208)
## Summary

Closes https://github.com/elastic/kibana/issues/223175

Removes some internal padding that was added to the actions header - it
causes the whole header style to break.

| Before | After |
|--------|------|
|
![image](https://github.com/user-attachments/assets/3fcdfbc9-1746-421e-8a43-977a3a519c17)
|
![image](https://github.com/user-attachments/assets/06cd1190-4bdc-4f3c-9ed4-1f53b52829a3)
|
2025-06-16 12:42:57 +02:00
Ahmad Bamieh
a77f6f0cc9
Remove unnecessary try catch in the APM user filters (#224014)
## Summary

Improves the IF statement to ensure that we are dealing with an object
with loopable keys and remove the try-catch. If not loopable, we might
want to remove the user context entirely (or replace it with a known
object { id: '[INVALID]' }) since it might lead to APM traces being
discarded due to invalid user context.

closes https://github.com/elastic/kibana/issues/219095
2025-06-16 03:28:40 -07:00
Alejandro Fernández Haro
0f3726bc54
fix(): inconsistent page_url between refresh and navigations (#224006) 2025-06-16 11:43:10 +02:00
mohamedhamed-ahmed
7a473cb4e0
[One Discover] Fix Alerting menu visibility issue (#223054)
## Summary

Closes https://github.com/elastic/kibana/issues/223007

### This PR fixes a couple of bugs in the visibility of the Alert Top
Nave menu item:

**1. When the user is in Classic space with <ins> no rule type
privileges </ins> the `Alert` top nav menu item should be hidden**

- Only `Discover` _**All**_ Feature Privilege

<img width="465" alt="Screenshot 2025-06-11 at 11 01 03"
src="https://github.com/user-attachments/assets/063a01b1-16a5-4ee1-b981-a2d4b93c08ac"
/></br></br>


**2. When a user has <ins> only `SLO` </ins> privilege the menu should
be shown with only SLO entry.**
- `Discover` & Observability `SLO` _**All**_ Feature Privilege
<img width="532" alt="Screenshot 2025-06-11 at 11 00 31"
src="https://github.com/user-attachments/assets/91f48791-28b0-48ce-b7fa-f1c8139556dd"
/></br></br>

**3. When the user has <ins> no `SLO` </ins> privilege, the `SLO` entry
should be hidden**
- `Discover` & Observability `Logs` _**All**_ Feature Privilege
<img width="518" alt="Screenshot 2025-06-11 at 11 01 34"
src="https://github.com/user-attachments/assets/c6df8a7d-c35b-43f0-be81-84ca3ef0b2e4"
/></br></br>

4. **When the user has access to <ins> only manage alerts </ins> without
specific rule type, the `Manage alerts` entry should be shown.**
- `Discover` & Security `Security` _**All**_ Feature Privilege in
**_Classic_** navigation
<img width="509" alt="Screenshot 2025-06-11 at 11 02 59"
src="https://github.com/user-attachments/assets/b5c370a6-f346-4bad-a8bd-d19fa6c95c76"
/>

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
2025-06-16 10:45:24 +02:00
Georgiana-Andreea Onoleață
e987cdbb55
[ResponseOps] Check if we override EuiButton & EuiFilter styles (#222528)
Closes https://github.com/elastic/kibana/issues/220464

## Summary

As part of the EUI button style updates, I reviewed the RO files for any
CSS class overrides affecting `euiButton` and `euiFilter` components. I
found some custom CSS overrides and I was able to safely remove them.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
2025-06-16 11:35:15 +03:00
Kibana Machine
b3da573631
[Console] Update console definitions (main) (#224011)
This PR updates the console definitions to match the latest ones from
the @elastic/elasticsearch-specification repo.
2025-06-16 10:27:57 +02:00
Kibana Machine
295203371f
[api-docs] 2025-06-16 Daily api_docs build (#224013)
Generated by
https://buildkite.com/elastic/kibana-api-docs-daily/builds/1105
2025-06-16 08:09:46 +02:00
Kibana Machine
951bc75b27
[api-docs] 2025-06-15 Daily api_docs build (#223997)
Generated by
https://buildkite.com/elastic/kibana-api-docs-daily/builds/1104
2025-06-15 08:13:35 +02:00
Nick Peihl
4d3dec0b90
[Dashboards as Code] Change access to dashboard route endpoints to internal (#223262)
Changes the dashboard endpoint routes from public to internal as they
are still unreleased.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
2025-06-14 09:47:01 -04:00
Kibana Machine
f099dd7346
[api-docs] 2025-06-14 Daily api_docs build (#223989)
Generated by
https://buildkite.com/elastic/kibana-api-docs-daily/builds/1103
2025-06-14 08:20:20 +02:00
Dominique Clarke
f15d325e3c
[Observability] [Serverless] Introduce custom roles (#219861)
## Summary

Closes https://github.com/elastic/observability-dev/issues/4539
Fixes https://github.com/elastic/kibana/issues/221035

Enables custom roles for Observability projects in serverless.

The following is a summary of the changes:

## Feature renaming

1. Renamed `Uptime and Synthetics` to `Synthetics`
2. Renamed `APM and User Experience` to `Applications`
3. Renamed `Metrics` to `Infrastructure`

## Category reassignment

1. Changed `Dashboard` category from `Analytics` to `Observability` 
2. Changed `Discover` category from `Analytics` to `Observability`
3. Changed `ML` category from `Analytics` to `Observability`

## Feature hiding

1. Hides the `Stack Alerts` feature.
2. Provides backwards compatibility for alerts created via Stack Alerts.
This enables our users to import rules created within Stack Alerts and
expect to see them in the Observability rules table.

## Navigation updates

1. Adds a `Custom Roles` link under the `Access` section in the
management navigation
2. Adds a `Manage Organization Members` link under the `Access` section
in the management navigation
3. Removes the `Users and Roles` link from the navigation footer (in
favor of the `Manage Organization Members link)

## Bug fixes

1. Fixes a bug where the `Alerts` link was not shown for Synthetics only
user (in stateful and serverless)
2. Fixes a bug where the `Alerts` link was not shown for Logs only user
(in stateful and serverless)

## Alert Override Removal

In the alerting framework, each rule is assigned a `consumer` value.
This `consumer` value changes depending on where the rule is created in
Kibana. However, in serverless we introduced an override that caused the
`consumer` value to be `Observability` in nearly every case. This logic
branched from stateful causing complexity and a large mental burden for
our engineers. Ultimately, this override became the source of bugs,
uncertainty, and unintended user experiences. Because of this, we've
removed this overrides.

If we kept this override, it would have the unfortunate side effect of
making all rules created in serverless visible from all custom roles (an
APM only user would have been can see Synthetics rules, and vice
versus). To make things more unpredictable, when users import their
rules from stateful the behavior would be different (access would be
properly mapped to the specific feature).

To address these specific user experience issues, and remove the source
of complexity, branching logic, and bugs, we removed this override logic
and restored the rule access behavior to match with stateful.

We did this while introducing backwards compatibility logic, ensuring
rules created in earlier versions of an oblt stateful cluster continue
to work and are accessible by a user with the right role access.

# Testing

1. Run local ES
```
yarn es serverless --projectType=oblt -E xpack.security.authc.native_roles.enabled=true    
```

2. Run local Kibana
```
yarn start --serverless=oblt --xpack.security.roleManagementEnabled=true --xpack.cloud.users_and_roles_url="https://test_users_and_roles_url"
```
3. Login to Kibana with the admin role. Navigate to the Custom Roles
page via the management navigation.
4. Create a custom role 
5. Log out of Kibana
6. Log back in with your custom role. You can do so by typing the custom
role name into the mock saml auth
<img width="460" alt="Screenshot 2025-05-22 at 9 23 13 PM"
src="https://github.com/user-attachments/assets/8e7f659b-5fe9-4e74-8c57-b420467d309e"
/>

---------

Co-authored-by: Jason Rhodes <jason.rhodes@elastic.co>
Co-authored-by: Faisal Kanout <faisal.kanout@elastic.co>
Co-authored-by: “jeramysoucy” <jeramy.soucy@elastic.co>
2025-06-13 22:03:49 -04:00
Tiago Costa
af7ed3f2a3
skip flaky suite (#208987) 2025-06-13 23:52:43 +01:00
Justin Kambic
188669773e
[Observability Alerting] Refetch alert detail rule data on edit flyout submit (#222118)
## Summary

Resolves #221428.

We noticed recently when we added the Investigation Guide that, if the
user edits the values in the guide using the edit flyout, the data on
the main page will not refresh when they submit.

This patch would add an `onUpdate` handler prop to the Header Actions
component that would enable it to trigger the refresh on the parent
component when the user submits the form in the edit flyout.

Example:


![20250530164523](https://github.com/user-attachments/assets/bd796824-e0d6-464d-b10e-89537d9b590e)
2025-06-13 21:58:44 +02:00
Ievgen Sorokopud
ed803078f9
[Attack Discovery][Scheduling] Add attack discovery alerts deduplication (#12790) (#223483)
## Summary

Main ticket ([Internal
link](https://github.com/elastic/security-team/issues/12790))

With these changes we add attack discovery alerts deduplication. Right
now identical attack are being stored within the alerts index and to
filter duplicates out we will use the next approach:

1. Each alert will have a ID generated as a SHA256 of attack attributes:
list of SIEM alerts IDs and space ID
2. After LLM generates attack discoveries we would check whether the
attack alert with the ID that describes the attack based on the rule
above exists in the alerts index
3. If such an alerts exists we would drop the generated discovery
4. Otherwise, we would proceed with storing the attack discovery as a
new alert

## NOTES

The feature is hidden behind the feature flag (in `kibana.dev.yml`):

```
feature_flags.overrides:
  securitySolution.attackDiscoveryAlertsEnabled: true
```
2025-06-13 21:35:52 +02:00
jennypavlova
2cfdc72ade
Use American spelling for more occurrences (followup) (#223950)
Follow up https://github.com/elastic/kibana/pull/223416
2025-06-13 19:54:17 +02:00
Justin Kambic
e37e7ad780
[Alerting] [Incident Management] Show cases on alert detail overview (#222903)
## Summary

Resolves #221835.

Adds case links to the Alert Details status bar.

When there is exactly 1 case, the status bar displays that case's name
and links to the case detail page.

When there is more than 1 case, an additional link with the text `+N
cases` will render as well. This link simply sends the user to the Cases
overview page. We need improved filtering to allow the URL to pass a
series of case IDs to pre-filter the overview page to make the user's
landing experience better when using this feature.

If there is no linked case, the case links will not display anything.

## TODOS

Best not to review this until these are checked off.

- [ ] If the user utilizes the _Add to case_ feature of the detail page,
the cases shown in the status bar do not update. We should fix this
before merging.
- [ ] We should also ensure we have additional unit tests included for
the locator code 100% coverage, as it's a little tricky.
- [ ] We need unit tests for the links hook.

## Testing this PR

- Create three alerts.
- Do not attach the first one to any cases. Go to the detail page and
see that there is no case-related info displayed in the status bar.
- Attach the second alert to a case, and go to its detail page. See that
the case is shown in the status bar like `Case: {caseName}`.
- Attach the third alert to more than one case. Go to the detail page
and verify that the two links, `caseName` and `+ N more` are displayed
and that they function properly.
- Repeat this testing for a kibana with and without a basePath, and
across spaces, to ensure the locators are working correctly.

<img width="779" alt="image"
src="https://github.com/user-attachments/assets/f135bd1e-a0dc-45f2-a003-a375f7589cf0"
/>
2025-06-13 19:53:05 +02:00
Kevin Delemme
b9a787520b
feat(slo): Enable history view for calendar based SLO (#223825) 2025-06-13 13:52:19 -04:00
Eleonora
dd1b7a4780
Remove is_correction and confidence attributes from kb entry (#222814)
## Summary

Closes https://github.com/elastic/kibana/issues/222555
Remove `confidence` and `is_correction` attributes from knowledge base
entry since they are no longer used.

### Checklist

Check the PR satisfies following conditions. 

Reviewers should verify this PR satisfies this list as well.

- [x] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)

---------

Co-authored-by: Søren Louv-Jansen <sorenlouv@gmail.com>
2025-06-13 16:46:05 +01:00
Ersin Erdal
f281a64499
Align connector usage reporting task config with the config in CP (#223232)
Since all the usage-api configs in CP has an `enabled` param, I'd like
to add that to connector usage reporting task as well. So we can
enable/disable the feature via config.

I got this PR deployed to serverless and was able to see a request to
usage-api:

<img width="1301" alt="Screenshot 2025-06-10 at 22 03 38"
src="https://github.com/user-attachments/assets/57c628fe-55a5-4d10-a2c0-82021be86fad"
/>
2025-06-13 17:33:43 +02:00
Davis McPhee
4a96118578
[Discover] Support context awareness across tabs (#220602)
## Summary

This PR adds support for context awareness across tabs, allowing each
tab to have a separate data source profile and set of document profiles,
while all sharing the same root profile. Supporting this involved a few
main changes:
- Split out a separate `ScopedProfilesManager` class from the main
`ProfilesManager` to support managing data source and document profiles
separately from the root profile.
- Add a `createScopedProfilesManager` method to `ProfilesManager` to
support instantiating separate `ScopedProfilesManager` instances, which
are stored per tab in `RuntimeStateManager`.
- Add a `ScopedProfilesManagerProvider` component to provide access to
the current `ScopedProfilesManager` instance wherever it's needed
(Discover, Single doc, Surrounding docs, and the Discover session
embeddable).

Since this PR adds yet another React context provider to Discover (can't
be provided via `RuntimeStateProvider` since `ScopedProfilesManager`
must be accessible outside of the main Discover app), a new
`DiscoverTestProvider` helper component has been introduced, rather than
copy/pasting `ScopedProfilesManagerProvider` throughout the Jest tests.
All existing Discover tests that rely on providers have also been
updated to instead use `DiscoverTestProvider`. This greatly simplifies
test setup by ensuring the correct providers are automatically rendered
based on the passed props. It's also much more future proof since any
changes to providers later on no longer require updating dozens of test
files, and instead only the shared `DiscoverTestProvider`.

There are some changes here that will require updates to the context
awareness docs, which will be handled as part of #217128.

Resolves #216488.

### Checklist

- [ ] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [x] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)
- [x] This was checked for breaking HTTP API changes, and any breaking
changes have been approved by the breaking-change committee. The
`release_note:breaking` label should be applied in these situations.
- [ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
- [x] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
2025-06-13 12:31:17 -03:00
Alexey Antonov
d44e332bce
fix: [Platform:Dashboards:DashboardEdit] Create tag workflow when saving Dashboard should announce error consistently to screen readers (#223105)
Closes: #151493

**Description**
Ensure consistent screen reader announcements for errors when saving a
Dashboard with the "Create Tag" workflow.

**Changes Made**
Added the required` aria-invalid` attribute at the appropriate location
to support screen reader error announcements.

**Notes**
The original issue suggested setting `aria-live="assertive"`, but this
may not be necessary. Based on our current accessibility guidelines,
using `aria-invalid` is sufficient and aligns with best practices.

**Screen**

<img width="1434" alt="image"
src="https://github.com/user-attachments/assets/afe1416b-34d2-46b5-88c4-fcac6a1f4c86"
/>
2025-06-13 18:05:33 +03:00
Justin Kambic
449c62f972
[Connectors] Apply autoFocus prop to cc and bcc elements on email connector form (#223828)
## Summary

Resolves #212419.

In the Synthetics plugin, we are referencing the action connector form
provided for Email. The a11y audit noted that the `Cc` and `Bcc`
features on this form break the focus flow and make the page
inaccessible. This patch will apply `autoFocus` to the combo box
elements that get rendered when these buttons are clicked, thus allowing
screen reader and keyboard-only users to navigate the UI properly.

**NOTE:** you may see an example of the failure on the linked issue. I
have re-created the flow using VoiceOver and keyboard navigation and
included a GIF of it below.

## Example


![20250612155139](https://github.com/user-attachments/assets/db8fff12-6fa7-43c8-889d-e05f2473f8e8)
2025-06-13 17:00:59 +02:00
Francesco Fagnani
123091cb83
[Incident Management] Render suggested dashboards (#223424)
This PR closes #221947.



https://github.com/user-attachments/assets/25beac10-5677-42ef-9544-b3ede0bf9fa1

The last part of the video is me trying to find the telemetry event
fired when clicking the button.

**Acceptance Criteria:**

- The list should appear on the Related Dashboards tab, under the Linked
Dashboards 
- Users should have the ability to add or "promote" a suggested
dashboard to the list of linked dashboards stored on this rule, in a
single click 
- We are collecting telemetry so that we know how many times users click
the button to promote a suggested dashboard to a linked dashboard 

---------

Co-authored-by: Dominique Belcher <dominique.clarke@elastic.co>
2025-06-13 16:31:21 +02:00
Kevin Delemme
58b764eb4b
fix(slo): bulk action popover (#223831) 2025-06-13 16:10:08 +02:00
Melissa Alvarez
0c9bbf3f5a
[ML] AI Connector creation UI: ensures error message is bubbled up in Kibana (#221859)
## Summary

Fixes https://github.com/elastic/kibana/issues/220145?reload=1

This PR adds error handling to the connector creation and updating
routes to ensure that useful error messages are bubbled up to Kibana.
Prior to this change, errors would be generic 500 errors with no useful
info on what was actually the issue.

There is also work underway right now for improving error messaging on
the backend so this will be even more useful when those changes are in.

Before:


![image](https://github.com/user-attachments/assets/82e57d47-284d-46d8-9ef3-25f273bb6b32)
(clicking See full error also just showed an internal server error)

After: 


![image](https://github.com/user-attachments/assets/970673f9-31b0-40af-932e-ea7eb70b48ac)



![image](https://github.com/user-attachments/assets/759734a0-5d56-458e-bcbd-6513eb4de63f)



### Checklist

Check the PR satisfies following conditions. 

Reviewers should verify this PR satisfies this list as well.

- [ ] Any text added follows [EUI's writing
guidelines](https://elastic.github.io/eui/#/guidelines/writing), uses
sentence case text and includes [i18n
support](https://github.com/elastic/kibana/blob/main/src/platform/packages/shared/kbn-i18n/README.md)
- [ ]
[Documentation](https://www.elastic.co/guide/en/kibana/master/development-documentation.html)
was added for features that require explanation or tutorials
- [ ] [Unit or functional
tests](https://www.elastic.co/guide/en/kibana/master/development-tests.html)
were updated or added to match the most common scenarios
- [ ] If a plugin configuration key changed, check if it needs to be
allowlisted in the cloud and added to the [docker
list](https://github.com/elastic/kibana/blob/main/src/dev/build/tasks/os_packages/docker_generator/resources/base/bin/kibana-docker)
- [ ] This was checked for breaking HTTP API changes, and any breaking
changes have been approved by the breaking-change committee. The
`release_note:breaking` label should be applied in these situations.
- [ ] [Flaky Test
Runner](https://ci-stats.kibana.dev/trigger_flaky_test_runner/1) was
used on any tests changed
- [ ] The PR description includes the appropriate Release Notes section,
and the correct `release_note:*` label is applied per the
[guidelines](https://www.elastic.co/guide/en/kibana/master/contributing.html#kibana-release-notes-process)

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
Co-authored-by: Elastic Machine <elasticmachine@users.noreply.github.com>
2025-06-13 08:02:46 -06:00
Marta Bondyra
650260b780
[Emotion] Enable speedy mode on dev (#222895)
## Summary

Following the advice from Matuesz, Emotion Maintainer, this PR enables
Emotion’s speedy mode (`insertRule` instead of `<style>` tag injection)
in the development environment.

## Why?
We recently investigated an issue related to [Emotion’s style tag
bloat](https://github.com/elastic/kibana/issues/218340). It turned out
that the slowdown only affects development — in production, Emotion uses
`insertRule`, which is significantly more performant.

In dev, Emotion injects a new <style> tag for each rule to improve DX,
but this can lead to major slowdowns, especially when rendering many
components. Speedy mode avoids that by using `insertRule`, which has
been measured to be even >10x faster.

### Why now?
The original reason for disabling speedy mode in dev (inability to
inspect/edit styles) is no longer a limitation in modern browsers
(Chrome, Firefox).

The slowdown in dev doesn’t reflect real prod performance, making it
harder to reason about actual bottlenecks. It also makes some of the
devs worried that Kibana performance is worse than it actually is on
prod.

### What's the degugging difference?


https://github.com/user-attachments/assets/58d911a7-e621-4144-8f1f-8b43101c44e2

The difference is that you can’t see the styles in the DOM or the
stylesheet (see the video), neither the source maps for styles. You can
still edit them in the dev tools, but clicking the source link takes you
to an empty style tag. I don’t see that as a big problem - styles are
still easy to find in the code since the files containing them are part
of the auto-generated classnames.

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
2025-06-13 15:54:24 +02:00