Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
f4de009
Migrate main to 3.6.0.0 (#196)
Desvelao Jun 22, 2026
2ce8d54
Rename Policy label to Space in promote entities (#236)
jcorredor-spec Apr 27, 2026
9caa4f8
Fixes variable name consistency in error notification (#245)
yenienserrano Apr 27, 2026
02a4bb5
Port PRs from main-backup-3.5.0 into main (#234)
Desvelao Apr 27, 2026
9333144
Support Revert bump functionality in wazuh-dashboard-security-analyti…
Ripdiegozz Apr 28, 2026
ec5ac98
Fix detector details race after creation and use GET-by-id for consi…
jcorredor-spec Apr 29, 2026
dff184e
Remove duplicated metadata fields for rules (#252)
Adman23 Apr 29, 2026
d0c2d90
Fix exception in decoder flyout (#271)
Desvelao May 4, 2026
c63f4ee
Add missing modifiers (#259)
FernandoCastilla May 4, 2026
bdb072a
Implement decoder schema (#247)
rodrigofez May 8, 2026
deda4f9
Implement Detector validations (#243)
jcorredor-spec May 8, 2026
9f921a5
Create KVDB by raw YAML (#241)
rodrigofez May 11, 2026
eacc890
Changed root decoder requirement on promotion to be reactive (#288)
Desvelao May 12, 2026
4ae4fb6
Create yaml editor for filters (#287)
Adman23 May 12, 2026
bef6ace
Implement decoder schema (#289)
rodrigofez May 12, 2026
b2bc086
[BUG] Rule details flyout [Object object] (#292)
rodrigofez May 13, 2026
4bd8d95
[BUG] Check field for filter as list is not supported (#293)
Ripdiegozz May 13, 2026
f5e80e2
Fix detectors table space column (#295)
rodrigofez May 13, 2026
7505dbd
Add space filter to detectors view (#302)
Ripdiegozz May 15, 2026
5d99c77
dedup Integration filter options (#303)
jcorredor-spec May 15, 2026
9dd3f6f
Move space selector to top-right in Log Test page (#299)
jcorredor-spec May 15, 2026
1c505ff
Filter data source to wazuh-events- indices in detector form (#306)
jcorredor-spec May 15, 2026
3ee7c19
feat: bump main
wazuhci May 21, 2026
52c8e01
feat: revert main references
wazuhci May 21, 2026
d2f1356
Added URL-based rule navigation from Log Test detection results (#308)
FernandoCastilla May 25, 2026
c3877f4
Fix tag references on bump when --tag is provided (#311)
Desvelao May 26, 2026
9ef380e
Enhance RuleContentViewer to safely load YAML for detection data (#315)
felipegonzalezmv May 28, 2026
dc8764a
Adapt create rule form to new MITRE ATT&CK object structure (#318)
rodrigofez Jun 3, 2026
b05c6c3
fix: show full documentation text in integration view (#322)
jcorredor-spec Jun 4, 2026
0a60bf2
feat: add Unclassified integration category (#320)
jcorredor-spec Jun 5, 2026
d2d7705
[BUG] Create detector button stays loading (#324)
Ripdiegozz Jun 5, 2026
f055ece
Remove link parsing from `documentation` property (#326)
rodrigofez Jun 8, 2026
0db7dd2
feat: bump main
wazuhci Jun 9, 2026
4c1a5ac
Revert "Bump main branch"
MARCOSD4 Jun 9, 2026
c13ad84
Update version stage from beta2 to beta3
MARCOSD4 Jun 9, 2026
520c519
Update wazuh revision from 02 to 03
MARCOSD4 Jun 9, 2026
f973303
Update version in CHANGELOG for Revision 03
MARCOSD4 Jun 9, 2026
a58150c
Add --tag parameter to bumper repository workflow (#332)
felipegonzalezmv Jun 10, 2026
738bdd1
Fix wrong editions on bumper for tag flag (#333)
Desvelao Jun 10, 2026
91e0e46
Fix log type reference in rule tables on detector creation (#336)
Desvelao Jun 10, 2026
1550515
Render null case (#338)
FernandoCastilla Jun 10, 2026
a58d2b7
Remove integration label formatting (#353)
Adman23 Jun 15, 2026
1ca12d8
Disable Active rules editing for Standard detectors (#348)
jcorredor-spec Jun 15, 2026
85acdac
Refactor rule integration title retrieval in detection rules table (#…
felipegonzalezmv Jun 15, 2026
bc7ce4a
Add warning to custom detectors using standard space rules (#349)
Ripdiegozz Jun 15, 2026
295e0a1
Optimize decoders, KVDBs and rules tables requests (#351)
rodrigofez Jun 15, 2026
184d15b
Add bump-issue-link paramenter to bumper workflow (#355)
Desvelao Jun 16, 2026
6c2f2b3
Optimize overview space card requests (#360)
rodrigofez Jun 19, 2026
5b36458
Filter detector data source by `wazuh-events-v5*` (#364)
Adman23 Jun 19, 2026
fdf1cf5
Optimize integration details requests (#361)
Ripdiegozz Jun 19, 2026
1c939c6
Respect dateFormat/dateFormat:tz advanced settings for UI dates (#362)
jcorredor-spec Jun 19, 2026
aea9fdb
feat: bump 5.0.0
wazuhci Jun 22, 2026
b781489
Migrate GitHub runners to AWS CodeBuild runners (#366)
yenienserrano Jun 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions .cypress/integration/1_detectors.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ const createDetector = (detectorName, dataSource, expectFailure) => {

fillDetailsForm(detectorName, dataSource, expectFailure);

cy.getElementByText('.euiAccordion .euiTitle', 'Selected detection rules (14)')
cy.getElementByText('.euiAccordion .euiTitle', 'Selected rules (14)') // Wazuh: rename 'Detection rules' to 'Rules'
.click({ force: true, timeout: 5000 })
.then(() => cy.contains('.euiTable .euiTableRow', getLogTypeLabel(cypressLogTypeDns)));

Expand Down Expand Up @@ -184,7 +184,7 @@ const createDetector = (detectorName, dataSource, expectFailure) => {
cy.validateDetailsItem('Detector name', detectorName);
cy.validateDetailsItem('Description', '-');
cy.validateDetailsItem('Detector schedule', 'Every 1 minute');
cy.validateDetailsItem('Detection rules', '14');
cy.validateDetailsItem('Rules', '14'); // Wazuh: rename 'Detection rules' to 'Rules'
cy.validateDetailsItem('Detector dashboard', 'Not available for this log type');

cy.wait(5000); // waiting for the page to be reloaded after pushing detector id into route
Expand Down Expand Up @@ -418,7 +418,7 @@ describe('Detectors', () => {
openDetectorDetails(detectorName);

editDetectorDetails(detectorName, 'Active rules');
cy.getElementByText('.euiText', 'Detection rules (14)');
cy.getElementByText('.euiText', 'Rules (14)'); // Wazuh: rename 'Detection rules' to 'Rules'

cy.getInputByPlaceholder('Search...').type(`${cypressDNSRule}`).pressEnterKey();

Expand All @@ -428,7 +428,7 @@ describe('Detectors', () => {
.find('.euiTableCellContent button')
.click();

cy.getElementByText('.euiText', 'Detection rules (13)');
cy.getElementByText('.euiText', 'Rules (13)'); // Wazuh: rename 'Detection rules' to 'Rules'
cy.getElementByText('button', 'Save changes').click({ force: true });
cy.urlShouldContain('detector-details').then(() => {
cy.getElementByText('.euiText', detectorName);
Expand Down
10 changes: 5 additions & 5 deletions .cypress/integration/2_rules.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ describe('Rules', () => {

// Check that correct page is showing
cy.waitForPageLoad('rules', {
contains: 'Detection rules',
contains: 'Rules', // Wazuh: rename 'Detection rules' to 'Rules'
});

getCreateButton().click({ force: true });
Expand Down Expand Up @@ -496,7 +496,7 @@ describe('Rules', () => {

// Check that correct page is showing
cy.waitForPageLoad('rules', {
contains: 'Detection rules',
contains: 'Rules', // Wazuh: rename 'Detection rules' to 'Rules'
});
});

Expand All @@ -520,15 +520,15 @@ describe('Rules', () => {
cy.wait('@getRules');

cy.waitForPageLoad('rules', {
contains: 'Detection rules',
contains: 'Rules', // Wazuh: rename 'Detection rules' to 'Rules'
});

checkRulesFlyout();
});

it('...can be edited', () => {
cy.waitForPageLoad('rules', {
contains: 'Detection rules',
contains: 'Rules', // Wazuh: rename 'Detection rules' to 'Rules'
});

cy.get(`input[placeholder="Search rules"]`).ospSearch(SAMPLE_RULE.name);
Expand Down Expand Up @@ -568,7 +568,7 @@ describe('Rules', () => {
submitRule();

cy.waitForPageLoad('rules', {
contains: 'Detection rules',
contains: 'Rules', // Wazuh: rename 'Detection rules' to 'Rules'
});

cy.wait('@getRules');
Expand Down
4 changes: 2 additions & 2 deletions .cypress/integration/3_alerts.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ describe('Alerts', () => {
// Confirm alert findings contain expected values
cy.get('tbody > tr').should(($tr) => {
expect($tr, `timestamp`).to.contain(date);
expect($tr, `detection`).to.contain('Detection rules');
expect($tr, `detection`).to.contain('Rules'); // Wazuh: rename 'Detection rules' to 'Rules'
expect($tr, `detector name`).to.contain(testDetector.name);
expect($tr, `log type`).to.contain(
`System Activity: ${getLogTypeLabel(testDetector.detector_type)}`
Expand Down Expand Up @@ -150,7 +150,7 @@ describe('Alerts', () => {
cy.get('[data-test-subj="alert-details-flyout"]').within(() => {
// Wait for findings table to finish loading
cy.wait(3000);
cy.contains('Detection rules');
cy.contains('Rules'); // Wazuh: rename 'Detection rules' to 'Rules'

// Click the details button for the first finding
cy.get('tbody > tr')
Expand Down
44 changes: 44 additions & 0 deletions .github/workflows/5_builderpackage_security_analytics_plugin.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# 📝 Based on: `5_builderprecompiled_base-dev-environment.yml`
#
# 📦 Manual Build Workflow for Wazuh Dashboard Security Analytics Plugin
#
# ⚡ Overview:
# This workflow builds and tests production-ready packages for Wazuh Dashboard Security Analytics plugin,
# either manually or triggered by other workflows.
#
# 🚀 Key Features:
# - 🖇️ Manual or Automated Builds: Supports manual execution or invocation from other workflows,
# specifying any valid code reference (branch, tag, or commit SHA).
# - 🏗️ Production-Ready Package Generation: Builds a production-ready package from the provided code reference.
# - 🌐 Reusable Build Environment: Reuses a preconfigured build environment, ensuring consistency and easier maintenance.
#

name: Build app package (on demand)

on:
workflow_call:
inputs:
reference:
required: true
type: string
description: Git reference (branch, tag, or commit SHA) to build from.
default: 5.0.0
workflow_dispatch:
inputs:
reference:
required: true
type: string
default: 5.0.0
description: Git reference (branch, tag, or commit SHA) to build from.

jobs:
# Build an app package from the given source code reference.
build:
name: Build app package
uses: ./.github/workflows/5_builderprecompiled_base-dev-environment.yml
with:
reference: ${{ inputs.reference }}
command: 'yarn build'
artifact_name: 'security-analytics-dashboards'
artifact_path: './wazuh-dashboard-security-analytics/build'
secrets: inherit
115 changes: 115 additions & 0 deletions .github/workflows/5_builderprecompiled_base-dev-environment.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,115 @@
# 📚 Base Workflow - Environment Setup and Command Execution
#
# ⚡ Overview:
# This workflow serves as a reusable base for other workflows, providing a
# standardized environment to execute custom commands (e.g., `yarn build`, `yarn test`)
# on source code fetched from a specified Git reference.
#
# 🚀 Key Features:
# - 💻 Docker-Based Environment Setup: Prepares a Docker environment with OpenSearch Dashboards or Kibana.
# - ⚙️ Custom Command Execution: Runs any specified command on the downloaded source code.
# - 📦 Artifact and Coverage Upload: Uploads build artifacts and test coverage results to GitHub when configured.
#
# 🔗 Designed for: Easy integration and reuse by other workflows.

name: Base workflow - Environment

on:
workflow_call:
inputs:
reference:
required: true
type: string
default: 5.0.0
description: Git reference (branch, tag, or commit SHA) to build from.
command:
required: true
type: string
default: 'yarn build'
description: Command to run in the environment.
docker_run_extra_args:
type: string
default: ''
description: Additional parameters for the docker run command.
required: false
artifact_name:
type: string
default: ''
description: Artifact name (will be automatically suffixed with .zip).
required: false
artifact_path:
type: string
default: ''
description: Folder to include in the archive.
required: false
notify_jest_coverage_summary:
type: boolean
default: false
required: false

jobs:
# Deploy the plugin in a development environment and run a command
# using a pre-built Docker image, hosted in Quay.io.
deploy_and_run_command:
name: Deploy and run command
runs-on: codebuild-github-actions-codebuild-runner-dashboard-amd-${{ github.run_id }}-${{ github.run_attempt }}
steps:
- name: Step 01 - Download the plugin's source code
uses: actions/checkout@v4
with:
repository: wazuh/wazuh-dashboard-security-analytics
ref: ${{ inputs.reference }}
path: wazuh-dashboard-security-analytics

# Fix source code ownership so the internal user of the Docker
# container is also owner.
- name: Step 02 - Change code ownership
run: sudo chown 1000:1000 -R wazuh-dashboard-security-analytics;

- name: Step 03 - Set up the environment and run the command
run: |
# Read the platform version from the package.json file
echo "Reading the platform version from the package.json...";
platform_version=$(jq -r '.opensearchDashboards.version | select(. != null)' wazuh-dashboard-security-analytics/package.json);
echo "Plugin platform version: $platform_version";

# Get Wazuh version and concatenate with platform version
wazuh_version=$(jq -r '.wazuh.version' wazuh-dashboard-security-analytics/package.json);
echo "Wazuh version: $wazuh_version";

# Concatenate versions in format: <Opensearch version>-<Wazuh version>
combined_version="${platform_version}-${wazuh_version}";
echo "Combined platform version: $combined_version";

# Up the environment and run the command
docker run -t --rm \
-e OPENSEARCH_DASHBOARDS_VERSION=${combined_version} \
-e GIT_REF=main \
-v `pwd`/wazuh-dashboard-security-analytics:/home/node/kbn/plugins/wazuh-dashboard-security-analytics \
${{ inputs.docker_run_extra_args }} \
quay.io/wazuh/osd-dev:${combined_version} \
bash -c '
yarn config set registry https://registry.yarnpkg.com;
cd /home/node/kbn/plugins/wazuh-dashboard-security-analytics && yarn && ${{ inputs.command }};
'
- name: Get the plugin version and and format reference name
run: |
echo "githubReference=$(echo ${{ inputs.reference }} | sed 's/\//-/g')" >> $GITHUB_ENV
echo "version=$(jq -r '.wazuh.version' $(pwd)/wazuh-dashboard-security-analytics/package.json)" >> $GITHUB_ENV
echo "revision=$(jq -r '.wazuh.revision' $(pwd)/wazuh-dashboard-security-analytics/package.json)" >> $GITHUB_ENV

- name: Step 04 - Upload artifact to GitHub
if: ${{ inputs.artifact_name && inputs.artifact_path }}
uses: actions/upload-artifact@v4
with:
name: ${{ inputs.artifact_name }}_${{ env.version }}-${{ env.revision }}_${{ env.githubReference }}.zip
path: ${{ inputs.artifact_path }}
overwrite: true

- name: Step 05 - Upload coverage results to GitHub
if: ${{ inputs.notify_jest_coverage_summary && github.event_name == 'pull_request' }}
uses: AthleticNet/comment-test-coverage@1.2.2
with:
token: ${{ secrets.GITHUB_TOKEN }}
path: ./wazuh-dashboard-security-analytics/target/test-coverage/coverage-summary.json
title: 'Code coverage (Jest)'
Loading