Skip to content

Conversation

@AlexSkrypnyk
Copy link
Member

@AlexSkrypnyk AlexSkrypnyk commented Jun 7, 2025

Summary by CodeRabbit

  • New Features

    • Introduced modular, environment-aware Drupal settings with provider- and module-specific overrides.
    • Added new settings scaffolds for system, automated cron, and CI providers.
    • Included an example Drupal provisioning script and a new notifications documentation section.
    • Enhanced build and theme scaffolds with detailed documentation and tooling instructions.
  • Bug Fixes

    • Standardized default timezone to UTC across all environments, containers, tests, and documentation.
    • Corrected spelling errors and improved comment clarity in scripts and documentation.
    • Enhanced test coverage and accuracy for environment detection and configuration overrides.
  • Documentation

    • Significantly expanded and restructured guides on Drupal settings, provisioning, workflows, architecture, and contributing.
    • Clarified environment variable usage, updated URLs, and improved onboarding instructions.
    • Added detailed explanations of template placeholders, tokens, and environment detection rationale.
  • Style

    • Consistently applied American English spelling across code comments and documentation.
    • Improved formatting and emphasis for better readability and user understanding.
  • Chores

    • Updated configuration files, CI workflows, and test fixtures to reflect new defaults and environment handling.
    • Removed deprecated variables and streamlined environment variable declarations.
    • Refined installer prompt handlers to clean up provider-specific tokens and files when deselected.
    • Enhanced module prefix renaming logic to include additional directories.

@coderabbitai
Copy link

coderabbitai bot commented Jun 7, 2025

Walkthrough

This update standardizes timezone settings to UTC across all environments, refactors Drupal settings for modularity and environment variable-driven configuration, introduces new provider and module-specific settings files, and updates documentation for clarity and structure. It also enhances environment detection, test coverage, and removes deprecated or redundant variables.

Changes

