Releases: drevops/vortex
1.34.0
What's new since 25.10.0
Note
Vortex now uses SemVer for versioning: it was used in the past untill version 1.22.0 and then we tried CalVer, which worked well for Vortex, but will not work well for 1.x/2.x split and publishing of tooling packages. All CalVer versions since 1.22.0 were tagged incrementally, making this version 1.34.0.
Vortex 1.34.0 introduces several major improvements that enhance security, streamline dependency management, modernise the development workflow, and prepare the foundation for Vortex 2.0.
This release adopts Composerβs new built-in security audit to ensure that consumer projects stay protected from known vulnerabilities. Dependency management has been improved by switching to version bumping on composer update, and Composer Patches has been upgraded to v2 for stronger supply-chain safety.
On the Drupal side, the template no longer relies on drupal/core-dev, used for core development. Instead, it now includes only the necessary development packages, removing unnecessary version constraints and enabling upgrades to PHPCS v4, Coder v9, and Solr 9.
The installer now supports immediate builds, allows choosing a versioning schema, provides module selection, and is compatible with PHP 8.2 for installation and updates on older environments.
Finally, Vortexβs own end-to-end testing system has moved from BATS to PHPUnit, making tests easier to maintain, debug and extendβwhile still retaining BATS for shell unit-tests with coverage.
Most importantly, this version removes the remaining blockers for Vortex 2.0. The roadmap is now defined, prioritised, and tracked in the project board at https://github.com/orgs/drevops/projects/2/views/4. Development of Vortex 2.0 is expected to take 2β3 months.
π Highlights
- Composer security audit integrated into CI, ensuring consumer sites fail builds when vulnerable dependencies are detected.
- Composer Patches upgraded to v2, improving patch integrity and mitigating supply-chain risks when using patches from external MRs.
- Simplified Drupal dev dependencies, removing drupal/core-dev and enabling upgrades to PHPCS v4, Coder v9, and Solr v9.
- Dependency bumping automated with bump-after-update, ensuring consistent and reliable dependency updates for all projects.
- Installer improvements: immediate build support, module selection, versioning schema choice (SemVer/CalVer), and compatibility with PHP 8.2.
- Vortex own testing system migrated to PHPUnit, enhancing maintainability, debuggability, and extensibility while keeping BATS for shell script unit tests.
π₯ Breaking changes
- Compose security audit is now part of CI. Consumer sites should ensure that their dependencies do not have known security issues. Run
composer auditlocally to check for security issues before updating dependencies.
See http://vortextemplate.com/docs/workflows/development for more details. cweagans/composer-patcheswas updated to v2. This version uses previously applied patches as a base for new patches. Consumer sites should ensure that all patches are applied correctly after updating to this version. Runcomposer patches-relockandcomposer patches-repatch, then commit thepatches.lock.jsonfile.
See http://vortextemplate.com/docs/workflows/development for more details.drupal/core-devwas replaced with specific packages required for consumer sites.
drupal/core-devpackage is used for developing the core. It has some version limitations that should not be imposed on consumer sites. Consumer sites should reviewrequire-devsection ofcomposer.jsonand ensure that all necessary packages are included in their site'scomposer.json.- Variable names used for skipping deployments were updated. Consumer sites should update their variables accordingly:
VORTEX_DEPLOY_SKIP_PR_123: "1"->VORTEX_DEPLOY_SKIP_PRS: "123"
VORTEX_DEPLOY_SKIP_BRANCH_FEATURE_TEST: "1"->VORTEX_DEPLOY_SKIP_BRANCHES: "feature/test"
See #2088 for more details.
AddVORTEX_DEPLOY_ALLOW_SKIP: "1"to allow the skipping mechanism to work. - Variables names used for notifications were updated.
See https://www.vortextemplate.com/docs/workflows/notifications for more details.
Changelog
π Template
- β¨ New
- [#2125] Added support for Composer 2.9.0 automated security audit. @AlexSkrypnyk (#2126) βββ
There is now a check in CI that runscomposer auditand fails the build if any security issues are found in non-dev dependencies. - [#2164] AddedΒ
bump-after-updateΒ configuration toΒcomposer.jsonΒ and updated docs.Β @AlexSkrypnykΒ (#2165) βββ
Consumer sites should always bump their dependencies after runningcomposer update. This change adds a configuration option tocomposer.jsonto automate this process. - [#2096] Added support for
cweagans/composer-patchesv2. @AlexSkrypnyk (#2099) βββ
Using v2 hardens patching process to use previously applied patches as a base for new patches. This mitigates supply chain attacks when patches are referenced from merge requests on Drupal.org, where an attacker could push a malicious piece of code to not-yet-merged merge request. - [#1895] Added fresh DB download support for Acquia. @AlexSkrypnyk (#2120)
ahoy download-db --freshwill now trigger a new DB backup, will wait for it to complete, and then download it. Similar feature was shipped for Lagoon in the last release. ββ - [#1923] Added Slack notifications + docs. @AlexSkrypnyk (#2090) ββ
- [#2151] Enforced "No Spaces Around Union Types" using Slevomat standard. @AlexSkrypnyk (#2155) β
- Added Rector trait new line rules. @AlexSkrypnyk (#2138) β
- [#2125] Added support for Composer 2.9.0 automated security audit. @AlexSkrypnyk (#2126) βββ
- π Changed
- [#2106] Updated
require-devincomposer.jsonto use only necessary packages and updated PHPCS to v4 and Coder to v9. @AlexSkrypnyk (#2127) ββ - Refactored all notification scripts to use unified variables and messages with token support. @AlexSkrypnyk (#2100) β
- [#2104] Added SemVer+CalVer versioning support for Vortex development. @AlexSkrypnyk (#2150) β
- [#1428] Updated deployment bypass mechanism to use list-based variables. @AlexSkrypnyk (#2088) β
- Fixed GHA status check for
vortex-test-docsworkflow. @AlexSkrypnyk (#2157)
- [#2106] Updated
- π Fixed
- Fixed stability in
composer.jsontostable. @AlexSkrypnyk (#2128) β - Fixed more CS issues. @AlexSkrypnyk (#2140)
- [#2044] Fixed release notes GHA missing checkout. @AlexSkrypnyk (#2118)
- Fixed stability in
- β¬οΈ Updated
- [#2089] Updated Solr to v9. @AlexSkrypnyk (#2103) ββ
Solr 8 is EOL. Consumer sites can now easily update to Solr 9. - [#1456] Updated code artefact packaging tool to be sourced from a stable minor version. @AlexSkrypnyk (#2102) β
Fixes potential issues in the future when code artefact packaging toolgit-artifactcould be breaking consumer sites when a new major version is released. This is a precautionary measure. - Update Container images to v25.11.0 @renovate[bot] (#2124, #2123)
- Updated DrevOps PHPCS standard to the latest version. @AlexSkrypnyk (#2119)
- Update dawidd6/action-download-artifact action to v11 @renovate[bot] (#2149)
- [#1958] Fixed
patches.lock.jsonnot excluded during Vortex development. @AlexSkrypnyk (#2101) - Reconciled notification variables in scripts. @AlexSkrypnyk (#2095)
- Dependency updates @renovate[bot] (#2137, #2141, #2129, #2122, #2117, #2114, #2116, #2107, #2084, #2085, #2085, #2082, #2079)
- [#2089] Updated Solr to v9. @AlexSkrypnyk (#2103) ββ
π Installer
- β¨ New
- [#1950] Added "build now" to installer. @AlexSkrypnyk (#2134, #2168) βββ
After finishing the installer prompts, the user can now choose to trigger a build immediately. - [#2044] Allow to select versioning schema in installer. @AlexSkrypnyk (#2113) ββ
User can now choose between SemVer and CalVer versioning schemas for the project. - [#2014] Allow to select modules in the installer. @AlexSkrypnyk (#2108) β β
User can now select which modules (from existing ones incomposer.json) should be included in the project. This allows to easily opt-out of modules. - Added installer artifact to dev docs Netlify deployment. @AlexSkrypnyk (#2146) β
This allows testing development versions of the installer from within each PR. - [#2086] Added support for
--interactiveflag when runningahoy update-vortex. @AlexSkrypnyk (#2087)
- [#1950] Added "build now" to installer. @AlexSkrypnyk (#2134, #2168) βββ
- π Changed
- Updated installer to be compatible with PHP 8.2Β @AlexSkrypnykΒ (#2158) β
Some users are still on PHP 8.2 and this change ensures compatibility when they are trying to install or upgrade. - Updated installer version discovery and format. @AlexSkrypnyk (#2161) β
Allows to specify the Vortex reference (branch, tag, commit) when installing more easily. This helps when updating projects:ahoy update-vortex https://github.com/drevops/vortex.git#25.11.0 - [#2109] Enabled AI instructions by default in installer. @AlexSkrypnyk (#2110) β
- Updated Installer tests to use envTrait for tests to ensure automated env vars cleanup. @AlexSkrypnyk (#2144)
- Renamed unit and functional tests for PromptManager discovery and process tests. @AlexSkrypnyk (#2136)
- Updated PHPUnit helpers to 0.15 @AlexSkrypnyk (#2132)
- Made installer fixture updated run in separate processes. @AlexSkrypnyk (#2121)
- Unified writing to
.envfile in ins...
- Updated installer to be compatible with PHP 8.2Β @AlexSkrypnykΒ (#2158) β
25.10.0
What's new since 25.8.1
This release focuses on improving consistency, automation, and configurability across Vortex. It introduces stricter code standards, enhances CI/CD reliability, adds new local dev and installer capabilities, and refines Acquia hosting behavior to be more predictable and flexible.
Notable changes
-
Added PHPCS standard enforcing snake_case for local variables and method arguments for consistent coding style (#2074).
-
Upgraded Rector config to v2 with rule sets for better maintainability and performance (#2047, #2068).
-
Improved Acquia hosting by allowing
DRUPAL_CONFIG_PATHoverride and fixing config directory/redirect issues (#2012). -
Enhanced GitHub Actions CI with fixed tag deployments, preserved file permissions, and faster artifact packaging (#2010, #2039).
-
Installer and functional tests modernized β added hosting project name, core theme selection, PHP 8.3 support, and migrated tests to PHPUnit (#2045, #2075).
π₯ Breaking changes
None
π§ Drupal
New features
None
Fixes
- Fixed theme CSS output style in Grunt config. @AlexSkrypnyk (#2008)
Updates
- Simplified Redis extension loaded condition. @AlexSkrypnyk (#2049)
Redis now enables only when the Redis extension is loaded or when an environment variable is explicitly set to '1', preventing unintended activation from ambiguous values and making configuration more predictable
βοΈ Hosting
New features
- Allow to override config directory with
DRUPAL_CONFIG_PATHin Acquia. @AlexSkrypnyk (#2012)
Fixes
- Fixed config directory not using
config/defaultin Acquia. @AlexSkrypnyk (#2012) - Fixed non-www to www-redirect for non-prod in Acquia. @AlexSkrypnyk (#2012)
Updates
None
π Continuous Integration
New features
None
Fixes
- Fixed GHA deployment not triggering for tags. @AlexSkrypnyk (#2039)
- Fixed undefined variable in notify GitHub script. @AlexSkrypnyk (#2038)
- Fixed GHA not passing
VORTEX_ACQUIA_*variables required for a deployment to Acquia. @AlexSkrypnyk (#2012) - Fixed code artifact permissions not being preserved in GHA. @AlexSkrypnyk (#2010)
Updates
- Improved CI speed by conditionally packaging code artifact files in GHA. @AlexSkrypnyk (#2010)
- Update renovatebot/github-action action to v43.0.19 @renovate[bot] (#2061)
- Update shivammathur/setup-php digest to bf6b4fb @renovate[bot] (#2022)
- Update GitHub Actions (major) @renovate[bot] (#2057)
π» Local Development and containers
New features
- [#2006] Added metadata to Behat screenshots. @AlexSkrypnyk (#2003)
Fixes
- Fixed redirects map not being applied in Nginx. @AlexSkrypnyk (#2019)
Updates
- Update Container images to v25.10.0 @renovate[bot] (#2064)
- Update clamav/clamav-debian Docker tag to v1.5.1 @renovate[bot] (#2055)
- Update selenium/standalone-chromium Docker tag to v141 @renovate[bot] (#2042)
- Updated CI runner to 25.10.0 @AlexSkrypnyk (#2065)
- Simplified CLI Dockerfile to create directories and set permissions. @AlexSkrypnyk (#2034)
- [#2004] Renamed
ValKeyservice back toRedis. @AlexSkrypnyk (#2005)
π οΈ Tools
New features
-
Added PHPCS standard to enforce snake case for local variables and method arguments. @AlexSkrypnyk (#2074)
Coder does not enforce snake case format for local variables and function/method arguments. https://github.com/drevops/phpcs-standard adds this enforcement for consistency in the custom code. -
[#1995] Upgraded to Rector config to V2 and switched to rule sets. @AlexSkrypnyk (#2047, #2068)
Allows to automatically cover future rules added to the sets without the need to manually update the config each time.
Also improved performance of Rector runs by removing cache claring between runs. -
Added
prettier-plugin-jsdocto the root FE deps and updated other deps. @AlexSkrypnyk (#2067)
Prettier now can format JS docs. -
Added contrib patching section to AI instructions. @AlexSkrypnyk (#2038)
Allows to tell your AI agent to re-roll contrib patches when updating contrib modules. -
Updated
drevops/behat-stepsto3.3. @AlexSkrypnyk (#2078)
Enforces checks for JavaScript errors on the page during Behat tests.
Fixes
- Fixed schema url in PHPUnit config. @AlexSkrypnyk (#2038)
- Fixed DCLint's configuration to allow
<<key ordering. @AlexSkrypnyk (#1997)
Updates
None
βοΈ Workflow
New features
- [#2030] Show login link on
ahoy provision. @AlexSkrypnyk (#2040)
Fixes
None
Updates
- Updated Drupal login tests to include current path assertions. @AlexSkrypnyk (#2070)
- Added rules forΒ
package.jsonΒ toΒ.editorconfig. @AlexSkrypnyk (#2038)
π Vortex
-
π Documentation:
- Updated project docs. @AlexSkrypnyk (#1998)
- FAQs: Added external Xdebug documentation link and cross-reference.
- FAQs: Updated Behat example to enable Xdebug by default.
- FAQs: Clarified branch switching does not require a full rebuild; use ahoy provision to update the environment.
- FAQs: Revised patches example keys (Remote patch description) and added a Local patch description entry.
- Minor formatting and wording touch-ups without changing semantics.
- CI guide: Wrapped a long reference link into two lines in CircleCI and GitHub Actions sections (no content changes).
- [#1999] Removed
onboarding.mdfrom the project assets. @AlexSkrypnyk (#2000)
- Updated project docs. @AlexSkrypnyk (#1998)
-
ποΈ Installer:
- [#1967] Added support for Hosting project name. @AlexSkrypnyk (#2045)
- Added support for selecting core themes. @AlexSkrypnyk (#2021)
- Fixed installer to correctly update
composer.jsonfor Drupal CMS starter. @AlexSkrypnyk (#2041) - Fixed
deployTypenot using plural form to mach the env variable. @AlexSkrypnyk (#2072) - FixedΒ
webrootΒ inΒ.gitignoreΒ being replaced during installation. @AlexSkrypnyk (#2038) - [#2004] Renamed
ValKeyservice back toRedis. @AlexSkrypnyk (#2005) - Fixed installer not correctly discovers relative web root. @AlexSkrypnyk (#2001)
- Fixed installer not replacing hyphen-delimited module prefix. @AlexSkrypnyk (#1993)
- Enforced snake case for local variables and method arguments in installer. @AlexSkrypnyk (#2074)
-
π§ Vortex maintenance:
- [#1560] Moved all functional testing to PHPUnit to ease maintenance. @AlexSkrypnyk (#2075, #2071, #2073, #2076, #2036, #2035, #2033, #2018, #2017, #2011, #2009, #2013)
- Upgraded PHP req to 8.3 for installer and Vortex own functional tests. @AlexSkrypnyk (#2074)
- Enforced snake case for local variables and method arguments in functional tests. @AlexSkrypnyk (#2074)
π Release checklist
- Updated all dependencies outside of the schedule
- Updated container images to the latest versions and checked that
@seelinks - Updated PHP version in
composer.jsonforconfig.platform. - Updated PHP version in
phpcs.xmlfortestVersion. - Updated PHP version in
phpstan.neonforphpVersion. - Updated minor version of all packages in
composer.json. - Updated minor version of dependencies in theme's
package.json. - Incremented the cache version in
.circleci/config.ymland.github/workflows/build-test-deploy.yml. - Updated documentation.
Full Changelog: 25.8.1...25.11.0
Note: there was no 25.9.0 release
@AlexSkrypnyk, @renovate[bot] and renovate[bot]
25.8.1
What's new since 25.8.0
- Improved DB file discovery before downloading. @AlexSkrypnyk (#1992)
- [#1988] Updated Eslint config to ES6 and added Prettier for modules. @AlexSkrypnyk (#1989)
- Update GitHub Actions to v5 (major) @renovate[bot] (#1986)
- Update codecov/codecov-action digest to 5a10915 @renovate[bot] (#1985)
- Fixed formatting in Behat configuration. @AlexSkrypnyk (#1984)
- Fixed PHP coding standards violations. @AlexSkrypnyk (#1987)
- Fixed typos and small configuration issues. @AlexSkrypnyk (#1982)
- Simplify Twig-CS-Fixer rules. @AlexSkrypnyk (#1983)
- Fixed
robotstxtsettings and test. @AlexSkrypnyk (#1981) - Updated AI instructions. Part 2. @AlexSkrypnyk (#1980)
- Updated AI instructions. @AlexSkrypnyk (#1978)
- Updated more docs to use tabs. @AlexSkrypnyk (#1977)
- Added highlighting of custom binaries in the docs and update tools docs to use tabs. @AlexSkrypnyk (#1975)
- [#1970] Added Drush to the Behat config and added self-tests. @AlexSkrypnyk (#1974)
- Excluded unnecessary files from the packaged installer. @AlexSkrypnyk (#1973)
- Fixed installer not correctly wrapping values in
.env. @AlexSkrypnyk (#1972) - Fixed installer not removing the custom search module installation line. @AlexSkrypnyk (#1971)
Full Changelog: 25.8.0...25.9.0
@AlexSkrypnyk, @renovate[bot] and renovate[bot]
25.8.0 - Drupal CMS, optimised CI, and better installer
What's new since 25.7.0
Vortex 25.8.0 introduces support for DrupalCMS, optimises CI to cut build times by up to five minutes, and improves Lagoon hosting with a logs package and fixed Drush aliases. The installer has been significantly enhanced with a new Starter prompt, configuration-file support, tool selection, improved .env handling, and expanded test coverage.
Notable changes
- Added support for DrupalCMS.
- Redis configuration updated and enabled by default.
- CI optimization saves up to 5 minutes per build and fixes duplicate deployments.
- Lagoon hosting integration improved with fixed Drush aliases and logs package.
- Installer overhaul: new Starter prompt, config-file prompt support, tool selection, improved .env handling, and higher test coverage.
π§ Drupal
New features
- [#1882] Added support for DrupalCMS.
- [#1915] Added
robotstxtmodule and overrides for non-prod envs. @AlexSkrypnyk (#1927, #1964) - [#1917] Updated Redis config and enabled by default. @AlexSkrypnyk (#1928)
- [#1890] Replaced
drush sql:cliwithdrush sql:connectfor faster imports. @AlexSkrypnyk (#1899)
Fixes
- Fixed
config_sync_directorynot having a default value. This would fail Drupal bootstrap in some edge cases. @AlexSkrypnyk (#1948) - [#1875] Removed
update.phpDrupal scaffolded file. @AlexSkrypnyk (#1876)
Updates
- [#1907] Renamed
default.services.localtoexample.services.localto better show the intent. @AlexSkrypnyk (#1910) - [#1861] Removed asset-packagist and added instructions for an alternative approach. Asset packagist is not a recommended way to requires assets and the service itself is not stable. @AlexSkrypnyk (#1863)
βοΈ Hosting
New features
- [#1886] Added Lagoon logs package when Lagoon is used as a hosting provider. @AlexSkrypnyk (#1940)
Fixes
- [#1669] Fixed Lagoon Drush aliases. Environments can now be accessed as
ahoy drush @lagoon.develop statusfrom host ordrush @lagoon.develop statusin container. @AlexSkrypnyk (#1947)
Updates
None
π Continuous Integration
New features
- [#1918] Updated CI config to export and restore exported codebase only for artifact deployment. This provides 1.5 minutes on small and up to 5 minutes savings on each build. @AlexSkrypnyk (#1924)
Fixes
- [#1423] Fixed double CI runs and deployments when pushing
project/*branches. @AlexSkrypnyk (#1946)
Updates
None
π» Local Development and containers
New features
- [#1930] Added custom trusted hosts support via
.env. @AlexSkrypnyk (#1931)
Fixes
None
Updates
- Update Container images to v25.8.0 @renovate[bot] (#1925)
- Update selenium/standalone-chromium Docker tag to v139 @renovate[bot] (#1912)
π οΈ Tools
New features
- [#1920] Added TwigStandard to the Twig-CS-Fixer configuration. Prior to this change, only cherry-picked standards were used. @AlexSkrypnyk (#1921)
- [#1903] Added support from PHPUnit deprecations to PHPUnit config. This will show any deprecations of the PHPUnit attributes verbosly and as failures. @AlexSkrypnyk (#1909)
- [#1664] Updated PHPStan config to prefer type checking over docblocks. Prior to this change, PHPStan would rely on comments more than on code for type discovery. @AlexSkrypnyk (#1866)
- Added reduced motion enforcement for behat steps to make the tests more stable. @AlexSkrypnyk (#1945)
Fixes
Updates
None
βοΈ Workflow
New features
- [#1894] Allow to download a fresh DB using
ahoy download-db --no-cache. @AlexSkrypnyk (#1896) - [#1868] Added support for unzipping to DB download from URL. @AlexSkrypnyk (#1869)
Fixes
- [#1903] Fixed pre-deployment GitHub notification failing when there are pending checks. This would usuaally happen if one of the non-required checks takes too long. @AlexSkrypnyk (#1905)
- Fixed Sequel Ace path in
ahoy dbcommands. @AlexSkrypnyk (#1893)
Updates
- [#1889] Improved UX of SSH setup scripts. @AlexSkrypnyk (#1939)
- Updated
ahoy dbto use a consistent way to get the DB port viadocker compose. @AlexSkrypnyk (#1884) - Updated format in
.ahoy.yml. @AlexSkrypnyk (#1883) - Remove unnecessary quotes from .env. @AlexSkrypnyk (#1878)
- [#1870] Updated labels names for the auto-merge-conflict and dependencies. @AlexSkrypnyk (#1872)
π Vortex
-
π Documentation:
- [#1951] Added a command to automatically create installer ascii video and PNG screenshot. @AlexSkrypnyk (#1963)
-
ποΈ Installer:
- [#1949] Added Starter prompt and updated other prompts descriptions. @AlexSkrypnyk (#1952)
- Removed all emojis from the installer. @AlexSkrypnyk (#1954, #1879)
- Increased test coverage for installer. @AlexSkrypnyk (#1953)
- [#1661] Added support for passing prompts in configuration file. @AlexSkrypnyk (#1941)
- [#1922] Added removing of trailing spaces in the installer. @AlexSkrypnyk (#1938)
- Moved installer handler unit and functional tests into own classes. @AlexSkrypnyk (#1937)
- [#1580] Allow to choose tools in the installer. @AlexSkrypnyk (#1935)
- Fixed version replacement in the installer to handle version numbers in the inline comments. @AlexSkrypnyk (#1888)
- Fixed installer warning when ran over invalid
.env. @AlexSkrypnyk (#1887) - [#1854] Show missing tools on first install. @AlexSkrypnyk (#1880)
- [#1857] Fixed installer not removing
.htaccesswhen Lagoon or no hosting provider selected. @AlexSkrypnyk (#1871) - [#1862] Preserve discovered values in
.envfile. @AlexSkrypnyk (#1867) - Fixed installer not overwriting some of the files in existing projects. @AlexSkrypnyk (#1865)
- [#1859] Fixed
TZreplacement in the installer. @AlexSkrypnyk (#1860) - Fixed installer version token replacement in PHAR. @AlexSkrypnyk (#1853)
- Fixed docs release GHA to retain installer. @AlexSkrypnyk (#1852)
-
π§ Vortex maintenance:
- [#1911] Added markdownlint to lint docs and markdown + fixed violations. @AlexSkrypnyk (#1929)
- [#1897] Added DCLint. @AlexSkrypnyk (#1898)
- Fixed test executing a command in the container. @AlexSkrypnyk (#1874)
- Updated dependencies. @AlexSkrypnyk, @renovate[bot] (#1956, #1934, #1942, #1933, #1919, #1914, #1902, #1900, #1892, #1885, #1881, #1873, #1855)
π Release checklist
- Updated all dependencies outside of the schedule
- Updated container images to the latest versions and checked that
@seelinks - Updated PHP version in
composer.jsonforconfig.platform. - Updated PHP version in
phpcs.xmlfortestVersion. - Updated PHP version in
phpstan.neonforphpVersion. - Updated minor version of all packages in
composer.json. - Updated minor version of dependencies in theme's
package.json. - Incremented the cache version in
.circleci/config.ymland.github/workflows/build-test-deploy.yml. - Updated documentation.
Full Changelog: 25.7.0...25.8.0
@AlexSkrypnyk, @renovate[bot] and renovate[bot]
25.7.0 - Drupal 11.2, better Docker and Installer
What's new since 25.6.1
Vortex 25.7.0 introduces Drupal 11.2 support, enhanced CI performance, improved local development with better Docker and Composer handling, and a more robust installer experienceβall aimed at streamlining development and deployment workflows.
Notable changes
- Updated to Drupal 11.2 and Rector 2 β Keeping projects aligned with the latest Drupal core.
- Improved installer β Refactored prompts, added timezone support, and removed confusing GitHub prompts for a smoother setup.
- CI optimizations β Linting and theme builds are now conditionally skipped or isolated to reduce CI time and costs.
- Lagoon deployment enhancements β More robust CLI handling and environment limit controls to improve deployment reliability.
- Support for private Composer packages β Simplifies builds involving private codebases.
- Security and DX improvements in Docker β Parallel build fixes, TTY allocation, masked tokens, and platform compatibility for ClamAV.
π₯ Breaking changes
-
Environment variable
GITHUB_TOKENrenamed toPACKAGE_TOKEN.
Applies only if you use private Composer packages. Update your CI and hosting environment configurations to usePACKAGE_TOKEN. The previousGITHUB_TOKENis no longer recognized during builds. -
Installer environment variables renamed from
VORTEX_INSTALL_*toVORTEX_INSTALLER_*.
Consumers relying on automated Vortex installations using the installer must update their scripts to reflect the new variable names. -
Lagoon deployment no longer fails by default when the number of environments is exceeded.
This is now opt-in via theVORTEX_DEPLOY_LAGOON_FAIL_ENV_LIMIT_EXCEEDED=1environment variable. Add this variable to your CI configs if you want to see CI fails when Lagoon environment number is exceeded. -
Nginx now includes support for non-www to www redirects by default.
If your project does not require this behavior, you must comment out the redirect rule in.docker/config/nginx/redirects-map.conf.
π§ Drupal
New features
- [#1761, #1613] Updated to Drupal 11.2 and Rector 2. @AlexSkrypnyk (#1827)
- [#1754] Added JS and CSS example libraries to the ys_base and added module CSS and JS linting. @AlexSkrypnyk (#1787)
Fixes
None
Updates
- [#1832] Updated theme scaffold to have the latest dependencies and modern SASS
use. @AlexSkrypnyk (#1834) - [#1734] Updated Drush commands config default options. @AlexSkrypnyk, @ivangrynenko (#1830)
- Updated dependencies to the latest minor versions. @AlexSkrypnyk (#1797)
βοΈ Hosting
New features
None
Fixes
- Fixed Lagoon CLI download in scripts. It is used in deployment and task scripts. @AlexSkrypnyk (#1843)
- Fixed Lagoon deployment to download CLI client without rate limiting. @AlexSkrypnyk (#1815)
- [#1658] Do not fail Lagoon deployment if the number of envs is exceeded.
VORTEX_DEPLOY_LAGOON_FAIL_ENV_LIMIT_EXCEEDEDcan be set to1in CI config if should fail on exceeding of available Lagoon environments. @AlexSkrypnyk (#1818)
Updates
- Added unit tests for Lagoon deployment scripts. @AlexSkrypnyk (#1817)
π Continuous Integration
New features
- [#1735] Updated Renovate config to pin GHA to digests + updated all GHAs. @AlexSkrypnyk, @renovate[bot] (#1828, #1829)
- [#1607] Skip Drupal theme build in the nightly DB run. This significantly speeds up nighly build for websites with large themes. Saves on the CI build time and budget. @AlexSkrypnyk (#1806, 1809, #1811)
- [#1742] Run code linting only on the first CI instance. Saves on the CI build time and budget. @AlexSkrypnyk (#1802)
Fixes
None
Updates
- Updated
drevops/ci-runnerto25.8.0. This version is a re-worked and optimised for faster CI builds. @AlexSkrypnyk (#1821)
π» Local Development and containers
New features
- Added support for building with private Composer packages + example. @AlexSkrypnyk (#1820, #1835)
- [#1822] Added support for non-www to www redirects in Nginx. @AlexSkrypnyk (#1823)
- Allow to conditionally skip FE build in containers. @AlexSkrypnyk (#1804)
- Switched ClamAV to use
clamav/clamav-debianimage for multi-platform support. @AlexSkrypnyk (#1812)
Fixes
- [#1779] Fixed Docker parallel build order. This is required for new Docker Compose version that started to use
bakeby default, forcing parallel builds. @AlexSkrypnyk (#1780) - [#1601] Mask
PACKAGE_TOKENduring Docker build. @AlexSkrypnyk (#1816, #1842) - [#1759] Fixed TTY being allocated for local commands. This makes
ahoy drushcommands to correctly prompt to confirm operations. @AlexSkrypnyk (#1790) - [#1665] Added missing
VORTEX_DB_DOWNLOAD_SSH_FILEto.env.local.example. @AlexSkrypnyk (#1824) - Fixed formatting in Dockerfiles. @AlexSkrypnyk (#1805)
- Fixed Stage File Proxy URL in
.env. @AlexSkrypnyk (#1796) - [#1758] Removed
--no-suggestoption from Composer commands. @AlexSkrypnyk (#1791)
Updates
- Update Container images to v25.7.0 @renovate[bot] (#1825)
π οΈ Tools
New features
None
Fixes
None
Updates
None
βοΈ Workflow
New features
- Added confirmation to
ahoy provision. @AlexSkrypnyk (#1846) - Added timing to the
ahoy provisioncommand. @AlexSkrypnyk (#1850) - [#1767] Sanitised output of
ahoy doctor info. This makes it easier for users to run the command and copy/paste the info into GitHub issues without exposing any personal data. @AlexSkrypnyk (#1789)
Fixes
- Fixed format of requirements check in scripts. @AlexSkrypnyk (#1841)
- Fixed title alignment consumer in
README.md. @AlexSkrypnyk (#1836) - [#1726] Separated consumer and Vortex PR templates. @AlexSkrypnyk (#1807)
- Fixed FE module lint failing on non-matched patterns. @AlexSkrypnyk (#1801)
Updates
- Removed
ahoy pullcommand. This command was used to pull latest images, but all images are pinned now, so this command has no use. @AlexSkrypnyk (#1848) - Multipe dependency updates @renovate[bot] (#1778, #1775, #1772, #1769)
π Vortex
-
π Documentation:
- Added more docs and fixed links. @AlexSkrypnyk (#1838, #1849)
-
ποΈ Installer:
- Refactored installer prompts into decoupled handlers. This allows to make future updates easier. @AlexSkrypnyk (#1784)
- Improved Vortex update script to suport local and remote URL and specific tags/commits. @AlexSkrypnyk (#1840)
- [#1753] Added timezone selection support to installer. @AlexSkrypnyk (#1800)
- Added installer version and improved welcome wording. @AlexSkrypnyk (#1837)
- [#1663] Added removal of installer after installation success. @AlexSkrypnyk (#1826)
- Fixed multiple installer processing issues. @AlexSkrypnyk (#1794, #1795, #1798, #1799)
- Renamed installer's entrypoint to
installer.php. @AlexSkrypnyk (#1844) - Renamed
VORTEX_INSTALL_toVORTEX_INSTALLER_variables. This now makes it consistent with the installer app name. @AlexSkrypnyk (#1845) - [#1781] Fixed release discovery in the installer to use non-draft releases. @AlexSkrypnyk (#1792)
- Removed GitHub token and GitHub repo prompts from the installer. These are not required for now and only confuse users. @AlexSkrypnyk (#1786)
- Updated installer to Symfony 7.3 @AlexSkrypnyk (#1819)
-
π§ Vortex maintenance:
- Updated versions in configs. @AlexSkrypnyk (#1833)
- Re-balanced Vortex's tests to speed up CI. @AlexSkrypnyk (#1839)
π Release checklist
- Updated all dependencies outside of the schedule
- Updated container images to the latest versions and checked that
@seelinks - Updated PHP version in
composer.jsonforconfig.platform. - Updated PHP version in
phpcs.xmlfortestVersion. - Updated PHP version in
phpstan.neonforphpVersion. - Updated minor version of all packages in
composer.json. - Updated minor version of dependencies in theme's
package.json. - Incremented the cache version in
.circleci/config.ymland.github/workflows/build-test-deploy.yml. - Updated documentation.
Full Changelog: 25.6.1...25.7.0
@AlexSkrypnyk, @ivangrynenko, @renovate[bot] and renovate[bot]
25.6.1
What's new since 25.6.0
- Fixed Valkey/Redis integration. @AlexSkrypnyk (#1755)
- Fixed provision script erroneously using
DRUPAL_CONFIG_PATHvariable. @AlexSkrypnyk (#1757) - Fixed
max_agein settings to use integer value. @AlexSkrypnyk (#1756) - Updated descriptions for Behat features + AI instructions. @AlexSkrypnyk (#1766)
- Update Container images to
25.6.0@renovate[bot] (#1764) - Fixed Renovate manual trigger not bypassing schedule. @AlexSkrypnyk (#1762)
- Added alias command
test-behatfortest-bdd. @AlexSkrypnyk (#1760) - Fixed Installer not showing
Servicessection in the summary. @AlexSkrypnyk (#1756) - Fixed logging text in Vortex scripts. @AlexSkrypnyk (#1756)
- Separated BATS tests to unit and e2e. @AlexSkrypnyk (#1756)
- Added another case for testing provision without DB. @AlexSkrypnyk (#1756)
- Fixed navbar and color in docs. @AlexSkrypnyk (#1752)
- Update renovatebot/github-action action to v42.0.6 @renovate[bot] (#1751)
Full Changelog: 25.6.0...25.6.1
@AlexSkrypnyk, @renovate[bot] and renovate[bot]
25.6.0
What's new since 25.4.0
This release introduces a new documentation site, enhanced installation and environment configuration, flexible database import options, Valkey-based caching, Renovate workflow improvements, and support for database charset and collation via environment variables.
- Launched new documentation site: www.vortextemplate.com with improved navigation, custom front page, features overview, and support pages for better user experience.
- Added new database import Ahoy command: Added
ahoy import-dbcommand and support for importing from custom files viaahoy importfor more flexible database management. - Migrated from Redis to Valkey for caching: Provides improved performance and maintains Redis compatibility while using an open-source alternative that ensures long-term sustainability.
- Added database charset and collation support: Database charset and collation can now be configured through environment variables.
- Improved environment configuration: Added
DRUPAL_MAINTENANCE_THEME,DRUPAL_SHIELD_DISABLED, andVORTEX_DEPLOY_SKIPvariables; renamed cpnfig dirstesttostagefor clarity. - Enhanced Renovate configuration: Updated Renovate configuration to the latest version and allow to run self-hosted workflows from UI.
- Enhanced installation experience: Fixed several config validation, processing and performance issues.
π§ Drupal
New features
- Shield can now be disabled via
DRUPAL_SHIELD_DISABLEDvariable from any environment, even if the configuration is enforced insettings.php. @skipper-vp (#1638) - Maintenance theme can be set via
DRUPAL_MAINTENANCE_THEMEvariable. The default is set in.envto the current custom theme. @AlexSkrypnyk (#1680)
Fixes
- Fixed false negatives assertions in settings test for
testEnvironmentOverrides(). @AlexSkrypnyk (#1737) - Fixed directory separators in
settings.phpto be consistent with the rest of the code. @AlexSkrypnyk (#1739) - Fixed config directories to use
stageinstead oftest. Consumer sites would need to manually move files fromtesttostage. @skipper-vp (#1640)
Updates
- Upgraded Behat Steps to
3.1and updated test steps. @AlexSkrypnyk (#1710) - Renamed
ys_coremodule toys_baseto remove consumer site's confusion. @AlexSkrypnyk (#1681) - Allow to bypass
Content-Security-Policyfor sites with SecKit enabled locally and in CI. @skipper-vp (#1635) - Updated database port to
3306by default insettings.phpand documentation. @AlexSkrypnyk (#1729) - Made
settings.phpmore generic and moved settings for modules that are a part of Drupal core into own settings files. @AlexSkrypnyk (#1729) - Moved provider settings out from
settings.phpinto own settings files. @AlexSkrypnyk (#1729) - Improved tests for settings to make it easier to include/exclude environment variables. @AlexSkrypnyk (#1729)
- Updated settings for modules to use strict type checking. @AlexSkrypnyk (#1729)
- Updated enforcement of CSS and JSS processing to apply only in PROD. @AlexSkrypnyk (#1729)
- Allow
localhostto be used astrusted_host_patternsinsettings.php. This makes it possible to run the site without Docker stack. @AlexSkrypnyk (#1729)
βοΈ Hosting
New features
None
Fixes
None
Updates
None
π Continuous Integration
New features
None
Fixes
- Fixed tests results not being saved as an asset on failure in GHA. @AlexSkrypnyk (#1727)
Updates
- CI runner timezone is now set to
UTCby default. @AlexSkrypnyk (#1729) - Renamed
deps-updatetoupdate-dependenciesworkflow and a file name. @AlexSkrypnyk (#1706) - Removed
VORTEX_DOWNLOAD_DB_SSH_KNOWN_HOSTSin favour ofknown_hosts: unnecessary. This simplifies the CI setup by removing an additional step. @skipper-vp, @AlexSkrypnyk (#1691, #1651) - Updated CI Runner to
25.5.0. @AlexSkrypnyk (#1629) - Update
renovatebot/github-actionaction tov42.0.5forupdate-dependenciesworkflow. @renovate[bot] (#1736)
π» Local Development
New features
- New command to import from a custom file using
ahoy import-db. @skipper-vp, @AlexSkrypnyk (#1652, #1719) - Replaced Redis with Valkey. @nsineok (#1625)
- Added support for database charset and collation to be taken from the
DATABASE_CHARSET/MARIADB_CHARSET/MYSQL_CHARSETandDATABASE_COLLATION/MARIADB_COLLATION/MYSQL_COLLATIONvariables. @AlexSkrypnyk (#1720)
Fixes
- Fixed PHPCS not running in parallel in the CLI container because of the missing
pcntlPHP extension. @AlexSkrypnyk (#1744) - Fixed
DRUPAL_PUBLIC_FILESandDRUPAL_PRIVATE_FILESvariables using absolute paths. @AlexSkrypnyk (#1738) - Fixed
DRUPAL_CONFIG_PATHbeing unnecessary passed as a build argument to the container image. @AlexSkrypnyk (#1738, #1740) - Fixed
DRUPAL_CONFIG_PATHnot respecting default Drupal's behaviour to auto-create config if there is no value provided. @AlexSkrypnyk (#1738)
Updates
- Docker timezone is now set to
UTCby default. @AlexSkrypnyk (#1729) - Update Container images to
v25.5.0. @renovate[bot] (#1694) - Update
selenium/standalone-chromiumDocker tag tov137. @renovate[bot] (#1733)
π οΈ Tools
Renovate
- Migrated renovate config and added a validator. @renovate[bot], @AlexSkrypnyk (#1627, #1686)
- Fixed Renovate schedule to run once a week for contribs on Sunday. This prevents spammy PRs. @skipper-vp (#1645)
- Reconciled self-hosted Renovate variables across GHA and CricleCI + docs. This unifies the self-hosted Renovate setup process in CI. @AlexSkrypnyk (#1705)
- Self-hosted Renovate timezone is now set to
UTCby default @AlexSkrypnyk (#1729) - Self-hosted Renovate can now be ran from GHA and CircleCI UI. @AlexSkrypnyk (#1689, #1700)
- Self-hosted Renovate now has a log level
DEBUG. @AlexSkrypnyk (#1696, #1698)
PHPCS
- Updated PHPCS configuration to remove
Generic.Debug.ESLintrule. This rule is no longer supported by PHPCS. @AlexSkrypnyk (#1679)
Twig CS Fixer:
- Updated config to be comaptible with the latest version of TWIG CS fixer. @skipper-vp (#1648)
βοΈ Workflow
New features
- Added
VORTEX_DEPLOY_SKIPenvironment variable that allows to gully skip deployments that are triggered in CI without failing a job. @skipper-vp (#1641) - Scripts now use a new type
[TASK]to improve the output logging. @AlexSkrypnyk (#1699, #1715, #1677) - Added a list of environments to the consumer
README.dist.mdfile. @AlexSkrypnyk (#1711) - Updated badge color in
README.dist.md. @skipper-vp,@nsineok (#1628, #1634)
Fixes
None
Updates
- Renamed
DRUPAL_UNBLOCK_ADMINtoVORTEX_UNBLOCK_ADMINas this is not a part of the Drupal functionality but a Vortex's own feature. @AlexSkrypnyk (#1730)
π Vortex
-
π Documentation:
- Updated docs domain to www.vortextemplate.com @AlexSkrypnyk (#1747, #1748)
- Update scripts diagram and several content pages in docs. @AlexSkrypnyk (#1743, #1745, #1725)
- Fixed the
README.md. @AlexSkrypnyk (#1707, #1708)
-
ποΈ Installer:
- Added AI agentic instructions selection to the installer. @AlexSkrypnyk (#1722)
- Added a smaller header to the installer. @AlexSkrypnyk (#1724)
- Improved validation in installer to work better with new existing sites. @AlexSkrypnyk (#1718, #1717, #1716, #1712, #1697, #1693)
- Improved processing in installer. @AlexSkrypnyk, @skipper-vp (#1684, #1713, #1721, #1692, #1619)
- Removed theme runner selection step from the installer. @AlexSkrypnyk (#1723)
-
π§ Vortex maintenance:
Full Changelog: 25.4.0...25.6.0
@AlexSkrypnyk, @df-nikita, @nsineok, @renovate[bot], @skipper-vp and renovate[bot]
25.4.0
What's new since 25.3.2
- Updated link to the Docker docs. @AlexSkrypnyk (#1605)
- Update dependencies for installer. @AlexSkrypnyk (#1598)
- Update renovatebot/github-action action to v41.0.20 @renovate[bot] (#1603)
- Update Container images to v25.4.0 @renovate[bot] (#1600)
- Update dependency ergebnis/composer-normalize to v2.46.0 @renovate[bot] (#1596)
- Update selenium/standalone-chromium Docker tag to v135 @renovate[bot] (#1595)
- Update dependency phpunit/phpunit to v11.5.17 @renovate[bot] (#1594)
- Removed
@seefrom YAML files. @AlexSkrypnyk (#1593) - Fixed setup-ssh.sh removing existing SSH keys on local. @AlexSkrypnyk (#1591)
- Update renovatebot/github-action action to v41.0.18 @renovate[bot] (#1590)
- Removed obsolete scripts. @AlexSkrypnyk (#1589)
- Update drevops/docker-wait-for-dependencies Docker tag to v25.3.0 @renovate[bot] (#1588)
Full Changelog: 25.3.2...25.4.0
@AlexSkrypnyk, @renovate[bot] and renovate[bot]
25.3.2
What's new since 25.3.0
- Updated drevops/mariadb-drupal-data. @AlexSkrypnyk (#1587)
- Update Container images to v25.3.0 @renovate[bot] (#1584)
- Update Minor and Patch Contrib @renovate[bot] (#1583)
- Updated Git Artifact to 1.0 @AlexSkrypnyk (#1586)
- Update selenium/standalone-chromium Docker tag to v134 @renovate[bot] (#1585)
- Replaced NPM with Yarn. @AlexSkrypnyk (#1581)
- Updated CI runner to 25.3.0. @AlexSkrypnyk (#1582)
- Improved Dockerfiles. @AlexSkrypnyk (#1579)
- Fixed docker login in build and self-tests to take place before any docker operations. @AlexSkrypnyk (#1578)
- Fixed provision from corrupted DB. @AlexSkrypnyk (#1576)
- Fixed UTF-8 support in the output of the installer. @AlexSkrypnyk (#1575)
- Update dependency phpstan/phpstan to v2.1.11 @renovate[bot] (#1573)
- Updated installer test to use version-less fixtures. @AlexSkrypnyk (#1574)
- Update renovatebot/github-action action to v41.0.17 @renovate[bot] (#1565)
- Update Minor and Patch Contrib @renovate[bot] (#1570)
- Fixed deps update condition for
deployin GHA. @AlexSkrypnyk (#1572) - Updated installer header to be more subtle. @AlexSkrypnyk (#1569)
- Added removal of theme + tests. @AlexSkrypnyk (#1568)
- Added fixture updater and moved to File library. @AlexSkrypnyk (#1566)
- Fixed installer self-test on release. @AlexSkrypnyk (#1561)
Full Changelog: 25.3.0...25.3.2
@AlexSkrypnyk, @renovate[bot] and renovate[bot]
25.3.0
What's new since 25.1.4
This release brings the new installer experience. This unblocks further feature development in the upcoming releases.
π³ Docker
New features
- Added support for
DATABASE_DATABASEDB name in settings to be compatible with Lagoon deployed to RDS. @AlexSkrypnyk (#1526)
Fixes
None
Updates
- Switched to MySQL DB image. @AlexSkrypnyk (#1537)
- Updated Solr config-set to the latest version. @AlexSkrypnyk (#1536)
- Update Container images to v25.2.0 @renovate[bot] (#1547)
- Update selenium/standalone-chromium Docker tag to v133 @renovate[bot] (#1548)
- [#1525] Simplified
VORTEX_WEBROOTandVORTEX_TZvariables. @AlexSkrypnyk (#1535)
π§ Drupal
New features
None
Fixes
None
Updates
- Update Minor and Patch Contrib @renovate[bot] (#1541)
π€ CI and workflow
New features
- Added support for a PR number in the email notification. @AlexSkrypnyk (#1529)
- [#1522] Moved uploading of exported codebase as artifact to a later stage in GHA. @AlexSkrypnyk (#1523)
Fixes
- Fixed deployment of
deps/*branches not being skipped. @AlexSkrypnyk (#1544) - Fixed PR deployment to Lagoon from GHA. @AlexSkrypnyk (#1542)
- Fixed missing DB SSH key credentials in GHA. @AlexSkrypnyk (#1539)
- Fixed email subject in notify. @AlexSkrypnyk (#1530)
- Fixed environment ref in GitHub becomes stale on follow-up PR deployments. @AlexSkrypnyk (#1528)
- Fixed email notification failing when an email-only recipient is provided. @AlexSkrypnyk (#1527)
Updates
- Updated
VORTEX_PROVISION_USE_PROFILEtoVORTEX_PROVISION_TYPE=profileorVORTEX_PROVISION_TYPE=database. @AlexSkrypnyk (#1555) - Removed
VORTEX_PROVISION_ENVIRONMENTin favour of direct query via Drush for more realiability. @AlexSkrypnyk (#1550, #1555) - Updated drevops/git-artifact to 0.8. @AlexSkrypnyk (#1521)
π§© Integrations
Acquia
None
Lagoon
None
π Vortex
-
Documentation:
- Updated documentation @AlexSkrypnyk (#1557, #1558, #1550)
-
Install script:
- New installer! @AlexSkrypnyk (#1555)
- Updated installer to not copy the theme if it is overridden. @AlexSkrypnyk (#1534)
- Fixed installer replacing multiple new lines in 3rd party files. @AlexSkrypnyk (#1533)
- Added missing
lagoondownload source support to installer. @AlexSkrypnyk (#1532) - Added an installer qustion to preserve the onboarding checklist. @AlexSkrypnyk (#1531)
-
Vortex tests:
Full Changelog: 25.1.4...25.3.0
@AlexSkrypnyk, @renovate and @renovate[bot]