Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR updates MageForge’s QA/tooling setup (Mago + PHPCS + Trunk/GitHub Actions) and applies broad formatting/consistency changes across frontend JS/CSS, PHP, docs, and local DDEV workflows.
Changes:
- Add/standardise PHP QA tooling via Composer dev dependencies (Mago + Magento coding standard), plus new PHPCS ruleset and CI workflows.
- Rework local dev installation to mount the repository read-only into Magento and install MageForge via Composer path repository (removing the legacy “install module deps” helper).
- Apply Prettier/Mago-style formatting and small refactors across toolbar/inspector JS and various PHP services/commands.
Reviewed changes
Copilot reviewed 75 out of 80 changed files in this pull request and generated 2 comments.
Show a summary per file
| File | Description |
|---|---|
| src/view/frontend/web/js/toolbar/audits/unsafe-blank-target.js | Formatting/quoting standardisation for audit implementation |
| src/view/frontend/web/js/toolbar/audits/tab-order.js | Formatting + readability updates to tab-order overlay audit |
| src/view/frontend/web/js/toolbar/audits/small-touch-targets.js | Formatting/quoting standardisation for audit implementation |
| src/view/frontend/web/js/toolbar/audits/multiple-h1.js | Formatting/quoting standardisation for audit implementation |
| src/view/frontend/web/js/toolbar/audits/low-contrast-text.js | Formatting/quoting standardisation for audit implementation |
| src/view/frontend/web/js/toolbar/audits/inputs-without-label.js | Formatting/quoting standardisation for audit implementation |
| src/view/frontend/web/js/toolbar/audits/index.js | Formatting + consistent quoting for audit registry |
| src/view/frontend/web/js/toolbar/audits/images-without-lazy-load.js | Formatting/quoting standardisation for audit implementation |
| src/view/frontend/web/js/toolbar/audits/images-without-dimensions.js | Formatting/quoting standardisation for audit implementation |
| src/view/frontend/web/js/toolbar/audits/images-without-alt.js | Formatting + minor readability improvements |
| src/view/frontend/web/js/toolbar/audits/highlight.js | Formatting + minor refactor of shared overlay logic |
| src/view/frontend/web/js/toolbar/audits/empty-interactive.js | Formatting/quoting standardisation for audit implementation |
| src/view/frontend/web/js/toolbar/audits/duplicate-ids.js | Formatting + consistent quoting |
| src/view/frontend/web/js/toolbar/audits/buttons-without-type.js | Formatting/quoting standardisation for audit implementation |
| src/view/frontend/web/js/toolbar/audits.js | Formatting + minor audit dispatcher refactor readability |
| src/view/frontend/web/js/toolbar.js | Formatting + consistent Alpine registration style |
| src/view/frontend/web/js/inspector/vitals.js | Formatting for vitals observers + cache timings logic |
| src/view/frontend/web/js/inspector/tabs.js | Formatting + readability improvements in tab rendering |
| src/view/frontend/web/js/inspector/picker.js | Formatting + readability improvements in picker lifecycle |
| src/view/frontend/web/js/inspector/draggable.js | Formatting + readability improvements in draggable logic |
| src/view/frontend/web/js/inspector/dom.js | Formatting + readability improvements in DOM helpers |
| src/view/frontend/web/js/inspector/accessibility.js | Formatting + readability improvements in a11y analysis |
| src/view/frontend/web/js/inspector.js | Formatting + consistent module import/registration style |
| src/view/frontend/web/css/audits/tab-order.css | Formatting-only changes for audit CSS |
| src/view/frontend/templates/inspector.phtml | Add strict_types + formatting in Alpine bootstrap snippet |
| src/view/adminhtml/web/css/styles.css | Formatting-only CSS updates |
| src/Service/ThemeBuilder/TailwindCSS/Builder.php | Minor formatting + static closure for Process output |
| src/Service/ThemeBuilder/HyvaThemes/Builder.php | Minor formatting + static closure for Process output |
| src/Service/SymlinkCleaner.php | Use explicit octal literal notation for symlink mode mask |
| src/Service/Inspector/Cache/BlockCacheCollector.php | Union type order normalisation |
| src/Service/Hyva/ModuleScanner.php | Minor formatting in conditionals |
| src/Model/ThemePath.php | Return statement formatting |
| src/Model/ThemeList.php | Minor whitespace/formatting |
| src/Model/TemplateEngine/Plugin/InspectorHints.php | Trailing comma formatting in method call |
| src/Model/TemplateEngine/Decorator/InspectorHintsFactory.php | Minor whitespace/formatting |
| src/Model/TemplateEngine/Decorator/InspectorHints.php | Static callback + string helper modernisation (starts_with/contains) |
| src/Model/Config/Source/ToolbarPosition.php | Array formatting alignment |
| src/Console/Command/Theme/WatchCommand.php | Use static closures; format prompt filtering |
| src/Console/Command/Theme/TokensCommand.php | Use static closures + octal perms literal update |
| src/Console/Command/Theme/CleanCommand.php | Use static closures; format prompt filtering |
| src/Console/Command/Theme/BuildCommand.php | Use static closures; format prompt filtering |
| src/Console/Command/System/CheckCommand.php | Formatting + strict in_array + arithmetic readability |
| src/Console/Command/Dev/InspectorCommand.php | Trailing comma formatting |
| src/Console/Command/AbstractCommand.php | Use static closure in filter callback |
| src/Block/Inspector.php | Formatting + one-line getValue call |
| README.md | Table/heading formatting + inspector section formatting |
| phpcs.xml.dist | New PHPCS ruleset (Magento2 base + exclusions) |
| mago.toml | Configure PHP version + linter rule toggles + source paths |
| docs/development.md | Update dev workflow docs for new mount + Composer install approach |
| docs/custom_theme_builders.md | Markdown code-fence language/spacing formatting |
| docs/commands_reference.md | Markdown formatting + escaping for Magento_* |
| CONTRIBUTING.md | Markdown formatting + add explicit lint/format commands |
| composer.json | Add dev QA tools + scripts + repository/config setup |
| .trunk/trunk.yaml | Add checkov scope for .ddev + comments |
| .trunk/configs/.markdownlint.yaml | Allow repeated sibling headings (MD024 config) |
| .gitignore | Ignore vendor/ and composer.lock for dev tooling |
| .github/workflows/phpcs.yml | Switch to Composer-installed dev deps + caching |
| .github/workflows/magento-compatibility.yml | YAML formatting/quoting adjustments in matrix |
| .github/workflows/lint.yml | New CI workflow for Mago + Trunk checks |
| .github/workflows/label.yml | Permissions + YAML indentation/formatting fixes |
| .github/workflows/functional-tests.yml | YAML quoting normalisation |
| .github/labeler.yml | YAML formatting changes for labeler rules |
| .github/ISSUE_TEMPLATE/feature_request.md | YAML quoting/empty fields formatting |
| .github/ISSUE_TEMPLATE/bug_report.md | YAML quoting + markdown list spacing |
| .github/copilot-instructions.md | Markdown code-fence language/formatting |
| .gitattributes | Export-ignore updates for new tooling files |
| .editorconfig | New EditorConfig aligning indent with Prettier + shell tabs |
| .ddev/docker-compose.mageforge-source.yaml | Switch to read-only repo mount + anonymous volume shadowing |
| .ddev/config.yaml | Update mount pre-start hook; remove legacy module-deps hook |
| .ddev/commands/web/phpstan | Adjust target path assumptions for Composer-installed module |
| .ddev/commands/web/phpcs | Simplify to module-root composer tools + ruleset |
| .ddev/commands/web/phpcbf | Simplify to module-root composer tools + ruleset |
| .ddev/commands/web/mago | Run Mago from vendor/bin with composer install fallback |
| .ddev/commands/web/install-magento | Install module via Composer path repo; avoid recursing into mounted source |
| .ddev/commands/web/install-module-deps | Removed legacy dependency installer script |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This pull request introduces several improvements to developer tooling, CI workflows, and project consistency. The main focus is on simplifying and standardizing PHP code quality tools, improving automation, and enforcing consistent formatting across the codebase. Additionally, there are minor updates for formatting, configuration, and documentation.
Developer Tooling and Automation:
.ddev/commands/web/phpcs,.ddev/commands/web/phpcbf, and.ddev/commands/web/magoto use the module's ownvendor/binexecutables for PHP linting, formatting, and code standards, ensuring consistent local and CI behavior and simplifying dependency management. These scripts now auto-install dev dependencies if missing and use the project ruleset. ([[1]](https://github.com/OpenForgeProject/mageforge/pull/200/files#diff-083a19736f077c260db6df372eaf368bd4de04d947b924f1a222379e66b5a5beL3-R19),[[2]](https://github.com/OpenForgeProject/mageforge/pull/200/files#diff-eab535c49d32661d08e9c37dd5d8886719be8c2d3816024e8100be19197dedc8L3-R19),[[3]](https://github.com/OpenForgeProject/mageforge/pull/200/files#diff-c9c3058f72da615364e4ad5fd09cbadb08dcbcf7058c032bbeae58062fc57386L3-R19)).ddev/commands/web/phpstanto default to analyzing the module source via the Composer path repository, streamlining the target path logic. ([.ddev/commands/web/phpstanL28-R35](https://github.com/OpenForgeProject/mageforge/pull/200/files#diff-5ad29139442714d924b649b678a51b25f152332fa7e42e02f0f541a859e67a99L28-R35))Continuous Integration Improvements:
.github/workflows/lint.ymlworkflow to run Mago (PHP lint/format check) and Trunk (YAML, markdown, shell, actions, etc.) checks on PRs and pushes tomain. ([.github/workflows/lint.ymlR1-R54](https://github.com/OpenForgeProject/mageforge/pull/200/files#diff-107e910e9f2ebfb9a741fa10b2aa7100cc1fc4f5f3aca2dfe78b905cbd73c0d2R1-R54)).github/workflows/phpcs.ymlto use the module's own coding standard dependencies and configuration, aligning CI with local development. Composer caching was also introduced for faster builds. ([.github/workflows/phpcs.ymlL25-R39](https://github.com/OpenForgeProject/mageforge/pull/200/files#diff-f621c7ec73ae73c758a64d5f030f2062fc73f50676d953035650636c052aac3fL25-R39))[[1]](https://github.com/OpenForgeProject/mageforge/pull/200/files#diff-7b831cbf8f27dd7daf6ac7b252f87382fc9d2342099845a08c0fc95a33670357L59-R59),[[2]](https://github.com/OpenForgeProject/mageforge/pull/200/files#diff-10c0cd6a4f95e78dd4975968a27901c644f6e36a8a75147e3fb86d08e1c1831bR11-L13),[[3]](https://github.com/OpenForgeProject/mageforge/pull/200/files#diff-e4d2e5901ca4112dba62fc88b0d80176fe856ba318e15b75a55b13cb6ae9a9ccL21-R29))Formatting and Configuration Consistency:
.editorconfigto enforce consistent indentation, line endings, and charset across all files, with overrides for scripts and Prettier-formatted files. ([.editorconfigR1-R24](https://github.com/OpenForgeProject/mageforge/pull/200/files#diff-0947e2727d6bad8cd0ac4122f5314bb5b04e337393075bc4b5ef143b17fcbd5bR1-R24)).gitattributesto exclude config and dev files (like.editorconfig,phpcs.xml.dist) from export. ([.gitattributesR9-R10](https://github.com/OpenForgeProject/mageforge/pull/200/files#diff-618cd5b83d62060ba3d027e314a21ceaf75d36067ff820db126642944145393eR9-R10)).trunk/configs/.markdownlint.yamland enabled Checkov for.ddevin.trunk/trunk.yaml. ([[1]](https://github.com/OpenForgeProject/mageforge/pull/200/files#diff-c368d6cfd53c8b155ff2fbd4dec9dfd521cb1226ebd4266731fb0ac4c7908dc6R3-R6),[[2]](https://github.com/OpenForgeProject/mageforge/pull/200/files#diff-45a5a35dd7ad9a52d0fd3540f6c0d16a763575de51cc9a0a6c6f6a9f1da62ecdR24-R28))Minor Documentation and Template Updates:
[[1]](https://github.com/OpenForgeProject/mageforge/pull/200/files#diff-185833cb26d7ac66a4d39042fd576a820c2c2c6d05ad18973bb9c7dce77267c5L4-R14),[[2]](https://github.com/OpenForgeProject/mageforge/pull/200/files#diff-185833cb26d7ac66a4d39042fd576a820c2c2c6d05ad18973bb9c7dce77267c5R25),[[3]](https://github.com/OpenForgeProject/mageforge/pull/200/files#diff-148870715557a13127284f8aeaa28002ed6b034268af13c5d030ab59fd078220L4-R6),[[4]](https://github.com/OpenForgeProject/mageforge/pull/200/files#diff-227c2c26cb2ee0ce0f46a320fc48fbcbdf21801a57f59161b1d0861e8aad55f5L5-R5),[[5]](https://github.com/OpenForgeProject/mageforge/pull/200/files#diff-227c2c26cb2ee0ce0f46a320fc48fbcbdf21801a57f59161b1d0861e8aad55f5L108-R108),[[6]](https://github.com/OpenForgeProject/mageforge/pull/200/files#diff-227c2c26cb2ee0ce0f46a320fc48fbcbdf21801a57f59161b1d0861e8aad55f5L139-R139),[[7]](https://github.com/OpenForgeProject/mageforge/pull/200/files#diff-a22c263686553013feaeb0677d26eeb0b8778a756c4311c1fce13384258026aaL3-R27))[[1]](https://github.com/OpenForgeProject/mageforge/pull/200/files#diff-06572a96a58dc510037d5efa622f9bec8519bc1beab13c9f251e97e657a9d4edL11-R11),[[2]](https://github.com/OpenForgeProject/mageforge/pull/200/files#diff-c519b65dce7786530663b2dd61eef086c0b48eaef0d9c7b30b81dbbf7e70eefeL48-L52),[[3]](https://github.com/OpenForgeProject/mageforge/pull/200/files#diff-c519b65dce7786530663b2dd61eef086c0b48eaef0d9c7b30b81dbbf7e70eefeL130-R131))These changes collectively improve developer experience, ensure consistency between local and CI environments, and enhance the maintainability of the codebase.