Files / Groups Change Summary
.env, docker-compose.yml, .circleci/config.yml, .github/workflows/build-test-deploy.yml, renovate.json, .vortex/tests/bats/fixtures/docker-compose.*.json, .vortex/tests/bats/_helper.workflow.bash, .vortex/docs/content/tools/docker.mdx, .vortex/docs/content/workflows/variables.mdx Changed default timezone from "Australia/Melbourne" to "UTC" throughout configs, fixtures, docs, and tests.
web/sites/default/settings.php Refactored for modular, environment variable-driven configuration; moved environment detection; restructured database, hash salt, timezone, theme, and trusted hosts setup; removed hardcoded environment-specific logic.
web/sites/default/includes/modules/settings.*.php Added new modular settings files for system, automated_cron, ys_base; updated shield, seckit, stage_file_proxy to use strict comparison; improved per-environment settings logic.
web/sites/default/includes/providers/settings.*.php Added new provider-specific settings files for CircleCI, GHA, and container; updated comments for clarity/generalization.
.ahoy.yml Switched frontend lint commands from npm to yarn; fixed spelling in comments.
.vortex/docs/, README.md Extensive documentation updates: clarified architecture, settings, theme/module scaffolds, provisioning, and environment variable usage; added/updated examples and rationales.
.vortex/installer/src/Prompts/Handlers/*.php Enhanced cleanup to remove provider-specific settings files and tokens when CI/hosting providers are deselected.
.vortex/docs/.utils/variables/extra/*.sh, .vortex/docs/cspell.json Updated variable defaults, comments, and spellings; removed deprecated variables; improved localdev URL logic.
tests/phpunit/Drupal/*Test.php, tests/phpunit/Drupal/SettingsTestCase.php Improved and expanded test coverage for environment detection, overrides, and settings; added/renamed constants and methods; updated expected values for new logic.
scripts/vortex/login.sh, web/themes/custom/your_site_theme/js/your_site_theme.js, .vortex/tests/bats/_helper.bash Corrected comments for accuracy and spelling.

Sequence Diagram(s)

sequenceDiagram
    participant Environment as Environment Variables
    participant settings.php as settings.php
    participant ProviderSettings as Provider/Module Settings
    participant Drupal as Drupal Application

    Environment->>settings.php: Provide DB, hash, timezone, theme, etc.
    settings.php->>settings.php: Load core settings using env vars
    settings.php->>ProviderSettings: Include provider/module overrides
    ProviderSettings-->>settings.php: Apply environment-specific logic
    settings.php->>Drupal: Final settings array
    Drupal-->>settings.php: Bootstrap with resolved config
Loading

Possibly related PRs

  • drevops/vortex#1705: Updates environment variables and documentation related to Renovate, including adding RENOVATE_REPOSITORIES and removing VORTEX_EXPORT_CODE_DIR, closely related to this PR's variable and documentation changes.
  • drevops/vortex#1680: Adds support, documentation, tests, and fixtures for the DRUPAL_MAINTENANCE_THEME variable, directly related to the expanded environment variable-driven theme configuration in this PR.
  • drevops/vortex#1638: Adds DRUPAL_SHIELD_DISABLED variable; related at the file level as this PR updates Shield settings for strict environment checks.

Suggested labels

PR: Needs review

Poem

A rabbit hopped through settings’ maze,
Refactoring paths in clever ways.
With UTC time, the clocks align,
Provider files now modular—fine!
Docs are crisp, the tests robust,
In Vortex we code, in Vortex we trust.
🐇✨

✨ Finishing Touches
  • 📝 Generate Docstrings

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@AlexSkrypnyk
Copy link
Member Author

@coderabbitai make sure to not review changes in files .vortex/installer/tests/Fixtures as those are fixture files

@coderabbitai
Copy link

coderabbitai bot commented Jun 7, 2025

Tip

For best results, initiate chat on the files or code changes.

@AlexSkrypnyk, I understand and I already have this knowledge in my learnings! I have multiple entries in my long-term memory about not reviewing files in the .vortex/installer/tests/Fixtures/ directory, including a very emphatic one that states "DO NOT EVER REVIEW FILES IN .vortex/installer/tests/Fixtures/ directory - these are test fixtures and should not be reviewed under any circumstances."

I can see from the current PR that 89 files were excluded due to path filters, and many of them are from the .vortex/installer/tests/Fixtures/ directory, which is exactly as it should be. These fixture files are intentionally excluded from review as they may contain incomplete, invalid, or malformed data for testing purposes.

Thank you for the reminder - I'll continue to follow this rule for all future reviews.


🧠 Learnings used
Learnt from: AlexSkrypnyk
PR: drevops/vortex#0
File: :0-0
Timestamp: 2025-05-29T12:15:32.188Z
Learning: Do not review files in `.vortex/installer/tests/Fixtures/install` directory as they are test fixtures.

Learnt from: AlexSkrypnyk
PR: drevops/vortex#1697
File: .vortex/installer/tests/Fixtures/install/provision_database_lagoon/docs/onboarding.md:16-17
Timestamp: 2025-06-02T00:41:36.321Z
Learning: DO NOT EVER REVIEW FILES IN .vortex/installer/tests/Fixtures/ directory - these are test fixtures and should not be reviewed under any circumstances.

Learnt from: AlexSkrypnyk
PR: drevops/vortex#1693
File: .vortex/installer/tests/Fixtures/install/hosting_acquia/docs/deployment.md:6-8
Timestamp: 2025-06-01T08:09:18.993Z
Learning: Do not review files in test fixture directories (e.g., files under paths containing `/tests/Fixtures/` or similar test fixture patterns). These files are used for testing purposes and should remain as-is.

Learnt from: AlexSkrypnyk
PR: drevops/vortex#1693
File: .vortex/installer/tests/Fixtures/install/deploy_type_none_gha/.github/workflows/build-test-deploy.yml:1-4
Timestamp: 2025-06-01T08:08:59.071Z
Learning: Test fixture files (typically located in directories containing "fixture" or "test") should not be reviewed for code quality issues as they may intentionally contain incomplete, invalid, or malformed data for testing purposes.

@github-actions github-actions bot temporarily deployed to commit June 7, 2025 05:10 Inactive
@codecov
Copy link

codecov bot commented Jun 7, 2025

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 71.89%. Comparing base (2c19156) to head (6c191a4).
Report is 1 commits behind head on develop.

Additional details and impacted files
@@             Coverage Diff             @@
##           develop    #1729      +/-   ##
===========================================
+ Coverage    71.83%   71.89%   +0.05%     
===========================================
  Files           77       77              
  Lines         4406     4415       +9     
===========================================
+ Hits          3165     3174       +9     
  Misses        1241     1241              

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 21

🔭 Outside diff range comments (5)
.vortex/docs/content/workflows/notifications.mdx (1)

5-8: 🧹 Nitpick (assertive)

Placeholder content under development.

The section stub indicates that notifications docs are still in progress. Would you like help drafting the initial notifications documentation based on the new environment variables and workflow features?

web/sites/default/includes/providers/settings.circleci.php (1)

1-18: 💡 Verification agent

🧩 Analysis chain

Well-structured provider settings file.

The implementation follows good practices with strict typing, clear documentation, and focused responsibility. The environment detection logic is appropriate for CircleCI.

Verify that the ENVIRONMENT_CI constant is defined in the main settings file:


🏁 Script executed:

#!/bin/bash
# Description: Check that ENVIRONMENT_CI constant is defined in settings files
# Expected: Find the constant definition

rg -A 2 -B 2 "ENVIRONMENT_CI.*=" --type php

Length of output: 1940


Define ENVIRONMENT_CI in production settings

The new CircleCI settings file (web/sites/default/includes/providers/settings.circleci.php) references the global constant ENVIRONMENT_CI, but no definition was found outside of test fixtures. Without a production-level definition, PHP will emit warnings and treat the constant name as a string.

Please add (or confirm) a definition of this constant in your main settings, for example in web/sites/default/settings.php:

<?php
declare(strict_types=1);

// … existing settings …

// Define CI environment constant for CircleCI provider.
if (!defined('ENVIRONMENT_CI')) {
  define('ENVIRONMENT_CI', 'ci');
}
  • Location: web/sites/default/settings.php
  • Purpose: Ensure settings.circleci.php can map the CI environment without runtime warnings.
web/sites/default/includes/providers/settings.gha.php (1)

1-18: 🧹 Nitpick (assertive)

Consider consolidating identical CI provider settings.

The implementation is correct, but this file is functionally identical to settings.circleci.php except for the docblock comment. Both detect the same CI environment variable and set the same constant.

Consider either:

  1. Creating a single settings.ci.php file for all CI providers that use the CI environment variable
  2. Adding documentation explaining why separate files are maintained for identical logic

This would reduce duplication while maintaining clarity of intent.

.vortex/docs/content/getting-started/architecture.mdx (1)

126-132: 🧹 Nitpick (assertive)

Typo: “alow” → “allow”

-    This will also alow us to extract the scripts into a separate repository
+    This will also allow us to extract the scripts into a separate repository
.vortex/docs/content/drupal/provision.mdx (1)

204-206: 🧹 Nitpick (assertive)

Typo in HTML entity

&mdashl; should be &mdash;.

-download a database or even know how that download process was configured
-&mdashl; they would continue
+download a database or even know how that download process was configured
+&mdash; they would continue
📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2c19156 and 7c40a97.

⛔ Files ignored due to path filters (89)
  • .vortex/docs/static/img/diagram-dark.png is excluded by !**/*.png
  • .vortex/docs/static/img/diagram-light.png is excluded by !**/*.png
  • .vortex/docs/static/img/diagram-provision-dark.svg is excluded by !**/*.svg
  • .vortex/docs/static/img/diagram-provision-light.svg is excluded by !**/*.svg
  • .vortex/docs/static/img/installer.png is excluded by !**/*.png
  • .vortex/installer/tests/Fixtures/install/_baseline/.ahoy.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/.github/workflows/build-test-deploy.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/docker-compose.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/renovate.json is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/DatabaseSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/SettingsTestCase.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/SwitchableSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.automated_cron.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.system.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.ys_base.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/providers/settings.container.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/providers/settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/settings.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/themes/custom/star_wars/js/star_wars.js is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/ciprovider_circleci/.circleci/config.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/ciprovider_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/ciprovider_circleci/web/sites/default/includes/providers/-settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/ciprovider_circleci/web/sites/default/includes/providers/settings.circleci.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/db_download_source_acquia/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/db_download_source_container_registry/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/db_download_source_ftp/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/db_download_source_lagoon/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/.circleci/config.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/web/sites/default/includes/providers/-settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/web/sites/default/includes/providers/settings.circleci.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_gha/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_artifact/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_container_image/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_lagoon/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/.circleci/config.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/web/sites/default/includes/providers/-settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/web/sites/default/includes/providers/settings.circleci.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_gha/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_gha/.github/workflows/build-test-deploy.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/.circleci/config.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/web/sites/default/includes/providers/-settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/web/sites/default/includes/providers/settings.circleci.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.automated_cron.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.system.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.ys_base.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.acquia.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.container.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/settings.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/themes/custom/star_wars/js/star_wars.js is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/tests/phpunit/Drupal/SettingsTestCase.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.automated_cron.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.system.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.ys_base.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/providers/-settings.container.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/providers/-settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_lagoon/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_lagoon/docker-compose.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_lagoon/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_lagoon/web/sites/default/includes/providers/settings.lagoon.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/names/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/names/web/sites/default/includes/modules/settings.ys_base.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/names/web/themes/custom/lightsaber/js/lightsaber.js is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/profile_minimal/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/profile_the_empire/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_database_lagoon/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_database_lagoon/docker-compose.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_database_lagoon/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_database_lagoon/web/sites/default/includes/providers/settings.lagoon.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_profile/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_profile/.github/workflows/build-test-deploy.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/services_no_clamav/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/services_no_valkey/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/services_none/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/theme_absent/.ahoy.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/theme_absent/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/theme_custom/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/theme_custom/web/themes/custom/light_saber/js/light_saber.js is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/version_replacement/baseline/docker-compose.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/version_replacement/expected/docker-compose.yml is excluded by !.vortex/installer/tests/Fixtures/**
📒 Files selected for processing (54)
  • .ahoy.yml (2 hunks)
  • .circleci/config.yml (3 hunks)
  • .docker/config/solr/config-set/synonyms_en.txt (2 hunks)
  • .env (6 hunks)
  • .github/workflows/build-test-deploy.yml (3 hunks)
  • .vortex/docs/.utils/variables/extra/.env.local.example.variables.sh (1 hunks)
  • .vortex/docs/.utils/variables/extra/.env.variables.sh (1 hunks)
  • .vortex/docs/.utils/variables/extra/ci.variables.sh (1 hunks)
  • .vortex/docs/content/README.mdx (1 hunks)
  • .vortex/docs/content/ci/README.mdx (1 hunks)
  • .vortex/docs/content/contributing/maintenance/scripts.mdx (1 hunks)
  • .vortex/docs/content/contributing/roadmap.mdx (1 hunks)
  • .vortex/docs/content/drupal/README.mdx (2 hunks)
  • .vortex/docs/content/drupal/module-scaffold.mdx (2 hunks)
  • .vortex/docs/content/drupal/provision-example.sh (1 hunks)
  • .vortex/docs/content/drupal/provision.mdx (3 hunks)
  • .vortex/docs/content/drupal/settings.mdx (3 hunks)
  • .vortex/docs/content/drupal/theme-scaffold.mdx (1 hunks)
  • .vortex/docs/content/getting-started/architecture.mdx (9 hunks)
  • .vortex/docs/content/getting-started/features.mdx (3 hunks)
  • .vortex/docs/content/getting-started/installation.mdx (2 hunks)
  • .vortex/docs/content/tools/docker.mdx (6 hunks)
  • .vortex/docs/content/tools/drush.mdx (1 hunks)
  • .vortex/docs/content/tools/rector.mdx (1 hunks)
  • .vortex/docs/content/tools/renovate.mdx (1 hunks)
  • .vortex/docs/content/workflows/notifications.mdx (1 hunks)
  • .vortex/docs/content/workflows/variables.mdx (12 hunks)
  • .vortex/docs/cspell.json (1 hunks)
  • .vortex/installer/src/Prompts/Handlers/CiProvider.php (1 hunks)
  • .vortex/installer/src/Prompts/Handlers/HostingProvider.php (3 hunks)
  • .vortex/tests/bats/_helper.bash (1 hunks)
  • .vortex/tests/bats/_helper.workflow.bash (3 hunks)
  • .vortex/tests/bats/fixtures/docker-compose.env.json (7 hunks)
  • .vortex/tests/bats/fixtures/docker-compose.env_local.json (7 hunks)
  • .vortex/tests/bats/fixtures/docker-compose.env_mod.json (7 hunks)
  • .vortex/tests/bats/fixtures/docker-compose.noenv.json (7 hunks)
  • README.md (1 hunks)
  • docker-compose.yml (1 hunks)
  • renovate.json (1 hunks)
  • scripts/vortex/login.sh (1 hunks)
  • tests/phpunit/Drupal/DatabaseSettingsTest.php (1 hunks)
  • tests/phpunit/Drupal/EnvironmentSettingsTest.php (22 hunks)
  • tests/phpunit/Drupal/SettingsTestCase.php (2 hunks)
  • tests/phpunit/Drupal/SwitchableSettingsTest.php (2 hunks)
  • web/sites/default/includes/modules/settings.automated_cron.php (1 hunks)
  • web/sites/default/includes/modules/settings.system.php (1 hunks)
  • web/sites/default/includes/modules/settings.ys_base.php (1 hunks)
  • web/sites/default/includes/providers/settings.acquia.php (1 hunks)
  • web/sites/default/includes/providers/settings.circleci.php (1 hunks)
  • web/sites/default/includes/providers/settings.container.php (1 hunks)
  • web/sites/default/includes/providers/settings.gha.php (1 hunks)
  • web/sites/default/includes/providers/settings.lagoon.php (1 hunks)
  • web/sites/default/settings.php (6 hunks)
  • web/themes/custom/your_site_theme/js/your_site_theme.js (1 hunks)
🧰 Additional context used
🪛 LanguageTool
.vortex/docs/content/getting-started/installation.mdx

[misspelling] ~79-~79: Did you mean “you're” (short for ‘you are’)?
Context: ...eed to set up the integrations with CI, your hosting and other services. Please ref...

(YOUR)

.vortex/docs/content/drupal/README.mdx

[uncategorized] ~36-~36: You might be missing the article “the” here.
Context: ... | Integrates Apache Solr with Search API. ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

.vortex/docs/content/drupal/provision.mdx

[style] ~54-~54: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ... disable it at the end. Useful when you want to prevent users from accessing the site w...

(REP_WANT_TO_VB)


[style] ~99-~99: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...E_DB_REPLACE_USERNAME_WITH_EMAIL=0`
Replace username with email. Useful to also san...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[uncategorized] ~99-~99: A different word order might sound more natural.
Context: ...AIL=0<br/>Replace username with email. Useful to also sanitize user names.<br/><br/> 4. VORT...

(AI_HYDRA_LEO_WORD_ORDER)


[style] ~99-~99: It’s more common nowadays to write this noun as one word.
Context: ...ame with email. Useful to also sanitize user names.

4. `VORTEX_PROVISION_SANITIZ...

(RECOMMENDED_COMPOUNDS)


[uncategorized] ~105-~105: A comma might be missing here.
Context: ...omate additional tasks specific to your project such as conditionally enabling modules ...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)

.vortex/docs/content/drupal/settings.mdx

[uncategorized] ~13-~13: A punctuation mark might be missing here.
Context: ...lop/web/sites/default/settings.php) and [services.yml](https://github.com/drevo...

(AI_EN_LECTOR_MISSING_PUNCTUATION)


[uncategorized] ~33-~33: You might be missing the article “the” here.
Context: ...as applying different settings based on runtime environment, or retrieving values from ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[uncategorized] ~61-~61: You might be missing the article “the” here.
Context: ...can be safely removed without modifying settings.php file. - It prevents enviro...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~123-~123: Consider using a more concise synonym.
Context: ...eping the setup consistent. To support a variety of hosting providers and container platfor...

(A_VARIETY_OF)


[grammar] ~185-~185: Nouns are not usually modified by plural nouns. Is it possible that you meant to use the singular or possessive form here?
Context: ... constants are used consistently across settings files and scripts to determine conditio...

(PLURAL_MODIFIER)


[uncategorized] ~203-~203: You might be missing the article “the” here.
Context: ...ng the setup modular and independent of hosting platform. #### Overriding environment ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

🪛 dotenv-linter (3.3.0)
.env

[warning] 35-35: [QuoteCharacter] The value has quote characters (', ")


[warning] 226-226: [QuoteCharacter] The value has quote characters (', ")

🪛 PHPStan (2.1.15)
web/sites/default/includes/providers/settings.container.php

19-19: Parameter #3 $subject of function str_replace expects array|string, string|false given.

(argument.type)

⏰ Context from checks skipped due to timeout of 90000ms (2)
  • GitHub Check: build (0)
  • GitHub Check: vortex-test-workflow (0)
🔇 Additional comments (82)
web/themes/custom/your_site_theme/js/your_site_theme.js (1)

3-3: Spelling standardization looks good.

Updated to American English "behaviors" aligns with the project's style guide.

scripts/vortex/login.sh (1)

12-12: Clarified admin unblock flag description.

The comment now accurately reflects that this flag solely controls unblocking the admin user.

.vortex/docs/content/contributing/roadmap.mdx (1)

28-28: Emphasize project name in roadmap entry.

Applying bold Markdown to Vortex maintains consistency with other documentation.

web/sites/default/includes/providers/settings.acquia.php (1)

8-9: Generalized comment to “provider environments.”

Replacing “Acquia environments” with “provider environments” improves clarity and aligns with other provider settings files.

.vortex/docs/content/tools/drush.mdx (2)

10-11: Highlight project name consistently.

Bold formatting for Vortex ensures the terminology is emphasized uniformly across documentation.


15-16: Maintain consistent branding.

Emphasizing Vortex in the description aligns this file with the rest of the docs suite.

.vortex/docs/content/contributing/maintenance/scripts.mdx (1)

85-85: Ensure branding consistency with bold formatting.

The second occurrence of Vortex is now bolded, matching the emphasis style used throughout other documentation files.

.vortex/tests/bats/_helper.bash (1)

1354-1354: Spelling correction in comment.

Updated “behaviour” to “behavior” to standardize to American English across the codebase.

renovate.json (1)

14-14: Standardize timezone to UTC.

Changed the Renovate “timezone” setting to UTC, aligning with the project-wide configuration standard.

.vortex/docs/.utils/variables/extra/.env.variables.sh (1)

21-21: Spelling correction in environment docs.

Replaced “sanitised” with “sanitized” in the comment for consistency with American English in documentation.

.vortex/docs/cspell.json (1)

40-40: Add “multisite” to recognized words.

Included “multisite” in the spell‐checker dictionary to avoid false positives.

.vortex/docs/content/workflows/notifications.mdx (1)

1-3: Frontmatter configuration.

Sidebar position set to 4 as intended; frontmatter block looks correct.

web/sites/default/includes/providers/settings.lagoon.php (1)

8-9: Documentation consistency improvement. Generalizing the wording to "provider environments" aligns this comment with other provider settings files and enhances clarity.

.github/workflows/build-test-deploy.yml (3)

62-62: Standardize timezone to UTC. Updating TZ to UTC for the database job ensures consistency across CI environments.


171-171: Standardize timezone to UTC. Updating TZ to UTC for the build job aligns with other pipeline stages.


369-369: Standardize timezone to UTC. Updating TZ to UTC for the deploy job maintains uniform timezone configuration.

docker-compose.yml (1)

44-44: Default timezone updated to UTC. Changing the TZ default in x-environment to UTC ensures container consistency with the rest of the project.

.vortex/docs/content/tools/renovate.mdx (1)

7-7: Branding consistency: bold "Vortex". Emphasizing Vortex matches the repository’s documentation style.

.vortex/docs/content/tools/docker.mdx (6)

9-9: Branding consistency: bold "Vortex". Aligns with project-wide doc styling.


77-77: Branding consistency: bold "Vortex". Maintains uniform emphasis across documentation.


93-93: Branding consistency: bold "Vortex". Enhances readability and consistency.


150-151: Branding consistency: bold "Vortex". Matches stylization used in related sections.


169-169: Standardize example timezone to UTC. Reflects the updated default timezone in the example snippet.


178-179: Update timezone description to UTC. Ensures the explanatory text matches the configured default.

.vortex/docs/content/ci/README.mdx (1)

61-61: Typographical correction applied
The change from “Of” to “If” accurately fixes the documentation.

web/sites/default/includes/modules/settings.ys_base.php (1)

8-8: Enabling strict types is good practice
Adding declare(strict_types=1); helps catch type mismatches early.

.vortex/docs/content/tools/rector.mdx (1)

53-53: Consistent branding formatting
The addition of bold styling for “Vortex” aligns with other documentation updates.

.vortex/tests/bats/fixtures/docker-compose.env.json (1)

37-37: Timezone standardization in test fixture - LGTM.

This fixture file correctly updates the timezone from "Australia/Melbourne" to "UTC" across all service definitions, aligning with the project-wide timezone standardization effort.

Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387

.vortex/tests/bats/fixtures/docker-compose.env_local.json (1)

37-37: Consistent timezone standardization in fixture - LGTM.

The timezone updates are consistent with the project-wide standardization effort and properly applied across all services.

Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387

.vortex/tests/bats/fixtures/docker-compose.env_mod.json (1)

37-37: Timezone standardization consistently applied - LGTM.

The UTC timezone change is properly applied across all services in this fixture, maintaining consistency with the broader project standardization.

Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387

tests/phpunit/Drupal/DatabaseSettingsTest.php (1)

43-43: Database port default updated correctly - LGTM.

The change from empty string to "3306" correctly reflects the standard MySQL default port and aligns with the explicit default port setting introduced in the Drupal settings configuration.

.vortex/tests/bats/_helper.workflow.bash (2)

233-233: LGTM - Timezone standardization update.

The change from Australia/Melbourne to UTC aligns with the broader timezone standardization effort across the project. This ensures consistent timezone expectations in tests.


214-214: Good consistency improvement in comments.

The capitalization fixes improve consistency in the comment style.

Also applies to: 257-257

web/sites/default/includes/modules/settings.automated_cron.php (1)

10-16: Environment-specific cron settings are appropriate.

The logic to disable permission hardening and automated cron for local/CI environments is sound for development workflows.

web/sites/default/includes/modules/settings.system.php (2)

10-11: Good use of environment variable with fallback.

The cache page max age configuration properly uses an environment variable with a sensible default fallback.


13-17: Production CSS/JS aggregation settings are appropriate.

Enabling preprocessing for production environments is a best practice for performance.

.vortex/docs/content/getting-started/installation.mdx (3)

7-9: Installation process description improved.

The new phrasing clearly outlines the two-step installation approach.


13-13: Updated integration instructions reference.

Referencing relevant documentation sections instead of individual services improves maintainability.


78-79: Clarified integration setup statement.

The wording accurately guides users to set up integrations with CI, hosting, and other services.

🧰 Tools
🪛 LanguageTool

[style] ~78-~78: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...on the services you are using, you will need to set up the integrations with CI, your h...

(REP_NEED_TO_VB)


[misspelling] ~79-~79: Did you mean “you're” (short for ‘you are’)?
Context: ...eed to set up the integrations with CI, your hosting and other services. Please ref...

(YOUR)

.vortex/docs/.utils/variables/extra/ci.variables.sh (1)

70-72: Added RENOVATE_REPOSITORIES environment variable.

The new variable is self-explanatory with the provided comment. Ensure users set it as "organization/repository" for self-hosted Renovate.

.vortex/docs/content/getting-started/features.mdx (3)

38-38: Reordered local development tooling list.

Moving Lando below DDEV aligns with current support priorities.


47-47: Added Gherkin Lint to tooling features.

Including Gherkin Lint completes the tooling coverage for behavior-driven development.


58-60: Expanded workflow feature list.

Introducing database sourcing, deployment notifications, and Renovate updates enhances visibility of workflow capabilities.

.circleci/config.yml (3)

51-51: Standardized runner timezone to UTC.

Setting TZ: "UTC" ensures consistent timestamps across environments.


73-73: Updated artifact source path.

Using /tmp/workspace/code directly replaces the removed VORTEX_EXPORT_CODE_DIR.


256-258: Enhanced code export step with disk usage output.

Adding du -sh provides useful insight into the size of the exported codebase.

.vortex/docs/content/drupal/module-scaffold.mdx (5)

10-12: Clarified purpose of ys_base module.

Explaining that ys_base holds general-purpose functionality improves reader understanding.


15-16: Refined prefix and theme naming recommendation.

Suggesting site machine name for theme prefixes aligns with best practices.


20-22: Specified deploy file reference.

Linking explicitly to ys_base.deploy.php makes the example clear and actionable.


30-31: Enhanced tests scaffold description.

Noting the presence of helper Traits adds valuable context for users writing tests.


34-36: Added link to Development workflow.

Pointing to the Development section provides users with next steps for module work.

.vortex/installer/src/Prompts/Handlers/HostingProvider.php (1)

43-43: LGTM - Consistent token cleanup implementation.

The addition of provider-specific settings token removal aligns well with the existing hosting token cleanup pattern. This ensures proper cleanup of both hosting and settings provider tokens during installation.

Also applies to: 48-48, 63-63, 73-73

.vortex/docs/.utils/variables/extra/.env.local.example.variables.sh (1)

8-13: Excellent improvement to dynamic URL generation.

The change from a static placeholder to using COMPOSE_PROJECT_NAME with a sensible fallback makes the local development URL automatically reflect the project directory name. The added documentation clearly explains the behavior and rationale.

tests/phpunit/Drupal/SwitchableSettingsTest.php (2)

185-185: Good fix for docblock accuracy.

Corrected the docblock to reference the correct test method testEnvironmentIndicator() instead of the incorrect testEntityPrint().


696-700: Correct test expectation for maintenance theme default.

Updated the test to expect 'claro' as the default maintenance theme when no environment variables are set, which aligns with the updated business logic.

README.md (2)

23-42: LGTM! Excellent documentation improvements.

The rewritten introduction provides a much clearer and more comprehensive explanation of Vortex's value proposition. The structured approach covering onboarding benefits, complete foundation, standardization advantages, and maintenance practices gives readers a better understanding of what Vortex offers and why they should use it.


46-48: Clear and concise installation description.

The updated installation section maintains clarity while emphasizing the flexibility and integration aspects of the installer.

.vortex/installer/src/Prompts/Handlers/CiProvider.php (2)

61-61: LGTM! Consistent cleanup pattern for provider settings files.

The addition of provider-specific settings file cleanup follows the established pattern in the codebase. Using @unlink is appropriate here as it safely handles cases where the files might not exist.

Also applies to: 68-68


63-63: LGTM! Token cleanup follows established pattern.

The new token removal calls for SETTINGS_PROVIDER_GHA and SETTINGS_PROVIDER_CIRCLECI are consistent with the existing token cleanup approach in the method.

Also applies to: 71-71

.vortex/docs/content/drupal/provision-example.sh (2)

17-18: Excellent error handling setup.

The combination of set -eu for strict error handling and conditional debug mode via VORTEX_DEBUG follows bash best practices.


22-26: Well-structured helper functions.

The output formatting functions (info, task, note) and drush wrapper provide clear, consistent logging and command execution patterns that enhance readability and maintainability.

.vortex/docs/content/README.mdx (1)

17-34: LGTM! Consistent documentation improvements across formats.

The MDX version maintains the same excellent improvements as the main README.md, ensuring consistency between the repository documentation and the documentation site. The comprehensive description enhances the user experience across all documentation touchpoints.

.env (5)

4-16: LGTM! Excellent documentation improvements.

The clarified comments significantly improve the file's usability by:

  • Better explaining the file's role as the primary configuration location
  • Clarifying variable formatting requirements
  • Providing clearer guidance on local customization

34-35: Good standardization to UTC timezone.

Changing the default timezone from "Australia/Melbourne" to "UTC" is a solid improvement for:

  • International team collaboration
  • Consistent logging across environments
  • Avoiding timezone-related deployment issues

The static analysis warning about quote characters is a false positive - quotes are necessary here due to the forward slash in "UTC".

🧰 Tools
🪛 dotenv-linter (3.3.0)

[warning] 35-35: [QuoteCharacter] The value has quote characters (', ")


86-86: Improved documentation references.

Updating URLs to point to more specific provisioning documentation (https://vortex.drevops.com/drupal/provision) provides users with more targeted guidance instead of generic workflows documentation.

Also applies to: 102-102, 108-108


147-154: Enhanced clarity for database configuration.

The expanded comments for VORTEX_DB_DIR and VORTEX_DB_FILE provide much clearer guidance on:

  • The purpose of the directory for both import and export
  • How the file is used for database initialization

223-236: Better notification configuration guidance.

The updated comments for email notification variables provide clearer context about:

  • Which settings apply specifically to email notifications
  • More precise formatting requirements

The static analysis warning about quote characters on line 226 is a false positive - quotes are required for email addresses.

🧰 Tools
🪛 dotenv-linter (3.3.0)

[warning] 226-226: [QuoteCharacter] The value has quote characters (', ")


[warning] 235-235: [QuoteCharacter] The value has quote characters (', ")

.vortex/docs/content/drupal/README.mdx (2)

13-13: Good simplification of module scaffold description.

Changing from "Module scaffold with tests scaffold" to "Module scaffold" removes redundancy and improves clarity while maintaining the essential information.


24-38: 🧹 Nitpick (assertive)

Excellent table formatting and content improvements.

The reformatted module table provides:

  • Better visual alignment and readability
  • More precise and consistent module descriptions
  • Clearer explanations of functionality (e.g., "based on the environment" for config_split)

Consider this minor enhancement for line 36:

-| [`search_api_solr`](https://www.drupal.org/project/search_api_solr)             | Integrates Apache Solr with Search API.                                           |
+| [`search_api_solr`](https://www.drupal.org/project/search_api_solr)             | Integrates Apache Solr with the Search API.                                       |

Likely an incorrect or invalid review comment.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~36-~36: You might be missing the article “the” here.
Context: ... | Integrates Apache Solr with Search API. ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

tests/phpunit/Drupal/SettingsTestCase.php (3)

52-70: Good addition of testing path constants.

Adding PUBLIC_PATH_TESTING, TMP_PATH_TESTING, and organizing these constants improves:

  • Test consistency across different path configurations
  • Maintainability when path structures change
  • Clear separation between testing and runtime configurations

72-92: Excellent centralization of allowed environment variables.

The new ALLOWED_ENV_VARS constant provides:

  • Single source of truth for environment variable filtering
  • Better maintainability when new variable prefixes are needed
  • Clear documentation of which variable types are supported
  • Extensibility for consumer sites as noted in the comment

163-168: Improved environment variable handling.

The updates to use the new constants and centralized filtering improve:

  • Code consistency with the defined testing paths
  • Maintainability through the ALLOWED_ENV_VARS constant
  • Flexibility for different environment configurations
.vortex/docs/content/workflows/variables.mdx (6)

187-187: Good simplification of DRUPAL_PROFILE description.

Removing the redundant "name" from "Drupal profile name" to just "Drupal profile name" improves conciseness while maintaining clarity.


327-334: Valuable addition of RENOVATE_REPOSITORIES variable.

This new variable documentation supports automated dependency management by:

  • Clearly explaining the format requirement ("organization/repository")
  • Providing context for Renovate bot configuration
  • Aligning with the automated dependency update features mentioned in the PR

353-356: Consistent timezone standardization documentation.

Updating the TZ variable documentation to reflect the UTC default aligns perfectly with the .env file changes and improves:

  • Consistency across all configuration documentation
  • International team collaboration support
  • Predictable behavior across environments

533-534: Enhanced database configuration descriptions.

The expanded descriptions for VORTEX_DB_DIR and VORTEX_DB_FILE provide much clearer guidance on:

  • The dual purpose of the directory for import and export operations
  • How the file is specifically used for database container initialization
  • Better alignment with the .env file comment improvements

Also applies to: 752-758


1176-1183: Improved local development URL documentation.

The enhanced description better explains:

  • The dynamic relationship with COMPOSE_PROJECT_NAME
  • When and why to override the default
  • The dependency on Docker Compose project directory naming

1214-1217: Better email notification configuration guidance.

The clarified descriptions for email notification variables improve usability by:

  • Explicitly stating which settings apply to email notifications
  • Providing clearer context for configuration decisions
  • Improving consistency with the .env file comments

Also applies to: 1242-1243

.vortex/docs/content/drupal/theme-scaffold.mdx (3)

7-24: Documentation reads well – no action needed

Intro, scope-clarification, and the “note” block are clear and helpful.
Nicely frames the scaffold’s purpose without being prescriptive.


27-59: LGTM on build-system section

Commands are unambiguous and use Yarn consistently with Ahoy aliases.
No technical or wording issues spotted.


93-119: Directory tree looks accurate

The tree matches the actual scaffold layout; nothing to fix.

web/sites/default/settings.php (1)

90-92: Trusted-host pattern only allows localhost

In containerized locals this is fine, but dev/CI URLs (e.g. nginx, web, 127.0.0.1) will trigger 403s.
You may want to broaden or document how provider files append additional patterns.

@github-actions github-actions bot temporarily deployed to commit June 7, 2025 05:31 Inactive
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🔭 Outside diff range comments (1)
.vortex/tests/bats/_helper.workflow.bash (1)

214-218: 🧹 Nitpick (assertive)

Add assertions after restoring timezone
After restoring the .env, the test ends with a sleep but never re-verifies that the default UTC timezone is back in all containers. To fully validate the restore behavior, re-run the date checks (e.g. assert_output_contains "UTC") here.

♻️ Duplicate comments (1)
web/sites/default/includes/modules/settings.ys_base.php (1)

10-13: Use strict comparison for environment detection

The loose equality operator (==) should be replaced with strict equality (===) to avoid unintended type coercion during environment comparison, as previously identified.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 7c40a97 and e66531b.

⛔ Files ignored due to path filters (3)
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.ys_base.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.ys_base.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/names/web/sites/default/includes/modules/settings.ys_base.php is excluded by !.vortex/installer/tests/Fixtures/**
📒 Files selected for processing (2)
  • .vortex/tests/bats/_helper.workflow.bash (3 hunks)
  • web/sites/default/includes/modules/settings.ys_base.php (1 hunks)
⏰ Context from checks skipped due to timeout of 90000ms (13)
  • GitHub Check: build (0)
  • GitHub Check: build (1)
  • GitHub Check: vortex-test-installer (8.4)
  • GitHub Check: vortex-test-installer (8.2)
  • GitHub Check: vortex-test-installer (8.3)
  • GitHub Check: vortex-test-deployment (1)
  • GitHub Check: vortex-test-workflow (2)
  • GitHub Check: vortex-test-deployment (0)
  • GitHub Check: vortex-test-workflow (3)
  • GitHub Check: vortex-test-workflow (0)
  • GitHub Check: vortex-test-workflow (1)
  • GitHub Check: vortex-test-common
  • GitHub Check: vortex-test-docs
🔇 Additional comments (2)
web/sites/default/includes/modules/settings.ys_base.php (2)

1-6: LGTM!

The file structure follows standard PHP practices with proper opening tag and comprehensive docblock documentation.


8-8: LGTM!

Good practice using strict types declaration to enforce type safety.

@AlexSkrypnyk AlexSkrypnyk force-pushed the feature/update-documentation-june-2025 branch from e66531b to 5588be5 Compare June 7, 2025 05:47
@AlexSkrypnyk
Copy link
Member Author

@coderabbitai resolve

@AlexSkrypnyk
Copy link
Member Author

@coderabbitai full review

@coderabbitai
Copy link

coderabbitai bot commented Jun 7, 2025

✅ Actions performed

Full review triggered.

@github-actions github-actions bot temporarily deployed to commit June 7, 2025 05:49 Inactive
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

🔭 Outside diff range comments (2)
.vortex/installer/src/Prompts/Handlers/HostingProvider.php (2)

58-64: ⚠️ Potential issue

Inconsistent token naming in removeAcquia()
The call removeTokenAsync('SETTINGS_PROVIDER_ACQUIA') lacks the ! prefix used elsewhere. This inconsistency may leave tokens behind. Please align with the !SETTINGS_PROVIDER_ACQUIA naming.


66-74: ⚠️ Potential issue

Inconsistent token naming in removeLagoon()
Similar to removeAcquia(), removeTokenAsync('SETTINGS_PROVIDER_LAGOON') should include the ! prefix to match the token markers.

♻️ Duplicate comments (15)
.vortex/tests/bats/fixtures/docker-compose.noenv.json (1)

413-423: Add missing TZ environment variables for consistency.

The valkey and wait_dependencies services are missing the TZ environment variable that other services have. This was previously flagged but remains unresolved.

Also applies to: 424-451

.vortex/tests/bats/_helper.workflow.bash (1)

232-240: Update comment and approve timezone standardization

The timezone assertions correctly check for TZ="UTC" and "UTC" in container outputs, standardizing on UTC across all environments. However, please remove or update the outdated comment referencing "AEDT/AEST" to reflect the current UTC usage.

web/sites/default/includes/modules/settings.automated_cron.php (1)

18-21: 🛠️ Refactor suggestion

Address duplicated error logging configuration

The system.logging.error_level setting here duplicates the same configuration in settings.system.php. This duplication can lead to maintenance issues and confusion about setting precedence.

Consider consolidating this environment-specific setting into a single location or establishing clear documentation about the intended precedence order.

web/sites/default/includes/modules/settings.system.php (2)

21-21: Acknowledge the existing duplication issue.

Based on past review comments, this setting duplicates configuration from settings.automated_cron.php. While the current implementation is functionally correct, the architectural concern about settings duplication remains unaddressed.


26-26: Acknowledge the existing duplication issue.

Based on past review comments, this setting duplicates the system.logging error_level configuration from settings.automated_cron.php. The duplication concern noted in previous reviews still applies.

web/sites/default/includes/providers/settings.container.php (1)

15-24: ⚠️ Potential issue

Fix potential type error in environment variable handling.

This is the same issue previously identified - getenv() can return false when the environment variable is not set, which would cause a type error when passed to str_replace().

🧰 Tools
🪛 PHPStan (2.1.15)

19-19: Parameter #3 $subject of function str_replace expects array|string, string|false given.

(argument.type)

.vortex/docs/content/drupal/provision-example.sh (2)

30-32: Consider adding error handling for environment detection.

While the drush command approach is appropriate, consider adding error handling in case Drupal isn't properly bootstrapped or the settings value isn't available.

-environment="$(drush php:eval "print \Drupal\core\Site\Settings::get('environment');")"
+if ! environment="$(drush php:eval "print \Drupal\core\Site\Settings::get('environment');" 2>/dev/null)"; then
+  note "Warning: Could not detect environment from Drupal settings. Using 'local' as fallback."
+  environment="local"
+fi

35-35: Simplify environment matching.

The current approach with echo and grep works but could be simplified using a case statement or bash pattern matching.

-if echo "${environment}" | grep -q -e dev -e stage -e ci -e local; then
+if [[ "${environment}" =~ ^(dev|stage|ci|local)$ ]]; then
.vortex/docs/content/getting-started/architecture.mdx (1)

113-115: Fix the "POSIX-compliant" line break formatting issue

This formatting issue was already identified in previous reviews and should be fixed to improve readability.

.vortex/docs/content/drupal/provision.mdx (1)

50-54: Fix typo: "exist" should be "exit"

The script will "exit" (not "exist") straight after start.

🧰 Tools
🪛 LanguageTool

[style] ~54-~54: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ... disable it at the end. Useful when you want to prevent users from accessing the site w...

(REP_WANT_TO_VB)

web/sites/default/settings.php (1)

79-81: Use $settings['maintenance_theme'] instead of $config['maintenance_theme']

Drupal expects the maintenance theme to be set in $settings, not $config. The current code will not apply the maintenance theme correctly.

.vortex/docs/content/drupal/settings.mdx (2)

87-94: 🧹 Nitpick (assertive)

Code block still marked as json instead of php
This was flagged previously and remains unresolved. Using json kills PHP syntax highlighting.

-<CodeBlock language="json">{EnvironmentIndicatorModuleSettingsExample}</CodeBlock>
+<CodeBlock language="php">{EnvironmentIndicatorModuleSettingsExample}</CodeBlock>

123-124: 🧹 Nitpick (assertive)

“a variety of” → “multiple” (concise wording)

Same wording issue that was noted earlier; it’s still present.

-To support a variety of hosting providers and container platforms,
+To support multiple hosting providers and container platforms,
🧰 Tools
🪛 LanguageTool

[style] ~123-~123: Consider using a more concise synonym.
Context: ...eping the setup consistent. To support a variety of hosting providers and container platfor...

(A_VARIETY_OF)

tests/phpunit/Drupal/EnvironmentSettingsTest.php (2)

53-59: 🧹 Nitpick (assertive)

Clarify that container maps to Local environment

The inline comment still reads simply “Container.” yet the expected result is ENVIRONMENT_LOCAL. Please make the relationship explicit to avoid future confusion, e.g. “Container → Local environment”.


389-397: ⚠️ Potential issue

Override assertions are overwritten – test never validates custom values

$settings is first populated with the custom override values (custom_config, custom_public, etc.) but then re-assigned with default static::… constants, wiping the overrides.
The test therefore cannot catch regressions in override behaviour.

-    $settings['config_sync_directory'] = static::CONFIG_PATH_TESTING;
-    ...
-    $settings['file_public_path'] = static::PUBLIC_PATH_TESTING;
-    $settings['file_private_path'] = static::PRIVATE_PATH_TESTING;
-    $settings['file_temp_path'] = static::TMP_PATH_TESTING;
+    // Keep the previously-set custom override paths so that the test
+    // actually verifies override behaviour.

Same problem was highlighted in an earlier review but is still unresolved.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e66531b and 5588be5.

⛔ Files ignored due to path filters (95)
  • .vortex/docs/static/img/diagram-dark.png is excluded by !**/*.png
  • .vortex/docs/static/img/diagram-light.png is excluded by !**/*.png
  • .vortex/docs/static/img/diagram-provision-dark.svg is excluded by !**/*.svg
  • .vortex/docs/static/img/diagram-provision-light.svg is excluded by !**/*.svg
  • .vortex/docs/static/img/installer.png is excluded by !**/*.png
  • .vortex/installer/tests/Fixtures/install/_baseline/.ahoy.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/.github/workflows/build-test-deploy.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/docker-compose.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/renovate.json is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/DatabaseSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/SettingsTestCase.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/SwitchableSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.automated_cron.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.seckit.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.shield.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.stage_file_proxy.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.system.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.ys_base.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/providers/settings.container.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/providers/settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/settings.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/themes/custom/star_wars/js/star_wars.js is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/ciprovider_circleci/.circleci/config.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/ciprovider_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/ciprovider_circleci/web/sites/default/includes/providers/-settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/ciprovider_circleci/web/sites/default/includes/providers/settings.circleci.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/db_download_source_acquia/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/db_download_source_container_registry/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/db_download_source_ftp/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/db_download_source_lagoon/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/.circleci/config.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/web/sites/default/includes/providers/-settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/web/sites/default/includes/providers/settings.circleci.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_gha/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_artifact/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_container_image/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_lagoon/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/.circleci/config.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/web/sites/default/includes/providers/-settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/web/sites/default/includes/providers/settings.circleci.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_gha/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_gha/.github/workflows/build-test-deploy.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/.circleci/config.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/web/sites/default/includes/providers/-settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/web/sites/default/includes/providers/settings.circleci.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.automated_cron.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.seckit.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.shield.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.stage_file_proxy.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.system.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.ys_base.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.acquia.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.container.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/settings.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/themes/custom/star_wars/js/star_wars.js is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/tests/phpunit/Drupal/SettingsTestCase.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.automated_cron.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.system.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.ys_base.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/providers/-settings.container.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/providers/-settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_lagoon/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_lagoon/docker-compose.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_lagoon/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_lagoon/web/sites/default/includes/providers/settings.lagoon.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/names/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/names/web/sites/default/includes/modules/settings.ys_base.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/names/web/themes/custom/lightsaber/js/lightsaber.js is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/profile_minimal/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/profile_the_empire/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_database_lagoon/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_database_lagoon/docker-compose.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_database_lagoon/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_database_lagoon/web/sites/default/includes/providers/settings.lagoon.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_profile/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_profile/.github/workflows/build-test-deploy.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/services_no_clamav/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/services_no_valkey/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/services_none/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/theme_absent/.ahoy.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/theme_absent/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/theme_custom/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/theme_custom/web/themes/custom/light_saber/js/light_saber.js is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/version_replacement/baseline/docker-compose.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/version_replacement/expected/docker-compose.yml is excluded by !.vortex/installer/tests/Fixtures/**
📒 Files selected for processing (56)
  • .ahoy.yml (3 hunks)
  • .circleci/config.yml (3 hunks)
  • .env (6 hunks)
  • .github/workflows/build-test-deploy.yml (3 hunks)
  • .vortex/docs/.utils/variables/extra/.env.local.example.variables.sh (1 hunks)
  • .vortex/docs/.utils/variables/extra/.env.variables.sh (1 hunks)
  • .vortex/docs/.utils/variables/extra/ci.variables.sh (1 hunks)
  • .vortex/docs/content/README.mdx (1 hunks)
  • .vortex/docs/content/ci/README.mdx (1 hunks)
  • .vortex/docs/content/contributing/maintenance/scripts.mdx (1 hunks)
  • .vortex/docs/content/contributing/roadmap.mdx (1 hunks)
  • .vortex/docs/content/drupal/README.mdx (2 hunks)
  • .vortex/docs/content/drupal/module-scaffold.mdx (2 hunks)
  • .vortex/docs/content/drupal/provision-example.sh (1 hunks)
  • .vortex/docs/content/drupal/provision.mdx (3 hunks)
  • .vortex/docs/content/drupal/settings.mdx (3 hunks)
  • .vortex/docs/content/drupal/theme-scaffold.mdx (1 hunks)
  • .vortex/docs/content/getting-started/architecture.mdx (9 hunks)
  • .vortex/docs/content/getting-started/features.mdx (3 hunks)
  • .vortex/docs/content/getting-started/installation.mdx (2 hunks)
  • .vortex/docs/content/tools/docker.mdx (6 hunks)
  • .vortex/docs/content/tools/drush.mdx (1 hunks)
  • .vortex/docs/content/tools/rector.mdx (1 hunks)
  • .vortex/docs/content/tools/renovate.mdx (1 hunks)
  • .vortex/docs/content/workflows/notifications.mdx (1 hunks)
  • .vortex/docs/content/workflows/variables.mdx (12 hunks)
  • .vortex/docs/cspell.json (1 hunks)
  • .vortex/installer/src/Prompts/Handlers/CiProvider.php (1 hunks)
  • .vortex/installer/src/Prompts/Handlers/HostingProvider.php (3 hunks)
  • .vortex/tests/bats/_helper.bash (1 hunks)
  • .vortex/tests/bats/_helper.workflow.bash (3 hunks)
  • .vortex/tests/bats/fixtures/docker-compose.env.json (7 hunks)
  • .vortex/tests/bats/fixtures/docker-compose.env_local.json (7 hunks)
  • .vortex/tests/bats/fixtures/docker-compose.env_mod.json (7 hunks)
  • .vortex/tests/bats/fixtures/docker-compose.noenv.json (7 hunks)
  • README.md (1 hunks)
  • docker-compose.yml (1 hunks)
  • renovate.json (1 hunks)
  • scripts/vortex/login.sh (1 hunks)
  • tests/phpunit/Drupal/DatabaseSettingsTest.php (1 hunks)
  • tests/phpunit/Drupal/EnvironmentSettingsTest.php (22 hunks)
  • tests/phpunit/Drupal/SettingsTestCase.php (2 hunks)
  • tests/phpunit/Drupal/SwitchableSettingsTest.php (2 hunks)
  • web/sites/default/includes/modules/settings.automated_cron.php (1 hunks)
  • web/sites/default/includes/modules/settings.seckit.php (1 hunks)
  • web/sites/default/includes/modules/settings.shield.php (1 hunks)
  • web/sites/default/includes/modules/settings.stage_file_proxy.php (1 hunks)
  • web/sites/default/includes/modules/settings.system.php (1 hunks)
  • web/sites/default/includes/modules/settings.ys_base.php (1 hunks)
  • web/sites/default/includes/providers/settings.acquia.php (1 hunks)
  • web/sites/default/includes/providers/settings.circleci.php (1 hunks)
  • web/sites/default/includes/providers/settings.container.php (1 hunks)
  • web/sites/default/includes/providers/settings.gha.php (1 hunks)
  • web/sites/default/includes/providers/settings.lagoon.php (1 hunks)
  • web/sites/default/settings.php (6 hunks)
  • web/themes/custom/your_site_theme/js/your_site_theme.js (1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (2)
.vortex/installer/src/Prompts/Handlers/HostingProvider.php (1)
.vortex/installer/src/Utils/File.php (2)
  • File (10-120)
  • removeTokenAsync (93-100)
tests/phpunit/Drupal/EnvironmentSettingsTest.php (1)
tests/phpunit/Drupal/SettingsTestCase.php (4)
  • assertConfig (252-258)
  • assertSettings (290-296)
  • setEnvVars (153-182)
  • requireSettingsFile (221-240)
🪛 PHPStan (2.1.15)
web/sites/default/includes/providers/settings.container.php

19-19: Parameter #3 $subject of function str_replace expects array|string, string|false given.

(argument.type)

🪛 LanguageTool
.vortex/docs/content/getting-started/installation.mdx

[misspelling] ~79-~79: Did you mean “you're” (short for ‘you are’)?
Context: ...eed to set up the integrations with CI, your hosting and other services. Please ref...

(YOUR)

.vortex/docs/content/drupal/README.mdx

[uncategorized] ~36-~36: You might be missing the article “the” here.
Context: ... | Integrates Apache Solr with Search API. ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

.vortex/docs/content/drupal/settings.mdx

[uncategorized] ~13-~13: A punctuation mark might be missing here.
Context: ...lop/web/sites/default/settings.php) and [services.yml](https://github.com/drevo...

(AI_EN_LECTOR_MISSING_PUNCTUATION)


[uncategorized] ~33-~33: You might be missing the article “the” here.
Context: ...as applying different settings based on runtime environment, or retrieving values from ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[uncategorized] ~61-~61: You might be missing the article “the” here.
Context: ...can be safely removed without modifying settings.php file. - It prevents enviro...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~123-~123: Consider using a more concise synonym.
Context: ...eping the setup consistent. To support a variety of hosting providers and container platfor...

(A_VARIETY_OF)


[grammar] ~185-~185: Nouns are not usually modified by plural nouns. Is it possible that you meant to use the singular or possessive form here?
Context: ... constants are used consistently across settings files and scripts to determine conditio...

(PLURAL_MODIFIER)


[uncategorized] ~203-~203: You might be missing the article “the” here.
Context: ...ng the setup modular and independent of hosting platform. #### Overriding environment ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

.vortex/docs/content/drupal/provision.mdx

[style] ~54-~54: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ... disable it at the end. Useful when you want to prevent users from accessing the site w...

(REP_WANT_TO_VB)


[style] ~99-~99: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...E_DB_REPLACE_USERNAME_WITH_EMAIL=0`
Replace username with email. Useful to also san...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[uncategorized] ~99-~99: A different word order might sound more natural.
Context: ...AIL=0<br/>Replace username with email. Useful to also sanitize user names.<br/><br/> 4. VORT...

(AI_HYDRA_LEO_WORD_ORDER)


[style] ~99-~99: It’s more common nowadays to write this noun as one word.
Context: ...ame with email. Useful to also sanitize user names.

4. `VORTEX_PROVISION_SANITIZ...

(RECOMMENDED_COMPOUNDS)


[uncategorized] ~105-~105: A comma might be missing here.
Context: ...omate additional tasks specific to your project such as conditionally enabling modules ...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)

🪛 dotenv-linter (3.3.0)
.env

[warning] 35-35: [QuoteCharacter] The value has quote characters (', ")


[warning] 226-226: [QuoteCharacter] The value has quote characters (', ")

⏰ Context from checks skipped due to timeout of 90000ms (13)
  • GitHub Check: build (0)
  • GitHub Check: build (1)
  • GitHub Check: vortex-test-installer (8.2)
  • GitHub Check: vortex-test-installer (8.4)
  • GitHub Check: vortex-test-workflow (1)
  • GitHub Check: vortex-test-workflow (2)
  • GitHub Check: vortex-test-installer (8.3)
  • GitHub Check: vortex-test-workflow (0)
  • GitHub Check: vortex-test-workflow (3)
  • GitHub Check: vortex-test-common
  • GitHub Check: vortex-test-deployment (0)
  • GitHub Check: vortex-test-deployment (1)
  • GitHub Check: vortex-test-docs
🔇 Additional comments (86)
scripts/vortex/login.sh (1)

12-12: Accurate doc update
The updated comment now correctly describes that DRUPAL_UNBLOCK_ADMIN is a flag to unblock the admin user.

.vortex/docs/cspell.json (1)

39-41: Approve addition of "multisite" to cspell dictionary.
The new term aligns with project terminology and enhances spell-check coverage.

.vortex/tests/bats/_helper.bash (1)

1353-1355: Approve American English spelling update in comment.
The change from "behaviour" to "behavior" is consistent with the project's standard spelling convention.

web/themes/custom/your_site_theme/js/your_site_theme.js (1)

3-3: Approve spelling correction in file header comment.
Updating "behaviours" to "behaviors" aligns with the project's American English standard and has no functional impact.

.vortex/docs/.utils/variables/extra/.env.variables.sh (1)

21-22: Approve spelling correction in comment.
Changing "sanitised" to "sanitized" aligns with the updated cspell configuration and ensures consistency across documentation.

renovate.json (1)

13-15: Approve timezone standardization in Renovate config.
Switching "Australia/Melbourne" to "UTC" ensures consistency with other CI/CD and environment settings across the project.

.vortex/docs/content/contributing/roadmap.mdx (1)

28-28: Brand emphasis styling applied correctly
The addition of Markdown bold formatting around Vortex aligns with the project-wide branding conventions.

web/sites/default/includes/modules/settings.seckit.php (1)

10-10: Strict comparison is correct
Using === for environment checks improves type safety and consistency across settings files.

web/sites/default/includes/providers/settings.lagoon.php (1)

8-9: Clarified comment for provider mapping
The updated description clearly states that this file only maps provider environments and avoids custom settings.

.github/workflows/build-test-deploy.yml (1)

62-62:

✅ Verification successful

Verify complete timezone standardization
The TZ entries have been updated to UTC in database, build, and deploy jobs. Please confirm no remaining Australia/Melbourne references exist across workflows.

Run this script:

Also applies to: 171-171, 369-369


🏁 Script executed:

#!/bin/bash
# Confirm no remaining non-UTC timezone in GitHub workflows
rg -n 'Australia/Melbourne' .github/workflows || rg -n 'TZ:' .github/workflows | grep -v 'TZ: UTC'

Length of output: 95


Timezone Standardization Verified
All GitHub workflows now exclusively use TZ: UTC, and no Australia/Melbourne references remain.

Verification steps:

  • Searched for “Australia/Melbourne” in .github/workflows – no matches found
  • Listed all TZ: entries and filtered out UTC – no other timezones detected
web/sites/default/includes/modules/settings.ys_base.php (1)

1-14: LGTM! Well-structured module settings file.

The implementation follows PHP best practices with strict typing declaration and proper documentation. The strict comparison operator (===) correctly addresses the previous review feedback, and the CI environment check logic is sound for disabling mail sending during automated testing.

.vortex/docs/content/tools/renovate.mdx (1)

7-7: Documentation consistency improvement.

Good addition of bold formatting to emphasize the "Vortex" name, aligning with the broader documentation standardization effort across the project.

docker-compose.yml (1)

44-44: Good timezone standardization to UTC.

Changing the default timezone to UTC is a best practice for containerized applications that ensures consistent behavior across all environments and eliminates potential timezone-related issues in CI/CD pipelines.

.vortex/docs/content/tools/docker.mdx (2)

9-9: Consistent documentation formatting improvements.

Good addition of bold formatting to emphasize "Vortex" throughout the documentation, maintaining consistency with the broader documentation standardization effort.

Also applies to: 77-77, 93-93, 150-150


169-169: Updated timezone examples to match standardization.

Excellent update of the timezone examples from "Australia/Melbourne" to "UTC" to align with the project-wide timezone standardization. This ensures the documentation accurately reflects the default configuration.

Also applies to: 178-179

.vortex/docs/content/ci/README.mdx (1)

61-62: LGTM! Typo correction improves documentation clarity.

The grammatical fix from "Of" to "If" makes the sentence read correctly and improves the overall documentation quality.

web/sites/default/includes/providers/settings.acquia.php (1)

8-9: LGTM! Comment generalization improves modularity.

Updating the comment from "Acquia environments" to "provider environments" makes it more generic and reusable across different hosting providers, which aligns with the modular architecture goals.

.vortex/docs/content/tools/rector.mdx (1)

53-53: LGTM! Formatting consistency enhances documentation branding.

Adding bold formatting to "Vortex" improves branding consistency and maintains professional documentation standards.

.vortex/tests/bats/fixtures/docker-compose.noenv.json (1)

37-37: LGTM! Timezone standardization to UTC improves consistency.

The timezone updates from "Australia/Melbourne" to "UTC" across all services provide better standardization and alignment with the broader project changes.

Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387

web/sites/default/includes/modules/settings.stage_file_proxy.php (1)

11-11: Excellent type safety improvement!

Changing from loose inequality (!=) to strict inequality (!==) prevents potential type coercion issues when comparing environment values. This is a best practice for PHP and ensures more predictable environment detection.

.vortex/tests/bats/fixtures/docker-compose.env.json (1)

37-37: Good timezone standardization to UTC!

Standardizing all services to UTC is an excellent practice for containerized environments. This eliminates timezone-related issues, simplifies log correlation across services, and aligns with cloud platform defaults.

Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387

.vortex/docs/content/tools/drush.mdx (1)

10-10: Good brand consistency improvement!

Consistently formatting "Vortex" in bold throughout the documentation enhances brand recognition and provides better visual hierarchy.

Also applies to: 15-15

.vortex/docs/content/contributing/maintenance/scripts.mdx (1)

85-85: Consistent bold formatting applied!

Ensuring both instances of "Vortex" in the same sentence use consistent bold formatting improves the professional appearance and brand consistency of the documentation.

.vortex/tests/bats/fixtures/docker-compose.env_mod.json (1)

37-37: Approve fixture timezone update
All service environment blocks now use "TZ": "UTC", matching the standardized UTC timezone setting applied across the project’s Docker Compose configurations.

Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387

.vortex/tests/bats/fixtures/docker-compose.env_local.json (1)

37-37: Approve fixture timezone update
All service definitions were updated to "TZ": "UTC", ensuring the local-environment fixture aligns with the new UTC standard.

Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387

tests/phpunit/Drupal/DatabaseSettingsTest.php (1)

43-43: Align default port with settings
The data provider now expects 'port' => '3306' by default, consistent with the explicit default port in settings.php.

.ahoy.yml (3)

199-201: Consistent Yarn usage for lint-fe
Updated lint-fe to use yarn run --cwd instead of npm run --prefix, aligning with the project’s Yarn-based front-end workflows.


222-224: Consistent Yarn usage for lint-fe-fix
Switched lint-fe-fix to yarn run --cwd, ensuring both lint commands use the same execution pattern.


286-286: Spelling correction confirmed
The entrypoint comment now uses American English “behavior,” matching spelling conventions elsewhere in the codebase.

.vortex/docs/content/getting-started/installation.mdx (3)

7-9: Clarify installation scope
Rephrased to specify installing the Vortex template into the project’s codebase, improving readability and precision.


11-13: Improve installer instruction grammar
Changed phrasing to “an interactive installer” and refined the manual setup step reference for better grammar.


78-79: Streamline integration guidance
Removed Docker Hub and focused the list on CI, hosting, and other services, making the integrations section more concise.

🧰 Tools
🪛 LanguageTool

[style] ~78-~78: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ...on the services you are using, you will need to set up the integrations with CI, your h...

(REP_NEED_TO_VB)


[misspelling] ~79-~79: Did you mean “you're” (short for ‘you are’)?
Context: ...eed to set up the integrations with CI, your hosting and other services. Please ref...

(YOUR)

web/sites/default/includes/modules/settings.shield.php (2)

24-24: Excellent improvement to type safety!

The change from loose (!=) to strict (!==) equality comparison ensures both type and value matching, preventing potential issues from type coercion in environment detection.


28-28: Consistent use of strict equality operators!

The update to use strict equality (===) for both environment comparisons aligns with the type safety improvements and ensures reliable environment detection.

.vortex/tests/bats/_helper.workflow.bash (1)

214-214: Approve spelling standardization

The spelling changes to British English ("behaviour") align with project conventions.

Also applies to: 256-256

web/sites/default/includes/providers/settings.gha.php (1)

1-17: Clean provider environment mapping implementation!

This file follows excellent architectural patterns:

  • Clear documentation explaining its specific purpose
  • Proper restriction against custom settings placement
  • Consistent with other provider-specific settings files
  • Uses strict typing for type safety

The simple environment variable check and mapping to ENVIRONMENT_CI is exactly what's needed for GitHub Actions integration.

web/sites/default/includes/modules/settings.automated_cron.php (1)

10-16: Approve environment-specific automated cron configuration

The conditional logic correctly applies LOCAL and CI environment-specific settings:

  • Disabling permissions hardening is appropriate for development environments
  • Setting cron interval to 0 prevents automated triggers in controlled environments

The use of strict equality operators aligns with the environment detection improvements.

web/sites/default/includes/modules/settings.system.php (2)

11-11: Good use of environment variable with fallback.

The cache max age configuration properly uses an environment variable with a sensible default fallback. This provides flexibility while maintaining reasonable defaults.


13-17: Production CSS/JS preprocessing logic is correct.

The conditional preprocessing configuration for production environments is properly implemented and follows Drupal best practices for performance optimization.

web/sites/default/includes/providers/settings.circleci.php (2)

15-17: Environment detection logic is correct.

The conditional check for the CI environment variable and mapping to ENVIRONMENT_CI is properly implemented. The use of !empty(getenv('CI')) correctly handles both undefined and empty values.


3-11: Excellent documentation and guidance.

The file header clearly explains the purpose and provides helpful guidance about not placing custom settings here. This promotes proper architectural separation between provider detection and application configuration.

.vortex/docs/content/getting-started/features.mdx (2)

58-60: Documentation updates align with project capabilities.

The updated workflow feature descriptions accurately reflect the project's capabilities for database sourcing, deployment notifications, and automated dependency updates.


47-47:

❓ Verification inconclusive

Verify Gherkin Lint integration is complete.

The feature is marked as completed (✅), but please confirm that Gherkin Lint is fully integrated into the project's tooling and CI pipeline.


🏁 Script executed:

#!/bin/bash
# Description: Verify Gherkin Lint is properly integrated in the project
# Expected: Find gherkin lint configuration and usage in CI

# Check for gherkin lint configuration
fd -e json -e yaml -e yml | xargs grep -l -i "gherkin"

# Check for gherkin lint usage in CI
rg -A 3 -B 3 "gherkin.*lint" --type yaml --type sh

Length of output: 390


Gherkin Lint configuration detected – please confirm CI invocation

I found the Gherkin Lint dependency and CLI task definition, but couldn’t locate its execution in the CI workflow. Please verify that your CI pipeline runs the lint-tests task so Gherkin Lint actually runs on push/pull requests.

• composer.json – includes “dantleech/gherkin-lint-php”
• .ahoy.yml – defines lint-testsvendor/bin/gherkinlint lint tests/behat/features
Next step: ensure your CI config (e.g. in .github/workflows or .circleci/config.yml) invokes ahoy lint-tests (or directly calls vendor/bin/gherkinlint) as part of its lint stage.

.vortex/docs/.utils/variables/extra/ci.variables.sh (1)

70-72: Well-documented environment variable addition.

The new RENOVATE_REPOSITORIES variable is properly documented with clear instructions on the expected format. The naming follows project conventions and the purpose is clear.

.circleci/config.yml (3)

51-51: Good standardization to UTC timezone.

This change aligns with the broader effort to standardize timezone settings across all environments, improving consistency and reducing potential timezone-related issues.


73-73: Hardcoded path simplifies configuration.

The replacement of VORTEX_EXPORT_CODE_DIR with the explicit path /tmp/workspace/code simplifies the configuration by reducing environment variable dependencies, which is consistent with the changes in the export codebase section.


256-258: Enhanced export process with disk usage reporting.

The hardcoded path and addition of du -sh command provide better visibility into the exported codebase size, which is helpful for monitoring and debugging purposes.

.vortex/docs/content/drupal/module-scaffold.mdx (3)

10-12: Improved clarity in module description.

The revised description better explains the purpose of the ys_base module by clarifying it's for "general-purpose functionality that doesn't belong in a dedicated, feature-specific module" rather than the more vague previous wording.


20-21: Enhanced documentation with explicit file reference.

Adding the specific filename ys_base.deploy.php and direct link improves the documentation's usefulness by providing concrete references.


32-35: Good addition of cross-reference to development workflow.

The reference to the Development workflow documentation helps readers find more detailed information about working with custom modules.

.vortex/installer/src/Prompts/Handlers/CiProvider.php (2)

61-63: Proper cleanup of GitHub Actions provider-specific settings.

The addition of settings file removal and token cleanup ensures comprehensive cleanup when GitHub Actions is deselected, maintaining consistency with the provider management approach.


68-71: Comprehensive CircleCI provider cleanup.

The cleanup logic properly removes both the settings file and associated token, ensuring no orphaned configuration remains when CircleCI is deselected.

web/sites/default/includes/providers/settings.container.php (1)

1-14: Well-structured provider settings file.

The file follows the established pattern for provider-specific settings with clear documentation about its purpose and proper separation of concerns. The approach of mapping provider environments without including custom settings aligns with the modular configuration strategy.

.vortex/docs/.utils/variables/extra/.env.local.example.variables.sh (2)

8-11: Clarify comment formatting and context
The added comments clearly explain the derivation of VORTEX_LOCALDEV_URL from COMPOSE_PROJECT_NAME.


13-13: Use a dynamic default for localdev URL
Switching from a hard-coded placeholder to ${COMPOSE_PROJECT_NAME:-example-site} ensures the URL reflects the Docker Compose project name by default.

README.md (2)

23-30: Expand the project introduction
The rewritten introduction provides a comprehensive overview of Vortex’s features and benefits, improving clarity for new users.


46-48: Enhance installer description
The new installer section wording is concise and informative, guiding users on setup options.

.vortex/installer/src/Prompts/Handlers/HostingProvider.php (2)

41-45: Ensure removal of provider tokens for Acquia
Adding !SETTINGS_PROVIDER_ACQUIA alongside !HOSTING_ACQUIA keeps the setup modular by cleaning up both hosting and settings tokens.


46-49: Ensure removal of provider tokens for Lagoon
Mirroring the Acquia logic, removing both !HOSTING_LAGOON and !SETTINGS_PROVIDER_LAGOON maintains consistency.

tests/phpunit/Drupal/SwitchableSettingsTest.php (2)

185-186: Correct data provider docblock
Updating the docblock to accurately describe dataProviderEnvironmentIndicator() improves documentation consistency.


696-700: Update default maintenance theme to 'claro'
Aligning the test with the new default 'claro' ensures the test suite reflects the updated behavior.

.vortex/docs/content/README.mdx (1)

17-35: Improve documentation introduction
The enhanced introduction clearly outlines Vortex’s purpose, features, and maintenance model for better onboarding.

.vortex/docs/content/drupal/provision-example.sh (2)

1-18: LGTM! Well-structured script foundation.

The script demonstrates good practices with proper shebang, error handling (set -eu), debug mode support, and clear documentation comments.


22-26: LGTM! Clean helper functions.

The helper functions provide consistent formatting for different types of output messages, making the script output more readable and professional.

.env (3)

34-35: LGTM! Timezone standardization to UTC.

Changing the default timezone from "Australia/Melbourne" to "UTC" is excellent for standardization across environments and avoids timezone-related issues in multi-region deployments.

🧰 Tools
🪛 dotenv-linter (3.3.0)

[warning] 35-35: [QuoteCharacter] The value has quote characters (', ")


4-7: LGTM! Improved documentation clarity.

The updated comments better emphasize that this file should be the primary location for configuration changes, improving maintainability.


134-154: LGTM! Enhanced database section documentation.

The renamed section header "DATABASE SOURCE" and improved comments provide clearer guidance on database import sources and dump file usage.

.vortex/docs/content/drupal/README.mdx (2)

22-22: LGTM! Improved clarity with "need to add".

Changing from "would add" to "would need to add" better emphasizes the necessity of adding modules and themes after initial setup.


24-38: LGTM! Enhanced table formatting and descriptions.

The improved table alignment and refined module descriptions provide clearer, more precise information about each module's purpose.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~36-~36: You might be missing the article “the” here.
Context: ... | Integrates Apache Solr with Search API. ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

tests/phpunit/Drupal/SettingsTestCase.php (3)

48-50: LGTM! Logical constant reordering.

Moving ENVIRONMENT_PROD to a later position aligns with a logical ordering of environment types.


72-92: LGTM! Excellent centralization of allowed environment variables.

The new ALLOWED_ENV_VARS constant provides a centralized way to manage which environment variables are allowed during testing, improving maintainability and reducing duplication.


162-168: LGTM! Consistent use of centralized constants.

The updated setEnvVars method properly utilizes the new ALLOWED_ENV_VARS constant and maintains logical ordering of environment variable assignments.

.vortex/docs/content/workflows/variables.mdx (4)

327-334: New Renovate repositories variable looks good

The addition of RENOVATE_REPOSITORIES variable is well-documented and follows the existing documentation format. The description clearly explains its purpose for managing repositories in self-hosted Renovate bot configurations.


353-356: Appropriate timezone standardization to UTC

The change from "Australia/Melbourne" to "UTC" as the default timezone is a good practice for ensuring consistency across different deployments and environments. UTC is the international standard for server configurations.


1176-1182: Dynamic local URL default value is more flexible

The change from a static http://your-site.docker.amazee.io to a dynamic value based on COMPOSE_PROJECT_NAME provides better flexibility and aligns with Docker Compose's project naming conventions. The added explanation clearly describes when to override this value.


1566-1566: Consistent spelling correction to American English

The spelling corrections from "sanitised" to "sanitized" ensure consistency with American English spelling conventions used throughout the documentation.

Also applies to: 1574-1574, 1593-1593

.vortex/docs/content/getting-started/architecture.mdx (3)

12-16: Clear introduction sets proper context

The added introduction effectively explains the purpose of this architecture page and how it provides a foundation for understanding Vortex's structure and developer experience.


29-35: System components diagrams enhance visual understanding

The addition of system component diagrams with both light and dark mode support improves the documentation's accessibility and helps visualize the architecture.


237-268: Comprehensive explanation of template system

The new "Template placeholders and tokens" section provides excellent documentation about how Vortex handles project customization. The examples for different file types (shell scripts, YAML, Markdown) make it clear how the token system works.

.vortex/docs/content/drupal/theme-scaffold.mdx (2)

7-25: Excellent transformation from placeholder to comprehensive documentation

The theme scaffold documentation has been transformed from a simple placeholder into a comprehensive guide. The introduction clearly explains the purpose, naming conventions, and emphasizes the flexibility of the scaffold approach.


27-91: Thorough build system documentation with clear examples

The build system section provides excellent coverage of:

  • All available Grunt tasks (SCSS, JS, linting, watching)
  • Both Yarn and Ahoy command examples
  • Clear explanation of Docker container usage for consistency
  • Helpful guidance on maintaining command structure conventions

This will significantly help developers understand and work with the theme build system.

.vortex/docs/content/drupal/provision.mdx (2)

17-37: Excellent rationale section explains the "why"

The new "Rationale" section effectively explains why provision.sh is necessary beyond just drush deploy. It clearly articulates the gaps it fills and the value it provides for consistent, automated provisioning across environments.


66-85: Important security clarification for database sanitization

The restructured database sanitization section with the warning box effectively communicates:

  • When sanitization occurs (after import, not before)
  • Security implications for dump file access
  • Alternative solutions for highly sensitive data

This is crucial information for teams handling sensitive data.

web/sites/default/settings.php (3)

26-46: Well-structured database configuration with comprehensive fallbacks

The refactored database configuration provides excellent flexibility with multiple environment variable fallbacks. The explicit default port of '3306' prevents potential connection issues.


72-77: Smart hash salt generation and UTC timezone standardization

  1. Using DRUPAL_HASH_SALT with a fallback to a hash of the database host is a clever approach that ensures uniqueness while allowing explicit configuration.
  2. The timezone standardization to UTC aligns with the documentation changes and provides consistency across environments.

106-161: Excellent modularization of environment detection and settings

The reorganization provides:

  • Clear separation of concerns with environment constants defined upfront
  • Modular loading of provider-specific and module-specific settings
  • Override capability via DRUPAL_ENVIRONMENT variable
  • Clean file organization in includes/providers and includes/modules

This architecture significantly improves maintainability and follows the documentation's promise of environment-specific configuration management.

@coderabbitai
Copy link

coderabbitai bot commented Jun 7, 2025

✅ Actions performed

Comments resolved.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

🔭 Outside diff range comments (1)
tests/phpunit/Drupal/EnvironmentSettingsTest.php (1)

24-966: 🧹 Nitpick (assertive)

Consider extracting helper methods to reduce duplication

Every test method manually assembles large $config and $settings arrays that differ only in a few keys. Consider creating helper methods like getBaseSettings() and getBaseConfig() to DRY up the code.

Example helper method:

protected function getBaseConfig(): array {
    return [
        'environment_indicator.settings' => [
            'favicon' => TRUE,
            'toolbar_integration' => [TRUE],
        ],
        'maintenance_theme' => 'claro',
        'system.performance' => [
            'cache' => ['page' => ['max_age' => 900]],
        ],
    ];
}
♻️ Duplicate comments (21)
.vortex/docs/content/workflows/notifications.mdx (1)

1-3: Add missing sidebar_label metadata for proper navigation.

The frontmatter is missing the sidebar_label metadata required for correct sidebar display.

Apply this diff to add the missing metadata:

---
+sidebar_label: Notifications
 sidebar_position: 4
---
.vortex/tests/bats/fixtures/docker-compose.noenv.json (1)

413-451: Missing TZ environment variable for valkey and wait_dependencies services.

As identified in the existing review comment, the valkey and wait_dependencies services lack the "TZ": "UTC" environment variable that other services have.

.vortex/tests/bats/fixtures/docker-compose.env_mod.json (1)

413-451: Missing TZ environment variable for valkey and wait_dependencies services.

Same issue as in docker-compose.noenv.json - the valkey and wait_dependencies services need "TZ": "UTC" added to their environment blocks for consistency.

.vortex/tests/bats/fixtures/docker-compose.env.json (1)

413-451: Missing TZ environment variable for valkey and wait_dependencies services.

Consistent with other fixture files, these services are missing the "TZ": "UTC" environment variable for complete timezone standardization.

.vortex/tests/bats/fixtures/docker-compose.env_local.json (1)

413-451: Missing TZ environment variable for valkey and wait_dependencies services.

Same missing TZ environment variable issue as in the other fixture files - valkey and wait_dependencies services need "TZ": "UTC" for consistency.

web/sites/default/includes/modules/settings.automated_cron.php (1)

18-21: Consolidate duplicated system.logging.error_level settings

Both settings.system.php (line 26) and settings.automated_cron.php (line 18-21) define the same error logging configuration. This duplication creates maintenance overhead and potential conflicts.

Consider consolidating environment-specific error logging settings in a single location to follow the DRY principle.

web/sites/default/includes/modules/settings.system.php (1)

19-22: Settings duplication detected across module files.

The skip_permissions_hardening setting here duplicates the same configuration in settings.automated_cron.php (lines 10-12). This duplication creates maintenance overhead and potential conflicts.

Consider consolidating environment-specific settings in a single location or documenting the intended precedence order.

web/sites/default/includes/providers/settings.container.php (1)

15-24: ⚠️ Potential issue

Fix potential type error in environment variable handling.

This is the same issue identified in previous reviews - getenv() can return false when the environment variable is not set, which would cause a type error when passed to str_replace().

Apply the previously suggested fix:

-if (!empty(getenv('VORTEX_LOCALDEV_URL'))) {
+$localdev_url = getenv('VORTEX_LOCALDEV_URL');
+if (!empty($localdev_url) && is_string($localdev_url)) {
   // Local development URL.
   $patterns = str_replace(['.', 'https://', 'http://', ','], [
     '\.', '', '', '|',
-  ], getenv('VORTEX_LOCALDEV_URL'));
+  ], $localdev_url);
   $settings['trusted_host_patterns'][] = '^' . $patterns . '$';
 
   // URL when accessed from Behat tests.
   $settings['trusted_host_patterns'][] = '^nginx$';
 }
🧰 Tools
🪛 PHPStan (2.1.15)

19-19: Parameter #3 $subject of function str_replace expects array|string, string|false given.

(argument.type)

.vortex/docs/content/drupal/provision-example.sh (2)

30-33: Add error handling around environment detection. If drush php:eval fails or returns empty, the script may misclassify. Consider catching failures or defaulting to a safe environment.


35-35: Simplify environment check. Replace echo … | grep -q -e dev -e stage -e ci -e local with a shell pattern match or case for readability:

if [[ $environment =~ ^(dev|stage|ci|local)$ ]]; thenfi
.vortex/docs/content/getting-started/architecture.mdx (1)

113-114: Fix the line break in "POSIX-compliant".

The hyphen and word are split across lines, which breaks readability as noted in previous reviews.

Apply this fix:

-**Vortex** provides a set of [POSIX](https://en.wikipedia.org/wiki/POSIX)
--compliant
+**Vortex** provides a set of [POSIX](https://en.wikipedia.org/wiki/POSIX)-compliant
.vortex/docs/content/drupal/provision.mdx (2)

50-50: Fix typo: "exist" should be "exit"

This grammar issue was previously identified but not fixed.

-1. `VORTEX_PROVISION_SKIP=1`<br/>Kill-switch to completely skip provisioning. The script will exist straight after start. Useful in emergencies when any kind of automation needs to be disabled.<br/><br/>
+1. `VORTEX_PROVISION_SKIP=1`<br/>Kill-switch to completely skip provisioning. The script will exit straight after start. Useful in emergencies when any kind of automation needs to be disabled.<br/><br/>

99-99: Use "usernames" as one word

This style issue was previously identified but not fixed.

-3. `VORTEX_PROVISION_SANITIZE_DB_REPLACE_USERNAME_WITH_EMAIL=0`<br/>Replace username with email. Useful to also sanitize user names.<br/><br/>
+3. `VORTEX_PROVISION_SANITIZE_DB_REPLACE_USERNAME_WITH_EMAIL=0`<br/>Replace username with email. Useful to also sanitize usernames.<br/><br/>
🧰 Tools
🪛 LanguageTool

[style] ~99-~99: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...E_DB_REPLACE_USERNAME_WITH_EMAIL=0`
Replace username with email. Useful to also san...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[uncategorized] ~99-~99: A different word order might sound more natural.
Context: ...AIL=0<br/>Replace username with email. Useful to also sanitize user names.<br/><br/> 4. VORT...

(AI_HYDRA_LEO_WORD_ORDER)


[style] ~99-~99: It’s more common nowadays to write this noun as one word.
Context: ...ame with email. Useful to also sanitize user names.

4. `VORTEX_PROVISION_SANITIZ...

(RECOMMENDED_COMPOUNDS)

.vortex/docs/content/drupal/settings.mdx (4)

12-14: Add possessive "its" for proper grammar

This grammar issue was previously identified but not fixed.

-**Vortex** ships with own streamlined version of
+**Vortex** ships with its own streamlined version of
🧰 Tools
🪛 LanguageTool

[uncategorized] ~13-~13: A punctuation mark might be missing here.
Context: ...lop/web/sites/default/settings.php) and [services.yml](https://github.com/drevo...

(AI_EN_LECTOR_MISSING_PUNCTUATION)


60-61: Add article "the" before "settings.php file"

This grammar issue was previously identified but not fixed.

-without modifying `settings.php` file.
+without modifying the `settings.php` file.
🧰 Tools
🪛 LanguageTool

[uncategorized] ~61-~61: You might be missing the article “the” here.
Context: ...can be safely removed without modifying settings.php file. - It prevents enviro...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


92-92: Fix code block language from "json" to "php"

The imported file is PHP code but the language is incorrectly specified as "json".

-<CodeBlock language="json">{EnvironmentIndicatorModuleSettingsExample}</CodeBlock>
+<CodeBlock language="php">{EnvironmentIndicatorModuleSettingsExample}</CodeBlock>

245-245: ⚠️ Potential issue

Fix duplicate code block language issue

The same PHP file is displayed with incorrect "json" language specification here as well.

-<CodeBlock language="json">{EnvironmentIndicatorModuleSettingsExample}</CodeBlock>
+<CodeBlock language="php">{EnvironmentIndicatorModuleSettingsExample}</CodeBlock>
web/sites/default/settings.php (1)

79-80: Critical: Use $settings['maintenance_theme'] instead of $config['maintenance_theme']

Drupal reads the maintenance theme from $settings, not $config. The current code will not apply the maintenance theme correctly.

-$config['maintenance_theme'] = getenv('DRUPAL_MAINTENANCE_THEME') ?: getenv('DRUPAL_THEME') ?: 'claro';
+$settings['maintenance_theme'] = getenv('DRUPAL_MAINTENANCE_THEME') ?: getenv('DRUPAL_THEME') ?: 'claro';
tests/phpunit/Drupal/EnvironmentSettingsTest.php (3)

389-396: Critical: Custom override values are immediately overwritten

The test sets custom override paths but then immediately overwrites them with default testing constants, making the test ineffective.

Remove the duplicate assignments that overwrite the custom values:

-    $settings['config_exclude_modules'] = [];
-    $settings['config_sync_directory'] = static::CONFIG_PATH_TESTING;
-    $settings['container_yamls'][0] = $this->app_root . '/' . $this->site_path . '/services.yml';
-    $settings['entity_update_batch_size'] = 50;
-    $settings['environment'] = static::ENVIRONMENT_SUT;
-    $settings['file_public_path'] = static::PUBLIC_PATH_TESTING;
-    $settings['file_private_path'] = static::PRIVATE_PATH_TESTING;
-    $settings['file_temp_path'] = static::TMP_PATH_TESTING;

53-59: 🧹 Nitpick (assertive)

Consider clarifying the container environment mapping

The comment "Container" could be more explicit about the fact that container environments map to the local environment type.

-      // Container.
+      // Container environments map to local environment.

358-368: 🧹 Nitpick (assertive)

Clarify the intentional port mismatch in the test

Using port 5432 (PostgreSQL default) with MySQL driver could confuse readers. Add a comment explaining this is intentional for testing override behavior.

       'DATABASE_HOST' => 'custom_host',
+      // Intentionally using a non-MySQL port to verify override behavior.
       'DATABASE_PORT' => '5432',
       'DATABASE_CHARSET' => 'utf8',
📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 2c19156 and 5588be5.

⛔ Files ignored due to path filters (95)
  • .vortex/docs/static/img/diagram-dark.png is excluded by !**/*.png
  • .vortex/docs/static/img/diagram-light.png is excluded by !**/*.png
  • .vortex/docs/static/img/diagram-provision-dark.svg is excluded by !**/*.svg
  • .vortex/docs/static/img/diagram-provision-light.svg is excluded by !**/*.svg
  • .vortex/docs/static/img/installer.png is excluded by !**/*.png
  • .vortex/installer/tests/Fixtures/install/_baseline/.ahoy.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/.github/workflows/build-test-deploy.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/docker-compose.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/renovate.json is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/DatabaseSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/SettingsTestCase.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/SwitchableSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.automated_cron.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.seckit.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.shield.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.stage_file_proxy.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.system.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.ys_base.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/providers/settings.container.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/providers/settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/settings.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/themes/custom/star_wars/js/star_wars.js is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/ciprovider_circleci/.circleci/config.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/ciprovider_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/ciprovider_circleci/web/sites/default/includes/providers/-settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/ciprovider_circleci/web/sites/default/includes/providers/settings.circleci.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/db_download_source_acquia/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/db_download_source_container_registry/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/db_download_source_ftp/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/db_download_source_lagoon/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/.circleci/config.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/web/sites/default/includes/providers/-settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/web/sites/default/includes/providers/settings.circleci.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_gha/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_artifact/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_container_image/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_lagoon/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/.circleci/config.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/web/sites/default/includes/providers/-settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/web/sites/default/includes/providers/settings.circleci.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_gha/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_gha/.github/workflows/build-test-deploy.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/.circleci/config.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/web/sites/default/includes/providers/-settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/web/sites/default/includes/providers/settings.circleci.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.automated_cron.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.seckit.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.shield.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.stage_file_proxy.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.system.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.ys_base.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.acquia.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.container.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/settings.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/themes/custom/star_wars/js/star_wars.js is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/tests/phpunit/Drupal/SettingsTestCase.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.automated_cron.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.system.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.ys_base.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/providers/-settings.container.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/providers/-settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_lagoon/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_lagoon/docker-compose.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_lagoon/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_lagoon/web/sites/default/includes/providers/settings.lagoon.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/names/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/names/web/sites/default/includes/modules/settings.ys_base.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/names/web/themes/custom/lightsaber/js/lightsaber.js is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/profile_minimal/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/profile_the_empire/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_database_lagoon/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_database_lagoon/docker-compose.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_database_lagoon/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_database_lagoon/web/sites/default/includes/providers/settings.lagoon.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_profile/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_profile/.github/workflows/build-test-deploy.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/services_no_clamav/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/services_no_valkey/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/services_none/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/theme_absent/.ahoy.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/theme_absent/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/theme_custom/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/theme_custom/web/themes/custom/light_saber/js/light_saber.js is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/version_replacement/baseline/docker-compose.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/version_replacement/expected/docker-compose.yml is excluded by !.vortex/installer/tests/Fixtures/**
📒 Files selected for processing (56)
  • .ahoy.yml (3 hunks)
  • .circleci/config.yml (3 hunks)
  • .env (6 hunks)
  • .github/workflows/build-test-deploy.yml (3 hunks)
  • .vortex/docs/.utils/variables/extra/.env.local.example.variables.sh (1 hunks)
  • .vortex/docs/.utils/variables/extra/.env.variables.sh (1 hunks)
  • .vortex/docs/.utils/variables/extra/ci.variables.sh (1 hunks)
  • .vortex/docs/content/README.mdx (1 hunks)
  • .vortex/docs/content/ci/README.mdx (1 hunks)
  • .vortex/docs/content/contributing/maintenance/scripts.mdx (1 hunks)
  • .vortex/docs/content/contributing/roadmap.mdx (1 hunks)
  • .vortex/docs/content/drupal/README.mdx (2 hunks)
  • .vortex/docs/content/drupal/module-scaffold.mdx (2 hunks)
  • .vortex/docs/content/drupal/provision-example.sh (1 hunks)
  • .vortex/docs/content/drupal/provision.mdx (3 hunks)
  • .vortex/docs/content/drupal/settings.mdx (3 hunks)
  • .vortex/docs/content/drupal/theme-scaffold.mdx (1 hunks)
  • .vortex/docs/content/getting-started/architecture.mdx (9 hunks)
  • .vortex/docs/content/getting-started/features.mdx (3 hunks)
  • .vortex/docs/content/getting-started/installation.mdx (2 hunks)
  • .vortex/docs/content/tools/docker.mdx (6 hunks)
  • .vortex/docs/content/tools/drush.mdx (1 hunks)
  • .vortex/docs/content/tools/rector.mdx (1 hunks)
  • .vortex/docs/content/tools/renovate.mdx (1 hunks)
  • .vortex/docs/content/workflows/notifications.mdx (1 hunks)
  • .vortex/docs/content/workflows/variables.mdx (12 hunks)
  • .vortex/docs/cspell.json (1 hunks)
  • .vortex/installer/src/Prompts/Handlers/CiProvider.php (1 hunks)
  • .vortex/installer/src/Prompts/Handlers/HostingProvider.php (3 hunks)
  • .vortex/tests/bats/_helper.bash (1 hunks)
  • .vortex/tests/bats/_helper.workflow.bash (3 hunks)
  • .vortex/tests/bats/fixtures/docker-compose.env.json (7 hunks)
  • .vortex/tests/bats/fixtures/docker-compose.env_local.json (7 hunks)
  • .vortex/tests/bats/fixtures/docker-compose.env_mod.json (7 hunks)
  • .vortex/tests/bats/fixtures/docker-compose.noenv.json (7 hunks)
  • README.md (1 hunks)
  • docker-compose.yml (1 hunks)
  • renovate.json (1 hunks)
  • scripts/vortex/login.sh (1 hunks)
  • tests/phpunit/Drupal/DatabaseSettingsTest.php (1 hunks)
  • tests/phpunit/Drupal/EnvironmentSettingsTest.php (22 hunks)
  • tests/phpunit/Drupal/SettingsTestCase.php (2 hunks)
  • tests/phpunit/Drupal/SwitchableSettingsTest.php (2 hunks)
  • web/sites/default/includes/modules/settings.automated_cron.php (1 hunks)
  • web/sites/default/includes/modules/settings.seckit.php (1 hunks)
  • web/sites/default/includes/modules/settings.shield.php (1 hunks)
  • web/sites/default/includes/modules/settings.stage_file_proxy.php (1 hunks)
  • web/sites/default/includes/modules/settings.system.php (1 hunks)
  • web/sites/default/includes/modules/settings.ys_base.php (1 hunks)
  • web/sites/default/includes/providers/settings.acquia.php (1 hunks)
  • web/sites/default/includes/providers/settings.circleci.php (1 hunks)
  • web/sites/default/includes/providers/settings.container.php (1 hunks)
  • web/sites/default/includes/providers/settings.gha.php (1 hunks)
  • web/sites/default/includes/providers/settings.lagoon.php (1 hunks)
  • web/sites/default/settings.php (6 hunks)
  • web/themes/custom/your_site_theme/js/your_site_theme.js (1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (2)
.vortex/installer/src/Prompts/Handlers/HostingProvider.php (1)
.vortex/installer/src/Utils/File.php (2)
  • File (10-120)
  • removeTokenAsync (93-100)
tests/phpunit/Drupal/EnvironmentSettingsTest.php (1)
tests/phpunit/Drupal/SettingsTestCase.php (4)
  • assertConfig (252-258)
  • assertSettings (290-296)
  • setEnvVars (153-182)
  • requireSettingsFile (221-240)
🪛 LanguageTool
.vortex/docs/content/getting-started/installation.mdx

[misspelling] ~79-~79: Did you mean “you're” (short for ‘you are’)?
Context: ...eed to set up the integrations with CI, your hosting and other services. Please ref...

(YOUR)

.vortex/docs/content/drupal/README.mdx

[uncategorized] ~36-~36: You might be missing the article “the” here.
Context: ... | Integrates Apache Solr with Search API. ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

.vortex/docs/content/drupal/settings.mdx

[uncategorized] ~13-~13: A punctuation mark might be missing here.
Context: ...lop/web/sites/default/settings.php) and [services.yml](https://github.com/drevo...

(AI_EN_LECTOR_MISSING_PUNCTUATION)


[uncategorized] ~33-~33: You might be missing the article “the” here.
Context: ...as applying different settings based on runtime environment, or retrieving values from ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[uncategorized] ~61-~61: You might be missing the article “the” here.
Context: ...can be safely removed without modifying settings.php file. - It prevents enviro...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~123-~123: Consider using a more concise synonym.
Context: ...eping the setup consistent. To support a variety of hosting providers and container platfor...

(A_VARIETY_OF)


[grammar] ~185-~185: Nouns are not usually modified by plural nouns. Is it possible that you meant to use the singular or possessive form here?
Context: ... constants are used consistently across settings files and scripts to determine conditio...

(PLURAL_MODIFIER)


[uncategorized] ~203-~203: You might be missing the article “the” here.
Context: ...ng the setup modular and independent of hosting platform. #### Overriding environment ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

.vortex/docs/content/drupal/provision.mdx

[style] ~54-~54: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ... disable it at the end. Useful when you want to prevent users from accessing the site w...

(REP_WANT_TO_VB)


[style] ~99-~99: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...E_DB_REPLACE_USERNAME_WITH_EMAIL=0`
Replace username with email. Useful to also san...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[uncategorized] ~99-~99: A different word order might sound more natural.
Context: ...AIL=0<br/>Replace username with email. Useful to also sanitize user names.<br/><br/> 4. VORT...

(AI_HYDRA_LEO_WORD_ORDER)


[style] ~99-~99: It’s more common nowadays to write this noun as one word.
Context: ...ame with email. Useful to also sanitize user names.

4. `VORTEX_PROVISION_SANITIZ...

(RECOMMENDED_COMPOUNDS)


[uncategorized] ~105-~105: A comma might be missing here.
Context: ...omate additional tasks specific to your project such as conditionally enabling modules ...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)

🪛 PHPStan (2.1.15)
web/sites/default/includes/providers/settings.container.php

19-19: Parameter #3 $subject of function str_replace expects array|string, string|false given.

(argument.type)

🪛 dotenv-linter (3.3.0)
.env

[warning] 35-35: [QuoteCharacter] The value has quote characters (', ")


[warning] 226-226: [QuoteCharacter] The value has quote characters (', ")

🪛 GitHub Check: codecov/patch
.vortex/tests/bats/_helper.workflow.bash

[warning] 232-232: .vortex/tests/bats/_helper.workflow.bash#L232
Added line #L232 was not covered by tests


[warning] 234-234: .vortex/tests/bats/_helper.workflow.bash#L234
Added line #L234 was not covered by tests


[warning] 236-236: .vortex/tests/bats/_helper.workflow.bash#L236
Added line #L236 was not covered by tests


[warning] 238-238: .vortex/tests/bats/_helper.workflow.bash#L238
Added line #L238 was not covered by tests


[warning] 240-240: .vortex/tests/bats/_helper.workflow.bash#L240
Added line #L240 was not covered by tests

⏰ Context from checks skipped due to timeout of 90000ms (3)
  • GitHub Check: vortex-test-workflow (1)
  • GitHub Check: vortex-test-workflow (2)
  • GitHub Check: vortex-test-workflow (0)
🔇 Additional comments (88)
web/themes/custom/your_site_theme/js/your_site_theme.js (1)

3-3: LGTM: Spelling standardization.

Good change standardizing from British English "behaviours" to American English "behaviors" for consistency across the project.

.vortex/docs/cspell.json (1)

40-40: LGTM: Adding Drupal-specific terminology.

Adding "multisite" to the spell checker dictionary is appropriate for a Drupal project, as this is standard Drupal terminology that should be recognized.

scripts/vortex/login.sh (1)

12-12: LGTM: Accurate comment clarification.

The updated comment correctly reflects the script's behavior - the flag only controls unblocking functionality, not blocking.

.vortex/docs/content/contributing/roadmap.mdx (1)

28-28: LGTM: Brand consistency improvement.

Adding bold formatting to "Vortex" enhances brand visibility and maintains consistency with similar formatting applied across other documentation files.

.vortex/docs/content/contributing/maintenance/scripts.mdx (1)

85-86: Consistent emphasis on “Vortex”
This change purely adds bold formatting for branding consistency in documentation.

docker-compose.yml (1)

44-44: Standardize default timezone to UTC
Updating TZ to UTC aligns with cross‐environment consistency. No other service configs are affected.

.vortex/docs/content/tools/drush.mdx (1)

10-11: Stylistic formatting update for “Vortex”
These are purely bold‐text enhancements in docs to emphasize the project name.

Also applies to: 15-16

.vortex/tests/bats/_helper.bash (1)

1354-1370: American English spelling standardization
The comment spelling was corrected from “behaviour” to “behavior”. No functional changes.

.vortex/docs/.utils/variables/extra/.env.variables.sh (1)

21-23: Spelling correction in comment
Changed “sanitised” to “sanitized” for consistency with American English in docs.

renovate.json (1)

14-14: LGTM! Timezone standardization to UTC is a good practice.

Setting the timezone to UTC ensures consistent behavior across different geographic locations and aligns with the broader timezone standardization effort mentioned in the AI summary.

web/sites/default/includes/providers/settings.lagoon.php (1)

8-9: Good documentation improvement for provider abstraction.

The comment update from "Lagoon environments" to "provider environments" makes the documentation more generic and consistent with the modular provider approach used across the codebase.

web/sites/default/includes/modules/settings.seckit.php (1)

10-10: Excellent improvement with strict equality comparison.

Changing from == to === ensures type-safe comparison of environment constants, preventing potential type coercion issues and improving code reliability.

.vortex/docs/content/tools/docker.mdx (2)

9-9: LGTM: Consistent documentation formatting

The bold formatting applied to "Vortex" throughout the documentation improves brand consistency and emphasis.

Also applies to: 77-77, 93-93, 150-150


169-169: LGTM: Timezone standardization to UTC

Changing the default timezone example from Australia/Melbourne to UTC aligns with the broader effort to standardize timezones across all environments, which is a best practice for containerized applications.

Also applies to: 178-180

.github/workflows/build-test-deploy.yml (1)

62-62: LGTM: Consistent timezone standardization across CI jobs

Standardizing the timezone to UTC across all container environments (database, build, and deploy jobs) is a best practice that ensures consistent behavior regardless of where the CI pipeline runs and avoids potential issues with daylight saving time transitions.

Also applies to: 171-171, 369-369

web/sites/default/includes/modules/settings.ys_base.php (2)

8-8: LGTM: Strict typing declaration

Using declare(strict_types=1); is a good practice that helps prevent type-related bugs and improves code reliability.


10-13: LGTM: Proper CI environment handling

The strict comparison (===) for environment detection and the practice of disabling mail sending in CI environments are both excellent implementations that prevent accidental email delivery during testing.

.vortex/docs/content/tools/renovate.mdx (1)

7-7: LGTM: Consistent documentation formatting

Adding bold formatting to "Vortex" maintains consistency with the documentation-wide formatting standards being applied across the project.

.vortex/docs/content/ci/README.mdx (1)

61-62: LGTM! Typo correction improves readability.

The fix from "Of cache" to "If cache" corrects a grammatical error and makes the sentence properly readable.

web/sites/default/includes/providers/settings.acquia.php (1)

8-9: Good standardization of provider settings documentation.

The change from "Acquia environments" to "provider environments" makes the comment more generic and aligns with the modular approach for provider settings files.

.vortex/docs/content/tools/rector.mdx (1)

53-54: Good formatting consistency improvement.

Making "Vortex" bold aligns with the formatting used throughout the documentation and improves visual consistency.

web/sites/default/includes/modules/settings.stage_file_proxy.php (1)

11-11: Excellent type safety improvement.

The change from loose (!=) to strict (!==) inequality comparison follows PHP best practices and ensures both value and type are compared when checking the environment constant.

.vortex/tests/bats/fixtures/docker-compose.noenv.json (1)

37-37: Timezone standardization to UTC completed successfully.

The timezone updates from "Australia/Melbourne" to "UTC" are consistently applied across all services with environment blocks.

Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387

.vortex/tests/bats/fixtures/docker-compose.env_mod.json (1)

37-37: Timezone standardization to UTC completed successfully.

The timezone updates are consistently applied across all services with environment configurations.

Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387

.vortex/tests/bats/fixtures/docker-compose.env.json (1)

37-37: Timezone standardization to UTC completed successfully.

All services with environment blocks have been properly updated to use UTC timezone.

Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387

.vortex/tests/bats/fixtures/docker-compose.env_local.json (1)

37-37: Timezone standardization to UTC completed successfully.

The timezone configuration has been properly updated across all relevant services.

Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387

tests/phpunit/Drupal/DatabaseSettingsTest.php (1)

43-43: Improved test accuracy with explicit default port.

Changing the default port from an empty string to "3306" makes the test more explicit and aligns with the standard MySQL default port, improving test reliability.

web/sites/default/includes/modules/settings.shield.php (1)

24-24: Excellent use of strict equality operators for type safety.

The change from loose (!=, ==) to strict (!==, ===) equality operators improves type safety and prevents potential issues with type coercion in environment comparisons.

Also applies to: 28-28

.vortex/docs/content/getting-started/installation.mdx (1)

7-9: Documentation improvements enhance clarity and user guidance.

The changes successfully:

  • Clarify the installation scope ("into your project's codebase")
  • Direct users to relevant documentation sections
  • Streamline the integration services list

The grammar in "your hosting" is correct (the static analysis suggestion is a false positive).

Also applies to: 13-13, 79-79

.vortex/tests/bats/_helper.workflow.bash (2)

232-240: Timezone standardization to UTC successfully implemented.

The changes correctly update all timezone assertions from Australian timezones to UTC, aligning with the project-wide standardization effort. This ensures consistent behavior across all environments.

🧰 Tools
🪛 GitHub Check: codecov/patch

[warning] 232-232: .vortex/tests/bats/_helper.workflow.bash#L232
Added line #L232 was not covered by tests


[warning] 234-234: .vortex/tests/bats/_helper.workflow.bash#L234
Added line #L234 was not covered by tests


[warning] 236-236: .vortex/tests/bats/_helper.workflow.bash#L236
Added line #L236 was not covered by tests


[warning] 238-238: .vortex/tests/bats/_helper.workflow.bash#L238
Added line #L238 was not covered by tests


[warning] 240-240: .vortex/tests/bats/_helper.workflow.bash#L240
Added line #L240 was not covered by tests


214-214: Spelling standardization to American English.

Good consistency improvement changing "behaviour" to "behavior" throughout the codebase.

Also applies to: 256-256

.ahoy.yml (2)

200-200: Excellent tooling consistency improvement.

The standardization to yarn run --cwd for both lint-fe and lint-fe-fix commands ensures consistent front-end tooling usage throughout the project. This addresses the previous inconsistency between npm and yarn usage.

Also applies to: 223-223


286-286: Spelling standardization completed.

Good consistency improvement changing "behaviour" to "behavior" to match American English spelling used throughout the project.

web/sites/default/includes/modules/settings.system.php (2)

11-11: Good use of environment variable with fallback.

The cache max age configuration properly uses an environment variable with a sensible default fallback value. This promotes flexibility across different deployment environments.


13-17: Appropriate production-specific optimization.

CSS and JS preprocessing is correctly enabled only in production environment, which is the proper approach for performance optimization while maintaining development convenience.

web/sites/default/includes/providers/settings.circleci.php (1)

3-11: Excellent documentation and separation of concerns.

The file documentation clearly explains the purpose and scope, properly directing developers to use per-module settings files for custom configuration. This promotes good architectural separation.

.vortex/docs/content/getting-started/features.mdx (3)

38-38: Reorder local development tools correctly
Moved Lando below DDEV to reflect the intended tooling order.


47-47: Add Gherkin Lint to tooling list
Gherkin Lint is now included under Tooling, aligning with the CI integration.


58-60: Document new workflow features
Deployment notifications and automated dependency updates have been marked as completed, matching recent CI/CD enhancements.

.vortex/docs/.utils/variables/extra/ci.variables.sh (1)

69-72: Introduce RENOVATE_REPOSITORIES environment variable
New variable for specifying which repositories Renovate should manage, complementing self-hosted Renovate configuration.

.circleci/config.yml (3)

51-51: Standardize runner timezone to UTC
Updated TZ to "UTC" for consistent timestamp handling across CI jobs.


73-73: Use explicit artifact source path
Replaced VORTEX_EXPORT_CODE_DIR with a hardcoded /tmp/workspace/code for clarity and reliability.


256-259: Enhance code export step with disk usage summary
Ensured the export directory is created, copied, and reported with du -sh for build diagnostics.

.vortex/installer/src/Prompts/Handlers/HostingProvider.php (4)

43-43: Remove SETTINGS_PROVIDER_ACQUIA token
Added removal of the !SETTINGS_PROVIDER_ACQUIA token to align with new provider-specific settings.


48-48: Remove SETTINGS_PROVIDER_LAGOON token
Added removal of the !SETTINGS_PROVIDER_LAGOON token to clean up Lagoon-related settings.


63-63: Cleanup SETTINGS_PROVIDER_ACQUIA in Acquia removal
Ensured provider settings token is also removed when cleaning up Acquia hooks.


73-73: Cleanup SETTINGS_PROVIDER_LAGOON in Lagoon removal
Extended Lagoon cleanup to remove the provider settings token.

.vortex/docs/content/drupal/module-scaffold.mdx (5)

10-12: Clarify general-purpose module recommendation
Reworded to specify that ys_base should hold functionality not tied to feature-specific modules.


15-16: Refine prefix and theme naming advice
Updated guidance to use the site machine name for themes, improving naming consistency.


20-21: Specify deploy file explicitly
Renamed reference to ys_base.deploy.php with direct GitHub link for clarity.


30-31: Smoothen tests scaffold description
Improved phrasing around test helpers and traits for better readability.


34-35: Link to development workflow documentation
Added a pointer to the Development workflow for working with custom modules.

.vortex/installer/src/Prompts/Handlers/CiProvider.php (2)

61-63: LGTM! Proper cleanup of GitHub Actions provider settings.

The added cleanup logic for settings.gha.php and SETTINGS_PROVIDER_GHA token correctly follows the existing pattern and ensures consistent removal when GitHub Actions is deselected.


68-71: LGTM! Proper cleanup of CircleCI provider settings.

The added cleanup logic for settings.circleci.php and SETTINGS_PROVIDER_CIRCLECI token correctly follows the existing pattern and ensures consistent removal when CircleCI is deselected.

README.md (2)

23-42: Excellent documentation improvement!

The rewritten introduction significantly enhances the README by providing a comprehensive yet concise explanation of Vortex's value proposition. The new content effectively communicates the benefits of standardization, maintainability, and the complete foundation Vortex provides for Drupal projects.


46-48: Good clarification of the installation process.

The updated installation description better explains the installer's functionality and the user's role in choosing which changes to commit.

tests/phpunit/Drupal/SwitchableSettingsTest.php (2)

185-185: Good documentation fix.

The corrected docblock now accurately references the testEnvironmentIndicator() method that uses this data provider.


696-700: Correct test expectation alignment.

The updated test case correctly expects 'claro' as the default maintenance theme when no environment variables are set, aligning with the actual implementation behavior.

.vortex/docs/.utils/variables/extra/.env.local.example.variables.sh (1)

8-11: Document and implement dynamic VORTEX_LOCALDEV_URL. Comments now clearly explain that the URL is derived from COMPOSE_PROJECT_NAME (set by Docker Compose) with a fallback to example-site, improving transparency for local dev setups.

Also applies to: 13-13

.vortex/docs/content/README.mdx (1)

17-24: Enhance README introduction. The rewritten intro offers a structured overview of Vortex’s purpose, key features (containerized environments, CI/CD, hosting integrations), and benefits for developers, improving clarity and onboarding.

.env (7)

4-6: Clarify variable management guidance. Comments now emphasize centralizing changes in .env and using .env.local for overrides, which will help prevent scattered overrides.

Also applies to: 9-10, 15-16


34-35: Confirm timezone default switch. Changing TZ from "Australia/Melbourne" to "UTC" aligns with the new standard across environments. Ensure downstream services and CI fixtures reflect this.

🧰 Tools
🪛 dotenv-linter (3.3.0)

[warning] 35-35: [QuoteCharacter] The value has quote characters (', ")


41-42: Review default Drupal profile. You’ve set DRUPAL_PROFILE=standard by default—verify this aligns with your most common project starter profiles.


86-86: Update provision docs link. The @see URL now points directly to the Drupal provision section, improving discoverability.


102-109: Enhance DB sanitization references. Added @see anchors for database-sanitization steps, which improves guidance on skipping sanitization and configuring email patterns.

🧰 Tools
🪛 dotenv-linter (3.3.0)

[warning] 109-109: [QuoteCharacter] The value has quote characters (', ")


220-221: Expand notifications channel docs. Clarified that VORTEX_NOTIFY_CHANNELS supports comma-separated channels (email,newrelic,github,jira), improving usability.


223-226: Detail email notification settings. Comments now specify which variables apply to email notifications and illustrate usage, aiding clarity.

🧰 Tools
🪛 dotenv-linter (3.3.0)

[warning] 226-226: [QuoteCharacter] The value has quote characters (', ")

.vortex/docs/content/drupal/README.mdx (3)

13-13: Clarify scaffold listing. The “Module scaffold” entry was simplified by removing “with tests scaffold,” making it more concise.


22-22: Emphasize setup requirement. Changed to “You would need to add…” to clearly state that modules/themes must be added after initial setup.


24-38: Refine module table and descriptions. Reformatted the table for alignment and updated module descriptions for precision (e.g., environment-based config, renamed “Valkey caching backend,” added “Stage” in examples).

🧰 Tools
🪛 LanguageTool

[uncategorized] ~36-~36: You might be missing the article “the” here.
Context: ... | Integrates Apache Solr with Search API. ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

tests/phpunit/Drupal/SettingsTestCase.php (2)

72-92: LGTM! Well-structured environment variable filtering.

The new ALLOWED_ENV_VARS constant centralizes the allowed environment variable prefixes and includes comprehensive documentation. This approach improves maintainability and makes it easier for consumer sites to extend the allowed variables.


163-168: Environment variable setup improvements look good.

The reordering to set DRUPAL_PUBLIC_FILES before DRUPAL_TEMPORARY_FILES and the use of the centralized ALLOWED_ENV_VARS constant improves consistency and maintainability.

.vortex/docs/content/workflows/variables.mdx (3)

353-355: Excellent standardization to UTC timezone.

Changing the default timezone from Australia/Melbourne to UTC is a best practice that provides consistency across different geographical deployments and avoids timezone-related issues.


327-334: Good addition of Renovate configuration variable.

The new RENOVATE_REPOSITORIES variable properly documents the CI configuration option for managing repositories with Renovate, aligning with modern dependency management practices.


1176-1182: Clear explanation of local development URL derivation.

The updated description properly explains how VORTEX_LOCALDEV_URL is derived from COMPOSE_PROJECT_NAME and provides a realistic default value, improving developer understanding.

.vortex/docs/content/getting-started/architecture.mdx (2)

29-35: Excellent addition of system components diagrams.

The new system components section with light/dark mode diagrams enhances the architecture documentation and provides visual clarity for understanding the system structure.


238-267: Valuable addition explaining template system.

The new "Template placeholders and tokens" section provides excellent transparency into how Vortex generates customized projects. The explanation of naming placeholders and conditional tokens helps users understand the template structure and customization process.

.vortex/docs/content/drupal/theme-scaffold.mdx (3)

16-25: Excellent emphasis on flexibility and customization.

The note properly sets expectations that the theme scaffold is demonstrative rather than prescriptive, acknowledging the project-specific nature of front-end development while encouraging adaptation.


29-91: Comprehensive build system documentation.

The detailed explanation of the Node.js/Grunt build system, including specific commands and Ahoy integration, provides developers with clear guidance for both direct usage and containerized development. The emphasis on maintaining consistent command structures across projects is particularly valuable.


94-119: Well-structured file organization guide.

The file structure documentation clearly outlines the theme's directory layout with explanatory comments, making it easy for developers to understand the organization and locate specific components.

.vortex/docs/content/drupal/provision.mdx (2)

41-44: Great improvement to the documentation structure!

The replacement of the Mermaid text diagram with embedded images for dark and light modes improves accessibility and readability.


145-156: Excellent addition of example script inclusion

The integrated display of the scaffold script with the raw-loader import is a significant improvement over the previous expandable code block approach.

.vortex/docs/content/drupal/settings.mdx (1)

156-156: Correct default timezone value in documentation

The documentation states UTC as the default timezone, which is correct and aligns with the standardization across the codebase.

web/sites/default/settings.php (3)

39-39: Good addition of explicit default port

Adding the explicit default port '3306' for MySQL improves clarity and prevents potential issues when the environment variable is not set.


75-77: Excellent standardization to UTC timezone

The change from "Australia/Melbourne" to "UTC" as the default timezone is a good practice for consistency across environments.


26-46: Well-structured database configuration section

The database configuration using environment variables with multiple fallbacks provides excellent flexibility for different hosting providers while maintaining consistency.

tests/phpunit/Drupal/EnvironmentSettingsTest.php (2)

307-307: Good addition of maintenance_theme assertions

The consistent addition of $config['maintenance_theme'] = 'claro'; assertions across all environment tests properly validates the new maintenance theme setting.

Also applies to: 427-427, 472-472, 521-521, 568-568, 615-615, 656-656, 697-697, 737-737, 784-784, 835-835, 886-886, 937-937


334-407: Excellent comprehensive test for environment variable overrides

This new test method thoroughly validates that all environment variables correctly override their default values, including database settings, file paths, timezone, and maintenance theme.

Comment on lines +15 to +17
if (!empty(getenv('CI'))) {
$settings['environment'] = ENVIRONMENT_CI;
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

Consider more robust environment variable checking.

The current logic uses !empty(getenv('CI')) which could incorrectly detect CI environment if the CI variable is set to string values like "false" or "0". Consider using a more explicit check:

-if (!empty(getenv('CI'))) {
+if (getenv('CI') === 'true' || getenv('CI') === '1') {
  $settings['environment'] = ENVIRONMENT_CI;
}

This ensures only truthy string values are recognized as CI environment indicators.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
if (!empty(getenv('CI'))) {
$settings['environment'] = ENVIRONMENT_CI;
}
if (getenv('CI') === 'true' || getenv('CI') === '1') {
$settings['environment'] = ENVIRONMENT_CI;
}
🤖 Prompt for AI Agents
In web/sites/default/includes/providers/settings.gha.php around lines 15 to 17,
the current check for the CI environment uses !empty(getenv('CI')), which can
mistakenly treat values like "false" or "0" as true. Update the condition to
explicitly check if the getenv('CI') value is a recognized truthy string (e.g.,
"true", "1", "yes") to ensure accurate detection of the CI environment.

Comment on lines +15 to +17
if (!empty(getenv('CI'))) {
$settings['environment'] = ENVIRONMENT_CI;
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

Consider more robust environment variable checking.

Similar to the GitHub Actions provider file, the current logic uses !empty(getenv('CI')) which could incorrectly detect CI environment if the CI variable is set to string values like "false" or "0". Consider using a more explicit check:

-if (!empty(getenv('CI'))) {
+if (getenv('CI') === 'true' || getenv('CI') === '1') {
  $settings['environment'] = ENVIRONMENT_CI;
}

This ensures consistent and reliable CI environment detection across all provider files.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
if (!empty(getenv('CI'))) {
$settings['environment'] = ENVIRONMENT_CI;
}
if (getenv('CI') === 'true' || getenv('CI') === '1') {
$settings['environment'] = ENVIRONMENT_CI;
}
🤖 Prompt for AI Agents
In web/sites/default/includes/providers/settings.circleci.php around lines 15 to
17, the current check uses !empty(getenv('CI')), which can mistakenly detect the
CI environment if the CI variable is set to "false" or "0". Update the condition
to explicitly check if getenv('CI') is set to a truthy value like "true" or "1"
or use a strict comparison to avoid false positives, ensuring consistent and
reliable CI environment detection.

Comment on lines +17 to +19
set -eu
[ "${VORTEX_DEBUG-}" = "1" ] && set -x

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

Consider adding -o pipefail for robustness. You’ve enabled set -eu; adding set -o pipefail will ensure errors in piped commands are caught.

🤖 Prompt for AI Agents
In .vortex/docs/content/drupal/provision-example.sh around lines 17 to 19, the
script uses 'set -eu' but does not include 'set -o pipefail'. To improve
robustness and ensure errors in piped commands are caught, add 'set -o pipefail'
alongside the existing set options. This will make the script fail if any
command in a pipeline fails.

task() { printf " > %s\n" "${1}"; }
note() { printf " %s\n" "${1}"; }

drush() { ./vendor/bin/drush -y "$@"; }
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

Validate drush wrapper availability. It may help to check that vendor/bin/drush exists or fall back to a globally installed Drush, e.g.:

if ! command -v ./vendor/bin/drush &>/dev/null; then
  echo "Error: drush not found."; exit 1
fi
🤖 Prompt for AI Agents
In .vortex/docs/content/drupal/provision-example.sh at line 26, the drush
wrapper function assumes the local drush binary exists without validation. Add a
check before defining the function to verify that ./vendor/bin/drush exists and
is executable; if not, either exit with an error message or fallback to a
globally installed drush command. This ensures the script fails gracefully or
uses a valid drush binary.

@AlexSkrypnyk AlexSkrypnyk force-pushed the feature/update-documentation-june-2025 branch from 5588be5 to 8487081 Compare June 7, 2025 06:13
@github-actions github-actions bot temporarily deployed to commit June 7, 2025 06:15 Inactive
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 5

♻️ Duplicate comments (20)
web/sites/default/includes/providers/settings.gha.php (1)

15-17: 🛠️ Refactor suggestion

Use more robust environment variable checking for CI detection.

The current logic using !empty(getenv('CI')) could incorrectly detect CI environment if the CI variable is set to string values like "false" or "0". Consider using explicit truthy value checking:

-if (!empty(getenv('CI'))) {
+if (getenv('CI') === 'true' || getenv('CI') === '1') {
  $settings['environment'] = ENVIRONMENT_CI;
}
web/sites/default/includes/modules/settings.system.php (1)

19-27: Settings duplication needs architectural review.

This file duplicates settings from settings.automated_cron.php:

  • skip_permissions_hardening (lines 21 vs automated_cron line 12)
  • system.logging error_level (lines 26 vs automated_cron line 20)

This duplication creates maintenance overhead and potential conflicts.

Consider one of these approaches:

  1. Single responsibility: Move all system-level settings here and remove from automated_cron.php
  2. Hierarchical loading: Document the intended load order and precedence rules
  3. Shared settings file: Create a common environment settings file for shared configurations

The current approach violates the DRY principle and could lead to inconsistencies.

web/sites/default/includes/providers/settings.circleci.php (1)

15-17: Consider more robust environment variable checking.

Similar to the GitHub Actions provider file, the current logic uses !empty(getenv('CI')) which could incorrectly detect CI environment if the CI variable is set to string values like "false" or "0". Consider using a more explicit check:

-if (!empty(getenv('CI'))) {
+if (getenv('CI') === 'true' || getenv('CI') === '1') {
  $settings['environment'] = ENVIRONMENT_CI;
}

This ensures consistent and reliable CI environment detection across all provider files.

web/sites/default/includes/providers/settings.container.php (1)

15-24: ⚠️ Potential issue

Fix potential type error in environment variable handling.

The static analysis warning is valid - getenv() can return false when the environment variable is not set, which would cause a type error when passed to str_replace().

Apply this diff to ensure type safety:

-if (!empty(getenv('VORTEX_LOCALDEV_URL'))) {
+$localdev_url = getenv('VORTEX_LOCALDEV_URL');
+if (!empty($localdev_url) && is_string($localdev_url)) {
   // Local development URL.
   $patterns = str_replace(['.', 'https://', 'http://', ','], [
     '\.', '', '', '|',
-  ], getenv('VORTEX_LOCALDEV_URL'));
+  ], $localdev_url);
   $settings['trusted_host_patterns'][] = '^' . $patterns . '$';
 
   // URL when accessed from Behat tests.
   $settings['trusted_host_patterns'][] = '^nginx$';
 }
🧰 Tools
🪛 PHPStan (2.1.15)

19-19: Parameter #3 $subject of function str_replace expects array|string, string|false given.

(argument.type)

.vortex/docs/content/drupal/provision-example.sh (4)

17-19: 🧹 Nitpick (assertive)

Add pipefail for Pipeline Robustness
Include set -o pipefail alongside set -eu to catch failures in piped commands.


26-27: 🧹 Nitpick (assertive)

Validate Drush Binary Existence
Consider adding a check to ensure ./vendor/bin/drush is present and executable before defining the wrapper.


28-33: 🧹 Nitpick (assertive)

Handle Drush Command Failures
Wrap the environment retrieval (drush php:eval) in a conditional to detect and handle bootstrap failures or empty results.


35-50: 🧹 Nitpick (assertive)

Simplify Environment Check
Replace the grep-based test with a Bash case statement or pattern match ([[ "$environment" =~ ^(dev|stage|ci|local)$ ]]) for readability and performance.

.vortex/docs/content/getting-started/architecture.mdx (1)

113-115: Fix the POSIX-compliant line break formatting issue.

This formatting issue was previously identified and should be addressed.

-**Vortex** provides a set of [POSIX](https://en.wikipedia.org/wiki/POSIX)
--compliant
+**Vortex** provides a set of [POSIX](https://en.wikipedia.org/wiki/POSIX)-compliant
.vortex/docs/content/drupal/provision.mdx (2)

99-99: “user names” → “usernames” (duplicate from previous review)
The compound noun is normally one word.

🧰 Tools
🪛 LanguageTool

[style] ~99-~99: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...E_DB_REPLACE_USERNAME_WITH_EMAIL=0`
Replace username with email. Useful to also san...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[uncategorized] ~99-~99: A different word order might sound more natural.
Context: ...AIL=0<br/>Replace username with email. Useful to also sanitize user names.<br/><br/> 4. VORT...

(AI_HYDRA_LEO_WORD_ORDER)


[style] ~99-~99: It’s more common nowadays to write this noun as one word.
Context: ...ame with email. Useful to also sanitize user names.

4. `VORTEX_PROVISION_SANITIZ...

(RECOMMENDED_COMPOUNDS)


106-107: Missing comma before “such as” (duplicate from previous review)
Add a comma for correct punctuation: “…specific to your project, such as…”.

.vortex/docs/content/drupal/settings.mdx (3)

92-93: Wrong code-block language (still JSON, should be PHP)
Syntax highlighting is disabled for the embedded PHP example.

-<CodeBlock language="json">{EnvironmentIndicatorModuleSettingsExample}</CodeBlock>
+<CodeBlock language="php">{EnvironmentIndicatorModuleSettingsExample}</CodeBlock>

123-124: Trim “a variety of” for conciseness (duplicate from previous review)

-To support a variety of hosting providers and container platforms,
+To support multiple hosting providers and container platforms,
🧰 Tools
🪛 LanguageTool

[style] ~123-~123: Consider using a more concise synonym.
Context: ...eping the setup consistent. To support a variety of hosting providers and container platfor...

(A_VARIETY_OF)


245-246: Second embedded sample also labelled JSON instead of PHP

-<CodeBlock language="json">{EnvironmentIndicatorModuleSettingsExample}</CodeBlock>
+<CodeBlock language="php">{EnvironmentIndicatorModuleSettingsExample}</CodeBlock>
web/sites/default/settings.php (2)

79-81: Maintenance theme stored in $config – Drupal expects $settings
Same issue flagged earlier; still unresolved.

-$config['maintenance_theme'] = getenv('DRUPAL_MAINTENANCE_THEME') ?: getenv('DRUPAL_THEME') ?: 'claro';
+$settings['maintenance_theme'] = getenv('DRUPAL_MAINTENANCE_THEME') ?: getenv('DRUPAL_THEME') ?: 'claro';

111-129: Constant definitions still verbose (duplicate from previous review)
Consider collapsing into a loop or a single guard to avoid repetition.

tests/phpunit/Drupal/EnvironmentSettingsTest.php (4)

53-59: Comment text is still misleading for container case

The data-provider entry is commented simply “Container.” yet maps to ENVIRONMENT_LOCAL.
Rephrase to make the indirection explicit (e.g. “Container maps to local environment”) to avoid reader confusion.


342-366: Port 5432 + mysql driver ‑ mismatch remains unexplained

You keep the PostgreSQL default port (5432) while asserting the driver mysql.
Either change to an obviously custom port (e.g. 1234) or add a short comment explaining that a non-default value is used purely to exercise the override logic.


24-32: Heavy duplication still present – extract helpers for DRY tests

All test methods continue to hand-craft large, mostly identical $config and
$settings arrays. Introducing helper builders (e.g. getBaseSettings(),
overrideSettings()) will reduce maintenance cost and keep future changes
(one new key) to a one-liner.


382-396: ⚠️ Potential issue

Custom override assertions are overwritten again – test never validates them

The block beginning at line 389 re-assigns the same keys you purposely set to custom
values just a few lines above, so the final $settings asserted by the test
contains the defaults rather than the environment-variable overrides.
Consequently the test does not verify the override behaviour it claims to cover.

Apply the minimal fix – drop the second assignment block:

@@
-    $settings['config_exclude_modules'] = [];
-    $settings['config_sync_directory'] = static::CONFIG_PATH_TESTING;
-    $settings['container_yamls'][0] = $this->app_root . '/' . $this->site_path . '/services.yml';
-    $settings['entity_update_batch_size'] = 50;
-    $settings['environment'] = static::ENVIRONMENT_SUT;
-    $settings['file_public_path'] = static::PUBLIC_PATH_TESTING;
-    $settings['file_private_path'] = static::PRIVATE_PATH_TESTING;
-    $settings['file_temp_path'] = static::TMP_PATH_TESTING;
-    $settings['file_scan_ignore_directories'] = [
-      'node_modules',
-      'bower_components',
-    ];
-    $settings['hash_salt'] = 'custom_hash_salt';
-    $settings['trusted_host_patterns'] = [
-      '^localhost$',
-    ];
+    // ❗ Keep the earlier custom values so the test really validates overrides.
📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 5588be5 and 8487081.

⛔ Files ignored due to path filters (95)
  • .vortex/docs/static/img/diagram-dark.png is excluded by !**/*.png
  • .vortex/docs/static/img/diagram-light.png is excluded by !**/*.png
  • .vortex/docs/static/img/diagram-provision-dark.svg is excluded by !**/*.svg
  • .vortex/docs/static/img/diagram-provision-light.svg is excluded by !**/*.svg
  • .vortex/docs/static/img/installer.png is excluded by !**/*.png
  • .vortex/installer/tests/Fixtures/install/_baseline/.ahoy.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/.github/workflows/build-test-deploy.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/docker-compose.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/renovate.json is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/DatabaseSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/SettingsTestCase.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/SwitchableSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.automated_cron.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.seckit.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.shield.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.stage_file_proxy.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.system.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.ys_base.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/providers/settings.container.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/providers/settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/settings.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/themes/custom/star_wars/js/star_wars.js is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/ciprovider_circleci/.circleci/config.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/ciprovider_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/ciprovider_circleci/web/sites/default/includes/providers/-settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/ciprovider_circleci/web/sites/default/includes/providers/settings.circleci.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/db_download_source_acquia/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/db_download_source_container_registry/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/db_download_source_ftp/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/db_download_source_lagoon/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/.circleci/config.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/web/sites/default/includes/providers/-settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/web/sites/default/includes/providers/settings.circleci.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_gha/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_artifact/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_container_image/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_lagoon/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/.circleci/config.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/web/sites/default/includes/providers/-settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/web/sites/default/includes/providers/settings.circleci.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_gha/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_gha/.github/workflows/build-test-deploy.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/.circleci/config.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/web/sites/default/includes/providers/-settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/web/sites/default/includes/providers/settings.circleci.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.automated_cron.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.seckit.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.shield.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.stage_file_proxy.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.system.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.ys_base.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.acquia.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.container.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/settings.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/themes/custom/star_wars/js/star_wars.js is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/tests/phpunit/Drupal/SettingsTestCase.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.automated_cron.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.system.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.ys_base.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/providers/-settings.container.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/providers/-settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_lagoon/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_lagoon/docker-compose.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_lagoon/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_lagoon/web/sites/default/includes/providers/settings.lagoon.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/names/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/names/web/sites/default/includes/modules/settings.ys_base.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/names/web/themes/custom/lightsaber/js/lightsaber.js is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/profile_minimal/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/profile_the_empire/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_database_lagoon/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_database_lagoon/docker-compose.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_database_lagoon/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_database_lagoon/web/sites/default/includes/providers/settings.lagoon.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_profile/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_profile/.github/workflows/build-test-deploy.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/services_no_clamav/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/services_no_valkey/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/services_none/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/theme_absent/.ahoy.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/theme_absent/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/theme_custom/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/theme_custom/web/themes/custom/light_saber/js/light_saber.js is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/version_replacement/baseline/docker-compose.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/version_replacement/expected/docker-compose.yml is excluded by !.vortex/installer/tests/Fixtures/**
📒 Files selected for processing (56)
  • .ahoy.yml (3 hunks)
  • .circleci/config.yml (3 hunks)
  • .env (6 hunks)
  • .github/workflows/build-test-deploy.yml (3 hunks)
  • .vortex/docs/.utils/variables/extra/.env.local.example.variables.sh (1 hunks)
  • .vortex/docs/.utils/variables/extra/.env.variables.sh (1 hunks)
  • .vortex/docs/.utils/variables/extra/ci.variables.sh (1 hunks)
  • .vortex/docs/content/README.mdx (1 hunks)
  • .vortex/docs/content/ci/README.mdx (1 hunks)
  • .vortex/docs/content/contributing/maintenance/scripts.mdx (1 hunks)
  • .vortex/docs/content/contributing/roadmap.mdx (1 hunks)
  • .vortex/docs/content/drupal/README.mdx (2 hunks)
  • .vortex/docs/content/drupal/module-scaffold.mdx (2 hunks)
  • .vortex/docs/content/drupal/provision-example.sh (1 hunks)
  • .vortex/docs/content/drupal/provision.mdx (3 hunks)
  • .vortex/docs/content/drupal/settings.mdx (3 hunks)
  • .vortex/docs/content/drupal/theme-scaffold.mdx (1 hunks)
  • .vortex/docs/content/getting-started/architecture.mdx (9 hunks)
  • .vortex/docs/content/getting-started/features.mdx (3 hunks)
  • .vortex/docs/content/getting-started/installation.mdx (2 hunks)
  • .vortex/docs/content/tools/docker.mdx (6 hunks)
  • .vortex/docs/content/tools/drush.mdx (1 hunks)
  • .vortex/docs/content/tools/rector.mdx (1 hunks)
  • .vortex/docs/content/tools/renovate.mdx (1 hunks)
  • .vortex/docs/content/workflows/notifications.mdx (1 hunks)
  • .vortex/docs/content/workflows/variables.mdx (12 hunks)
  • .vortex/docs/cspell.json (1 hunks)
  • .vortex/installer/src/Prompts/Handlers/CiProvider.php (1 hunks)
  • .vortex/installer/src/Prompts/Handlers/HostingProvider.php (3 hunks)
  • .vortex/tests/bats/_helper.bash (1 hunks)
  • .vortex/tests/bats/_helper.workflow.bash (3 hunks)
  • .vortex/tests/bats/fixtures/docker-compose.env.json (7 hunks)
  • .vortex/tests/bats/fixtures/docker-compose.env_local.json (7 hunks)
  • .vortex/tests/bats/fixtures/docker-compose.env_mod.json (7 hunks)
  • .vortex/tests/bats/fixtures/docker-compose.noenv.json (7 hunks)
  • README.md (1 hunks)
  • docker-compose.yml (1 hunks)
  • renovate.json (1 hunks)
  • scripts/vortex/login.sh (1 hunks)
  • tests/phpunit/Drupal/DatabaseSettingsTest.php (1 hunks)
  • tests/phpunit/Drupal/EnvironmentSettingsTest.php (22 hunks)
  • tests/phpunit/Drupal/SettingsTestCase.php (2 hunks)
  • tests/phpunit/Drupal/SwitchableSettingsTest.php (2 hunks)
  • web/sites/default/includes/modules/settings.automated_cron.php (1 hunks)
  • web/sites/default/includes/modules/settings.seckit.php (1 hunks)
  • web/sites/default/includes/modules/settings.shield.php (1 hunks)
  • web/sites/default/includes/modules/settings.stage_file_proxy.php (1 hunks)
  • web/sites/default/includes/modules/settings.system.php (1 hunks)
  • web/sites/default/includes/modules/settings.ys_base.php (1 hunks)
  • web/sites/default/includes/providers/settings.acquia.php (1 hunks)
  • web/sites/default/includes/providers/settings.circleci.php (1 hunks)
  • web/sites/default/includes/providers/settings.container.php (1 hunks)
  • web/sites/default/includes/providers/settings.gha.php (1 hunks)
  • web/sites/default/includes/providers/settings.lagoon.php (1 hunks)
  • web/sites/default/settings.php (6 hunks)
  • web/themes/custom/your_site_theme/js/your_site_theme.js (1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (1)
.vortex/installer/src/Prompts/Handlers/CiProvider.php (1)
.vortex/installer/src/Utils/File.php (2)
  • File (10-120)
  • removeTokenAsync (93-100)
🪛 LanguageTool
.vortex/docs/content/getting-started/installation.mdx

[misspelling] ~79-~79: Did you mean “you're” (short for ‘you are’)?
Context: ...eed to set up the integrations with CI, your hosting and other services. Please ref...

(YOUR)

.vortex/docs/content/drupal/README.mdx

[uncategorized] ~36-~36: You might be missing the article “the” here.
Context: ... | Integrates Apache Solr with Search API. ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

.vortex/docs/content/drupal/provision.mdx

[style] ~54-~54: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ... disable it at the end. Useful when you want to prevent users from accessing the site w...

(REP_WANT_TO_VB)


[style] ~99-~99: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...E_DB_REPLACE_USERNAME_WITH_EMAIL=0`
Replace username with email. Useful to also san...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[uncategorized] ~99-~99: A different word order might sound more natural.
Context: ...AIL=0<br/>Replace username with email. Useful to also sanitize user names.<br/><br/> 4. VORT...

(AI_HYDRA_LEO_WORD_ORDER)


[style] ~99-~99: It’s more common nowadays to write this noun as one word.
Context: ...ame with email. Useful to also sanitize user names.

4. `VORTEX_PROVISION_SANITIZ...

(RECOMMENDED_COMPOUNDS)


[uncategorized] ~105-~105: A comma might be missing here.
Context: ...omate additional tasks specific to your project such as conditionally enabling modules ...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)

.vortex/docs/content/drupal/settings.mdx

[uncategorized] ~13-~13: A punctuation mark might be missing here.
Context: ...lop/web/sites/default/settings.php) and [services.yml](https://github.com/drevo...

(AI_EN_LECTOR_MISSING_PUNCTUATION)


[uncategorized] ~33-~33: You might be missing the article “the” here.
Context: ...as applying different settings based on runtime environment, or retrieving values from ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~123-~123: Consider using a more concise synonym.
Context: ...eping the setup consistent. To support a variety of hosting providers and container platfor...

(A_VARIETY_OF)


[grammar] ~185-~185: Nouns are not usually modified by plural nouns. Is it possible that you meant to use the singular or possessive form here?
Context: ... constants are used consistently across settings files and scripts to determine conditio...

(PLURAL_MODIFIER)


[uncategorized] ~203-~203: You might be missing the article “the” here.
Context: ...ng the setup modular and independent of hosting platform. #### Overriding environment ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

🪛 PHPStan (2.1.15)
web/sites/default/includes/providers/settings.container.php

19-19: Parameter #3 $subject of function str_replace expects array|string, string|false given.

(argument.type)

🪛 dotenv-linter (3.3.0)
.env

[warning] 35-35: [QuoteCharacter] The value has quote characters (', ")


[warning] 226-226: [QuoteCharacter] The value has quote characters (', ")

⏰ Context from checks skipped due to timeout of 90000ms (13)
  • GitHub Check: build (1)
  • GitHub Check: build (0)
  • GitHub Check: vortex-test-workflow (3)
  • GitHub Check: vortex-test-deployment (0)
  • GitHub Check: vortex-test-workflow (2)
  • GitHub Check: vortex-test-workflow (0)
  • GitHub Check: vortex-test-deployment (1)
  • GitHub Check: vortex-test-workflow (1)
  • GitHub Check: vortex-test-common
  • GitHub Check: vortex-test-installer (8.3)
  • GitHub Check: vortex-test-installer (8.2)
  • GitHub Check: vortex-test-installer (8.4)
  • GitHub Check: vortex-test-docs
🔇 Additional comments (80)
web/themes/custom/your_site_theme/js/your_site_theme.js (1)

3-3: LGTM! Spelling standardization improvement.

The change from British English "behaviours" to American English "behaviors" standardizes the project's language consistency.

web/sites/default/includes/modules/settings.seckit.php (1)

10-10: Excellent improvement! Strict equality enhances type safety.

Converting from loose equality (==) to strict equality (===) is a best practice that prevents potential type coercion issues when comparing environment settings against constants.

scripts/vortex/login.sh (1)

12-12: Good documentation improvement! Comment now accurately reflects functionality.

The updated comment is more precise - the variable only controls unblocking admin users, not blocking, which aligns with the actual implementation in lines 27-32.

.vortex/docs/content/contributing/maintenance/scripts.mdx (1)

85-86: Nice branding consistency improvement!

Adding bold formatting to "Vortex" enhances visual consistency and brand emphasis in the documentation.

.vortex/docs/content/contributing/roadmap.mdx (1)

28-28: LGTM: Enhanced branding consistency.

The addition of bold formatting to "Vortex" improves documentation consistency and brand emphasis.

web/sites/default/includes/providers/settings.acquia.php (1)

8-9: LGTM: Improved comment accuracy.

The update from "Acquia environments" to "provider environments" makes the comment more accurate and aligns with the file's broader purpose of mapping provider environments generally.

.vortex/docs/content/tools/rector.mdx (1)

53-53: LGTM: Enhanced branding consistency.

The addition of bold formatting to "Vortex" maintains consistency with the broader documentation styling improvements.

.vortex/docs/content/tools/drush.mdx (1)

10-10: LGTM: Consistent branding improvements.

The addition of bold formatting to "Vortex" in both locations aligns with the broader documentation enhancement pattern across the PR.

Also applies to: 15-15

.vortex/docs/.utils/variables/extra/ci.variables.sh (1)

69-73: Add RENOVATE_REPOSITORIES CI variable
The new RENOVATE_REPOSITORIES entry is clearly documented and aligns with the self-hosted Renovate setup.

.vortex/tests/bats/_helper.bash (1)

1353-1354: Standardize spelling: "behavior"
The corrected American English spelling improves consistency across comments. No functional change.

.vortex/docs/.utils/variables/extra/.env.variables.sh (1)

21-22: Correct US English spelling: "sanitized"
Updating the comment to "sanitized" aligns with the project's standardized spelling conventions.

.vortex/docs/cspell.json (1)

40-40: Include "multisite" in spell checker
Adding "multisite" to the cspell dictionary prevents false positives for that term in documentation.

renovate.json (1)

14-14: Standardize Renovate timezone to UTC
Changing the timezone to UTC ensures uniformity across CI schedules and deployments.

web/sites/default/includes/providers/settings.lagoon.php (1)

8-9: LGTM: Comment generalization improves clarity.

The update from "Lagoon environments" to "provider environments" makes the documentation more generic and aligns with the broader refactoring to separate platform-specific logic from general environment detection.

.vortex/docs/content/workflows/notifications.mdx (1)

1-8: Work-in-progress documentation placeholder looks good.

The basic structure is appropriate for a documentation file that's still under development. The frontmatter includes the necessary sidebar positioning.

.vortex/docs/content/tools/docker.mdx (2)

9-9: LGTM: Brand formatting consistency.

Adding bold formatting to Vortex improves brand consistency throughout the documentation.


169-180: LGTM: Timezone standardization to UTC.

The change from Australia/Melbourne to UTC aligns with the project-wide timezone standardization effort, ensuring consistent behavior across all environments.

.github/workflows/build-test-deploy.yml (1)

62-62: LGTM: Consistent timezone standardization.

Changing the timezone from Australia/Melbourne to UTC across all job containers ensures consistent behavior and follows best practices for CI/CD environments. This eliminates potential timezone-related issues in automated workflows.

Also applies to: 171-171, 369-369

web/sites/default/includes/modules/settings.ys_base.php (1)

1-13: LGTM: Well-structured module settings file.

The file follows best practices with strict types declaration and proper environment detection. The logic to disable mail sending in CI environments is appropriate and uses strict comparison correctly.

.vortex/docs/content/tools/renovate.mdx (1)

7-7: LGTM! Consistent branding improvement.

The bold formatting of "Vortex" aligns with the broader documentation standardization effort mentioned in the AI summary.

docker-compose.yml (1)

44-44: Excellent standardization to UTC timezone.

Changing from a specific regional timezone to UTC follows containerization best practices and aligns with the broader timezone standardization effort across the project.

web/sites/default/includes/modules/settings.automated_cron.php (2)

1-8: Well-structured file header and strict typing.

The file follows PHP best practices with proper docblock, strict typing declaration, and clear file purpose.


10-13:

✅ Verification successful

Verify environment constants are defined.

The logic correctly disables automated cron for local and CI environments, but ensure that ENVIRONMENT_LOCAL and ENVIRONMENT_CI constants are properly defined in the main settings or bootstrap files.


🏁 Script executed:

#!/bin/bash
# Description: Verify environment constants are defined
# Expected: Find definitions of ENVIRONMENT_LOCAL and ENVIRONMENT_CI constants

rg "define.*ENVIRONMENT_(LOCAL|CI)" --type php web/sites/default/

Length of output: 336


Environment constants confirmed

I’ve verified that both ENVIRONMENT_LOCAL and ENVIRONMENT_CI are defined in web/sites/default/settings.php, so the automated‐cron disabling logic is safe as is.

• Definitions found in web/sites/default/settings.php

  • define('ENVIRONMENT_LOCAL', 'local');
  • define('ENVIRONMENT_CI', 'ci');
.vortex/docs/content/ci/README.mdx (1)

61-62: Good typo correction improves readability.

The correction from "Of" to "If" fixes the grammatical error and makes the cache fallback behavior explanation clear and correct.

web/sites/default/includes/modules/settings.stage_file_proxy.php (1)

11-11: Excellent improvement for type safety.

Changing from loose inequality (!=) to strict inequality (!==) ensures precise type and value matching for the environment comparison. This prevents potential issues where different types with the same value could be incorrectly considered equal.

.vortex/tests/bats/fixtures/docker-compose.noenv.json (1)

37-37: Skipping review of fixture file per user instructions.

As instructed, I'm not reviewing changes in fixture files used for testing purposes.

Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387

.vortex/tests/bats/fixtures/docker-compose.env_mod.json (1)

37-37: Skipping review of fixture file per user instructions.

As instructed, I'm not reviewing changes in fixture files used for testing purposes.

Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387

tests/phpunit/Drupal/DatabaseSettingsTest.php (1)

43-43: Good alignment of test data with configuration defaults.

Updating the expected database port from an empty string to "3306" ensures the test data matches the explicit default port configuration used in the application. This improves test accuracy and consistency.

.vortex/tests/bats/fixtures/docker-compose.env.json (1)

37-37: Timezone standardization looks good.

The consistent update of the TZ environment variable from "Australia/Melbourne" to "UTC" across all services aligns with the broader timezone standardization effort described in the summary.

Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387

.vortex/tests/bats/fixtures/docker-compose.env_local.json (1)

37-37: Consistent timezone standardization maintained.

The TZ environment variable updates match the changes in the companion fixture file, ensuring consistency across test fixtures.

Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387

web/sites/default/includes/modules/settings.shield.php (2)

24-24: Excellent type safety improvement.

Using strict inequality (!==) instead of loose inequality (!=) prevents potential type coercion issues when comparing environment constants.


28-28: Consistent use of strict equality operators.

The strict equality operators (===) ensure both type and value matching, which is the correct approach for environment constant comparisons.

.vortex/docs/content/getting-started/installation.mdx (3)

7-9: Documentation clarity improved.

The clarification that Vortex is installed "into your project's codebase" provides better context for users about what the installation process entails.


13-13: Grammar and guidance improvements.

The article correction from "in" to "an" interactive installer is grammatically correct, and the additional guidance to "see relevant sections in the documentation" helps users find detailed setup instructions.


79-79: Service list appropriately streamlined.

Removing "Docker Hub" from the integration list focuses on the core services that require manual setup configuration.

🧰 Tools
🪛 LanguageTool

[misspelling] ~79-~79: Did you mean “you're” (short for ‘you are’)?
Context: ...eed to set up the integrations with CI, your hosting and other services. Please ref...

(YOUR)

.vortex/tests/bats/_helper.workflow.bash (2)

214-214: Approve spelling standardization to American English.

The change from "behaviour" to "behavior" maintains consistency with American English conventions used throughout the codebase.


232-240: Approve timezone standardization to UTC.

The updates to expect TZ="UTC" and "UTC" in container outputs are consistent with the broader timezone standardization effort across the project. This ensures predictable behavior across different environments and removes dependency on Australia-specific timezones.

.ahoy.yml (2)

200-200: Approve yarn standardization for front-end lint commands.

The switch from npm run --prefix to yarn run --cwd provides consistency across all front-end tooling commands and addresses the previous review feedback about command standardization.

Also applies to: 223-223


286-286: Approve spelling standardization to American English.

The comment correction from "behaviour" to "behavior" maintains consistency with American English conventions used throughout the codebase.

.vortex/docs/content/getting-started/features.mdx (1)

38-38: Approve feature documentation updates.

The changes accurately reflect the current project capabilities:

  • Reordering local development tools for better organization
  • Adding "Gherkin Lint" as a completed tooling feature
  • Adding deployment notifications and Renovate automation as completed workflow features
  • Refining the database sourcing description for clarity

These updates maintain accurate documentation of the project's evolving feature set.

Also applies to: 47-47, 58-60

web/sites/default/includes/modules/settings.system.php (2)

11-11: LGTM! Good use of environment variable with fallback.

The cache page max age configuration properly uses an environment variable with a sensible default value.


13-17: LGTM! Proper production optimization.

CSS and JS aggregation is correctly enabled only in production environment for optimal performance.

web/sites/default/includes/providers/settings.circleci.php (1)

1-14: LGTM! Well-structured provider settings file.

The file structure, documentation, and strict typing declaration follow established patterns and best practices.

.circleci/config.yml (3)

51-51: LGTM! Timezone standardization improves consistency.

Setting timezone to UTC across all environments ensures consistent timestamp handling in CI operations.


73-73: LGTM! Simplified path configuration.

Using the direct path /tmp/workspace/code instead of the removed VORTEX_EXPORT_CODE_DIR variable simplifies the configuration and improves clarity.


256-258: LGTM! Enhanced export step with disk usage reporting.

The explicit directory creation, direct path usage, and addition of du -sh for disk usage reporting improve transparency and debugging capabilities.

.vortex/installer/src/Prompts/Handlers/HostingProvider.php (2)

43-43: LGTM! Consistent token removal for provider settings.

Adding SETTINGS_PROVIDER_* token removal alongside existing HOSTING_* tokens maintains consistency and supports the standardized provider settings approach.

Also applies to: 48-48


63-63: LGTM! Complete cleanup in removal methods.

The removeAcquia() and removeLagoon() methods now properly clean up both old HOSTING_* and new SETTINGS_PROVIDER_* tokens, ensuring thorough cleanup during provider deselection.

Also applies to: 73-73

.vortex/docs/content/drupal/module-scaffold.mdx (1)

10-12: Documentation improvements enhance clarity and structure.

The updates provide clearer guidance on module usage, naming conventions, and include helpful links to related resources. The new concluding section effectively directs users to next steps.

Also applies to: 15-16, 20-21, 30-30, 32-35

.vortex/installer/src/Prompts/Handlers/CiProvider.php (1)

61-61: Provider-specific settings cleanup logic correctly implemented.

The additions properly remove provider-specific settings files and tokens when CI providers are deselected, following the established pattern for cleanup operations.

Also applies to: 63-63, 68-68, 71-71

tests/phpunit/Drupal/SwitchableSettingsTest.php (1)

185-185: Test corrections improve accuracy and align with expected behavior.

The docblock correction and maintenance theme default value update properly reflect the actual system behavior where 'claro' is used as the default maintenance theme.

Also applies to: 696-696, 700-700

README.md (2)

23-40: Well-structured Introduction
The new paragraphs clearly articulate Vortex’s purpose, foundation, and maintenance model. The tone, formatting, and content align with the overall project vision.


46-48: Concise Installer Overview
The updated installation description succinctly highlights the streamlined installer flow. The wording and context are clear and match the linked installation guide.

.vortex/docs/.utils/variables/extra/.env.local.example.variables.sh (1)

8-13: Dynamic Local Dev URL Default
Deriving VORTEX_LOCALDEV_URL from $COMPOSE_PROJECT_NAME with a fallback is a robust improvement. The added comments clearly explain its behavior.

.vortex/docs/content/README.mdx (1)

17-34: Refined Project Overview
The updated MDX introduction mirrors the README improvements: it’s more formal, detailed, and makes effective use of MDX markup.

.vortex/docs/content/drupal/provision-example.sh (2)

22-25: Helper Functions Formatting
The info, task, and note helpers use clear, consistent formatting. No changes needed.


52-53: Finalize Operation Logging
The closing info call neatly wraps up the script’s flow.

.env (6)

4-6: Improve Comment Clarity
The new opening notes centralize environment variable control and discourage scattered overrides.


9-10: Enforce Scalar Value Rules
The added guidance on scalar-only values and quoting conventions is clear and helpful.


15-18: Document Local Customization Workflow
The instructions for .env.local and the link to variable docs are informative and well-placed.


86-86: Link to Provisioning Documentation
The new @see URL for Drupal provisioning is accurate and maps to the updated docs.


102-109: Enhance DB Sanitization Docs
The added @see links for VORTEX_PROVISION_SANITIZE_DB_SKIP and the email pattern improve discoverability of the sanitization behavior.

🧰 Tools
🪛 dotenv-linter (3.3.0)

[warning] 109-109: [QuoteCharacter] The value has quote characters (', ")


220-225: Clarify Notification Channels & Scope
The updated descriptions for VORTEX_NOTIFY_CHANNELS and email context make the notification configuration more transparent.

.vortex/docs/content/drupal/README.mdx (3)

13-13: LGTM: Simplified module scaffold description.

The change from "Module scaffold with tests scaffold" to "Module scaffold" removes redundancy and improves clarity.


22-22: LGTM: Improved precision with "need to add".

The change from "would add" to "would need to add" better emphasizes the necessity of adding modules and themes after initial setup.


24-38: LGTM: Enhanced module descriptions and table formatting.

The table reformatting improves readability, and the module descriptions are more precise and consistent. For example:

  • ClamAV description is more concise
  • Config Split description specifies "based on the environment"
  • Environment Indicator now includes "Stage" as an example
  • Shield description is clearer about access restriction

The static analysis hint about missing "the" before "Search API" appears to be a false positive - the current phrasing is grammatically correct.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~36-~36: You might be missing the article “the” here.
Context: ... | Integrates Apache Solr with Search API. ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

tests/phpunit/Drupal/SettingsTestCase.php (3)

48-70: LGTM: Well-organized addition of testing path constants.

The addition of CONFIG_PATH_TESTING and reorganization of existing path constants improves test configuration management. The constants are well-documented and follow consistent naming patterns.


72-92: LGTM: Centralized environment variable filtering.

The introduction of ALLOWED_ENV_VARS constant centralizes the prefixes for environment variables used during test setup. This improves maintainability and reduces duplication. The documentation clearly explains its purpose and provides guidance for consumer sites.


163-168: LGTM: Improved environment variable setup.

The reordering of environment variable setting (placing DRUPAL_PUBLIC_FILES before DRUPAL_TEMPORARY_FILES) and use of the centralized ALLOWED_ENV_VARS constant improves consistency and maintainability.

.vortex/docs/content/workflows/variables.mdx (7)

187-187: LGTM: Simplified DRUPAL_PROFILE description.

The simplified description removes unnecessary complexity while maintaining clarity about the variable's purpose.


327-334: LGTM: Added RENOVATE_REPOSITORIES variable.

The new environment variable is well-documented with clear description and proper categorization under CI config. This supports automated dependency management functionality.


353-355: LGTM: Timezone standardization to UTC.

The change from Australia/Melbourne to UTC aligns with the project's timezone standardization efforts mentioned in the AI summary, improving consistency across environments.


533-534: LGTM: Clarified database-related variable descriptions.

The enhanced descriptions for VORTEX_DB_DIR and VORTEX_DB_FILE better explain their roles in database import/export operations.

Also applies to: 757-758


566-567: LGTM: Spelling corrections.

Fixed "sanitised" to "sanitized" for American English consistency.

Also applies to: 574-575


1176-1182: LGTM: Improved VORTEX_LOCALDEV_URL description.

The enhanced description clearly explains the relationship with COMPOSE_PROJECT_NAME and provides better guidance for usage.


1198-1199: LGTM: Added email notification clarifications.

The additions of "Applies to email notifications" help clarify the scope of these notification-related variables.

Also applies to: 1214-1217, 1242-1243

.vortex/docs/content/getting-started/architecture.mdx (4)

12-16: LGTM: Enhanced introduction to architecture.

The added content provides a clear introduction explaining the purpose of the architecture documentation and sets appropriate expectations for readers.


29-35: LGTM: Added system components section with diagrams.

The new section with visual diagrams enhances understanding of the system architecture. The use of theme-aware images (dark/light mode) improves user experience.


62-62: LGTM: Updated repository structure.

The changes reflect current structure:

  • "test" renamed to "stage" in config directory
  • Added "recipes" directory

These updates keep the documentation accurate.

Also applies to: 70-70


237-268: LGTM: Comprehensive new section on template placeholders and tokens.

The new section provides valuable information about how Vortex generates customized projects while maintaining transparency. The explanation of naming placeholders and conditional tokens, including syntax examples for different file types, will help users understand the template system.

Comment on lines 81 to 83
These commands run within the docker container to use the Node.js environment
and tools installed there, ensuring consistency across development environments.

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

Capitalize “Docker” and clarify container scope

Tiny wording tweak keeps docs consistent with earlier references to Docker and avoids the ambiguous “the docker container” (which one?).

-These commands run within the docker container to use the Node.js environment
-and tools installed there, ensuring consistency across development environments.
+These commands run inside the project’s **Docker** container, using the Node.js
+environment and tools installed there to ensure consistency across development
+environments.
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
These commands run within the docker container to use the Node.js environment
and tools installed there, ensuring consistency across development environments.
These commands run inside the project’s **Docker** container, using the Node.js
environment and tools installed there to ensure consistency across development
environments.
🤖 Prompt for AI Agents
In .vortex/docs/content/drupal/theme-scaffold.mdx around lines 81 to 83,
capitalize "Docker" to maintain consistency with earlier references and replace
"the docker container" with a clearer phrase specifying which container or
environment is meant, such as "the Docker container" or "the Docker development
container," to avoid ambiguity.

Comment on lines +72 to +74
// Salt is taken from DRUPAL_HASH_SALT or the database host name.
$settings['hash_salt'] = getenv('DRUPAL_HASH_SALT') ?: hash('sha256', $databases['default']['default']['host']);

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Hash salt derivation is predictable — generate cryptographically-random fallback

Deriving $settings['hash_salt'] from the DB host is insufficient; identical hosts across environments yield identical salts, weakening security (e.g. cookie spoofing).

-$settings['hash_salt'] = getenv('DRUPAL_HASH_SALT') ?: hash('sha256', $databases['default']['default']['host']);
+$settings['hash_salt'] = getenv('DRUPAL_HASH_SALT') ?: bin2hex(random_bytes(32));

This keeps the env-override behaviour while providing a strong default.

Committable suggestion skipped: line range outside the PR's diff.

🤖 Prompt for AI Agents
In web/sites/default/settings.php around lines 72 to 74, the fallback for
$settings['hash_salt'] is derived from the database host, which is predictable
and weakens security. Modify the fallback to generate a cryptographically secure
random string instead of hashing the host. Retain the getenv('DRUPAL_HASH_SALT')
override but replace the fallback with a secure random value to ensure unique,
strong salts across environments.

@AlexSkrypnyk AlexSkrypnyk force-pushed the feature/update-documentation-june-2025 branch from 8487081 to 20fbf88 Compare June 7, 2025 07:17
@github-actions github-actions bot temporarily deployed to commit June 7, 2025 07:19 Inactive
@AlexSkrypnyk AlexSkrypnyk force-pushed the feature/update-documentation-june-2025 branch from 20fbf88 to 8781574 Compare June 7, 2025 07:24
@github-actions github-actions bot temporarily deployed to commit June 7, 2025 07:26 Inactive
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Caution

Inline review comments failed to post. This is likely due to GitHub's limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.

Actionable comments posted: 6

♻️ Duplicate comments (21)
.env (2)

34-35: Standardizing timezone to UTC is correct.

This change aligns with the broader effort to standardize timezone settings across all environments as mentioned in the AI summary.

🧰 Tools
🪛 dotenv-linter (3.3.0)

[warning] 35-35: [QuoteCharacter] The value has quote characters (', ")


226-226: Remove unnecessary quotes around email value.

As noted in previous reviews, values without spaces don't require quoting in dotenv files.

🧰 Tools
🪛 dotenv-linter (3.3.0)

[warning] 226-226: [QuoteCharacter] The value has quote characters (', ")

.vortex/docs/content/workflows/notifications.mdx (1)

1-3: 🛠️ Refactor suggestion

Include sidebar_label metadata for sidebar navigation
The frontmatter is missing sidebar_label: Notifications, which is required for proper placement in the documentation sidebar.

Apply this diff:

---
-sidebar_position: 4
+sidebar_label: Notifications
+sidebar_position: 4
---
.vortex/tests/bats/fixtures/docker-compose.noenv.json (1)

37-37: Timezone standardization to UTC is good, but implementation is incomplete.

The standardization from "Australia/Melbourne" to "UTC" across services improves consistency and avoids timezone-related issues in testing environments.

However, based on previous review feedback, the valkey and wait_dependencies services are still missing the TZ environment variable entirely, which should be added for consistency.

Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387

web/sites/default/includes/providers/settings.gha.php (1)

15-17: ⚠️ Potential issue

Fix environment variable detection to prevent false positives.

The current logic using !empty(getenv('CI')) could incorrectly detect CI environment if the CI variable is set to string values like "false" or "0".

Apply this fix to ensure only truthy string values are recognized:

-if (!empty(getenv('CI'))) {
+if (getenv('CI') === 'true' || getenv('CI') === '1') {
  $settings['environment'] = ENVIRONMENT_CI;
}
web/sites/default/includes/modules/settings.system.php (1)

19-27: 🛠️ Refactor suggestion

Address settings duplication to improve maintainability.

This file duplicates settings from settings.automated_cron.php:

  • skip_permissions_hardening (line 21)
  • system.logging error_level (line 26)

This duplication creates maintenance overhead and potential conflicts, violating the DRY principle.

Consider one of these architectural approaches:

  1. Single responsibility: Consolidate all system-level settings here and remove from automated_cron.php
  2. Hierarchical loading: Document the intended load order and precedence rules
  3. Shared settings file: Create a common environment settings file for shared configurations
web/sites/default/includes/providers/settings.circleci.php (1)

15-17: Ensure reliable CI environment detection

The current check !empty(getenv('CI')) treats "false" or "0" as truthy. Consider explicitly matching expected values to avoid false positives:

-if (!empty(getenv('CI'))) {
+if (getenv('CI') === 'true' || getenv('CI') === '1') {
web/sites/default/includes/providers/settings.container.php (1)

15-24: ⚠️ Potential issue

Fix potential type error in environment variable handling.

This is the same issue identified in previous reviews - getenv() can return false when the environment variable is not set, causing a type error when passed to str_replace().

Apply the previously suggested fix:

-if (!empty(getenv('VORTEX_LOCALDEV_URL'))) {
+$localdev_url = getenv('VORTEX_LOCALDEV_URL');
+if (!empty($localdev_url) && is_string($localdev_url)) {
   // Local development URL.
   $patterns = str_replace(['.', 'https://', 'http://', ','], [
     '\.', '', '', '|',
-  ], getenv('VORTEX_LOCALDEV_URL'));
+  ], $localdev_url);
   $settings['trusted_host_patterns'][] = '^' . $patterns . '$';
 
   // URL when accessed from Behat tests.
   $settings['trusted_host_patterns'][] = '^nginx$';
 }
🧰 Tools
🪛 PHPStan (2.1.15)

19-19: Parameter #3 $subject of function str_replace expects array|string, string|false given.

(argument.type)

.vortex/docs/content/drupal/provision-example.sh (5)

15-15: Remove unnecessary ShellCheck directive.

The shellcheck disable=SC2086 directive appears unnecessary since variables are properly quoted throughout the script.


17-18: Add pipefail for robustness.

Consider adding set -o pipefail to ensure errors in piped commands are caught, improving script robustness.


26-26: Validate drush wrapper availability.

The drush wrapper assumes the local drush binary exists without validation. Consider adding a check to verify ./vendor/bin/drush exists and is executable.


30-32: Add error handling for environment detection.

The drush command lacks error handling if Drupal isn't properly bootstrapped or the settings value isn't available.


35-35: Simplify environment matching.

The current approach with echo and grep could be simplified using bash pattern matching or a case statement for better readability and efficiency.

.vortex/docs/content/getting-started/architecture.mdx (1)

113-114: Fix formatting of “POSIX-compliant”
Combine “POSIX” and “-compliant” on one line to avoid breaking the hyphen.

web/sites/default/settings.php (3)

80-80: ⚠️ Potential issue

$config['maintenance_theme'] is ignored – use $settings['maintenance_theme']

Drupal reads the maintenance theme from $settings, not $config.
Current code leaves maintenance mode theme unchanged.

Apply this diff to fix the issue:

-$config['maintenance_theme'] = getenv('DRUPAL_MAINTENANCE_THEME') ?: getenv('DRUPAL_THEME') ?: 'claro';
+$settings['maintenance_theme'] = getenv('DRUPAL_MAINTENANCE_THEME') ?: getenv('DRUPAL_THEME') ?: 'claro';

73-73: ⚠️ Potential issue

Hash salt derivation is predictable — generate cryptographically-random fallback

Deriving $settings['hash_salt'] from the DB host is insufficient; identical hosts across environments yield identical salts, weakening security (e.g. cookie spoofing).

Apply this diff to provide a strong default:

-$settings['hash_salt'] = getenv('DRUPAL_HASH_SALT') ?: hash('sha256', $databases['default']['default']['host']);
+$settings['hash_salt'] = getenv('DRUPAL_HASH_SALT') ?: bin2hex(random_bytes(32));

114-129: 🧹 Nitpick (assertive)

Consider consolidating constant definitions

You already guard each define individually, but grouping them reduces duplication.

Apply this diff to make the code more concise:

-// @codeCoverageIgnoreStart
-if (!defined('ENVIRONMENT_LOCAL')) {
-  define('ENVIRONMENT_LOCAL', 'local');
-}
-if (!defined('ENVIRONMENT_CI')) {
-  define('ENVIRONMENT_CI', 'ci');
-}
-if (!defined('ENVIRONMENT_DEV')) {
-  define('ENVIRONMENT_DEV', 'dev');
-}
-if (!defined('ENVIRONMENT_STAGE')) {
-  define('ENVIRONMENT_STAGE', 'stage');
-}
-if (!defined('ENVIRONMENT_PROD')) {
-  define('ENVIRONMENT_PROD', 'prod');
-}
-// @codeCoverageIgnoreEnd
+// @codeCoverageIgnoreStart
+$constants = [
+  'ENVIRONMENT_LOCAL' => 'local',
+  'ENVIRONMENT_CI'    => 'ci',
+  'ENVIRONMENT_DEV'   => 'dev',
+  'ENVIRONMENT_STAGE' => 'stage',
+  'ENVIRONMENT_PROD'  => 'prod',
+];
+foreach ($constants as $name => $value) {
+  if (!defined($name)) {
+    define($name, $value);
+  }
+}
+// @codeCoverageIgnoreEnd
tests/phpunit/Drupal/EnvironmentSettingsTest.php (4)

295-966: 🧹 Nitpick (assertive)

Consider extracting helper methods to reduce duplication

Every test method manually assembles large $config and $settings arrays that differ only in a few keys. This makes the test file unnecessarily long and maintenance-prone.

Consider creating helper methods:

private function getBaseConfig(): array {
  return [
    'environment_indicator.settings' => [
      'favicon' => TRUE,
      'toolbar_integration' => [TRUE],
    ],
    'maintenance_theme' => 'claro',
    'system.performance' => [
      'cache' => ['page' => ['max_age' => 900]],
    ],
  ];
}

private function getBaseSettings(): array {
  return [
    'config_exclude_modules' => [],
    'config_sync_directory' => static::CONFIG_PATH_TESTING,
    'container_yamls' => [$this->app_root . '/' . $this->site_path . '/services.yml'],
    'entity_update_batch_size' => 50,
    'file_public_path' => static::PUBLIC_PATH_TESTING,
    'file_private_path' => static::PRIVATE_PATH_TESTING,
    'file_temp_path' => static::TMP_PATH_TESTING,
    'file_scan_ignore_directories' => ['node_modules', 'bower_components'],
    'hash_salt' => hash('sha256', getenv('DATABASE_HOST') ?: 'localhost'),
    'trusted_host_patterns' => ['^localhost$'],
  ];
}

private function mergeConfig(array $base, array $overrides): array {
  return array_merge($base, $overrides);
}

Then each test could be simplified to only specify differences:

public function testEnvironmentLocal(): void {
  // ... setup ...
  
  $config = $this->mergeConfig($this->getBaseConfig(), [
    'automated_cron.settings' => ['interval' => 0],
    'config_split.config_split.local' => ['status' => TRUE],
    'shield.settings' => ['shield_enable' => FALSE],
    // ... other local-specific config
  ]);
  $this->assertConfig($config);
  
  $settings = $this->mergeConfig($this->getBaseSettings(), [
    'environment' => static::ENVIRONMENT_LOCAL,
    'skip_permissions_hardening' => TRUE,
  ]);
  $this->assertSettings($settings);
}

53-59: 🧹 Nitpick (assertive)

Container case returns LOCAL – clarify intent

The comment says "Container." which implies a distinct container environment, yet the expected result is static::ENVIRONMENT_LOCAL. This is misleading for future readers.

Apply this diff to clarify the intent:

-      // Container.
+      // Container maps to local environment.

383-406: ⚠️ Potential issue

Custom-override assertions are overwritten

You correctly set custom override paths at lines 383-388, but then immediately overwrite the same keys with default values at lines 390-396. This prevents the test from verifying the override behavior.

Remove the duplicate assignments that overwrite the custom values:

     $settings['file_private_path'] = 'custom_private';
     $settings['file_temp_path'] = 'custom_temp';

     $settings['config_exclude_modules'] = [];
-    $settings['config_sync_directory'] = static::CONFIG_PATH_TESTING;
     $settings['container_yamls'][0] = $this->app_root . '/' . $this->site_path . '/services.yml';
     $settings['entity_update_batch_size'] = 50;
     $settings['environment'] = static::ENVIRONMENT_SUT;
-    $settings['file_public_path'] = static::PUBLIC_PATH_TESTING;
-    $settings['file_private_path'] = static::PRIVATE_PATH_TESTING;
-    $settings['file_temp_path'] = static::TMP_PATH_TESTING;
     $settings['file_scan_ignore_directories'] = [

340-342: 🧹 Nitpick (assertive)

Port 5432 with MySQL driver may confuse readers

The test sets DATABASE_PORT to 5432 (PostgreSQL's default) while keeping driver as mysql. While this tests the override functionality, it could mislead future readers.

Add a comment to clarify the intent:

       'DATABASE_PASSWORD' => 'custom_pass',
       'DATABASE_HOST' => 'custom_host',
+      // Use a non-default port (MySQL's default is 3306) to verify the override.
       'DATABASE_PORT' => '5432',

Also applies to: 364-364

🛑 Comments failed to post (6)
.circleci/config.yml (1)

255-259: 🧹 Nitpick (assertive)

Enhance visibility and remove redundancy

Adding du -sh provides insight into the export size. Note that mkdir -p "/tmp/workspace/code" is already executed in step_process_codebase_for_ci; you can remove this duplicate if preferred.

🤖 Prompt for AI Agents
In .circleci/config.yml around lines 255 to 259, the mkdir command is redundant
because the directory is already created in a previous step. Remove the mkdir -p
"/tmp/workspace/code" line to eliminate duplication, and keep the du -sh command
to maintain visibility into the export size.
.vortex/docs/content/drupal/module-scaffold.mdx (1)

20-22: 🧹 Nitpick (assertive)

Use version-agnostic deployment file link

The hard-coded develop branch in the URL may become stale. Consider using a relative path or linking to the default branch (e.g., /blob/main/…) to ensure permanence.

🤖 Prompt for AI Agents
In .vortex/docs/content/drupal/module-scaffold.mdx around lines 20 to 22, the
URL to ys_base.deploy.php uses a hard-coded 'develop' branch which may become
outdated. Update the link to use a version-agnostic path by replacing 'develop'
with 'main' or use a relative path to the file to ensure the link remains valid
regardless of branch changes.
.vortex/docs/content/getting-started/architecture.mdx (2)

19-20: ⚠️ Potential issue

Fix line break in Zen section
The bold “Vortex” is split across lines—merge into one line to restore proper formatting.

🤖 Prompt for AI Agents
In .vortex/docs/content/getting-started/architecture.mdx around lines 19 to 20,
the bold text "**Vortex**" is split across two lines, breaking the formatting.
Merge the split parts into a single line so that "**Vortex**" appears as one
continuous bolded word without line breaks.

184-184: 🧹 Nitpick (assertive)

Correct router scripts grammar
Change “router script” to “router scripts” (plural) or “a router script” for clarity.

🤖 Prompt for AI Agents
In .vortex/docs/content/getting-started/architecture.mdx at line 184, the phrase
"_router_ script" should be corrected for grammatical clarity. Change it to
either "_router_ scripts" if referring to multiple scripts or "a _router_
script" if referring to a single script, depending on the intended meaning.
.vortex/docs/content/drupal/theme-scaffold.mdx (1)

81-82: 🧹 Nitpick (assertive)

Capitalize and clarify Docker container reference
Use “Docker” with uppercase and consider “project’s Docker container” for scope.

🤖 Prompt for AI Agents
In .vortex/docs/content/drupal/theme-scaffold.mdx around lines 81 to 82, update
the text to capitalize "Docker" and clarify the reference by changing it to
"project’s Docker container" to specify the scope and improve clarity.
.vortex/docs/content/drupal/settings.mdx (1)

87-92: 🧹 Nitpick (assertive)

Correct code block language
The example import is PHP—change language="json" to language="php" for proper highlighting.

🤖 Prompt for AI Agents
In .vortex/docs/content/drupal/settings.mdx around lines 87 to 92, the code
block language is incorrectly set to "json" for a PHP file example. Change the
CodeBlock component's language attribute from "json" to "php" to enable proper
syntax highlighting for the imported PHP settings example.

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 3

♻️ Duplicate comments (24)
.vortex/docs/content/workflows/notifications.mdx (1)

1-3: Add missing sidebar_label metadata

The frontmatter is missing the sidebar_label metadata required for proper sidebar display.

Apply this diff:

---
+sidebar_label: Notifications
 sidebar_position: 4
---
.vortex/tests/bats/fixtures/docker-compose.noenv.json (1)

413-422: Missing TZ environment variables for valkey and wait_dependencies services.

The valkey and wait_dependencies services still lack the "TZ": "UTC" environment variable that other services have. This was previously identified and should be addressed for consistency.

Also applies to: 424-451

web/sites/default/includes/providers/settings.gha.php (1)

15-17: Consider more robust environment variable checking.

The current logic uses !empty(getenv('CI')) which could incorrectly detect CI environment if the CI variable is set to string values like "false" or "0". Consider using a more explicit check:

-if (!empty(getenv('CI'))) {
+if (getenv('CI') === 'true' || getenv('CI') === '1') {
  $settings['environment'] = ENVIRONMENT_CI;
}

This ensures only truthy string values are recognized as CI environment indicators.

web/sites/default/includes/modules/settings.system.php (1)

19-27: Settings duplication needs architectural review.

This file duplicates settings from settings.automated_cron.php:

  • skip_permissions_hardening (lines 21 vs automated_cron line 12)
  • system.logging error_level (lines 26 vs automated_cron line 20)

This duplication creates maintenance overhead and potential conflicts.

Consider one of these approaches:

  1. Single responsibility: Move all system-level settings here and remove from automated_cron.php
  2. Hierarchical loading: Document the intended load order and precedence rules
  3. Shared settings file: Create a common environment settings file for shared configurations

The current approach violates the DRY principle and could lead to inconsistencies.

web/sites/default/includes/providers/settings.circleci.php (1)

15-17: Consider more robust environment variable checking.

Similar to past reviews, the current logic uses !empty(getenv('CI')) which could incorrectly detect CI environment if the CI variable is set to string values like "false" or "0". Consider using a more explicit check for consistent and reliable CI environment detection across all provider files.

web/sites/default/includes/providers/settings.container.php (1)

15-24: ⚠️ Potential issue

Ensure Safe Handling of getenv()
PHPStan correctly flags that getenv() may return false, causing a type error in str_replace(). Assign the environment variable to a local variable and verify it's a non-empty string before use.

Apply this diff:

-$localdev_url = getenv('VORTEX_LOCALDEV_URL');
-if (!empty(getenv('VORTEX_LOCALDEV_URL'))) {
-  // Local development URL.
-  $patterns = str_replace(['.', 'https://', 'http://', ','], [
-    '\.', '', '', '|',
-  ], getenv('VORTEX_LOCALDEV_URL'));
+  $localdev_url = getenv('VORTEX_LOCALDEV_URL');
+if (!empty($localdev_url) && is_string($localdev_url)) {
+  // Local development URL.
+  $patterns = str_replace(
+    ['.', 'https://', 'http://', ','],
+    ['\.', '', '', '|'],
+    $localdev_url
+  );
   $settings['trusted_host_patterns'][] = '^' . $patterns . '$';
 
   // URL when accessed from Behat tests.
   $settings['trusted_host_patterns'][] = '^nginx$';
 }
🧰 Tools
🪛 PHPStan (2.1.15)

19-19: Parameter #3 $subject of function str_replace expects array|string, string|false given.

(argument.type)

.vortex/docs/content/drupal/provision-example.sh (5)

15-15: Remove unnecessary shellcheck disable directive.

The shellcheck disable=SC2086 directive is unnecessary since variables in this script are properly quoted.


17-18: Add -o pipefail for robust error handling.

You've enabled set -eu; adding set -o pipefail will ensure errors in piped commands are caught.


26-26: Validate drush wrapper availability.

The drush wrapper function assumes the local drush binary exists without validation. Add a check to verify that ./vendor/bin/drush exists and is executable.


30-32: Add error handling for environment detection.

The drush command approach is appropriate, but consider adding error handling in case Drupal isn't properly bootstrapped or the settings value isn't available.


35-35: Simplify environment matching.

The current approach with echo and grep works but could be simplified using a case statement or bash pattern matching for better readability and efficiency.

.env (2)

35-35: Remove unnecessary quotes around UTC.

Since there are no spaces in the value, you can remove the quotes for consistency:

-TZ="UTC"
+TZ=UTC
🧰 Tools
🪛 dotenv-linter (3.3.0)

[warning] 35-35: [QuoteCharacter] The value has quote characters (', ")


226-226: Remove unnecessary quotes around email address.

Values without spaces don't require quoting in dotenv files:

-VORTEX_NOTIFY_EMAIL_FROM="webmaster@your-site-domain.example"
+VORTEX_NOTIFY_EMAIL_FROM=webmaster@your-site-domain.example
🧰 Tools
🪛 dotenv-linter (3.3.0)

[warning] 226-226: [QuoteCharacter] The value has quote characters (', ")

.vortex/docs/content/getting-started/architecture.mdx (1)

113-114: Previous formatting issue with POSIX-compliant has been resolved.

The line break that previously separated "POSIX" and "-compliant" has been fixed, improving readability as requested in past reviews.

.vortex/docs/content/drupal/theme-scaffold.mdx (1)

81-82: Capitalize "Docker" and clarify container scope

The phrase "docker container" should maintain consistent capitalization and be more specific about which container is referenced.

-These commands run within the docker container to use the Node.js environment
+These commands run inside the project's **Docker** container, using the Node.js environment
.vortex/docs/content/drupal/provision.mdx (2)

99-99: 🧹 Nitpick (assertive)

Fix grammar issues in database sanitization section.

Multiple grammatical improvements needed based on static analysis feedback.

-3. `VORTEX_PROVISION_SANITIZE_DB_REPLACE_USERNAME_WITH_EMAIL=0`<br/>Replace username with email. Useful to also sanitize user names.<br/><br/>
+3. `VORTEX_PROVISION_SANITIZE_DB_REPLACE_USERNAME_WITH_EMAIL=0`<br/>Replace username with email. Useful to also sanitize usernames.<br/><br/>
🧰 Tools
🪛 LanguageTool

[style] ~99-~99: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...E_DB_REPLACE_USERNAME_WITH_EMAIL=0`
Replace username with email. Useful to also san...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[uncategorized] ~99-~99: A different word order might sound more natural.
Context: ...AIL=0<br/>Replace username with email. Useful to also sanitize user names.<br/><br/> 4. VORT...

(AI_HYDRA_LEO_WORD_ORDER)


[style] ~99-~99: It’s more common nowadays to write this noun as one word.
Context: ...ame with email. Useful to also sanitize user names.

4. `VORTEX_PROVISION_SANITIZ...

(RECOMMENDED_COMPOUNDS)


105-105: 🧹 Nitpick (assertive)

Add missing comma for clarity.

A comma is needed before "such as" to improve sentence structure.

-project such as conditionally enabling modules or running migrations in a
+project, such as conditionally enabling modules or running migrations in a
🧰 Tools
🪛 LanguageTool

[uncategorized] ~105-~105: A comma might be missing here.
Context: ...omate additional tasks specific to your project such as conditionally enabling modules ...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)

.vortex/docs/content/drupal/settings.mdx (1)

92-92: Fix incorrect code block language for PHP content.

The imported PHP file is incorrectly marked as JSON, which prevents proper syntax highlighting.

-<CodeBlock language="json">{EnvironmentIndicatorModuleSettingsExample}</CodeBlock>
+<CodeBlock language="php">{EnvironmentIndicatorModuleSettingsExample}</CodeBlock>
web/sites/default/settings.php (3)

111-129: Repeated defined() guards – see prior review

The individual constant guards are still duplicated; grouping them in a loop was suggested previously.


72-74: ⚠️ Potential issue

Fallback hash-salt is predictable – use a cryptographically-secure value

Hashing the DB host produces identical salts across installs that share the same host, weakening HMAC / cookie protection.

-$settings['hash_salt'] = getenv('DRUPAL_HASH_SALT') ?: hash('sha256', $databases['default']['default']['host']);
+$settings['hash_salt'] = getenv('DRUPAL_HASH_SALT') ?: bin2hex(random_bytes(32));

79-81: ⚠️ Potential issue

maintenance_theme must live in $settings, not $config

Drupal only reads $settings['maintenance_theme']. The current line silently does nothing.

-$config['maintenance_theme'] = getenv('DRUPAL_MAINTENANCE_THEME') ?: getenv('DRUPAL_THEME') ?: 'claro';
+$settings['maintenance_theme'] = getenv('DRUPAL_MAINTENANCE_THEME') ?: getenv('DRUPAL_THEME') ?: 'claro';
tests/phpunit/Drupal/EnvironmentSettingsTest.php (3)

53-59: Comment still vague – container maps to LOCAL

Previous nitpick remains; clarify that container URLs resolve to the local tier.


342-344: Port 5432 with MySQL driver – add explanatory comment or choose a neutral port

The mismatch is intentional for override testing, but it can confuse readers. Either add a comment or use an obviously custom port such as 1234.


389-404: ⚠️ Potential issue

Custom-override assertions are overwritten – test never validates overrides

After building $settings with the custom paths you immediately reset them to the default testing constants, nullifying the purpose of the test.

-    $settings['config_exclude_modules'] = [];
-    $settings['config_sync_directory'] = static::CONFIG_PATH_TESTING;
-    ...
-    $settings['file_public_path'] = static::PUBLIC_PATH_TESTING;
-    $settings['file_private_path'] = static::PRIVATE_PATH_TESTING;
-    $settings['file_temp_path'] = static::TMP_PATH_TESTING;
+    // base settings are already asserted elsewhere;
+    // keep only override values to verify env-var precedence.

Delete the duplicated block or merge intelligently so the custom values survive.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 20fbf88 and 8781574.

⛔ Files ignored due to path filters (96)
  • .vortex/docs/static/img/diagram-dark.png is excluded by !**/*.png
  • .vortex/docs/static/img/diagram-light.png is excluded by !**/*.png
  • .vortex/docs/static/img/diagram-provision-dark.svg is excluded by !**/*.svg
  • .vortex/docs/static/img/diagram-provision-light.svg is excluded by !**/*.svg
  • .vortex/docs/static/img/installer.png is excluded by !**/*.png
  • .vortex/installer/tests/Fixtures/install/_baseline/.ahoy.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/.github/workflows/build-test-deploy.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/docker-compose.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/renovate.json is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/DatabaseSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/SettingsTestCase.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/SwitchableSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.automated_cron.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.seckit.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.shield.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.stage_file_proxy.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.sw_base.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.system.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/providers/settings.container.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/providers/settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/settings.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/themes/custom/star_wars/js/star_wars.js is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/ciprovider_circleci/.circleci/config.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/ciprovider_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/ciprovider_circleci/web/sites/default/includes/providers/-settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/ciprovider_circleci/web/sites/default/includes/providers/settings.circleci.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/db_download_source_acquia/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/db_download_source_container_registry/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/db_download_source_ftp/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/db_download_source_lagoon/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/.circleci/config.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/web/sites/default/includes/providers/-settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/web/sites/default/includes/providers/settings.circleci.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_gha/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_artifact/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_container_image/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_lagoon/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/.circleci/config.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/web/sites/default/includes/providers/-settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/web/sites/default/includes/providers/settings.circleci.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_gha/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_gha/.github/workflows/build-test-deploy.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/.circleci/config.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/web/sites/default/includes/providers/-settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/web/sites/default/includes/providers/settings.circleci.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.automated_cron.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.seckit.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.shield.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.stage_file_proxy.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.sw_base.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.system.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.acquia.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.container.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/settings.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/themes/custom/star_wars/js/star_wars.js is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/tests/phpunit/Drupal/SettingsTestCase.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.automated_cron.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.sw_base.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.system.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/providers/-settings.container.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/providers/-settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_lagoon/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_lagoon/docker-compose.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_lagoon/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_lagoon/web/sites/default/includes/providers/settings.lagoon.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/names/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/names/web/sites/default/includes/modules/-settings.sw_base.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/names/web/sites/default/includes/modules/settings.the_force_base.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/names/web/themes/custom/lightsaber/js/lightsaber.js is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/profile_minimal/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/profile_the_empire/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_database_lagoon/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_database_lagoon/docker-compose.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_database_lagoon/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_database_lagoon/web/sites/default/includes/providers/settings.lagoon.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_profile/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_profile/.github/workflows/build-test-deploy.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/services_no_clamav/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/services_no_valkey/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/services_none/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/theme_absent/.ahoy.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/theme_absent/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/theme_custom/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/theme_custom/web/themes/custom/light_saber/js/light_saber.js is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/version_replacement/baseline/docker-compose.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/version_replacement/expected/docker-compose.yml is excluded by !.vortex/installer/tests/Fixtures/**
📒 Files selected for processing (57)
  • .ahoy.yml (3 hunks)
  • .circleci/config.yml (3 hunks)
  • .env (6 hunks)
  • .github/workflows/build-test-deploy.yml (3 hunks)
  • .vortex/docs/.utils/variables/extra/.env.local.example.variables.sh (1 hunks)
  • .vortex/docs/.utils/variables/extra/.env.variables.sh (1 hunks)
  • .vortex/docs/.utils/variables/extra/ci.variables.sh (1 hunks)
  • .vortex/docs/content/README.mdx (1 hunks)
  • .vortex/docs/content/ci/README.mdx (1 hunks)
  • .vortex/docs/content/contributing/maintenance/scripts.mdx (1 hunks)
  • .vortex/docs/content/contributing/roadmap.mdx (1 hunks)
  • .vortex/docs/content/drupal/README.mdx (2 hunks)
  • .vortex/docs/content/drupal/module-scaffold.mdx (2 hunks)
  • .vortex/docs/content/drupal/provision-example.sh (1 hunks)
  • .vortex/docs/content/drupal/provision.mdx (3 hunks)
  • .vortex/docs/content/drupal/settings.mdx (3 hunks)
  • .vortex/docs/content/drupal/theme-scaffold.mdx (1 hunks)
  • .vortex/docs/content/getting-started/architecture.mdx (9 hunks)
  • .vortex/docs/content/getting-started/features.mdx (3 hunks)
  • .vortex/docs/content/getting-started/installation.mdx (2 hunks)
  • .vortex/docs/content/tools/docker.mdx (6 hunks)
  • .vortex/docs/content/tools/drush.mdx (1 hunks)
  • .vortex/docs/content/tools/rector.mdx (1 hunks)
  • .vortex/docs/content/tools/renovate.mdx (1 hunks)
  • .vortex/docs/content/workflows/notifications.mdx (1 hunks)
  • .vortex/docs/content/workflows/variables.mdx (12 hunks)
  • .vortex/docs/cspell.json (1 hunks)
  • .vortex/installer/src/Prompts/Handlers/CiProvider.php (1 hunks)
  • .vortex/installer/src/Prompts/Handlers/HostingProvider.php (3 hunks)
  • .vortex/installer/src/Prompts/Handlers/ModulePrefix.php (1 hunks)
  • .vortex/tests/bats/_helper.bash (1 hunks)
  • .vortex/tests/bats/_helper.workflow.bash (3 hunks)
  • .vortex/tests/bats/fixtures/docker-compose.env.json (7 hunks)
  • .vortex/tests/bats/fixtures/docker-compose.env_local.json (7 hunks)
  • .vortex/tests/bats/fixtures/docker-compose.env_mod.json (7 hunks)
  • .vortex/tests/bats/fixtures/docker-compose.noenv.json (7 hunks)
  • README.md (1 hunks)
  • docker-compose.yml (1 hunks)
  • renovate.json (1 hunks)
  • scripts/vortex/login.sh (1 hunks)
  • tests/phpunit/Drupal/DatabaseSettingsTest.php (1 hunks)
  • tests/phpunit/Drupal/EnvironmentSettingsTest.php (22 hunks)
  • tests/phpunit/Drupal/SettingsTestCase.php (2 hunks)
  • tests/phpunit/Drupal/SwitchableSettingsTest.php (2 hunks)
  • web/sites/default/includes/modules/settings.automated_cron.php (1 hunks)
  • web/sites/default/includes/modules/settings.seckit.php (1 hunks)
  • web/sites/default/includes/modules/settings.shield.php (1 hunks)
  • web/sites/default/includes/modules/settings.stage_file_proxy.php (1 hunks)
  • web/sites/default/includes/modules/settings.system.php (1 hunks)
  • web/sites/default/includes/modules/settings.ys_base.php (1 hunks)
  • web/sites/default/includes/providers/settings.acquia.php (1 hunks)
  • web/sites/default/includes/providers/settings.circleci.php (1 hunks)
  • web/sites/default/includes/providers/settings.container.php (1 hunks)
  • web/sites/default/includes/providers/settings.gha.php (1 hunks)
  • web/sites/default/includes/providers/settings.lagoon.php (1 hunks)
  • web/sites/default/settings.php (6 hunks)
  • web/themes/custom/your_site_theme/js/your_site_theme.js (1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (3)
.vortex/installer/src/Prompts/Handlers/ModulePrefix.php (1)
.vortex/installer/src/Utils/File.php (1)
  • File (10-120)
.vortex/installer/src/Prompts/Handlers/HostingProvider.php (1)
.vortex/installer/src/Utils/File.php (2)
  • File (10-120)
  • removeTokenAsync (93-100)
.vortex/installer/src/Prompts/Handlers/CiProvider.php (1)
.vortex/installer/src/Utils/File.php (2)
  • File (10-120)
  • removeTokenAsync (93-100)
🪛 LanguageTool
.vortex/docs/content/getting-started/installation.mdx

[misspelling] ~79-~79: Did you mean “you're” (short for ‘you are’)?
Context: ...eed to set up the integrations with CI, your hosting and other services. Please ref...

(YOUR)

.vortex/docs/content/drupal/README.mdx

[uncategorized] ~36-~36: You might be missing the article “the” here.
Context: ... | Integrates Apache Solr with Search API. ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

.vortex/docs/content/drupal/provision.mdx

[style] ~54-~54: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ... disable it at the end. Useful when you want to prevent users from accessing the site w...

(REP_WANT_TO_VB)


[style] ~99-~99: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...E_DB_REPLACE_USERNAME_WITH_EMAIL=0`
Replace username with email. Useful to also san...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[uncategorized] ~99-~99: A different word order might sound more natural.
Context: ...AIL=0<br/>Replace username with email. Useful to also sanitize user names.<br/><br/> 4. VORT...

(AI_HYDRA_LEO_WORD_ORDER)


[style] ~99-~99: It’s more common nowadays to write this noun as one word.
Context: ...ame with email. Useful to also sanitize user names.

4. `VORTEX_PROVISION_SANITIZ...

(RECOMMENDED_COMPOUNDS)


[uncategorized] ~105-~105: A comma might be missing here.
Context: ...omate additional tasks specific to your project such as conditionally enabling modules ...

(AI_EN_LECTOR_MISSING_PUNCTUATION_COMMA)

.vortex/docs/content/drupal/settings.mdx

[uncategorized] ~13-~13: A punctuation mark might be missing here.
Context: ...lop/web/sites/default/settings.php) and [services.yml](https://github.com/drevo...

(AI_EN_LECTOR_MISSING_PUNCTUATION)


[uncategorized] ~33-~33: You might be missing the article “the” here.
Context: ...as applying different settings based on runtime environment, or retrieving values from ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~123-~123: Consider using a more concise synonym.
Context: ...eping the setup consistent. To support a variety of hosting providers and container platfor...

(A_VARIETY_OF)


[grammar] ~185-~185: Nouns are not usually modified by plural nouns. Is it possible that you meant to use the singular or possessive form here?
Context: ... constants are used consistently across settings files and scripts to determine conditio...

(PLURAL_MODIFIER)


[uncategorized] ~203-~203: You might be missing the article “the” here.
Context: ...ng the setup modular and independent of hosting platform. #### Overriding environment ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

🪛 PHPStan (2.1.15)
web/sites/default/includes/providers/settings.container.php

19-19: Parameter #3 $subject of function str_replace expects array|string, string|false given.

(argument.type)

🪛 dotenv-linter (3.3.0)
.env

[warning] 35-35: [QuoteCharacter] The value has quote characters (', ")


[warning] 226-226: [QuoteCharacter] The value has quote characters (', ")

⏰ Context from checks skipped due to timeout of 90000ms (8)
  • GitHub Check: build (0)
  • GitHub Check: build (1)
  • GitHub Check: vortex-test-workflow (3)
  • GitHub Check: vortex-test-workflow (2)
  • GitHub Check: vortex-test-workflow (0)
  • GitHub Check: vortex-test-workflow (1)
  • GitHub Check: vortex-test-deployment (0)
  • GitHub Check: vortex-test-deployment (1)
🔇 Additional comments (85)
.github/workflows/build-test-deploy.yml (3)

61-63: CI timezone standardized to UTC. You've replaced Australia/Melbourne with UTC for the database job container environment. This aligns with repository-wide timezone settings and avoids time-based discrepancies.


170-173: CI timezone standardized to UTC. The build job container is now set to UTC. Consistency across CI workloads will prevent timezone-related issues.


368-372: CI timezone standardized to UTC. Updated the deploy job container timezone to UTC. Good for uniform timing in logs and scheduled runs.

.vortex/docs/content/contributing/maintenance/scripts.mdx (1)

85-87: Documentation styling: emphasize "Vortex". The added bold formatting around "Vortex" aligns with the established branding and emphasis conventions in other docs.

.vortex/docs/content/contributing/roadmap.mdx (1)

27-29: Documentation styling: emphasize "Vortex". The bold formatting on "Vortex" enhances branding consistency across documentation.

🧰 Tools
🪛 LanguageTool

[style] ~27-~27: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ... for Cypress and Drupal Test Traits. 2. Adding support for Visual Regression and Acces...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)

.vortex/docs/content/ci/README.mdx (1)

61-63: Typo fix: "If" instead of "Of". The correction improves the clarity of the fallback cache description.

.vortex/docs/.utils/variables/extra/ci.variables.sh (1)

69-73: Introduce RENOVATE_REPOSITORIES variable. Adding RENOVATE_REPOSITORIES supports self-hosted Renovate configuration. Ensure this aligns with the documented default (UNDEFINED) and usage in .vortex/docs/content/workflows/variables.mdx.

.vortex/docs/.utils/variables/extra/.env.variables.sh (1)

21-21: LGTM: Spelling standardization

Good correction to standardize on American English spelling ("sanitized" vs "sanitised").

.vortex/tests/bats/_helper.bash (1)

1354-1354: LGTM: Spelling standardization

Good correction to standardize on American English spelling ("behavior" vs "behaviour").

web/themes/custom/your_site_theme/js/your_site_theme.js (1)

3-3: LGTM: Spelling standardization

Good correction to standardize on American English spelling ("behaviors" vs "behaviours").

.vortex/docs/cspell.json (1)

40-40: LGTM: Dictionary update

Good addition of "multisite" to the spell checker dictionary as it's a legitimate Drupal technical term.

renovate.json (1)

14-14: LGTM: Standardizing to UTC timezone

This change aligns with timezone standardization across the project and follows best practices for CI/CD systems by using UTC to avoid timezone-related confusion.

web/sites/default/includes/modules/settings.seckit.php (1)

10-10: LGTM: Improved type safety with strict equality

The change from loose (==) to strict (===) equality enhances type safety and aligns with the file's strict_types=1 declaration. This ensures exact type and value matching for environment constants.

web/sites/default/includes/providers/settings.lagoon.php (1)

8-9: LGTM: Improved comment clarity

The updated comment better describes the file's purpose by using the more generic "provider environments" instead of "Lagoon environments", making it consistent with other provider files.

.vortex/docs/content/tools/docker.mdx (2)

9-9: LGTM! Documentation formatting improvements enhance brand visibility.

The consistent bolding of "Vortex" throughout the documentation improves brand emphasis and visual consistency.

Also applies to: 77-77, 93-93, 150-150


169-169: Excellent timezone standardization to UTC.

Changing the default timezone from Australia/Melbourne to UTC provides a more neutral, globally-appropriate default. This aligns with the broader timezone standardization effort across the project.

Also applies to: 178-179

web/sites/default/includes/modules/settings.ys_base.php (1)

1-13: Well-structured module settings file with proper practices.

This file demonstrates good practices:

  • Strict typing declaration
  • Proper docblock documentation
  • Strict comparison operator (===) as recommended in previous reviews
  • Clear, environment-specific configuration

The mail suspension in CI environments is appropriate for preventing accidental email sends during testing.

.vortex/docs/content/tools/renovate.mdx (1)

7-7: Consistent documentation formatting improvement.

The bolding of "Vortex" maintains consistency with similar changes across the documentation files.

docker-compose.yml (1)

44-44: Excellent timezone standardization across container environments.

Changing the default timezone to UTC provides a consistent, globally-neutral default for all containers. This aligns perfectly with the broader timezone standardization effort documented in the AI summary.

web/sites/default/includes/modules/settings.automated_cron.php (1)

1-13: Well-implemented automated cron settings with best practices.

This file demonstrates excellent practices:

  • Strict typing declaration
  • Proper file documentation
  • Strict comparison operators (===) addressing previous review feedback
  • Appropriate environment-specific logic

Disabling automated cron in local and CI environments is the correct approach, as these environments typically use external cron management.

web/sites/default/includes/providers/settings.acquia.php (1)

8-9: LGTM! Documentation improvement for consistency.

The update from "Acquia environments" to "provider environments" makes the comment more generic and aligns with the broader refactoring to standardize provider environment mapping across different hosting providers.

.vortex/docs/content/tools/rector.mdx (1)

53-53: LGTM! Consistent formatting enhancement.

Adding bold formatting to "Vortex" improves visual consistency across documentation files and provides appropriate emphasis for the project name.

web/sites/default/includes/modules/settings.stage_file_proxy.php (1)

11-11: Excellent! Improved type safety with strict comparison.

Changing from != to !== ensures both value and type are compared when checking the environment setting. This prevents potential issues with type coercion and aligns with PHP best practices for more reliable environment detection logic.

.vortex/tests/bats/fixtures/docker-compose.noenv.json (1)

37-37: LGTM! Timezone standardization to UTC.

The consistent update of timezone settings from "Australia/Melbourne" to "UTC" across all services improves standardization and aligns with the broader project effort to use UTC as the default timezone.

Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387

.vortex/tests/bats/fixtures/docker-compose.env_local.json (1)

1-465: Skipping fixture file review per user instructions.

This file is in the fixtures directory and should not be reviewed as per your guidance that fixture files are used for testing purposes and may contain intentionally incomplete or invalid data.

.vortex/docs/content/tools/drush.mdx (1)

10-11: Documentation styling improvements look good.

The consistent bolding of Vortex throughout the documentation enhances branding and readability. This aligns well with maintaining consistent documentation standards.

Also applies to: 15-16

.vortex/tests/bats/fixtures/docker-compose.env_mod.json (1)

1-465: Skipping fixture file review per user instructions.

This file is in the fixtures directory and should not be reviewed as per your guidance that fixture files are used for testing purposes and may contain intentionally incomplete or invalid data.

.vortex/tests/bats/fixtures/docker-compose.env.json (1)

1-465: Skipping fixture file review per user instructions.

This file is in the fixtures directory and should not be reviewed as per your guidance that fixture files are used for testing purposes and may contain intentionally incomplete or invalid data.

tests/phpunit/Drupal/DatabaseSettingsTest.php (1)

43-43: Good test update to reflect accurate defaults.

The change from an empty string to "3306" correctly aligns the test expectations with the actual default MySQL port, ensuring the tests accurately reflect the updated default database configuration.

web/sites/default/includes/modules/settings.shield.php (2)

24-24: Excellent use of strict equality operator!

The change from != to !== improves type safety and prevents potential type coercion issues when comparing environment constants.


28-28: Consistent use of strict equality operators!

The change from == to === maintains consistency with the strict comparison approach and ensures precise environment matching.

.vortex/docs/content/getting-started/installation.mdx (3)

7-9: Clear improvement in installation description!

Adding "into your project's codebase" makes the installation process more explicit and easier to understand.


13-13: Good addition of documentation reference!

The phrase "see relevant sections in the documentation" provides helpful guidance for users to find service-specific setup instructions.


79-79: Static analysis false positive - grammar is correct.

The LanguageTool suggestion to change "your" to "you're" is incorrect. "Your hosting" is grammatically correct in this context, referring to the user's hosting service.

🧰 Tools
🪛 LanguageTool

[misspelling] ~79-~79: Did you mean “you're” (short for ‘you are’)?
Context: ...eed to set up the integrations with CI, your hosting and other services. Please ref...

(YOUR)

.vortex/tests/bats/_helper.workflow.bash (2)

214-214: Good standardization to American English spelling!

The change from "behaviour" to "behavior" improves consistency with American English conventions used throughout the codebase.

Also applies to: 256-256


232-240: Timezone assertions correctly updated to UTC!

The changes properly align the test expectations with the global timezone standardization from Australia/Melbourne to UTC. All container assertions now consistently check for "UTC" output.

.vortex/installer/src/Prompts/Handlers/ModulePrefix.php (1)

50-50: Excellent extension of module prefix renaming!

Adding the rename operation for the sites/default/includes directory ensures consistency when module prefixes are changed. This aligns well with the modular settings structure introduced in this PR.

.ahoy.yml (2)

200-200: Excellent standardization of front-end tooling!

The migration from npm run --prefix to yarn run --cwd for both lint-fe and lint-fe-fix commands creates consistency across the front-end tooling ecosystem. This aligns with the yarn-based build system documented in the theme scaffold.

Also applies to: 223-223


286-286: Good spelling correction in comment.

Fixed the spelling from "behaviour" to "behavior" for consistency.

.vortex/docs/content/getting-started/features.mdx (1)

38-38: Well-organized documentation improvements!

The updates enhance the features documentation by:

  • Reordering local development tools for better logical flow
  • Adding Gherkin Lint as a completed tooling feature
  • Improving wording clarity for database sourcing
  • Adding recently implemented workflow features (deployment notifications and Renovate automation)

These changes accurately reflect the current project capabilities and improve documentation completeness.

Also applies to: 47-47, 58-60

web/sites/default/includes/modules/settings.system.php (1)

10-17: Approve the environment-aware system configuration.

The implementation correctly:

  • Uses environment variables with sensible defaults for cache configuration
  • Applies production-specific optimizations (CSS/JS aggregation)
  • Follows the modular settings architecture with environment constants
.circleci/config.yml (3)

51-51: Good standardization to UTC timezone.

This change aligns with the broader effort to standardize timezone settings across all environments, improving consistency and avoiding timezone-related issues in CI operations.


73-73: Appropriate replacement with explicit path.

Using the explicit path /tmp/workspace/code instead of the removed VORTEX_EXPORT_CODE_DIR variable maintains functionality while simplifying the configuration.


256-258: Useful addition of disk usage monitoring.

The du -sh command provides valuable insight into the size of the exported code directory, which can help with debugging and monitoring build artifacts.

.vortex/installer/src/Prompts/Handlers/HostingProvider.php (3)

43-43: Proper cleanup of provider-specific settings tokens.

Good addition of SETTINGS_PROVIDER_ACQUIA token removal to ensure complete cleanup when Acquia hosting is deselected, maintaining consistency with the modular provider settings approach.


48-48: Consistent token removal for Lagoon provider.

The addition of SETTINGS_PROVIDER_LAGOON token removal maintains consistency with the Acquia provider cleanup and ensures complete removal of provider-specific configuration.


63-63: Complete cleanup in dedicated removal methods.

Both removeAcquia() and removeLagoon() methods now properly clean up their respective provider settings tokens, ensuring no orphaned configuration remains after provider deselection.

Also applies to: 73-73

.vortex/docs/content/drupal/module-scaffold.mdx (4)

10-12: Improved clarity on module purpose.

The refined description better explains when and why to use the ys_base module for general-purpose functionality, making the guidance more actionable for developers.


15-16: Better naming convention guidance.

The updated recommendation to use the site machine name for theme naming provides clearer, more practical guidance for project setup.


20-21: Explicit file reference with direct link.

Adding the specific filename ys_base.deploy.php with a direct GitHub link makes it easier for developers to locate and examine the referenced file.


30-30: Enhanced user guidance with cross-references.

The improved phrasing in the tests section and the addition of a reference to the Development workflow documentation provide better navigation and context for users.

Also applies to: 32-35

.vortex/installer/src/Prompts/Handlers/CiProvider.php (2)

61-61: Complete GitHub Actions provider cleanup.

Good addition of both the provider settings file removal and the SETTINGS_PROVIDER_GHA token cleanup, ensuring no orphaned configuration remains when GitHub Actions is deselected.

Also applies to: 63-63


68-68: Consistent CircleCI provider cleanup.

The addition of settings.circleci.php file removal and SETTINGS_PROVIDER_CIRCLECI token cleanup maintains consistency with the GitHub Actions cleanup and ensures complete provider deselection.

Also applies to: 71-71

web/sites/default/includes/providers/settings.container.php (2)

3-11: Docblock Scope Clarification
Docblock clearly states not to place custom settings here and to use per-module settings. This aligns with our modular configuration approach.


13-13: Enable Strict Types
Declaring strict_types=1 is appropriate for safer type handling and consistency across PHP files.

tests/phpunit/Drupal/SwitchableSettingsTest.php (2)

185-190: Docblock Correction Verified
Updated the docblock for dataProviderEnvironmentIndicator() to accurately describe its role as a data provider for testEnvironmentIndicator().


696-701: Default Maintenance Theme Fallback Test Updated
Test now asserts 'maintenance_theme' => 'claro' when neither env var is set, matching the updated default in the settings logic.

README.md (3)

23-31: Enhance Project Overview
The expanded introduction clearly articulates Vortex’s purpose and benefits, improving clarity and aligning with updated documentation.


37-41: Clarify Maintenance Process
Detailing active maintenance and automated test verification reinforces the project’s reliability and long-term stability.


46-49: Refine Installation Description
Installer instructions are concise, user-friendly, and guide users through the setup process effectively.

.vortex/docs/.utils/variables/extra/.env.local.example.variables.sh (2)

8-11: Document Dynamic Default for Localdev URL
The added comments explain how COMPOSE_PROJECT_NAME determines the default VORTEX_LOCALDEV_URL, enhancing clarity for users.


13-13: Dynamic URL Fallback Implemented
Using parameter expansion (${COMPOSE_PROJECT_NAME:-example-site}) ensures flexible, project-specific local URLs.

.vortex/docs/content/README.mdx (2)

17-24: Improve Introduction Clarity
The rewritten introduction succinctly conveys Vortex’s value proposition for onboarding and development.


26-34: Strengthen Developer Experience Messaging
Highlighting standardized tooling and active maintenance enhances consistency across documentation.

.vortex/docs/content/drupal/README.mdx (2)

22-22: Good grammatical improvement.

Changing "You would add" to "You would need to add" better emphasizes the necessity of adding modules and themes.


24-38: Excellent table formatting and description improvements.

The table reformatting improves readability, and the refined module descriptions are more precise and consistent. The changes maintain accuracy while improving clarity.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~36-~36: You might be missing the article “the” here.
Context: ... | Integrates Apache Solr with Search API. ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

tests/phpunit/Drupal/SettingsTestCase.php (4)

48-50: Good addition of ENVIRONMENT_PROD constant.

Adding the production environment constant maintains consistency with the other environment constants.


52-55: Well-defined PUBLIC_PATH_TESTING constant.

The new constant centralizes the public path configuration for testing, improving maintainability.


72-92: Excellent addition of ALLOWED_ENV_VARS filtering.

The new constant provides controlled filtering of environment variables with clear documentation. This improves test isolation and prevents conflicts with unrelated environment variables.


163-165: Good use of constants and logical ordering.

Using the centralized constants and setting DRUPAL_PUBLIC_FILES before DRUPAL_TEMPORARY_FILES provides a logical order for file path configuration.

.vortex/docs/content/workflows/variables.mdx (4)

187-187: LGTM! Simplified variable description improves readability.

The simplified description "Drupal profile name." is more concise and clearer than the previous lengthy explanation.


327-334: LGTM! New Renovate repositories variable is well-documented.

The addition of RENOVATE_REPOSITORIES variable with clear description and format specification ("organization/repository") is helpful for users managing Renovate configurations.


353-355: LGTM! UTC timezone default is a sensible standardization.

Changing the default timezone from Australia/Melbourne to UTC provides a neutral, globally consistent default that aligns with best practices for containerized applications.


533-534: LGTM! Database-related variable descriptions are clearer.

The updated descriptions for VORTEX_DB_DIR, VORTEX_DB_DOWNLOAD_URL, and VORTEX_DB_FILE provide better clarity about their purposes in database dump storage and import processes.

Also applies to: 697-698, 757-758

.vortex/docs/content/getting-started/architecture.mdx (3)

12-16: LGTM! Excellent introductory context.

The new introductory paragraph effectively sets expectations and explains the purpose of the architecture documentation, providing valuable context for readers.


29-35: LGTM! Visual diagrams enhance understanding.

The addition of system component diagrams with dark/light mode support improves the documentation's visual appeal and helps readers understand the architecture at a glance.


238-267: LGTM! Template placeholders section adds valuable transparency.

The new section on template placeholders and conditional tokens excellently explains how Vortex maintains transparency while providing customization capabilities. This addresses the "no magic transformations" principle well.

.vortex/docs/content/drupal/theme-scaffold.mdx (2)

7-25: LGTM! Comprehensive introduction with helpful flexibility note.

The detailed introduction effectively explains the theme scaffold's purpose and the important note about project-specific preferences shows good awareness of real-world usage patterns.


27-92: LGTM! Comprehensive build system documentation.

The detailed build system section with both direct Yarn commands and Ahoy wrapper commands provides excellent guidance for developers working with the theme's build pipeline.

.vortex/docs/content/drupal/provision.mdx (2)

17-38: LGTM! Excellent rationale section clarifies value proposition.

The new rationale section effectively explains why provision.sh is needed beyond drush deploy, addressing bootstrapping, conditional logic, consistency, and extensibility concerns. This helps users understand the architectural decisions.


41-44: LGTM! Visual diagrams improve user experience.

Replacing the Mermaid text diagram with embedded images for dark/light modes enhances the documentation's visual appeal and readability.

.vortex/docs/content/drupal/settings.mdx (4)

24-64: LGTM! Excellent approach section explains the problem and solution.

The comprehensive approach section effectively explains the challenges of environment-specific Drupal configuration and how Vortex addresses them through environment detection and modular overrides. This provides valuable context for the architectural decisions.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~33-~33: You might be missing the article “the” here.
Context: ...as applying different settings based on runtime environment, or retrieving values from ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


65-85: LGTM! Clear guidelines promote best practices.

The guidelines section provides excellent direction for maintaining clean, modular settings with environment-specific configuration. The emphasis on isolation and default values is particularly valuable.


126-159: LGTM! Comprehensive environment variable tables enhance usability.

The detailed tables documenting database and general environment variables with alternatives, defaults, and purposes provide excellent reference material for developers.


160-217: LGTM! Environment type detection section is thorough and clear.

The detailed explanation of environment type detection, constants, mechanisms, and override capabilities provides excellent technical documentation that helps users understand and extend the system.

🧰 Tools
🪛 LanguageTool

[grammar] ~185-~185: Nouns are not usually modified by plural nouns. Is it possible that you meant to use the singular or possessive form here?
Context: ... constants are used consistently across settings files and scripts to determine conditio...

(PLURAL_MODIFIER)


[uncategorized] ~203-~203: You might be missing the article “the” here.
Context: ...ng the setup modular and independent of hosting platform. #### Overriding environment ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

Comment on lines +12 to 13
# Flag to unblock admin.
DRUPAL_UNBLOCK_ADMIN="${DRUPAL_UNBLOCK_ADMIN:-1}"
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

Accurate comment update
The revised comment now correctly describes that the flag only controls unblocking the admin user.

Consider adding DRUPAL_UNBLOCK_ADMIN and its description to the .env.example or relevant documentation to surface this flag to end users.

🤖 Prompt for AI Agents
In scripts/vortex/login.sh at lines 12 to 13, the comment correctly states that
the flag controls unblocking the admin user. To improve usability, add the
DRUPAL_UNBLOCK_ADMIN environment variable and its description to the
.env.example file or relevant documentation so that end users are aware of this
flag and its purpose.

@AlexSkrypnyk AlexSkrypnyk force-pushed the feature/update-documentation-june-2025 branch from 8781574 to aeabf94 Compare June 7, 2025 07:54
@github-actions github-actions bot temporarily deployed to commit June 7, 2025 07:55 Inactive
@AlexSkrypnyk AlexSkrypnyk force-pushed the feature/update-documentation-june-2025 branch from aeabf94 to 6c191a4 Compare June 7, 2025 08:07
@github-actions github-actions bot temporarily deployed to commit June 7, 2025 08:09 Inactive
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 6

🔭 Outside diff range comments (1)
.vortex/tests/bats/fixtures/docker-compose.env_local.json (1)

413-451: 🧹 Nitpick (assertive)

Add missing TZ environment variables for consistency.

The valkey and wait_dependencies services lack environment sections with "TZ": "UTC" entries. For consistency with other services in this fixture, these should be added.

Add environment blocks with TZ settings:

     "valkey": {
         "command": null,
         "entrypoint": null,
+        "environment": {
+            "TZ": "UTC"
+        },
         "image": "uselagoon/valkey-8:VERSION",
     "wait_dependencies": {
         "command": [
             "database:3306",
             "clamav:3310"
         ],
+        "environment": {
+            "TZ": "UTC"
+        },
         "depends_on": {
♻️ Duplicate comments (11)
scripts/vortex/login.sh (1)

12-13: Accurate comment update.

The revised comment correctly reflects that this flag only controls unblocking the admin user, not blocking.

The previous suggestion to add DRUPAL_UNBLOCK_ADMIN to .env.example or documentation remains valid for better discoverability.

.vortex/tests/bats/fixtures/docker-compose.noenv.json (1)

413-451: The valkey and wait_dependencies services still lack TZ environment variables.

This is the same issue identified in previous reviews - these services need "TZ": "UTC" entries added to their environment blocks for consistency with other services.

web/sites/default/includes/providers/settings.gha.php (1)

15-17: Address the CI environment detection issue.

The current logic !empty(getenv('CI')) has the same issue that was previously flagged - it could incorrectly detect CI environment if the CI variable is set to string values like "false" or "0".

Apply the previously suggested fix:

-if (!empty(getenv('CI'))) {
+if (getenv('CI') === 'true' || getenv('CI') === '1') {
  $settings['environment'] = ENVIRONMENT_CI;
}
web/sites/default/includes/modules/settings.system.php (1)

19-27: Settings duplication needs architectural review.

This file duplicates settings from settings.automated_cron.php:

  • skip_permissions_hardening (lines 21 vs automated_cron line 12)
  • system.logging error_level (lines 26 vs automated_cron line 20)

This duplication creates maintenance overhead and potential conflicts.

Consider one of these approaches:

  1. Single responsibility: Move all system-level settings here and remove from automated_cron.php
  2. Hierarchical loading: Document the intended load order and precedence rules
  3. Shared settings file: Create a common environment settings file for shared configurations

The current approach violates the DRY principle and could lead to inconsistencies.

web/sites/default/includes/providers/settings.circleci.php (1)

15-17: Consider more robust environment variable checking.

Similar to the GitHub Actions provider file, the current logic uses !empty(getenv('CI')) which could incorrectly detect CI environment if the CI variable is set to string values like "false" or "0". Consider using a more explicit check:

-if (!empty(getenv('CI'))) {
+if (getenv('CI') === 'true' || getenv('CI') === '1') {
  $settings['environment'] = ENVIRONMENT_CI;
}

This ensures consistent and reliable CI environment detection across all provider files.

web/sites/default/includes/providers/settings.container.php (1)

15-24: ⚠️ Potential issue

Ensure type safety for getenv() before using in str_replace()
PHPStan correctly warns that getenv() may return false. Assign its result to a variable, verify it's a non-empty string, then pass it to str_replace() to avoid type errors.

Apply patch:

- if (!empty(getenv('VORTEX_LOCALDEV_URL'))) {
-   $patterns = str_replace(['.', 'https://', 'http://', ','], ['\.', '', '', '|'], getenv('VORTEX_LOCALDEV_URL'));
+ $localdev_url = getenv('VORTEX_LOCALDEV_URL');
+ if (!empty($localdev_url) && is_string($localdev_url)) {
+   $patterns = str_replace(['.', 'https://', 'http://', ','], ['\.', '', '', '|'], $localdev_url);
🧰 Tools
🪛 PHPStan (2.1.15)

19-19: Parameter #3 $subject of function str_replace expects array|string, string|false given.

(argument.type)

.vortex/docs/content/drupal/provision-example.sh (1)

17-19: 🧹 Nitpick (assertive)

Add pipefail for robust error handling
Include set -o pipefail alongside set -eu to ensure failures in piped commands are detected.

Apply patch:

 set -eu
+set -o pipefail
 [ "${VORTEX_DEBUG-}" = "1" ] && set -x
web/sites/default/settings.php (2)

111-129: 🧹 Nitpick (assertive)

Repeat defined() guards are verbose – consider grouping

The six environment constants are each wrapped in identical !defined() checks.
Wrapping them in an array loop reduces seven lines to two and keeps the section terse.


72-74: ⚠️ Potential issue

Hash-salt fallback is still predictable – switch to a cryptographically-secure default

Storing hash_salt as a SHA-256 of the DB host was flagged in an earlier review yet remains unchanged.
Hosts are often identical across environments, resulting in duplicate salts and weakened cookie / session MACs.

-$settings['hash_salt'] = getenv('DRUPAL_HASH_SALT') ?: hash('sha256', $databases['default']['default']['host']);
+$settings['hash_salt'] = getenv('DRUPAL_HASH_SALT') ?: bin2hex(random_bytes(32));

Keeps env-override behaviour while providing a strong, environment-unique fallback.

tests/phpunit/Drupal/EnvironmentSettingsTest.php (2)

342-345: 🧹 Nitpick (assertive)

Port 5432 with MySQL driver – clarify or change

Using 5432 (PostgreSQL default) while the driver remains mysql confuses
readers. Either add a comment explaining the deliberate mismatch or pick an
obviously custom port like 1234.


381-405: ⚠️ Potential issue

Override block overwrites the very values the test is meant to assert

Lines 388-399 reset $settings back to the default paths after you just set
the custom values (382-387).
As a result, the expectations no longer reflect the environment-variable
overrides and the test will fail (or give a false signal if settings.php
returns the customised paths).

Remove the duplicate assignment block:

-    $settings['config_exclude_modules'] = [];
-    $settings['config_sync_directory'] = static::CONFIG_PATH_TESTING;
-    $settings['container_yamls'][0] = $this->app_root . '/' . $this->site_path . '/services.yml';
-    $settings['entity_update_batch_size'] = 50;
-    $settings['environment'] = static::ENVIRONMENT_SUT;
-    $settings['file_public_path'] = static::PUBLIC_PATH_TESTING;
-    $settings['file_private_path'] = static::PRIVATE_PATH_TESTING;
-    $settings['file_temp_path'] = static::TMP_PATH_TESTING;
-    $settings['file_scan_ignore_directories'] = [
-      'node_modules',
-      'bower_components',
-    ];
-    $settings['hash_salt'] = 'custom_hash_salt';
+    // base settings asserted in SettingsTestCase;
+    // keep only the overrides under test.
📜 Review details

Configuration used: CodeRabbit UI
Review profile: ASSERTIVE
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between aeabf94 and 6c191a4.

⛔ Files ignored due to path filters (96)
  • .vortex/docs/static/img/diagram-dark.png is excluded by !**/*.png
  • .vortex/docs/static/img/diagram-light.png is excluded by !**/*.png
  • .vortex/docs/static/img/diagram-provision-dark.svg is excluded by !**/*.svg
  • .vortex/docs/static/img/diagram-provision-light.svg is excluded by !**/*.svg
  • .vortex/docs/static/img/installer.png is excluded by !**/*.png
  • .vortex/installer/tests/Fixtures/install/_baseline/.ahoy.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/.github/workflows/build-test-deploy.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/docker-compose.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/renovate.json is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/DatabaseSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/SettingsTestCase.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/tests/phpunit/Drupal/SwitchableSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.automated_cron.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.seckit.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.shield.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.stage_file_proxy.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.sw_base.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/modules/settings.system.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/providers/settings.container.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/includes/providers/settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/sites/default/settings.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/_baseline/web/themes/custom/star_wars/js/star_wars.js is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/ciprovider_circleci/.circleci/config.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/ciprovider_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/ciprovider_circleci/web/sites/default/includes/providers/-settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/ciprovider_circleci/web/sites/default/includes/providers/settings.circleci.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/db_download_source_acquia/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/db_download_source_container_registry/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/db_download_source_ftp/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/db_download_source_lagoon/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/.circleci/config.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/web/sites/default/includes/providers/-settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_circleci/web/sites/default/includes/providers/settings.circleci.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_all_gha/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_artifact/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_container_image/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_lagoon/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/.circleci/config.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/web/sites/default/includes/providers/-settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_circleci/web/sites/default/includes/providers/settings.circleci.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_gha/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deploy_type_none_gha/.github/workflows/build-test-deploy.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/.circleci/config.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/web/sites/default/includes/providers/-settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/deps_updates_provider_ci_circleci/web/sites/default/includes/providers/settings.circleci.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.automated_cron.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.seckit.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.shield.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.stage_file_proxy.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.sw_base.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/modules/settings.system.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.acquia.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.container.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/includes/providers/settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/sites/default/settings.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/docroot/themes/custom/star_wars/js/star_wars.js is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/tests/phpunit/Drupal/SettingsTestCase.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.automated_cron.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.sw_base.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/modules/-settings.system.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/providers/-settings.container.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_acquia/web/sites/default/includes/providers/-settings.gha.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_lagoon/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_lagoon/docker-compose.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_lagoon/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/hosting_lagoon/web/sites/default/includes/providers/settings.lagoon.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/names/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/names/web/sites/default/includes/modules/-settings.sw_base.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/names/web/sites/default/includes/modules/settings.the_force_base.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/names/web/themes/custom/lightsaber/js/lightsaber.js is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/profile_minimal/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/profile_the_empire/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_database_lagoon/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_database_lagoon/docker-compose.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_database_lagoon/tests/phpunit/Drupal/EnvironmentSettingsTest.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_database_lagoon/web/sites/default/includes/providers/settings.lagoon.php is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_profile/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/provision_profile/.github/workflows/build-test-deploy.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/services_no_clamav/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/services_no_valkey/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/services_none/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/theme_absent/.ahoy.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/theme_absent/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/theme_custom/.env is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/install/theme_custom/web/themes/custom/light_saber/js/light_saber.js is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/version_replacement/baseline/docker-compose.yml is excluded by !.vortex/installer/tests/Fixtures/**
  • .vortex/installer/tests/Fixtures/version_replacement/expected/docker-compose.yml is excluded by !.vortex/installer/tests/Fixtures/**
📒 Files selected for processing (58)
  • .ahoy.yml (3 hunks)
  • .circleci/config.yml (3 hunks)
  • .env (6 hunks)
  • .github/workflows/build-test-deploy.yml (3 hunks)
  • .vortex/docs/.utils/variables/extra/.env.local.example.variables.sh (1 hunks)
  • .vortex/docs/.utils/variables/extra/.env.variables.sh (1 hunks)
  • .vortex/docs/.utils/variables/extra/ci.variables.sh (1 hunks)
  • .vortex/docs/content/README.mdx (1 hunks)
  • .vortex/docs/content/ci/README.mdx (1 hunks)
  • .vortex/docs/content/contributing/maintenance/scripts.mdx (1 hunks)
  • .vortex/docs/content/contributing/roadmap.mdx (1 hunks)
  • .vortex/docs/content/drupal/README.mdx (2 hunks)
  • .vortex/docs/content/drupal/composer.mdx (1 hunks)
  • .vortex/docs/content/drupal/module-scaffold.mdx (2 hunks)
  • .vortex/docs/content/drupal/provision-example.sh (1 hunks)
  • .vortex/docs/content/drupal/provision.mdx (3 hunks)
  • .vortex/docs/content/drupal/settings.mdx (3 hunks)
  • .vortex/docs/content/drupal/theme-scaffold.mdx (1 hunks)
  • .vortex/docs/content/getting-started/architecture.mdx (9 hunks)
  • .vortex/docs/content/getting-started/features.mdx (3 hunks)
  • .vortex/docs/content/getting-started/installation.mdx (2 hunks)
  • .vortex/docs/content/tools/docker.mdx (6 hunks)
  • .vortex/docs/content/tools/drush.mdx (1 hunks)
  • .vortex/docs/content/tools/rector.mdx (1 hunks)
  • .vortex/docs/content/tools/renovate.mdx (1 hunks)
  • .vortex/docs/content/workflows/notifications.mdx (1 hunks)
  • .vortex/docs/content/workflows/variables.mdx (12 hunks)
  • .vortex/docs/cspell.json (1 hunks)
  • .vortex/installer/src/Prompts/Handlers/CiProvider.php (1 hunks)
  • .vortex/installer/src/Prompts/Handlers/HostingProvider.php (3 hunks)
  • .vortex/installer/src/Prompts/Handlers/ModulePrefix.php (1 hunks)
  • .vortex/tests/bats/_helper.bash (1 hunks)
  • .vortex/tests/bats/_helper.workflow.bash (3 hunks)
  • .vortex/tests/bats/fixtures/docker-compose.env.json (7 hunks)
  • .vortex/tests/bats/fixtures/docker-compose.env_local.json (7 hunks)
  • .vortex/tests/bats/fixtures/docker-compose.env_mod.json (7 hunks)
  • .vortex/tests/bats/fixtures/docker-compose.noenv.json (7 hunks)
  • README.md (1 hunks)
  • docker-compose.yml (1 hunks)
  • renovate.json (1 hunks)
  • scripts/vortex/login.sh (1 hunks)
  • tests/phpunit/Drupal/DatabaseSettingsTest.php (1 hunks)
  • tests/phpunit/Drupal/EnvironmentSettingsTest.php (17 hunks)
  • tests/phpunit/Drupal/SettingsTestCase.php (2 hunks)
  • tests/phpunit/Drupal/SwitchableSettingsTest.php (1 hunks)
  • web/sites/default/includes/modules/settings.automated_cron.php (1 hunks)
  • web/sites/default/includes/modules/settings.seckit.php (1 hunks)
  • web/sites/default/includes/modules/settings.shield.php (1 hunks)
  • web/sites/default/includes/modules/settings.stage_file_proxy.php (1 hunks)
  • web/sites/default/includes/modules/settings.system.php (1 hunks)
  • web/sites/default/includes/modules/settings.ys_base.php (1 hunks)
  • web/sites/default/includes/providers/settings.acquia.php (1 hunks)
  • web/sites/default/includes/providers/settings.circleci.php (1 hunks)
  • web/sites/default/includes/providers/settings.container.php (1 hunks)
  • web/sites/default/includes/providers/settings.gha.php (1 hunks)
  • web/sites/default/includes/providers/settings.lagoon.php (1 hunks)
  • web/sites/default/settings.php (6 hunks)
  • web/themes/custom/your_site_theme/js/your_site_theme.js (1 hunks)
🧰 Additional context used
🧬 Code Graph Analysis (4)
.vortex/installer/src/Prompts/Handlers/HostingProvider.php (1)
.vortex/installer/src/Utils/File.php (2)
  • File (10-120)
  • removeTokenAsync (93-100)
.vortex/installer/src/Prompts/Handlers/ModulePrefix.php (1)
.vortex/installer/src/Utils/File.php (1)
  • File (10-120)
.vortex/installer/src/Prompts/Handlers/CiProvider.php (1)
.vortex/installer/src/Utils/File.php (2)
  • File (10-120)
  • removeTokenAsync (93-100)
tests/phpunit/Drupal/EnvironmentSettingsTest.php (2)
tests/phpunit/Drupal/SettingsTestCase.php (4)
  • assertSettings (290-296)
  • setEnvVars (153-182)
  • requireSettingsFile (221-240)
  • assertConfig (252-258)
.vortex/docs/docusaurus.config.js (1)
  • config (10-168)
🪛 LanguageTool
.vortex/docs/content/getting-started/installation.mdx

[misspelling] ~79-~79: Did you mean “you're” (short for ‘you are’)?
Context: ...eed to set up the integrations with CI, your hosting and other services. Please ref...

(YOUR)

.vortex/docs/content/drupal/provision.mdx

[uncategorized] ~50-~50: This verb may not be in the correct form. Consider using a different form for this context.
Context: ... The script will exit immediately after start. Useful in emergencies when any kind of...

(AI_EN_LECTOR_REPLACEMENT_VERB_FORM)


[style] ~54-~54: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ... disable it at the end. Useful when you want to prevent users from accessing the site w...

(REP_WANT_TO_VB)


[style] ~99-~99: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...E_DB_REPLACE_USERNAME_WITH_EMAIL=0`
Replace username with email. Useful to also san...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[uncategorized] ~99-~99: A different word order might sound more natural.
Context: ...AIL=0<br/>Replace username with email. Useful to also sanitize user names.<br/><br/> 4. VORT...

(AI_HYDRA_LEO_WORD_ORDER)


[style] ~99-~99: It’s more common nowadays to write this noun as one word.
Context: ...ame with email. Useful to also sanitize user names.

4. `VORTEX_PROVISION_SANITIZ...

(RECOMMENDED_COMPOUNDS)

.vortex/docs/content/drupal/settings.mdx

[uncategorized] ~13-~13: A punctuation mark might be missing here.
Context: ...lop/web/sites/default/settings.php) and [services.yml](https://github.com/drevo...

(AI_EN_LECTOR_MISSING_PUNCTUATION)


[uncategorized] ~33-~33: You might be missing the article “the” here.
Context: ...as applying different settings based on runtime environment, or retrieving values from ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~123-~123: Consider using a more concise synonym.
Context: ...eping the setup consistent. To support a variety of hosting providers and container platfor...

(A_VARIETY_OF)


[grammar] ~185-~185: Nouns are not usually modified by plural nouns. Is it possible that you meant to use the singular or possessive form here?
Context: ... constants are used consistently across settings files and scripts to determine conditio...

(PLURAL_MODIFIER)


[uncategorized] ~203-~203: You might be missing the article “the” here.
Context: ...ng the setup modular and independent of hosting platform. #### Overriding environment ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

🪛 PHPStan (2.1.15)
web/sites/default/includes/providers/settings.container.php

19-19: Parameter #3 $subject of function str_replace expects array|string, string|false given.

(argument.type)

⏰ Context from checks skipped due to timeout of 90000ms (12)
  • GitHub Check: build (0)
  • GitHub Check: build (1)
  • GitHub Check: vortex-test-installer (8.4)
  • GitHub Check: vortex-test-installer (8.3)
  • GitHub Check: vortex-test-installer (8.2)
  • GitHub Check: vortex-test-workflow (2)
  • GitHub Check: vortex-test-workflow (3)
  • GitHub Check: vortex-test-workflow (0)
  • GitHub Check: vortex-test-workflow (1)
  • GitHub Check: vortex-test-common
  • GitHub Check: vortex-test-deployment (1)
  • GitHub Check: vortex-test-deployment (0)
🔇 Additional comments (65)
.vortex/tests/bats/_helper.bash (1)

1354-1354: LGTM! Spelling standardization to American English.

Good consistency improvement aligning with project-wide spelling standardization.

web/themes/custom/your_site_theme/js/your_site_theme.js (1)

3-3: LGTM! Spelling standardization to American English.

Good consistency improvement aligning with project-wide spelling standardization effort.

web/sites/default/includes/providers/settings.lagoon.php (1)

8-9: LGTM! Comment clarification improves consistency.

Good improvement making the comment more generic and consistent with other provider settings files across the project.

.vortex/docs/content/contributing/maintenance/scripts.mdx (1)

85-85: LGTM! Documentation formatting improvement enhances branding.

Good consistency improvement that emphasizes the Vortex project name and aligns with similar formatting updates across the documentation.

.vortex/docs/content/ci/README.mdx (1)

61-61: Typo corrected correctly
The change from "Of default, ..." to "By default, ..." is accurate and improves clarity.

.vortex/docs/content/tools/rector.mdx (1)

53-53: Branding emphasis is consistent
Bold formatting of Vortex aligns with the rest of the docs and enhances brand consistency.

.vortex/docs/content/tools/drush.mdx (1)

10-11: Branding emphasis is consistent
Both instances of Vortex are now bolded to match the rest of the documentation.

Also applies to: 15-16

.vortex/docs/cspell.json (1)

40-40: Update dictionary entries
Adding "multisite" to the word list and removing the outdated British spelling ensures the spell checker aligns with the project terminology.

renovate.json (1)

14-14: Good standardization to UTC timezone.

This change aligns with timezone standardization across the project and follows best practices for CI/CD environments by using UTC to avoid timezone-specific issues.

.vortex/docs/.utils/variables/extra/.env.variables.sh (1)

21-21: Spelling standardization to American English.

Good change to maintain consistency in documentation by standardizing to American English spelling.

web/sites/default/includes/modules/settings.seckit.php (1)

10-10: Excellent improvement to use strict equality.

Changing from loose (==) to strict (===) equality comparison follows PHP best practices by preventing type coercion issues and improving performance. This is especially important for environment constant comparisons.

.vortex/docs/content/workflows/notifications.mdx (1)

1-9: LGTM! Documentation structure is well-organized.

The frontmatter is properly configured with sidebar label and position. The placeholder content appropriately indicates work in progress status.

.vortex/docs/content/tools/docker.mdx (2)

9-9: LGTM! Improved visual emphasis for product name.

The bold formatting for "Vortex" enhances readability and maintains consistent branding throughout the documentation.


169-180: LGTM! Timezone standardization aligns with PR objectives.

Changing the default timezone example from Australia/Melbourne to UTC standardizes the configuration across all environments and documentation, which aligns with the broader timezone standardization effort in this PR.

.github/workflows/build-test-deploy.yml (1)

62-62: LGTM! Consistent timezone standardization across CI/CD pipeline.

The timezone changes from Australia/Melbourne to UTC in all job containers (database, build, deploy) ensure consistent time handling across the entire CI/CD pipeline and align with the broader timezone standardization effort in this PR.

Also applies to: 171-171, 369-369

web/sites/default/includes/modules/settings.ys_base.php (1)

1-13: LGTM! Well-structured module settings file.

The file demonstrates excellent practices:

  • Proper strict typing declaration
  • Strict comparison operator (===) addresses previous review feedback
  • Appropriate CI environment detection and email suspension
  • Clean, focused functionality for the YOURSITE Base module
.vortex/docs/content/tools/renovate.mdx (1)

7-7: Documentation consistency improvement looks good.

Adding bold formatting to "Vortex" aligns with the broader documentation standardization effort mentioned in the AI summary.

web/sites/default/includes/modules/settings.automated_cron.php (1)

1-13: Clean implementation of environment-specific cron configuration.

The file structure follows good practices with strict typing, proper documentation, and focused functionality. The logic to disable automated cron in local and CI environments is appropriate, as external cron management is typically preferred in these environments.

Previous review concerns about settings duplication and logical grouping appear to have been addressed - this file is now focused solely on automated cron configuration.

web/sites/default/includes/providers/settings.acquia.php (1)

8-9: Comment clarification improves documentation accuracy.

Updating from "Acquia environments" to "provider environments" makes the documentation more generic and accurate, reflecting that this pattern applies broadly to provider environment handling rather than being Acquia-specific.

web/sites/default/includes/modules/settings.stage_file_proxy.php (1)

11-11: LGTM! Improved type safety with strict comparison.

The change from loose (!=) to strict (!==) comparison for environment checking is a good practice that prevents potential issues from PHP's type coercion. This ensures both value and type must differ from ENVIRONMENT_PROD.

.vortex/docs/content/drupal/composer.mdx (1)

43-43: LGTM! Improved variable naming for clarity.

The renaming from MyComponentSource to ComposerJsonSource makes the purpose of the variable much clearer and more descriptive.

Also applies to: 48-48

.vortex/tests/bats/fixtures/docker-compose.env_mod.json (1)

37-37: LGTM! Timezone standardization is consistent.

The timezone update from "Australia/Melbourne" to "UTC" across all services is properly applied and aligns with the broader standardization effort mentioned in the summary.

Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387

.vortex/tests/bats/fixtures/docker-compose.env.json (1)

37-37: LGTM! Consistent timezone standardization.

The timezone changes are uniformly applied across all services, maintaining consistency with the broader project standardization to UTC.

Also applies to: 96-96, 146-146, 203-203, 261-261, 324-324, 387-387

tests/phpunit/Drupal/DatabaseSettingsTest.php (1)

43-43: LGTM! Test consistency improvement.

Setting the default port to "3306" aligns the test expectations with the actual default port used in the main settings file, ensuring consistency between configuration and tests.

web/sites/default/includes/modules/settings.shield.php (1)

24-24: LGTM! Improved type safety with strict equality operators.

Changing from loose (!=, ==) to strict (!==, ===) equality operators is a good practice that prevents type coercion issues and ensures precise environment constant comparisons. This is especially important for security-related features like Shield where accurate environment detection is critical.

Also applies to: 28-28

.vortex/docs/content/getting-started/installation.mdx (2)

7-13: Excellent documentation improvements for clarity.

These changes significantly improve the installation instructions by:

  • Clarifying that Vortex is installed "into your project's codebase"
  • Fixing the grammatical error ("an interactive installer")
  • Providing clearer guidance to "see relevant sections in the documentation"

79-79: Service list update is appropriate.

The removal of "Docker Hub" from the manual integration setup list aligns with the streamlined integration approach. Note: The static analysis hint about "your" vs "you're" is a false positive - "your hosting" is correctly possessive here.

🧰 Tools
🪛 LanguageTool

[misspelling] ~79-~79: Did you mean “you're” (short for ‘you are’)?
Context: ...eed to set up the integrations with CI, your hosting and other services. Please ref...

(YOUR)

.ahoy.yml (2)

200-200: Excellent standardization on yarn package manager.

The migration from npm run --prefix to yarn run --cwd for both lint-fe and lint-fe-fix commands addresses the inconsistency that was previously flagged. This aligns with the broader yarn standardization mentioned in the theme scaffold documentation.

Also applies to: 223-223


214-214: Good spelling standardization to American English.

The correction from "behaviour" to "behavior" maintains consistency with American English conventions used throughout the codebase.

Also applies to: 286-286

.vortex/tests/bats/_helper.workflow.bash (2)

232-240: Excellent timezone standardization to UTC.

The update from TZ="Australia/Melbourne" to TZ=UTC with corresponding assertion updates from "AE" to "UTC" provides a more neutral default timezone for the project template. This addresses the previous review comment about outdated timezone references and aligns with the broader timezone standardization across the project.


214-214: Good spelling standardization to American English.

The correction from "behaviour" to "behavior" maintains consistency with American English conventions used throughout the codebase.

Also applies to: 256-256

.vortex/installer/src/Prompts/Handlers/ModulePrefix.php (1)

50-50: Good extension of directory renaming logic.

The addition of File::renameInDir() for the sites/default/includes path logically extends the existing module renaming functionality. This maintains consistency with the existing pattern and supports the new modular settings structure mentioned in the AI summary.

web/sites/default/includes/providers/settings.gha.php (1)

1-17: Well-structured provider settings file with clear documentation.

The file structure, documentation, and purpose are excellent. The strict typing and clear docblock about file usage restrictions align well with the modular settings approach.

.vortex/docs/content/getting-started/features.mdx (1)

38-38: LGTM! Documentation updates accurately reflect feature enhancements.

The reordering of development tools, addition of Gherkin Lint as completed tooling, refined database sourcing description, and addition of deployment notifications and Renovate as completed workflow features are all appropriate documentation updates that align with the actual feature implementations mentioned in the PR summary.

Also applies to: 47-47, 58-60

web/sites/default/includes/modules/settings.system.php (1)

1-11: Well-structured environment-driven configuration.

The file properly implements strict typing, clear documentation, and environment variable-driven configuration with sensible fallback values. The cache page max age configuration is particularly well-implemented.

web/sites/default/includes/providers/settings.circleci.php (1)

1-14: Well-documented provider-specific settings file.

The file structure, documentation, and separation of concerns are excellent. The clear docblock explaining the file's purpose and advising against custom settings placement is particularly helpful for maintainability.

.vortex/docs/.utils/variables/extra/ci.variables.sh (1)

69-72: LGTM! Well-documented Renovate configuration variable.

The addition of RENOVATE_REPOSITORIES with clear documentation follows the established pattern and aligns with the Renovate integration features documented elsewhere in the PR.

.circleci/config.yml (3)

51-51: LGTM: Timezone standardization to UTC

Good change to standardize the timezone to UTC across CI environments. This eliminates timezone-related confusion and makes build logs more predictable.


256-258: LGTM: Improved export step with disk usage reporting

The changes properly align with the variable removal and the addition of du -sh provides helpful debugging information for monitoring build artifact sizes.


73-73:

✅ Verification successful

Verify consistency of hardcoded path replacement

The environment variable VORTEX_EXPORT_CODE_DIR has been replaced with the hardcoded path /tmp/workspace/code. Ensure this change is consistent with the removal mentioned in the summary and that all references to this variable have been updated.


🏁 Script executed:

#!/bin/bash
# Verify that VORTEX_EXPORT_CODE_DIR has been completely removed from the codebase
rg "VORTEX_EXPORT_CODE_DIR" --type yaml --type sh --type php

Length of output: 60


Confirm removal of VORTEX_EXPORT_CODE_DIR
A repo-wide search for VORTEX_EXPORT_CODE_DIR returned no matches, indicating the variable has been fully removed. The hardcoded path in .circleci/config.yml (line 73) is therefore consistent.

.vortex/installer/src/Prompts/Handlers/HostingProvider.php (2)

43-43: LGTM: Added provider settings token cleanup

Good addition to remove the new provider-specific settings tokens (!SETTINGS_PROVIDER_ACQUIA, !SETTINGS_PROVIDER_LAGOON) alongside the existing hosting tokens. This ensures complete cleanup when providers are selected.

Also applies to: 48-48


63-63: LGTM: Consistent token cleanup in removal methods

The token removal is properly implemented in both removeAcquia() and removeLagoon() methods, maintaining consistency with the main process() method changes.

Also applies to: 73-73

.vortex/docs/content/drupal/module-scaffold.mdx (4)

10-12: LGTM: Improved module purpose description

The refined description better clarifies the intended use of the ys_base module for general-purpose functionality that doesn't warrant a dedicated feature-specific module.


15-16: LGTM: Clarified theme naming recommendation

The updated guidance to use the site machine name for theme naming is more specific and actionable than the previous wording.


20-21: LGTM: More explicit deploy file reference

Making the filename explicit (ys_base.deploy.php) and providing a direct source link improves the documentation's usefulness.


32-35: LGTM: Added helpful cross-reference

The addition of a reference to the Development workflow documentation provides readers with a clear path to learn more about working with custom modules.

.vortex/installer/src/Prompts/Handlers/CiProvider.php (2)

61-61: LGTM: Added provider settings file cleanup

Good addition to remove the provider-specific settings files (settings.gha.php, settings.circleci.php) when CI providers are deselected. This ensures complete cleanup of provider-related configuration files.

Also applies to: 68-68


63-63: LGTM: Consistent token removal for CI providers

The token removal for SETTINGS_PROVIDER_GHA and SETTINGS_PROVIDER_CIRCLECI is properly implemented alongside the file removal, maintaining consistency with the pattern established in the HostingProvider class.

Also applies to: 71-71

README.md (1)

23-31: Documentation updated for clarity
The expanded introduction clearly outlines Vortex’s purpose and features. The tone and structure align well with the rest of the README.

.vortex/docs/.utils/variables/extra/.env.local.example.variables.sh (1)

8-13: Use dynamic default for VORTEX_LOCALDEV_URL
The new default value derived from COMPOSE_PROJECT_NAME improves consistency in local environments. Comments are clear and informative.

.vortex/docs/content/README.mdx (1)

17-25: Formalize project introduction
The rewritten introduction is concise and mirrors the main README’s improvements. Links and formatting render correctly in MDX.

tests/phpunit/Drupal/SwitchableSettingsTest.php (1)

185-185: LGTM: Accurate docblock correction.

The docblock now correctly describes the method as a data provider for testEnvironmentIndicator().

.env (2)

35-35: LGTM: Standardized timezone to UTC.

Setting the default timezone to UTC is a best practice that avoids timezone-related issues across different deployment environments.


4-10: LGTM: Improved documentation clarity.

The comment updates enhance clarity and provide better guidance for developers. The refinements to database section descriptions, notification channel explanations, and general usage instructions make the configuration more maintainable.

Also applies to: 15-16, 86-86, 102-102, 108-108, 134-134, 138-138, 140-154, 161-161, 167-167, 220-220, 223-235

.vortex/docs/content/drupal/README.mdx (3)

22-22: LGTM: Improved language precision.

Changing "would add" to "would need to add" better emphasizes the necessity of adding modules and themes for a complete setup.


13-13: LGTM: Simplified module scaffold description.

Removing "with tests scaffold" simplifies the description while maintaining accuracy.


24-38: LGTM: Enhanced module table clarity.

The table formatting improvements and refined module descriptions provide better clarity. Notable improvements include:

  • More precise descriptions (e.g., Shield module: "Restricts access" vs "Protects")
  • Better environment examples (adding "Stage")
  • Cleaner formatting for readability
tests/phpunit/Drupal/SettingsTestCase.php (3)

52-55: LGTM: Added missing path constants.

The new PUBLIC_PATH_TESTING and TMP_PATH_TESTING constants provide consistency with the existing private and config path constants.

Also applies to: 62-66


72-92: LGTM: Centralized environment variable filtering.

The ALLOWED_ENV_VARS constant provides a clean solution for filtering environment variables during test setup. The comprehensive documentation explains the purpose and extensibility for consumer sites.


163-168: LGTM: Improved environment variable management.

The reordering of environment variable assignments and use of the new filtering mechanism enhances test isolation and consistency.

.vortex/docs/content/workflows/variables.mdx (1)

1-1891: Approve documentation updates
The clarifications for DRUPAL_PROFILE, addition of RENOVATE_REPOSITORIES, timezone default change to UTC, expanded descriptions for VORTEX_DB_DIR and VORTEX_DB_DOWNLOAD_URL, and improved handling of VORTEX_LOCALDEV_URL all read clearly and align with the corresponding config changes.

🧰 Tools
🪛 LanguageTool

[grammar] ~7-~7: Did you mean “configuring”? Or maybe you should add a pronoun? In active voice, ‘allow’ + ‘to’ takes an object, usually a pronoun.
Context: ... Variables Environment variables allow to configure workflows. ## Override order (bottom v...

(ALLOW_TO)


[grammar] ~12-~12: This phrase is duplicated. You should probably use “value in” only once.
Context: ...in container taken from image - default value in docker-compose.yml - value in .env (last value wins) - value in `.e...

(PHRASE_REPETITION)


[uncategorized] ~51-~51: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...SET` Local database charset. Variable is not used in hosting environment. Defau...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[uncategorized] ~61-~61: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...N` Local database collation. Variable is not used in hosting environment. Defau...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[uncategorized] ~79-~79: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...E_HOST` Local database host. Variable is not used in hosting environment. Defau...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[uncategorized] ~89-~89: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...E_NAME` Local database name. Variable is not used in hosting environment. Defau...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[uncategorized] ~99-~99: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...RD` Local database password. Variable is not used in hosting environment. Defau...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[uncategorized] ~109-~109: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...E_PORT` Local database port. Variable is not used in hosting environment. Defau...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[uncategorized] ~119-~119: This verb does not appear to agree with the subject. Consider using a different form.
Context: ...ERNAME` Local database user. Variable is not used in hosting environment. Defau...

(AI_EN_LECTOR_REPLACEMENT_VERB_AGREEMENT)


[uncategorized] ~127-~127: You might be missing the article “the” here.
Context: ...al admin email. May need to be reset if database was sanitized. Default value: `webmast...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~277-~277: To form a complete sentence, be sure to include a subject.
Context: ... LAGOON_PROJECT Lagoon project name. May be different from [$VORTEX_PROJECT](#...

(MISSING_IT_THERE)


[uncategorized] ~285-~285: You might be missing the article “the” here.
Context: ...NEWRELIC_ENABLED Enable New Relic in Lagoon environment. Set as project-wide varia...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[uncategorized] ~313-~313: Possible missing preposition found.
Context: ...ether to allow self-hosted Renovate bot make changes to the repository. Default val...

(AI_HYDRA_LEO_MISSING_TO)


[grammar] ~337-~337: ‘a’ may be redundant when used with the uncountable noun ‘permission’.
Context: ...t token.
Create a GitHub token with a permission to write to a repository. Default valu...

(A_UNCOUNTABLE_NOUN)


[misspelling] ~345-~345: This word is normally spelled as one.
Context: ...ial variable to remap target env to the sub-domain prefix based on UI name. Default value...

(EN_COMPOUNDS_SUB_DOMAIN)


[uncategorized] ~441-~441: The official spelling of this programming framework is “Node.js”.
Context: ..._CI_NODEJS_LINT_IGNORE_FAILURE Ignore NodeJS linters failures. Default value:UNDE...

(NODE_JS)


[uncategorized] ~507-~507: Possible missing comma found.
Context: ...tainer registry name. Provide port, if required as <server_name>:<port>. Default val...

(AI_HYDRA_LEO_MISSING_COMMA)


[misspelling] ~623-~623: Did you mean the phrasal verb “clean up” instead of the noun ‘cleanup’?
Context: ...TE_FILE_CLEANUP` Wildcard file name to cleanup previously created dump files. Cleanup...

(CLEAN_UP)


[typographical] ~795-~795: Do not use a colon (:) before a series that is introduced by a preposition (‘of’). Remove the colon or add a noun or a noun phrase after the preposition.
Context: ... Deployment action. Values can be one of: deploy, deploy_override_db, destroy. - ...

(RP_COLON)


[style] ~814-~814: To form a complete sentence, be sure to include a subject or ‘there’.
Context: ..._DST_BRANCH` Remote repository branch. Can be a specific branch or a token.
@s...

(MISSING_IT_THERE)


[uncategorized] ~880-~880: Possible missing comma found.
Context: ...tainer registry name. Provide port, if required as <server_name>:<port>. Default val...

(AI_HYDRA_LEO_MISSING_COMMA)


[typographical] ~954-~954: Do not use a colon (:) before a series that is introduced by a preposition (‘of’). Remove the colon or add a noun or a noun phrase after the preposition.
Context: ...E Deployment mode. Values can be one of: branch, tag. Default value:branch` ...

(RP_COLON)


[uncategorized] ~1094-~1094: Possible missing comma found.
Context: ...tainer registry name. Provide port, if required as <server_name>:<port>. Default val...

(AI_HYDRA_LEO_MISSING_COMMA)


[style] ~1276-~1276: To form a complete sentence, be sure to include a subject.
Context: ...TIFY_EVENT` The event to notify about. Can be 'pre_deployment' or 'post_deployment...

(MISSING_IT_THERE)


[uncategorized] ~1486-~1486: The preposition “in” seems more likely in this position.
Context: ...WEBHOOK_PAYLOAD Webhook message body as json format. Default value:${VORTEX...

(AI_EN_LECTOR_REPLACEMENT_PREPOSITION)


[uncategorized] ~1494-~1494: This verb may not be in the correct form. Consider using a different form for this context.
Context: ...E_STATUS The pattern of response code return by curl. Default value:200` Defined...

(AI_EN_LECTOR_REPLACEMENT_VERB_FORM)


[uncategorized] ~1520-~1520: You might be missing the article “the” here.
Context: ...SKIP Skip Drupal site provisioning in Acquia environment. Default value:UNDEFINED...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[uncategorized] ~1582-~1582: You might be missing the article “a” here.
Context: ...ation. Useful when email
is used as username. Default value: UNDEFINED Defined i...

(AI_EN_LECTOR_MISSING_DETERMINER_A)


[uncategorized] ~1664-~1664: A punctuation mark might be missing here.
Context: ...key from prefixes environment variables: - VORTEX_[${VORTEX_SSH_PREFIX}](#vortex_...

(AI_EN_LECTOR_MISSING_PUNCTUATION)


[uncategorized] ~1723-~1723: You might be missing the article “the” here.
Context: ...eval retries. If this limit reached and task has not
yet finished, the task is c...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[uncategorized] ~1763-~1763: You might be missing the article “the” here.
Context: ...eval retries. If this limit reached and task has not
yet finished, the task is c...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[uncategorized] ~1859-~1859: You might be missing the article “the” here.
Context: ...eval retries. If this limit reached and task has not
yet finished, the task is c...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

.vortex/docs/content/getting-started/architecture.mdx (1)

1-181: Approve architecture doc enhancements
The new intro, Zen principles, system‐components diagram, repository structure updates (including renaming stage, adding recipes and .gitignore.artifact), and the POSIX-compliant formatting fix are coherent and improve clarity.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~40-~40: You might be missing the article “the” here.
Context: ...om/drupal-composer/drupal-project) with addition of several configuration files and dire...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~146-~146: Consider replacing this phrase with the adverb “consistently” to avoid wordiness.
Context: ...ipt that is used to provision a website in a consistent way, allowing to alter the flow using [envi...

(IN_A_X_MANNER)


[uncategorized] ~150-~150: Do not mix variants of the same word (‘centralize’ and ‘centralise’) within a single text.
Context: ...via custom scripts. The scripts aim to centralize workflows instead of adjusting them for...

(EN_WORD_COHERENCY)


[uncategorized] ~153-~153: You might be missing the article “the” here.
Context: ...hat a developer updating a workflow for local environment, for example, will not acci...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

.vortex/docs/content/drupal/theme-scaffold.mdx (1)

1-139: Approve theme scaffold revisions
The expanded introduction, detailed build-system breakdown, note on customization, and container-consistency guidance are well structured and match the tooling changes (npmyarn).

.vortex/docs/content/drupal/provision.mdx (1)

1-157: Approve provisioning doc overhaul
The added rationale section, updated flow diagrams, reworked environment-variable list, clearer sanitization guidance, and examples for custom scripts and conditionals significantly improve usability.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~50-~50: This verb may not be in the correct form. Consider using a different form for this context.
Context: ... The script will exit immediately after start. Useful in emergencies when any kind of...

(AI_EN_LECTOR_REPLACEMENT_VERB_FORM)


[style] ~54-~54: You have already used this phrasing in nearby sentences. Consider replacing it to add variety to your writing.
Context: ... disable it at the end. Useful when you want to prevent users from accessing the site w...

(REP_WANT_TO_VB)


[style] ~99-~99: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...E_DB_REPLACE_USERNAME_WITH_EMAIL=0`
Replace username with email. Useful to also san...

(ENGLISH_WORD_REPEAT_BEGINNING_RULE)


[uncategorized] ~99-~99: A different word order might sound more natural.
Context: ...AIL=0<br/>Replace username with email. Useful to also sanitize user names.<br/><br/> 4. VORT...

(AI_HYDRA_LEO_WORD_ORDER)


[style] ~99-~99: It’s more common nowadays to write this noun as one word.
Context: ...ame with email. Useful to also sanitize user names.

4. `VORTEX_PROVISION_SANITIZ...

(RECOMMENDED_COMPOUNDS)

.vortex/docs/content/drupal/settings.mdx (1)

1-292: Approve settings documentation update
The new approach explanation, per-module override guidelines, environment-detection details, and testing instructions comprehensively reflect the corresponding code refactor and test coverage enhancements.

🧰 Tools
🪛 LanguageTool

[uncategorized] ~13-~13: A punctuation mark might be missing here.
Context: ...lop/web/sites/default/settings.php) and [services.yml](https://github.com/drevo...

(AI_EN_LECTOR_MISSING_PUNCTUATION)


[uncategorized] ~33-~33: You might be missing the article “the” here.
Context: ...as applying different settings based on runtime environment, or retrieving values from ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)


[style] ~123-~123: Consider using a more concise synonym.
Context: ...eping the setup consistent. To support a variety of hosting providers and container platfor...

(A_VARIETY_OF)


[grammar] ~185-~185: Nouns are not usually modified by plural nouns. Is it possible that you meant to use the singular or possessive form here?
Context: ... constants are used consistently across settings files and scripts to determine conditio...

(PLURAL_MODIFIER)


[uncategorized] ~203-~203: You might be missing the article “the” here.
Context: ...ng the setup modular and independent of hosting platform. #### Overriding environment ...

(AI_EN_LECTOR_MISSING_DETERMINER_THE)

2. Adding support for Cypress and Drupal Test Traits.
2. Adding support for Visual Regression and Accessibility tools.
3. Introduction of the Vortex Dashboard as a single place for managing projects.
3. Introduction of the **Vortex** Dashboard as a single place for managing projects.
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

Fix list numbering consistency
The Future goals list has two items numbered "2." before your new "3." entry, which can be confusing. Please update the second item to "3." or switch to auto-numbered lists for consistency.

🤖 Prompt for AI Agents
In .vortex/docs/content/contributing/roadmap.mdx at line 28, the numbered list
for Future goals has duplicate "2." entries before the new "3." item, causing
inconsistency. Fix this by renumbering the second "2." item to "3." and updating
subsequent numbers accordingly, or convert the list to use markdown
auto-numbering by using "1." for all items to maintain consistent and correct
numbering.

#;> HOSTING_LAGOON
x-environment: &default-environment
TZ: ${TZ:-Australia/Melbourne}
TZ: ${TZ:-UTC}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Verification agent

🧩 Analysis chain

Timezone standardization to UTC is a good practice.

Standardizing to UTC eliminates timezone-related issues across different deployment environments and simplifies debugging. This change aligns with container best practices.

Verify that all timezone configurations across the project have been consistently updated:


🏁 Script executed:

#!/bin/bash
# Description: Check for any remaining hardcoded timezone references
# Expected: Should find minimal or no references to Australia/Melbourne

echo "=== Checking for Australia/Melbourne references ==="
rg "Australia/Melbourne" --type-not=md

echo "=== Checking timezone configurations across key files ==="
rg "TZ.*=" .env docker-compose.yml .circleci/config.yml 2>/dev/null || echo "Some files not found"

echo "=== Checking for other timezone patterns ==="
rg "timezone|TZ" --type yaml --type env -A 2 -B 2

Length of output: 624


Fix remaining hardcoded timezone in tests

A search shows one leftover reference to “Australia/Melbourne” in the PHPUnit tests. Please update it to UTC to fully standardize across the project.

• tests/phpunit/Drupal/EnvironmentSettingsTest.php

- 'DRUPAL_TIMEZONE' => 'Australia/Melbourne',
+ 'DRUPAL_TIMEZONE' => 'UTC',
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
TZ: ${TZ:-UTC}
// tests/phpunit/Drupal/EnvironmentSettingsTest.php
return [
- 'DRUPAL_TIMEZONE' => 'Australia/Melbourne',
+ 'DRUPAL_TIMEZONE' => 'UTC',
];
🤖 Prompt for AI Agents
In docker-compose.yml at line 44, the timezone environment variable TZ is set to
UTC, which is good. However, there is a remaining hardcoded timezone reference
to "Australia/Melbourne" in the PHPUnit tests file
tests/phpunit/Drupal/EnvironmentSettingsTest.php. To fully standardize timezone
usage across the project, locate this reference in the test file and update it
to "UTC". This ensures consistent timezone configuration and avoids
environment-specific issues.

# - provision-20-example.sh
# - provision-30-example.sh
#
# shellcheck disable=SC2086
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

Narrow down shellcheck suppression
Instead of disabling SC2086 globally, consider removing the directive or limiting it to specific lines where unquoted expansions are necessary.

🤖 Prompt for AI Agents
In .vortex/docs/content/drupal/provision-example.sh at line 15, the shellcheck
directive disables SC2086 globally. To improve code quality, remove this global
suppression and instead apply the shellcheck disable directive only on specific
lines where unquoted expansions are intentionally used and necessary.

note "Environment: ${environment}"

# 👇 Perform operations based on the current environment.
if echo "${environment}" | grep -q -e dev -e stage -e ci -e local; then
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

Simplify environment matching
Replace echo|grep with a case statement for improved readability and efficiency.

Example:

case "${environment}" in
  dev|stage|ci|local)
    note "Running example operations in non-production environment."
    ;;
  *)
    note "Skipping example operations in production environment."
    ;;
esac
🤖 Prompt for AI Agents
In .vortex/docs/content/drupal/provision-example.sh at line 35, replace the
current environment check using echo and grep with a case statement to improve
readability and efficiency. Use a case block to match the environment variable
against dev, stage, ci, and local, and handle the matching and non-matching
cases accordingly, removing the echo and grep usage entirely.

Comment on lines +30 to +32
# 👇 Get the current environment from Drupal settings.
environment="$(drush php:eval "print \Drupal\core\Site\Settings::get('environment');")"
note "Environment: ${environment}"
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

Handle failures when retrieving Drupal environment
If drush php:eval fails (e.g., Drupal not bootstrapped), the script will exit due to set -e. Consider capturing the exit code, logging a warning, and providing a default environment.

Example:

if ! environment="$(drush php:eval "...")"; then
  note "Warning: Could not detect environment; defaulting to 'local'."
  environment="local"
fi
note "Environment: ${environment}"
🤖 Prompt for AI Agents
In .vortex/docs/content/drupal/provision-example.sh around lines 30 to 32, the
script currently runs `drush php:eval` to get the Drupal environment but does
not handle failures, causing the script to exit if the command fails. Modify the
script to capture the exit status of the `drush php:eval` command using an if
statement; if it fails, log a warning message and set the environment variable
to a default value like "local". Then continue to log the environment as usual.

Comment on lines +75 to +78
// Timezone settings.
ini_set('date.timezone', getenv('DRUPAL_TIMEZONE') ?: getenv('TZ') ?: 'UTC');
date_default_timezone_set(getenv('DRUPAL_TIMEZONE') ?: getenv('TZ') ?: 'UTC');

Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick (assertive)

Minor: single-source the timezone string to avoid double getenv look-ups

getenv('DRUPAL_TIMEZONE') ?: getenv('TZ') ?: 'UTC' is evaluated twice.
Assign once, reuse:

-$settings_tz = getenv('DRUPAL_TIMEZONE') ?: getenv('TZ') ?: 'UTC';
-ini_set('date.timezone', $settings_tz);
-date_default_timezone_set($settings_tz);

Purely cosmetic but removes duplication.

Committable suggestion skipped: line range outside the PR's diff.

🤖 Prompt for AI Agents
In web/sites/default/settings.php around lines 75 to 78, the timezone string is
retrieved twice using getenv calls, causing redundant lookups. Fix this by
assigning the result of getenv('DRUPAL_TIMEZONE') ?: getenv('TZ') ?: 'UTC' to a
variable once, then use that variable in both ini_set and
date_default_timezone_set calls to avoid duplication.

@AlexSkrypnyk AlexSkrypnyk merged commit b811084 into develop Jun 7, 2025
30 checks passed
@AlexSkrypnyk AlexSkrypnyk deleted the feature/update-documentation-june-2025 branch June 7, 2025 08:27
@github-project-automation github-project-automation bot moved this from BACKLOG to Release queue in Vortex Jun 7, 2025
@AlexSkrypnyk AlexSkrypnyk moved this from Release queue to Released in 25.6.0 in Vortex Jul 26, 2025
@coderabbitai coderabbitai bot mentioned this pull request Dec 4, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Released in 25.6.0

Development

Successfully merging this pull request may close these issues.

2 participants