Issue #3591147: Provide config sync toggle for code components

Adds canvas.settings:code_components.sync_mode controlling how code components flow through config sync.

  • preserve_production (default): import copies DB-only canvas.js_component.* and canvas.component.* (source=js) into the sync buffer so production-created components aren't deleted. Sync entries still win for tracked components. Export unchanged.
  • cli: import + export both strip every canvas.js_component.* and js-sourced canvas.component.*. Canvas CLI is the sole source of truth.

Implemented as a STORAGE_TRANSFORM_IMPORT/EXPORT subscriber (CodeComponentSyncTransformer), mirroring ComponentTreeConfigEntityTransformer. Settings form at /admin/config/canvas/settings. Kernel + functional tests included.

Out of scope: per-component granularity, Features-like reverter UI, validation step, content templates (separate follow-up).

AI-Generated: Yes (Used Claude Code to generate the code).

Closes #3591147

Merge request reports

Loading