❌

Normal view

Received — 14 October 2026 ⏭ Drupal - Open Source Content Platform | #Celebr8D8

Do you plan to test Drupal 12 with CKEditor? The 2.0 betas of both CKEditor modules are out

Do you plan to test Drupal 12 with CKEditor? The 2.0 betas of both CKEditor modules are out

Remark: I work at CKEditor as a Developer Advocate 🥑

Drupal 12 is in beta since DrupalCon Rotterdam, and today both official CKEditor contrib modules got their matching 2.0.0-beta1 releases:

What to know before you try them:

  • 2.x requires Drupal 12 and is not compatible with Drupal 10 or 11. The 1.x line stays for Drupal 10.3+ and 11.
  • Both modules have to be upgraded together with core, in one Composer operation:

``` composer require \ 'drupal/core-recommended:12.0@beta' \ 'drupal/core-composer-scaffold:12.0@beta' \ 'drupal/core-project-message:12.0@beta' \ 'drupal/ckeditor5_plugin_pack:2.0@beta' \ --no-update

composer update --with-all-dependencies ```

  • Already on Drupal 12 without the modules? Then just composer require 'drupal/ckeditor5_premium_features:^2.0@beta' 'drupal/ckeditor5_plugin_pack:^2.0@beta'.
  • Both betas switch to the CKEditor 5 UMD installation method that Drupal 12 uses. Premium Features also adds a collapsible AI container, AI Chat context configuration, configurable heading levels in the document outline, clipboard mode for collaboration, and Arabic-Indic numbering for footnotes.

I tried to kick this off a bit during DrupalCon Rotterdam, the slides give the high-level idea of the 1.x vs 2.x split: CKEditor in Drupal: News in Content Editing

Are the release notes clear? If anything in the upgrade path is confusing or breaks on your Drupal 12 test site, say it here and I will pass it on to the module maintainers.

submitted by /u/OndrejCh
[link] [comments]
Received — 4 September 2026 ⏭ Drupal - Open Source Content Platform | #Celebr8D8

What's the best practice for setting up Drupal CMS purely from the command line/CLI? Here's my flow - it is OK-ish?

I'm building a reproducible Drupal CMS 2.1 (Drupal 11) demo/starter/showcase project and I want the whole setup to live in the CLI and in git, no UI clicking. This is my current flow and I'd like to know where it diverges from best practice.

I work as a developer advocate for CKEditor and I need the boilerplate for my showcases/demos/workshops/...

Initial scaffold:

```sh ddev config --project-type=drupal11 --docroot=web ddev start ddev composer create-project drupal/cms # Initial installing of the packages mostly CKEditor pack + premium features, but it does not matter that much ``` 

Day-to-day setup (fresh clone):

This is mostly when I need to have a PR deployment/preview build/feature branch for specific event/or something similar.

I plan to use Render to have the PR-based deployments.

```sh ddev start ddev composer install ddev drush site:install --existing-config -y \ --account-name=admin --account-pass=admin ddev drush php:script scripts/import-demo-content.php ```sh 

Conventions I started with:

  • ddev is optional, anything else is fine, I just saw it being used as kinda base
  • All config changes go through drush config:export and get committed to config/sync, so site:install --existing-config rebuilds the exact site.
  • Repeatable setup steps (text formats, module wiring) live as drush php:script files in scripts/, not as one-off UI actions.
  • Demo content ships as a recipe (recipes/<name>/content YAML) and is imported with core's DefaultContent at build time, instead of committing a database dump. (I plan to use sqllite for these demos for simplicity).
  • Secrets and endpoints come only from env vars read in settings.php, the file itself is committed.

Where it hurts/"not sure about" parts

  1. drush site:install --existing-config crashes in the installer's configure-form step ("Field user_picture is unknown") after config import already succeeded. A fresh bootstrap of the same DB is fine, so it looks like a stale field-map cache inside the installer process. I currently tolerate the exit code and finish the installer work (user 1, site name) via drush. Anyone hit this / know the issue number?
  2. drupal/core-recipe-unpack removes recipes from composer.lock after unpacking, so composer install can't restore them and I have to commit the recipes directory. Is committing unpacked recipes the intended workflow?
  3. Keeping license keys out of config/sync: I inject all CKEditor Premium Features credentials (license key, and for the self-hosted stack the websocket + API URLs) as runtime $config overrides from env vars in settings.php. Nothing is ever saved through the module's settings form, so config/sync stays secret-free. It works, but the admin form at /admin/config/ckeditor5-premium-features/settings renders completely empty, because Drupal forms only show stored config, not overrides. So the site is fully configured and the form says otherwise. Worse, if someone "helpfully" fills it in, those values get saved to the DB and either shadowed by the overrides or accidentally exported later. Is there an established pattern here: Key module support, a config_exclude approach, or modules showing an "overridden by settings.php" hint on the form? Or is an empty-but-overridden form just the accepted price of env-driven config?

How do you find it? Would you change something? Anything completely wrong?

submitted by /u/OndrejCh
[link] [comments]
❌