From 5bbc250263a7b2a20bfce6bca01619b231f37632 Mon Sep 17 00:00:00 2001 From: wazuhci <22834044+wazuhci@users.noreply.github.com> Date: Fri, 13 Feb 2026 17:23:33 +0000 Subject: [PATCH 1/2] feat: bump 4.14.5 --- .env | 6 +++--- .github/.goss.yaml | 2 +- .../workflows/Procedure_push_docker_images.yml | 4 ++-- CHANGELOG.md | 18 ++++++++++++++++++ README.md | 2 +- VERSION.json | 4 ++-- build-docker-images/README.md | 4 ++-- build-docker-images/build-images.sh | 4 ++-- docs/dev/build-image.md | 4 ++-- docs/dev/introduction.md | 2 +- docs/dev/setup.md | 6 +++--- docs/ref/Introduction/description.md | 6 +++--- docs/ref/Introduction/introduction.md | 4 ++-- docs/ref/configuration/configuration-files.md | 2 +- docs/ref/configuration/configuration.md | 2 +- .../getting-started/deployment/deployment.md | 6 +++--- docs/ref/getting-started/getting-started.md | 6 +++--- docs/ref/getting-started/requirements.md | 2 +- docs/ref/glossary.md | 6 +++--- multi-node/docker-compose.yml | 12 ++++++------ single-node/docker-compose.yml | 6 +++--- wazuh-agent/docker-compose.yml | 2 +- 22 files changed, 64 insertions(+), 46 deletions(-) diff --git a/.env b/.env index 11e36c30..e94695f3 100755 --- a/.env +++ b/.env @@ -1,6 +1,6 @@ -WAZUH_VERSION=4.14.4 -WAZUH_IMAGE_VERSION=4.14.4 +WAZUH_VERSION=4.14.5 +WAZUH_IMAGE_VERSION=4.14.5 WAZUH_TAG_REVISION=1 -FILEBEAT_TEMPLATE_BRANCH=4.14.4 +FILEBEAT_TEMPLATE_BRANCH=4.14.5 WAZUH_FILEBEAT_MODULE=wazuh-filebeat-0.5.tar.gz WAZUH_UI_REVISION=1 diff --git a/.github/.goss.yaml b/.github/.goss.yaml index f6685b98..5183daea 100644 --- a/.github/.goss.yaml +++ b/.github/.goss.yaml @@ -56,7 +56,7 @@ package: wazuh-manager: installed: true versions: - - 4.14.4 + - 4.14.5 port: tcp:1514: listening: true diff --git a/.github/workflows/Procedure_push_docker_images.yml b/.github/workflows/Procedure_push_docker_images.yml index 37b41fcd..286245b3 100644 --- a/.github/workflows/Procedure_push_docker_images.yml +++ b/.github/workflows/Procedure_push_docker_images.yml @@ -6,7 +6,7 @@ on: inputs: image_tag: description: 'Docker image tag' - default: '4.14.4' + default: '4.14.5' required: true docker_reference: description: 'wazuh-docker reference' @@ -38,7 +38,7 @@ on: inputs: image_tag: description: 'Docker image tag' - default: '4.14.4' + default: '4.14.5' required: true type: string docker_reference: diff --git a/CHANGELOG.md b/CHANGELOG.md index 774f5af5..fd17ff20 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,24 @@ # Change Log All notable changes to this project will be documented in this file. +## [4.14.5] + +### Added + +- None + +### Changed + +- None + +### Fixed + +- None + +### Deleted + +- None + ## [4.14.4] ### Added diff --git a/README.md b/README.md index 4ce0e2e1..a76a3e02 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ The `wazuh/wazuh-docker` repository provides resources to deploy the Wazuh cyber ## Branch Convention - `main`: Developing and testing of new features. -- `X.Y.Z`: Version-specific branches (e.g., `4.14.4`, `4.13.0`, etc.). +- `X.Y.Z`: Version-specific branches (e.g., `4.14.5`, `4.13.0`, etc.). ## Documentation diff --git a/VERSION.json b/VERSION.json index 04478604..a985f1f3 100644 --- a/VERSION.json +++ b/VERSION.json @@ -1,4 +1,4 @@ { - "version": "4.14.4", - "stage": "rc1" + "version": "4.14.5", + "stage": "alpha0" } diff --git a/build-docker-images/README.md b/build-docker-images/README.md index 1300b436..36d1fb87 100644 --- a/build-docker-images/README.md +++ b/build-docker-images/README.md @@ -19,7 +19,7 @@ Then execute: The script also allows to build images from other versions of Wazuh by using the `-v` or `--version` argument: ```bash -./build-images.sh -v 4.14.4 +./build-images.sh -v 4.14.5 ``` To get all the available script options use the -h or --help option: @@ -33,7 +33,7 @@ Usage: ./build-images.sh [OPTIONS] -f, --filebeat-module [Optional] Set Filebeat module version. By default 0.5. -r, --revision [Optional] Package revision. By default 1 -rg, --registry [Optional] Set the Docker registry to push the images. - -v, --version [Optional] Set the Wazuh version should be builded. By default, 4.14.4. + -v, --version [Optional] Set the Wazuh version should be builded. By default, 4.14.5. -m, --multiarch [Optional] Enable multi-architecture builds. -h, --help Show this help. diff --git a/build-docker-images/build-images.sh b/build-docker-images/build-images.sh index 197dc8eb..ffb4838e 100755 --- a/build-docker-images/build-images.sh +++ b/build-docker-images/build-images.sh @@ -8,11 +8,11 @@ # License (version 2) as published by the FSF - Free Software # Foundation. -IMAGE_TAG=4.14.4 +IMAGE_TAG=4.14.5 WAZUH_CURRENT_VERSION=$(curl --silent https://api.github.com/repos/wazuh/wazuh/releases/latest | grep '["]tag_name["]:' | sed -E 's/.*\"([^\"]+)\".*/\1/' | cut -c 2- | sed -e 's/\.//g') WAZUH_REGISTRY=docker.io -WAZUH_IMAGE_VERSION="4.14.4" +WAZUH_IMAGE_VERSION="4.14.5" WAZUH_TAG_REVISION="1" WAZUH_DEV_STAGE="" FILEBEAT_MODULE_VERSION="0.5" diff --git a/docs/dev/build-image.md b/docs/dev/build-image.md index 318e2fb6..3bf3ea67 100644 --- a/docs/dev/build-image.md +++ b/docs/dev/build-image.md @@ -13,7 +13,7 @@ This script initializes the environment variables needed to build each of the im The script allows you to build images from other versions of Wazuh, to do this you must use the -v or --version argument: ``` -$ build-docker-images/build-images.sh -v 4.14.4 +$ build-docker-images/build-images.sh -v 4.14.5 ``` To get all the available script options use the -h or --help option: @@ -26,7 +26,7 @@ Usage: build-docker-images/build-images.sh [OPTIONS] -d, --dev [Optional] Set the development stage you want to build, example rc4 or beta1, not used by default. -f, --filebeat-module [Optional] Set Filebeat module version. By default 0.5. -r, --revision [Optional] Package revision. By default 1 - -v, --version [Optional] Set the Wazuh version should be builded. By default, 4.14.4. + -v, --version [Optional] Set the Wazuh version should be builded. By default, 4.14.5. -h, --help Show this help. ``` \ No newline at end of file diff --git a/docs/dev/introduction.md b/docs/dev/introduction.md index ef041663..98459d44 100644 --- a/docs/dev/introduction.md +++ b/docs/dev/introduction.md @@ -1,6 +1,6 @@ # Development Guide - Introduction -Welcome to the Development Guide for Wazuh-docker version 4.14.4. This guide is intended for developers, contributors, and advanced users who wish to understand the development aspects of the Wazuh-Docker project, build custom Docker images, or contribute to its development. +Welcome to the Development Guide for Wazuh-docker version 4.14.5. This guide is intended for developers, contributors, and advanced users who wish to understand the development aspects of the Wazuh-Docker project, build custom Docker images, or contribute to its development. ## Purpose of This Guide diff --git a/docs/dev/setup.md b/docs/dev/setup.md index 5d839981..c69d9899 100644 --- a/docs/dev/setup.md +++ b/docs/dev/setup.md @@ -1,6 +1,6 @@ # Development Guide - Setup Environment -This section outlines the steps required to set up your local development environment for working with the Wazuh-Docker project (version 4.14.4). A proper setup is crucial for building images, running tests, and contributing effectively. +This section outlines the steps required to set up your local development environment for working with the Wazuh-Docker project (version 4.14.5). A proper setup is crucial for building images, running tests, and contributing effectively. ## Prerequisites @@ -26,12 +26,12 @@ Before you begin, ensure your system meets the following requirements: Follow these steps to prepare your development environment: 1. **Clone the Repository**: - Clone the `wazuh-docker` repository from GitHub. It's important to check out the specific branch you intend to work with, in this case, `4.14.4`. + Clone the `wazuh-docker` repository from GitHub. It's important to check out the specific branch you intend to work with, in this case, `4.14.5`. ```bash git clone [https://github.com/wazuh/wazuh-docker.git](https://github.com/wazuh/wazuh-docker.git) cd wazuh-docker - git checkout v4.14.4 + git checkout v4.14.5 ``` 2. **Verify Docker Installation**: diff --git a/docs/ref/Introduction/description.md b/docs/ref/Introduction/description.md index 66e7d3f5..fec5cace 100644 --- a/docs/ref/Introduction/description.md +++ b/docs/ref/Introduction/description.md @@ -1,6 +1,6 @@ # Reference Manual - Description -This section provides a detailed description of Wazuh-docker (version 4.14.4), its components, and its architecture when deployed using Docker containers. Understanding these aspects is key to effectively deploying and managing your Wazuh environment. +This section provides a detailed description of Wazuh-docker (version 4.14.5), its components, and its architecture when deployed using Docker containers. Understanding these aspects is key to effectively deploying and managing your Wazuh environment. ## What is Wazuh? @@ -18,7 +18,7 @@ Wazuh-docker is a project that provides Docker images and `docker compose` confi ## Core Components in Wazuh-Docker -The Wazuh-Docker project typically provides images for the following core Wazuh components, adapted for version 4.14.4: +The Wazuh-Docker project typically provides images for the following core Wazuh components, adapted for version 4.14.5: 1. **Wazuh Manager**: - The central component that collects and analyzes data from deployed Wazuh agents. @@ -28,7 +28,7 @@ The Wazuh-Docker project typically provides images for the following core Wazuh 2. **Wazuh Indexer**: - A highly scalable, full-text search and analytics engine. - Based on OpenSearch (or historically Elasticsearch), it stores and indexes alerts and monitoring data generated by the Wazuh manager. - - The Wazuh indexer container provides the data persistence layer for Wazuh alerts and events. For version 4.14.4, this is typically an OpenSearch-based component. + - The Wazuh indexer container provides the data persistence layer for Wazuh alerts and events. For version 4.14.5, this is typically an OpenSearch-based component. 3. **Wazuh Dashboard**: - A flexible visualization tool based on OpenSearch Dashboards (or historically Kibana). diff --git a/docs/ref/Introduction/introduction.md b/docs/ref/Introduction/introduction.md index 881f92f9..47da80b0 100644 --- a/docs/ref/Introduction/introduction.md +++ b/docs/ref/Introduction/introduction.md @@ -1,6 +1,6 @@ # Reference Manual - Introduction -Welcome to the Reference Manual for Wazuh-Docker, version 4.14.4. This manual provides comprehensive information about deploying, configuring, and managing your Wazuh environment using Docker. +Welcome to the Reference Manual for Wazuh-Docker, version 4.14.5. This manual provides comprehensive information about deploying, configuring, and managing your Wazuh environment using Docker. ## Purpose of This Manual @@ -44,4 +44,4 @@ This manual is structured to help you find information efficiently: - If you need to customize your deployment, refer to the [Configuration](configuration/configuration.md) section. - For specific terms or concepts, consult the [Glossary](glossary.md). -This manual refers to version 4.14.4 of Wazuh-Docker. Ensure you are using the documentation that corresponds to your deployed version. +This manual refers to version 4.14.5 of Wazuh-Docker. Ensure you are using the documentation that corresponds to your deployed version. diff --git a/docs/ref/configuration/configuration-files.md b/docs/ref/configuration/configuration-files.md index f13fafab..149dd0e3 100644 --- a/docs/ref/configuration/configuration-files.md +++ b/docs/ref/configuration/configuration-files.md @@ -29,4 +29,4 @@ ``` -Consult the official Wazuh documentation for version 4.14.4 for detailed information on all possible configuration parameters for each component. +Consult the official Wazuh documentation for version 4.14.5 for detailed information on all possible configuration parameters for each component. diff --git a/docs/ref/configuration/configuration.md b/docs/ref/configuration/configuration.md index b7c7be4d..e5579b2a 100644 --- a/docs/ref/configuration/configuration.md +++ b/docs/ref/configuration/configuration.md @@ -1,6 +1,6 @@ # Reference Manual - Configuration -This section details how to configure your Wazuh-Docker deployment (version 4.14.4). Proper configuration is key to tailoring the Wazuh stack to your specific needs, managing data persistence, and integrating with your environment. +This section details how to configure your Wazuh-Docker deployment (version 4.14.5). Proper configuration is key to tailoring the Wazuh stack to your specific needs, managing data persistence, and integrating with your environment. ## Overview of Configuration Methods diff --git a/docs/ref/getting-started/deployment/deployment.md b/docs/ref/getting-started/deployment/deployment.md index b0efaedb..2953a27d 100644 --- a/docs/ref/getting-started/deployment/deployment.md +++ b/docs/ref/getting-started/deployment/deployment.md @@ -1,6 +1,6 @@ # Reference Manual - Deployment -This section provides detailed instructions for deploying Wazuh-Docker (version 4.14.4) in various configurations. Choose the deployment model that best suits your needs, from simple single-node setups for testing to more robust multi-node configurations for production environments. +This section provides detailed instructions for deploying Wazuh-Docker (version 4.14.5) in various configurations. Choose the deployment model that best suits your needs, from simple single-node setups for testing to more robust multi-node configurations for production environments. ## Overview of Deployment Options @@ -24,11 +24,11 @@ Ensure you have: - Met all the [System Requirements](ref/getting-started/requirements.md). - Installed Docker and Docker Compose on your host(s). -- Cloned the `wazuh-docker` repository (version `4.14.4`) or downloaded the necessary deployment files. +- Cloned the `wazuh-docker` repository (version `4.14.5`) or downloaded the necessary deployment files. ```bash git clone [https://github.com/wazuh/wazuh-docker.git](https://github.com/wazuh/wazuh-docker.git) cd wazuh-docker - git checkout v4.14.4 + git checkout v4.14.5 ``` - Made a backup of any existing Wazuh data if you are migrating or upgrading. diff --git a/docs/ref/getting-started/getting-started.md b/docs/ref/getting-started/getting-started.md index 33090967..fd0034e5 100644 --- a/docs/ref/getting-started/getting-started.md +++ b/docs/ref/getting-started/getting-started.md @@ -1,6 +1,6 @@ # Reference Manual - Getting Started -This section guides you through the initial steps to get your Wazuh-docker (version 4.14.4) environment up and running. We will cover the prerequisites and point you to the deployment instructions. +This section guides you through the initial steps to get your Wazuh-docker (version 4.14.5) environment up and running. We will cover the prerequisites and point you to the deployment instructions. ## Overview @@ -27,11 +27,11 @@ Before diving into the deployment, please ensure you have reviewed: Verify that your host system has sufficient RAM, CPU, and disk space. Ensure Docker and Docker Compose are installed and functioning correctly. 2. **Obtain Wazuh-docker Configuration**: - You'll need the Docker Compose files and any associated configuration files from the `wazuh-docker` repository for version 4.14.4. + You'll need the Docker Compose files and any associated configuration files from the `wazuh-docker` repository for version 4.14.5. ```bash git clone [https://github.com/wazuh/wazuh-docker.git](https://github.com/wazuh/wazuh-docker.git) cd wazuh-docker - git checkout v4.14.4 + git checkout v4.14.5 # Navigate to the specific docker-compose directory, e.g., single-node or multi-node # cd docker-compose/single-node/ (example path) ``` diff --git a/docs/ref/getting-started/requirements.md b/docs/ref/getting-started/requirements.md index 3cac41c5..1c650f37 100644 --- a/docs/ref/getting-started/requirements.md +++ b/docs/ref/getting-started/requirements.md @@ -1,6 +1,6 @@ # Reference Manual - Requirements -Before deploying Wazuh-Docker (version 4.14.4), it's essential to ensure your environment meets the necessary hardware and software requirements. Meeting these prerequisites will help ensure a stable and performant Wazuh deployment. +Before deploying Wazuh-Docker (version 4.14.5), it's essential to ensure your environment meets the necessary hardware and software requirements. Meeting these prerequisites will help ensure a stable and performant Wazuh deployment. ## Host System Requirements diff --git a/docs/ref/glossary.md b/docs/ref/glossary.md index c7a6ba67..eeb7642b 100644 --- a/docs/ref/glossary.md +++ b/docs/ref/glossary.md @@ -1,6 +1,6 @@ # Reference Manual - Glossary -This glossary defines key terms and concepts related to Wazuh, Docker, and their use together in the Wazuh-Docker project (version 4.14.4). +This glossary defines key terms and concepts related to Wazuh, Docker, and their use together in the Wazuh-Docker project (version 4.14.5). --- @@ -22,7 +22,7 @@ This glossary defines key terms and concepts related to Wazuh, Docker, and their **D** -- **Dashboard (Wazuh Dashboard / OpenSearch Dashboards / Kibana)**: A web-based visualization tool used to explore, analyze, and visualize data stored in the Wazuh Indexer. It provides dashboards, visualizations, and a query interface for security events and alerts. For Wazuh 4.14.4, this is typically OpenSearch Dashboards. +- **Dashboard (Wazuh Dashboard / OpenSearch Dashboards / Kibana)**: A web-based visualization tool used to explore, analyze, and visualize data stored in the Wazuh Indexer. It provides dashboards, visualizations, and a query interface for security events and alerts. For Wazuh 4.14.5, this is typically OpenSearch Dashboards. - **Decoder**: A component in the Wazuh Manager that parses and extracts relevant information (fields) from raw log messages or event data. - **Docker**: An open platform for developing, shipping, and running applications inside containers. - **Docker Compose**: A tool for defining and running multi-container Docker applications. It uses a YAML file (`docker-compose.yml`) to configure the application's services, networks, and volumes. @@ -42,7 +42,7 @@ This glossary defines key terms and concepts related to Wazuh, Docker, and their **I** -- **Indexer (Wazuh Indexer / OpenSearch / Elasticsearch)**: The component responsible for storing, indexing, and making searchable the alerts and event data generated by the Wazuh Manager. For Wazuh 4.14.4, this is typically OpenSearch. +- **Indexer (Wazuh Indexer / OpenSearch / Elasticsearch)**: The component responsible for storing, indexing, and making searchable the alerts and event data generated by the Wazuh Manager. For Wazuh 4.14.5, this is typically OpenSearch. **L** diff --git a/multi-node/docker-compose.yml b/multi-node/docker-compose.yml index b58183dc..321da140 100644 --- a/multi-node/docker-compose.yml +++ b/multi-node/docker-compose.yml @@ -1,7 +1,7 @@ # Wazuh App Copyright (C) 2017, Wazuh Inc. (License GPLv2) services: wazuh.master: - image: wazuh/wazuh-manager:4.14.4 + image: wazuh/wazuh-manager:4.14.5 hostname: wazuh.master restart: always ulimits: @@ -43,7 +43,7 @@ services: - ./config/wazuh_cluster/wazuh_manager.conf:/wazuh-config-mount/etc/ossec.conf wazuh.worker: - image: wazuh/wazuh-manager:4.14.4 + image: wazuh/wazuh-manager:4.14.5 hostname: wazuh.worker restart: always ulimits: @@ -79,7 +79,7 @@ services: - ./config/wazuh_cluster/wazuh_worker.conf:/wazuh-config-mount/etc/ossec.conf wazuh1.indexer: - image: wazuh/wazuh-indexer:4.14.4 + image: wazuh/wazuh-indexer:4.14.5 hostname: wazuh1.indexer restart: always ports: @@ -105,7 +105,7 @@ services: - ./config/wazuh_indexer/internal_users.yml:/usr/share/wazuh-indexer/config/opensearch-security/internal_users.yml wazuh2.indexer: - image: wazuh/wazuh-indexer:4.14.4 + image: wazuh/wazuh-indexer:4.14.5 hostname: wazuh2.indexer restart: always environment: @@ -127,7 +127,7 @@ services: - ./config/wazuh_indexer/internal_users.yml:/usr/share/wazuh-indexer/config/opensearch-security/internal_users.yml wazuh3.indexer: - image: wazuh/wazuh-indexer:4.14.4 + image: wazuh/wazuh-indexer:4.14.5 hostname: wazuh3.indexer restart: always environment: @@ -149,7 +149,7 @@ services: - ./config/wazuh_indexer/internal_users.yml:/usr/share/wazuh-indexer/config/opensearch-security/internal_users.yml wazuh.dashboard: - image: wazuh/wazuh-dashboard:4.14.4 + image: wazuh/wazuh-dashboard:4.14.5 hostname: wazuh.dashboard restart: always ports: diff --git a/single-node/docker-compose.yml b/single-node/docker-compose.yml index cdf7b1ec..eb08d39b 100644 --- a/single-node/docker-compose.yml +++ b/single-node/docker-compose.yml @@ -1,7 +1,7 @@ # Wazuh App Copyright (C) 2017, Wazuh Inc. (License GPLv2) services: wazuh.manager: - image: wazuh/wazuh-manager:4.14.4 + image: wazuh/wazuh-manager:4.14.5 hostname: wazuh.manager restart: always ulimits: @@ -44,7 +44,7 @@ services: - ./config/wazuh_cluster/wazuh_manager.conf:/wazuh-config-mount/etc/ossec.conf wazuh.indexer: - image: wazuh/wazuh-indexer:4.14.4 + image: wazuh/wazuh-indexer:4.14.5 hostname: wazuh.indexer restart: always ports: @@ -69,7 +69,7 @@ services: - ./config/wazuh_indexer/internal_users.yml:/usr/share/wazuh-indexer/config/opensearch-security/internal_users.yml wazuh.dashboard: - image: wazuh/wazuh-dashboard:4.14.4 + image: wazuh/wazuh-dashboard:4.14.5 hostname: wazuh.dashboard restart: always ports: diff --git a/wazuh-agent/docker-compose.yml b/wazuh-agent/docker-compose.yml index 89585bb2..6129adb7 100644 --- a/wazuh-agent/docker-compose.yml +++ b/wazuh-agent/docker-compose.yml @@ -1,7 +1,7 @@ # Wazuh App Copyright (C) 2017, Wazuh Inc. (License GPLv2) services: wazuh.agent: - image: wazuh/wazuh-agent:4.14.4 + image: wazuh/wazuh-agent:4.14.5 restart: always environment: - WAZUH_MANAGER_SERVER= From 90b2e6d4643bc43a9286c28464a5521c02c156aa Mon Sep 17 00:00:00 2001 From: Victor Carlos Erenu Date: Fri, 20 Feb 2026 22:59:53 +0700 Subject: [PATCH 2/2] Delete Readme file --- build-docker-images/README.md | 40 ----------------------------------- 1 file changed, 40 deletions(-) delete mode 100644 build-docker-images/README.md diff --git a/build-docker-images/README.md b/build-docker-images/README.md deleted file mode 100644 index 36d1fb87..00000000 --- a/build-docker-images/README.md +++ /dev/null @@ -1,40 +0,0 @@ -# Wazuh Docker Image Builder - -The creation of the images for the Wazuh stack deployment in Docker is done with the `build-docker-images/build-images.sh` script - -This script initializes the environment variables needed to build each of the images. - -To execute it, make sure to be in the `build-docker-images` directory: - -```bash -cd build-docker-images -``` - -Then execute: - -```bash -./build-images.sh -``` - -The script also allows to build images from other versions of Wazuh by using the `-v` or `--version` argument: - -```bash -./build-images.sh -v 4.14.5 -``` - -To get all the available script options use the -h or --help option: - -```bash -./build-images.sh -h - -Usage: ./build-images.sh [OPTIONS] - - -d, --dev [Optional] Set the development stage you want to build, example rc1 or beta1, not used by default. - -f, --filebeat-module [Optional] Set Filebeat module version. By default 0.5. - -r, --revision [Optional] Package revision. By default 1 - -rg, --registry [Optional] Set the Docker registry to push the images. - -v, --version [Optional] Set the Wazuh version should be builded. By default, 4.14.5. - -m, --multiarch [Optional] Enable multi-architecture builds. - -h, --help Show this help. - -``` \ No newline at end of file