Rebuilding preview: 682fa8d4e6348478b3b48ba1 (mr1063)682fa8d6e6348478b3b4947f# sh -c mkdir -p $(dirname /var/lib/tugboat)682fa8d6e6348478b3b4947f# git clone git@git.drupal.org:project/experience_builder.git /var/lib/tugboatCloning into '/var/lib/tugboat'...
Warning: Permanently added 'git.drupal.org' (ED25519) to the list of known hosts.
682fa8d6e6348478b3b4947f# bash -c git -C /var/lib/tugboat remote show origin && git -C /var/lib/tugboat remote set-url origin git@git.drupal.org:project/experience_builder.git || git -C /var/lib/tugboat remote add origin git@git.drupal.org:project/experience_builder.git* remote origin
Fetch URL: git@git.drupal.org:project/experience_builder.git
Push URL: git@git.drupal.org:project/experience_builder.git
HEAD branch: 0.x
Remote branches:
0.x tracked
canvas tracked
cypress_starter tracked
easyblocks_backend tracked
eb-form-sandbox tracked
eb-ui-sandbox tracked
exp-canvas tracked
experience_builder-3452489-3452489-aliases-restruct tracked
experience_builder_default_design_system tracked
hotfix-0.2.1-alpha10 tracked
poc-codemirror tracked
poc_reactrouter tracked
poc_xb_ui tracked
prettier tracked
research__component_export_poc tracked
research__data_model tracked
research__design_versions tracked
research_sdb_config tracked
setup-module-vite tracked
Local branch configured for 'git pull':
0.x merges with remote 0.x
Local ref configured for 'git push':
0.x pushes to 0.x (up to date)
682fa8d6e6348478b3b4947f# git -C /var/lib/tugboat fetch --no-recurse-submodules origin 0.xFrom git.drupal.org:project/experience_builder
* branch 0.x -> FETCH_HEAD
682fa8d6e6348478b3b4947f# git -C /var/lib/tugboat checkout origin/0.xNote: switching to 'origin/0.x'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by switching back to a branch.
If you want to create a new branch to retain commits you create, you may
do so (now or later) by using -c with the switch command. Example:
git switch -c <new-branch-name>
Or undo this operation with:
git switch -
Turn off this advice by setting config variable advice.detachedHead to false
HEAD is now at c5f17c17 Issue #3519891 by phenaproxima, wim leers, f.mazeikis, isholgueras, lauriii: Constrain slot names allowed by XB in Components (and in its component tree)
682fa8d6e6348478b3b4947f# git -C /var/lib/tugboat pull --no-edit --rebase=false git@git.drupal.org:issue/experience_builder-3525565.git 3525565-personalization-pocFrom git.drupal.org:issue/experience_builder-3525565
* branch 3525565-personalization-poc -> FETCH_HEAD
Auto-merging docs/data-model.md
Auto-merging src/Controller/ClientServerConversionTrait.php
Auto-merging src/Entity/Component.php
Merge made by the 'ort' strategy.
docs/components.md | 1 +
docs/data-model.md | 2 +
experience_builder.services.yml | 6 +
modules/xb_personalization/src/Entity/Segment.php | 12 +
.../src/Entity/SegmentInterface.php | 2 +
.../src/Plugin/Condition/UtmParameters.php | 4 +
.../xb_personalization_demo/assets/halloween.png | Bin 0 -> 423504 bytes
.../xb_personalization_demo/assets/motorbike.png | Bin 0 -> 2335997 bytes
.../install/xb_personalization.segment.default.yml | 7 +
.../xb_personalization.segment.halloween.yml | 16 ++
.../xb_personalization_demo.info.yml | 8 +
.../xb_personalization_demo.install | 109 ++++++++
src/Attribute/ComponentSource.php | 2 +
.../ComponentSourceWithSwitchCasesInterface.php | 21 ++
src/ContextProvider/XbPersonalizationContext.php | 69 +++++
src/Controller/ClientServerConversionTrait.php | 16 +-
src/Element/RenderSafeComponentContainer.php | 1 +
src/Entity/Component.php | 1 +
src/Hook/ComponentSourceHooks.php | 2 +
.../ComponentSource/BlockComponent.php | 1 +
.../PersonalizationWrapperComponent.php | 308 +++++++++++++++++++++
.../FieldFormatter/NaiveComponentTreeFormatter.php | 10 +-
.../Field/FieldType/ComponentTreeItemList.php | 68 ++++-
ui/src/app/store.ts | 3 +
ui/src/components/list/ListItem.tsx | 4 +-
.../components/personalization/VariationInfo.tsx | 78 ++++++
ui/src/components/sidePanel/SidebarNode.tsx | 2 +
ui/src/components/topbar/Topbar.tsx | 2 +
ui/src/features/layout/layers/ComponentLayer.tsx | 38 ++-
ui/src/features/layout/layers/LayersDropZone.tsx | 5 +-
ui/src/features/layout/layers/SlotLayer.tsx | 7 +-
ui/src/features/layout/layoutModelSlice.ts | 28 +-
ui/src/features/layout/layoutUtils.ts | 97 +++++--
.../layout/preview/ComponentContextMenu.tsx | 4 +-
.../layout/preview/ComponentContextMenuRegions.tsx | 6 +-
ui/src/features/layout/preview/NameTag.module.css | 5 +
ui/src/features/layout/preview/NameTag.tsx | 1 +
.../layout/previewOverlay/ComponentDropZone.tsx | 6 +-
.../layout/previewOverlay/ComponentOverlay.tsx | 22 +-
.../layout/previewOverlay/EmptySlotDropZone.tsx | 7 +-
.../features/layout/previewOverlay/SlotOverlay.tsx | 11 +-
.../features/personalization/variationDataSlice.ts | 27 ++
ui/src/hooks/useCopyPasteComponents.ts | 4 +-
ui/src/hooks/useGetComponentName.ts | 22 +-
ui/src/services/personalization.ts | 26 ++
ui/src/types/Segment.ts | 5 +
46 files changed, 1002 insertions(+), 74 deletions(-)
create mode 100644 modules/xb_personalization_demo/assets/halloween.png
create mode 100644 modules/xb_personalization_demo/assets/motorbike.png
create mode 100644 modules/xb_personalization_demo/config/install/xb_personalization.segment.default.yml
create mode 100644 modules/xb_personalization_demo/config/install/xb_personalization.segment.halloween.yml
create mode 100644 modules/xb_personalization_demo/xb_personalization_demo.info.yml
create mode 100644 modules/xb_personalization_demo/xb_personalization_demo.install
create mode 100644 src/ComponentSource/ComponentSourceWithSwitchCasesInterface.php
create mode 100644 src/ContextProvider/XbPersonalizationContext.php
create mode 100644 src/Plugin/ExperienceBuilder/ComponentSource/PersonalizationWrapperComponent.php
create mode 100644 ui/src/components/personalization/VariationInfo.tsx
create mode 100644 ui/src/features/personalization/variationDataSlice.ts
create mode 100644 ui/src/services/personalization.ts
create mode 100644 ui/src/types/Segment.ts
Running INIT commandsRunning UPDATE commands682fa8d6e6348478b3b4947f# /bin/sh -c curl -fsSL https://deb.nodesource.com/setup_$(cat $TUGBOAT_ROOT/ui/.nvmrc).x -o nodesource_setup.sh682fa8d6e6348478b3b4947f# /bin/sh -c bash nodesource_setup.sh[38;5;79m2025-06-04 16:19:50 - Installing pre-requisites[0m
Hit:1 http://deb.debian.org/debian bookworm InRelease
Get:2 http://deb.debian.org/debian bookworm-updates InRelease [55.4 kB]
Get:3 http://deb.debian.org/debian-security bookworm-security InRelease [48.0 kB]
Get:4 http://deb.debian.org/debian-security bookworm-security/main amd64 Packages [265 kB]
Fetched 368 kB in 0s (1,153 kB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
apt-transport-https is already the newest version (2.6.1).
ca-certificates is already the newest version (20230311).
curl is already the newest version (7.88.1-10+deb12u12).
gnupg is already the newest version (2.2.40-1.1).
0 upgraded, 0 newly installed, 0 to remove and 53 not upgraded.
Hit:1 http://deb.debian.org/debian bookworm InRelease
Hit:2 http://deb.debian.org/debian bookworm-updates InRelease
Hit:3 http://deb.debian.org/debian-security bookworm-security InRelease
Get:4 https://deb.nodesource.com/node_20.x nodistro InRelease [12.1 kB]
Get:5 https://deb.nodesource.com/node_20.x nodistro/main amd64 Packages [11.5 kB]
Fetched 23.7 kB in 0s (66.7 kB/s)
Reading package lists...
[1;34m2025-06-04 16:19:54 - Repository configured successfully.[0m
[38;5;79m2025-06-04 16:19:54 - To install Node.js, run: apt-get install nodejs -y[0m
[38;5;79m2025-06-04 16:19:54 - You can use N|solid Runtime as a node.js alternative[0m
[1;32m2025-06-04 16:19:54 - To install N|solid Runtime, run: apt-get install nsolid -y
[0m
682fa8d6e6348478b3b4947f# /bin/sh -c apt-get install -y nodejsReading package lists...
Building dependency tree...
Reading state information...
The following NEW packages will be installed:
nodejs
0 upgraded, 1 newly installed, 0 to remove and 53 not upgraded.
Need to get 32.0 MB of archives.
After this operation, 199 MB of additional disk space will be used.
Get:1 https://deb.nodesource.com/node_20.x nodistro/main amd64 nodejs amd64 20.19.2-1nodesource1 [32.0 MB]
debconf: delaying package configuration, since apt-utils is not installed
Fetched 32.0 MB in 1s (60.2 MB/s)
Selecting previously unselected package nodejs.
(Reading database ...
(Reading database ... 5%
(Reading database ... 10%
(Reading database ... 15%
(Reading database ... 20%
(Reading database ... 25%
(Reading database ... 30%
(Reading database ... 35%
(Reading database ... 40%
(Reading database ... 45%
(Reading database ... 50%
(Reading database ... 55%
(Reading database ... 60%
(Reading database ... 65%
(Reading database ... 70%
(Reading database ... 75%
(Reading database ... 80%
(Reading database ... 85%
(Reading database ... 90%
(Reading database ... 95%
(Reading database ... 100%
(Reading database ... 27078 files and directories currently installed.)
Preparing to unpack .../nodejs_20.19.2-1nodesource1_amd64.deb ...
Unpacking nodejs (20.19.2-1nodesource1) ...
Setting up nodejs (20.19.2-1nodesource1) ...
Processing triggers for runit (2.1.2-54) ...
682fa8d6e6348478b3b4947f# /bin/sh -c set -eux
# This is an environment variable we added in the Dockerfile that
# provides the path to Drupal composer root (not the web root).
cd $DRUPAL_COMPOSER_ROOT
# Configure composer to require this module as a symlink.
composer config minimum-stability dev
composer config repositories.tugboat path $TUGBOAT_ROOT
composer require \
drupal/experience_builder \
drupal/demo_design_system \
drupal/components
# Install Drupal on the site.
rm -f $DRUPAL_DOCROOT/sites/default/settings.php
php -d memory_limit=-1 \
vendor/bin/drush.php \
--yes \
--db-url=mysql://tugboat:tugboat@mysql:3306/tugboat \
--site-name="Live preview for ${TUGBOAT_PREVIEW_NAME}" \
--account-pass=admin \
site:install standard
# Require settings.local.php increase CLI memory limit, add trusted
# host patterns, and allow for enabling hidden xb_dev_standard module.
echo "require_once '$TUGBOAT_ROOT/.tugboat/settings.local.php';" >> $DOCROOT/sites/default/settings.php
# Set up the files directory permissions.
mkdir -p $DRUPAL_DOCROOT/sites/default/files
chgrp -R www-data $DRUPAL_DOCROOT/sites/default/files
chmod 2775 $DRUPAL_DOCROOT/sites/default/files
chmod -R g+w $DRUPAL_DOCROOT/sites/default/files
# Enable the module.
vendor/bin/drush --yes pm:install \
experience_builder \
xb_dev_standard \
media_library \
components
# Enable starshot_demo theme.
vendor/bin/drush --yes theme:enable starshot_demo
vendor/bin/drush --yes config:set system.theme default starshot_demo
# Create node/1
vendor/bin/drush scr $TUGBOAT_ROOT/.tugboat/create-article-node.php
+ cd /var/www/drupal
+ composer config minimum-stability dev
+ composer config repositories.tugboat path /var/lib/tugboat
+ composer require drupal/experience_builder drupal/demo_design_system drupal/components
./composer.json has been updated
Running composer update drupal/experience_builder drupal/demo_design_system drupal/components
Loading composer repositories with package information
Updating dependencies
Lock file operations: 4 installs, 0 updates, 0 removals
- Locking drupal/components (3.1.0)
- Locking drupal/demo_design_system (1.0.1)
- Locking drupal/experience_builder (dev-main)
- Locking justinrainbow/json-schema (5.3.0)
Writing lock file
Installing dependencies from lock file (including require-dev)
Package operations: 4 installs, 0 updates, 0 removals
- Downloading drupal/components (3.1.0)
- Downloading drupal/demo_design_system (1.0.1)
- Downloading justinrainbow/json-schema (5.3.0)
0/3 [>---------------------------] 0%
1/3 [=========>------------------] 33%
2/3 [==================>---------] 66%
3/3 [============================] 100%
- Installing drupal/components (3.1.0): Extracting archive
- Installing drupal/demo_design_system (1.0.1): Extracting archive
- Installing justinrainbow/json-schema (5.3.0): Extracting archive
- Installing drupal/experience_builder (dev-main): Symlinking from /var/lib/tugboat
0/3 [>---------------------------] 0%
3/3 [============================] 100%
2 package suggestions were added by new dependencies, use `composer suggest` to see details.
Generating autoload files
43 packages you are using are looking for funding.
Use the `composer fund` command to find out more!
No security vulnerability advisories found.
Using version dev-main for drupal/experience_builder
Using version ^1.0 for drupal/demo_design_system
Using version ^3.1 for drupal/components
+ rm -f /var/www/drupal/web/sites/default/settings.php
+ php -d memory_limit=-1 vendor/bin/drush.php --yes --db-url=mysql://tugboat:tugboat@mysql:3306/tugboat --site-name=Live preview for 3525565-personalization-poc --account-pass=admin site:install standard
You are about to:
* Create a sites/default/settings.php file
* DROP all tables in your 'tugboat' database.
// Do you want to continue?: yes.
[notice] Starting Drupal installation. This takes a while.
[notice] Performed install task: install_select_language
[notice] Performed install task: install_select_profile
[notice] Performed install task: install_load_profile
[notice] Performed install task: install_verify_requirements
[notice] Performed install task: install_settings_form
[notice] Performed install task: install_verify_database_ready
[notice] Performed install task: install_base_system
[notice] Performed install task: install_bootstrap_full
[notice] Performed install task: install_profile_modules
[notice] Performed install task: install_profile_themes
[notice] Performed install task: install_install_profile
[notice] Performed install task: install_configure_form
[notice] Performed install task: install_finished
[success] Installation complete.
+ echo require_once '/var/lib/tugboat/.tugboat/settings.local.php';
+ mkdir -p /var/www/drupal/web/sites/default/files
+ chgrp -R www-data /var/www/drupal/web/sites/default/files
+ chmod 2775 /var/www/drupal/web/sites/default/files
+ chmod -R g+w /var/www/drupal/web/sites/default/files
+ vendor/bin/drush --yes pm:install experience_builder xb_dev_standard media_library components
The following module(s) will be installed: experience_builder, xb_dev_standard, media_library, components, media
// Do you want to continue?: yes.
[success] Module experience_builder has been installed. (Permissions - Configure)
[success] Module xb_dev_standard has been installed.
[success] Module media_library has been installed. (Configure)
[success] Module components has been installed.
[success] Module media has been installed. (Permissions - Configure)
+ vendor/bin/drush --yes theme:enable starshot_demo
In ThemeInstaller.php line 93:
Unable to install theme: 'starshot_demo' due to unmet module dependencies:
'default_content'.
Command Failed (Tugboat Error 1064): Exit code: 1; Command: set -eux
# This is an environment variable we added in the Dockerfile that
# provides the path to Drupal composer root (not the web root).
cd $DRUPAL_COMPOSER_ROOT
# Configure composer to require this module as a symlink.
composer config minimum-stability dev
composer config repositories.tugboat path $TUGBOAT_ROOT
composer require \
drupal/experience_builder \
drupal/demo_design_system \
drupal/components
# Install Drupal on the site.
rm -f $DRUPAL_DOCROOT/sites/default/settings.php
php -d memory_limit=-1 \
vendor/bin/drush.php \
--yes \
--db-url=mysql://tugboat:tugboat@mysql:3306/tugboat \
--site-name="Live preview for ${TUGBOAT_PREVIEW_NAME}" \
--account-pass=admin \
site:install standard
# Require settings.local.php increase CLI memory limit, add trusted
# host patterns, and allow for enabling hidden xb_dev_standard module.
echo "require_once '$TUGBOAT_ROOT/.tugboat/settings.local.php';" >> $DOCROOT/sites/default/settings.php
# Set up the files directory permissions.
mkdir -p $DRUPAL_DOCROOT/sites/default/files
chgrp -R www-data $DRUPAL_DOCROOT/sites/default/files
chmod 2775 $DRUPAL_DOCROOT/sites/default/files
chmod -R g+w $DRUPAL_DOCROOT/sites/default/files
# Enable the module.
vendor/bin/drush --yes pm:install \
experience_builder \
xb_dev_standard \
media_library \
components
# Enable starshot_demo theme.
vendor/bin/drush --yes theme:enable starshot_demo
vendor/bin/drush --yes config:set system.theme default starshot_demo
# Create node/1
vendor/bin/drush scr $TUGBOAT_ROOT/.tugboat/create-article-node.php
682fa8d4e6348478b3b48ba1 (3525565-personalization-poc) is suspended