Thank you for contributing to CKEditor 5 Editor Bundle.
This project follows the Contributor Covenant Code of Conduct. By participating, you are expected to uphold it. Please report unacceptable behavior to hectorfranco@nowo.tech.
- Check existing issues.
- Open a new issue with steps to reproduce, expected vs actual behaviour, and versions (
composer info nowo-tech/ckeditor5-editor-bundle,php -v, Symfony version).
Open an issue describing the use case, expected behaviour, and optional implementation ideas.
- Fork and clone the repository.
- Install PHP dependencies:
composer install(or Docker:make up). - Build frontend assets when touching TS:
make assetsorpnpm install && pnpm run build. - Run quality checks:
make release-checkor at minimumcomposer qa,composer phpstan,composer test, andpnpm run test:coveragewhen TS changes. PHPStan includesnowo-tech/phpstan-frankenphpclassic + worker rulesets (phpstan.neon.dist); keep findings green before claiming FrankenPHP worker friendliness. - Update
docs/CHANGELOG.mdunder[Unreleased]for user-visible changes. - Open a pull request against
mainusing.github/PULL_REQUEST_TEMPLATE.md.
src/— Bundle code (DI extension, form type, Twig extension, compiler passes).src/Resources/— Twig themes, translations, Vite sources, publishedpublic/JS.tests/— PHPUnit (Unit,Integration).demo/— FrankenPHP demo:symfony8(Symfony 8.1, port 8021); not shipped in the Composer package.
CI runs PHPUnit on PHP 8.2–8.5 × Symfony 7.0 / 7.4 / 8.0 / 8.1 (Symfony 8.x jobs use PHP ≥8.4).
- PHP: PSR-12 via PHP-CS-Fixer (
composer cs-check/composer cs-fix). - PHPDoc and comments in English.
- TypeScript: strict settings where used; English JSDoc for shared helpers.
Open a support issue from the issue templates or use repository Discussions if enabled.
Do not add Co-authored-by: Cursor or cursoragent@cursor.com trailers to commit messages.
make setup-hooks
make check-no-cursor-coauthormake setup-hooks installs .githooks/commit-msg (or sets core.hooksPath to .githooks). Run it once per clone before your first commit.
If CI fails because trailers are already on the remote, see GITHUB_CI.md (REQ-GIT-001) and run make strip-cursor-coauthor-from-history before git push --force-with-lease.