Jerusalem
Account created on 4 April 2009, over 16 years ago
  • Drupal developer - Never fast enough at Linnovate 
#

Merge Requests

More

Recent comments

🇮🇱Israel heyyo Jerusalem

Thanks for the update @f.mazeikis,

I checked the MR!196, I confirm, I can now edit the previous version of my component which received new props !
But nothing indicates, it's an outdated version. I don't remember which issue is about this ?

🇮🇱Israel heyyo Jerusalem

Usually developers just describes what the prop is, but content editors may need more explanation:
- like max length max of string,
- tones to use in a textarea,

We had a client who wanted to be able to edit all fields/content type description, in case of a misuse, so those description became content with a module we built !
Like this if editors were making mistakes on how fill in content, their admin were able to improve those descriptions.

And LLM needs another sort of guidance i'm thinking about the slot restrictions as an example:
https://project.pages.drupalcode.org/canvas/ai-assistant/#restrictions-o...

But for AI we still have the way to override those descriptions in Drupal UI, but in my opinion it's less practical as developer to optimize those contexts.

🇮🇱Israel heyyo Jerusalem

I'm just mentioning those descriptions have at least 2 usages today:
- describe the props/slots for developers
- describe the props/slots for LLM for better usage in Canvas AI

Most of the time, the way we write them will be different according those 2 targets.

And adding a third target: "canvas editor" will complicate even more the situation.

🇮🇱Israel heyyo Jerusalem

I had this issue, when the div containing the slot is using display: flex

🇮🇱Israel heyyo Jerusalem

Don't forget we also use those props/slots descriptions as AI context.

🇮🇱Israel heyyo Jerusalem

Any plan to support media audio file too ?

🇮🇱Israel heyyo Jerusalem

Getting this issue too. All group are not collapsible, even Open Graph which has an arrow that indicates collapsed is open.
Video attached to illustrate the bug more clearly

🇮🇱Israel heyyo Jerusalem

I was reading the readme from the MR, it looks like the agent/assistant is outdated if I'm not mistaken.

I think the latest approach was to create first an assistant with rag selected. Saving this assistant will create automatically the agent with RAG search as a tool.

Some questions I had during this process:

1. I learn that I have to resave the generated Agent manually, if not I had this issue after saving changes the assistant.

Schema errors for ai_agents.ai_agent.content_drupal_assistant with the following errors: ai_agents.ai_agent.content_drupal_assistant:tool_settings variable type is NULL but applied schema class is Drupal\Core\Config\Schema\Sequence. These errors mean there is configuration that does not comply with its schema. This is not a fatal error, but it is recommended to fix these issues. For more information on configuration schemas, check out <a href="https://www.drupal.org/docs/drupal-apis/configuration-api/configuration-schemametadata">the documentation</a>.

2. It isn't clear to me how to handle the search into multiples content types from a chatbot.
Should I use one index with multiple content types.
Or multiple indices, if it's the best option, how to do it ? The assistant Rag option, handles only one index, if i'm not mistaken.

3. Also not clear to me how to structure the prompt/instructions in the agent, specially for formatting, usage of contextual, and filterable attributes. for example how to tell llm to deal will multilang content, or search by date(recent, in the future for event...)

4. Also during the configuration of the index of the fields, it was pretty clear what to use and why
- for Main content. Only body field, aggregated field of several fields (which ones ?), or rendered output
- for Contextual content. Not clear what the purpose of this, and How it's used by assistant. Can we use it in the instruction ? how to formulate ?
- for filterable attributes, same question than contextual content

5. Pick vector DB. In slack, I remember lots of people preferred Postgresql over Milvus. But other saw a lot of potential with Solr.
could be nice to have best use cases for each supported provider.

PS: Sorry if there is a lot of newby questions in my comment...

🇮🇱Israel heyyo Jerusalem

The MR didn't helped.
The Search recipe doesn't configure and doesn't place the simple_search_form block.

So I suppose it may be a Canvas bug, that should probably catch those errors, most of blocks are un-configured before being placed.

🇮🇱Israel heyyo Jerusalem
🇮🇱Israel heyyo Jerusalem

heyyo created an issue.

🇮🇱Israel heyyo Jerusalem

heyyo made their first commit to this issue’s fork.

🇮🇱Israel heyyo Jerusalem

I just checked we have the same issue with canvas-demo.

But do we really need to add this conditional slot functionality, at least to allow multiple columns ?

We can do it differently, we can have a SDC container which has one slot for all columns.
and SDC child column. And no need to ask the editor how many columns he needs.

If he inserts 3 children, there will be 3 columns

🇮🇱Israel heyyo Jerusalem

Thanks for working on this issue, here my test results.

Missing component
- I deleted the whole SDC folder
- Cleared Drupal cache

ᯓ➤ Edition of the page and of the missing component is possible !
* We can clearly understand it was there before, restore it if possible, or remove it . Awesome 😎

ᯓ➤ Front page is also working, and shows an Oops message where was the component

* Restoring the folder, and clearing the drupal cache fixed the situation as expected.

Adding a New prop
- I added a new prop to an existing sdc already used in a canvas page
- Cleared Drupal cache

ᯓ➤ Edition of the page is working.
* I didn't see any change in UI, the SDC shown in edition is previous one (without new prop)
Remark: It would be great if there was a way to "migrate" to new version, without retyping/reconfiguring all props.

Making this new prop required +
- Make this exact same new prop required
- Clearing drupal cache

ᯓ➤ Edition of the page is working, but shows an error on first load

<b>Warning</b>:  Undefined array key "examples" in <b>/var/www/html/web/modules/contrib/canvas/src/Plugin/Canvas/ComponentSource/GeneratedFieldExplicitInputUxComponentSourceBase.php</b> on line <b>932</b><br>
<br>
<b>Warning</b>:  Trying to access array offset on null in <b>/var/www/html/web/modules/contrib/canvas/src/Plugin/Canvas/ComponentSource/GeneratedFieldExplicitInputUxComponentSourceBase.php</b> on line <b>932</b><br>

ᯓ➤ After second load, the component is visible in the tree(sidebar)
* We can also edit it.
* But rendering is broken

ᯓ➤ Front page is also working, and shows a warning at top and Oops message where was the component

Warning: Trying to access array offset on null in /var/www/html/web/modules/contrib/canvas/src/Plugin/Canvas/ComponentSource/GeneratedFieldExplicitInputUxComponentSourceBase.php on line 932

Removing a prop
- I removed a prop from a SDC already used in canvas page
- Cleared Drupal cache

ᯓ➤ Edition of the page is working.
* We can edit the SDC without issue,
* We even see deleted prop, edition of this old prop is working.
* No issue after saving the canvas page !

ᯓ➤ Front page is also working after saving the old version of SDC

🇮🇱Israel heyyo Jerusalem

What about renaming the tabs to
-Valid components
-Invalid components

In valid components, add a column status, which will show disabled or enabled.
Adding a checkbox for bulk operation will be awesome...

🇮🇱Israel heyyo Jerusalem

Not sure what is the missing part, but even after enabling the Datetime Range module, I still see this 500 error.
I still can't list components in Canvas interface.

🇮🇱Israel heyyo Jerusalem
🇮🇱Israel heyyo Jerusalem

you are right, I didn't pay attention it needs this module.

I understand this is a test module, but it's a great resources for SDC developers to learn about all available prop types and how to use them, by the way mentioned this module in the SDC user guide https://project.pages.drupalcode.org/canvas/sdc-components/props/#additi...

Concerning this error, I suppose it will be enough to add a dependency to this module.

🇮🇱Israel heyyo Jerusalem

heyyo created an issue.

🇮🇱Israel heyyo Jerusalem

heyyo created an issue.

🇮🇱Israel heyyo Jerusalem

Not sure to understand why HTML tag br should not be part of inline element too ?
It could be really useful to support such design.

Here

Start you Drupal journey

is one heading on 2 lines, with emphasis on the word Drupal.

The twig could be of this form
<h2>Start your<br><em>Drupal</em> journey</h2>

So it will make totally sense to have one inline HTML prop with CKEditor support to be able to add the emphasis or strong, and to add line break (br)

For now CKEditor is not used.

🇮🇱Israel heyyo Jerusalem

heyyo created an issue.

🇮🇱Israel heyyo Jerusalem

📻 🎶Let's tune back to Radio Canvas !🎶

MR is in the tube ! 🧪

🇮🇱Israel heyyo Jerusalem

heyyo changed the visibility of the branch 3538340-add-documentation-for to hidden.

🇮🇱Israel heyyo Jerusalem

I remember I had trouble to add a SDC without prop, until I found it's not enough to not add the props key, but instead we need to declare an empty props structure.

https://www.drupal.org/docs/develop/theming-drupal/using-single-director...

props:
  type: object
  properties: {}

Maybe that's the issue @Laurii encountered

🇮🇱Israel heyyo Jerusalem

I don't think we should assume, uploading an image, means creates a code component.
This image could be used as an example of creating a page, or even used in an existing component.
What about to force prompt text, if there is an uploaded image ?

🇮🇱Israel heyyo Jerusalem

It looks like, work in this previous issue wasn't enough
https://www.drupal.org/project/experience_builder/issues/3528368 🐛 Add warning if XB is installed from drupal config but without xb_stark Active

🇮🇱Israel heyyo Jerusalem

I tried to make this user guide as interesting as I could for an XB beginner.

Feel free to improve it, and correct all my language mistakes 📝

🇮🇱Israel heyyo Jerusalem

heyyo made their first commit to this issue’s fork.

🇮🇱Israel heyyo Jerusalem

I can share my experience with Extend (modules listing).
In my configuration, with Gin as admin theme, the INP is really bad with latest Drupal 11.X.
The search input could be completely stuck for 20 seconds, just after typing one extra character or removing one. I did the same test with Claro it went down to 2 or 3 seconds stuck, still really bad.
With this patch, search for module is instant, but initial INP is little bit high. ( with the patch I made, before knowing about this issue 🐛 Extend: Filter modules list by search strings could be stuck Active , the first INP was good too, to be checked)

  • 2 Videos attached with Gin about modules filtering without patch and with patch.
  • And one video containing all parts listed by Nic also in Gin module (5.0.3). All my tests were succesfull
🇮🇱Israel heyyo Jerusalem

I confirm similar speed with the patch of the issue you mentioned and my patch. Both are filtering instantly.
I tested in Claro and in Gin too, where this slowness is really more visible ( 2s for Claro, 18s for Gin when adding/removing character)
So no doubt my issue could be closed.

🇮🇱Israel heyyo Jerusalem

In this video I'm showing before vs after patch (from 0:50s)
its' look like I do nothing in the video after typing gro but I typed on on my keyboard, Drupal is just stuck from more or less 10 to 18 seconds

🇮🇱Israel heyyo Jerusalem

I confirm, that margin-top/margin-block issue is fixed with the other issue:
https://www.drupal.org/project/experience_builder/issues/3534490 🐛 Cannot use `h-screen` from Tailwind with XB Active

🇮🇱Israel heyyo Jerusalem

Your MR definitely helps !
3 times faster 🔥

🇮🇱Israel heyyo Jerusalem

Yes my test was against 0.x, but after I saw another issue on the same bug, didn't test it yet.
https://www.drupal.org/project/experience_builder/issues/3534490 🐛 Cannot use `h-screen` from Tailwind with XB Active

Can you share that SDC (or point me towards somewhere it lives in a repo)?

It's a local playground for now, still unsure to contribute.
But it's a custom theme with daisyui/tailwind, and this bug appears just by applying the tailwind class mt-{y} or my-{y}
which sets only margin-top or margin-block, nothing related to height of the container.
I didn't test outside tailwind, to see we have the same issue

🇮🇱Israel heyyo Jerusalem

I wonder if we can make use of a meta property on slots in the definition to flag a slot as inline?

Will be great

🇮🇱Israel heyyo Jerusalem

In terms of the space, this is needed for the sake of drop-targets. I guess we could hide that unless something was being dragged but that might make dropping difficult if when drag start occurs we added back collapsed/empty slots

When editing, for sure we need to keep displaying slots.
But my issue is about after clicking Preview, in this case I think empty slots shouldn't take any space

🇮🇱Israel heyyo Jerusalem

I experienced the same bug, just by setting margin-top, or margin-block (but not margin-bottom).
Video attached.

🇮🇱Israel heyyo Jerusalem

@heyyo That is incredibly fast testing! 😮 Thanks!

You are the superman, man ! @wim
You are in all issues, commenting, testing, coding, patching, reviewing always nicely and with humor

Looks like I missed a bunch of cases; sorry — absolutely didn’t mean to waste your time 🫣

Waste my time ? When you and all developers are making such a great product, giving from your time for so many intense days.

🎤 is back to @laurii 😂

🇮🇱Israel heyyo Jerusalem

Applying the 2 patches on last dev of XB(#e9d0d1c6d)
- https://git.drupalcode.org/project/experience_builder/-/merge_requests/1...
- https://git.drupalcode.org/project/experience_builder/-/merge_requests/1...

Rebuild of the bundle + clear cache of drupal + disable cache in browser console

1. Rename a prop from paddingInline to padding_inline + drush cr
Viewing or editing a page using previous prop name we got the error:
`OutOfRangeException

'padding_inline' is not a prop on the component 'Single-directory component: Linno Container'.`

  private function getDefaultStaticPropSource(string $prop_name, bool $validate_prop_name = TRUE): StaticPropSource {
    assert(isset($this->configuration['prop_field_definitions']));
    assert(is_array($this->configuration['prop_field_definitions']));
    $component_schema = $this->getSdcPlugin()->metadata->schema ?? [];
    if ($validate_prop_name && !array_key_exists($prop_name, $component_schema['properties'] ?? [])) {
      throw new \OutOfRangeException(sprintf("'%s' is not a prop on the component '%s'.", $prop_name, $this->getComponentDescription()));
    }

2. Deleting a prop from a SDC with content using this prop + drush cr
Exact same error than in 1.

3. Adding a new prop to an existing SDC with existing content + drush cr
- Visiting a previous page, the page is ok
- Editing the page, then selecting the SDC to edit: impossible we got the error "An unexpected error has occurred while rendering the component's form. SyntaxError: Unexpected token '<', "

🇮🇱Israel heyyo Jerusalem

It looks like it's working great 🎉

🇮🇱Israel heyyo Jerusalem

Thanks a lot for the quick work in this issue, I'm offline for now, I'll check tomorrow 🙏

🇮🇱Israel heyyo Jerusalem

I also got an error, when adding a new prop(enum) to an existing sdc.
It's impossible to edit previous version of this same sdc.

Error in drupal logs when we want to edit this SDC:
Path: /xb/api/v0/form/component-instance/xb_page/10
Message:
TypeError: array_key_exists(): Argument #2 ($array) must be of type array, null given in array_key_exists() (line 151 of /var/www/html/web/modules/contrib/experience_builder/src/Plugin/ExperienceBuilder/ComponentSource/GeneratedFieldExplicitInputUxComponentSourceBase.php).

Is there any workaround ? except recreating the page using it ?

🇮🇱Israel heyyo Jerusalem

heyyo created an issue.

🇮🇱Israel heyyo Jerusalem

Another one which surprised me, was the paste of text into the chat with CTRL+V. If a component was copied previously, instead of pasting the text, it pastes the component into the viewport.
Workaround, use the paste from contextual menu(right click)

🇮🇱Israel heyyo Jerusalem

My idea is to regenerate response only if prop is not required and invalid enum value

🇮🇱Israel heyyo Jerusalem

If enums prop is not required, maybe we can just removed non valid option, instead of regenerating the response again, also we can enter into infinite loop if LLM is stubborn 😄

🇮🇱Israel heyyo Jerusalem

right payload is ok, so backend issue.

🇮🇱Israel heyyo Jerusalem

I just checked, the POST request xb/api/v0/config/pattern doesn't contain the full tree of the selected component.

🇮🇱Israel heyyo Jerusalem

I also saw this issue outside xb-demo, and I didn't have any region enabled in my theme to be managed by XB.

🇮🇱Israel heyyo Jerusalem

And not a bug, but more a feature request, today it's possible to insert SDC, but what about blocks and patterns (sections) ?
It will be a great addition if we were able to place a section, and let the LLM to fill existing props according prompt, should decrease unexpected results of llm

🇮🇱Israel heyyo Jerusalem

A more problematic issue, sometimes LLM will set value of enums which doesn't exist, so it will trigger an error in XB to the impossibility to render the sdc

🇮🇱Israel heyyo Jerusalem

Another issue I encountered was with SDC which has multiple slots.
If in the prompt, we specify to insert components inside a slot by providing it's name, the LLM will always insert the SDC into the first slot.
Following the advice of Akhil to better understand what's the going on, prompting something like insert a button in all slots of a specified component will do work.

🇮🇱Israel heyyo Jerusalem

I suppose the instructions given to LLM should be improved, but I have to mention it doesn't happen all the time.
I don't even remember which prompt I used to obtain such behavior, maybe also related to the abilities of the LLM picked.

🇮🇱Israel heyyo Jerusalem

I also opened a child issue regarding the impossibility to set link for a button component for example or src of an image.

🐛 Impossible to set a URL or SRC of an SDC with AI Active

🇮🇱Israel heyyo Jerusalem

Getting this error sometimes

Error: Call to a member function getReadableOutput() on null in Drupal\xb_ai\Controller\XbBuilder->render() (line 219 of /var/www/html/web/modules/contrib/experience_builder/modules/xb_ai/src/Controller/XbBuilder.php).

🇮🇱Israel heyyo Jerusalem

Testing extensively AI capability, it's getting really impressive !

I found in the instructions, something incorrect regarding slots.

If a component has `slots`, you **MUST** fill those slots with valid, appropriate child components. **There can be no empty slots.** Decompose complex requests into a logical hierarchy of parent and child components.

LLM are not forced to fill slot, it's completely valid to have empty slot, I'm not even sure we can set slot to be required.

For example I have a heading component that has optional 'Badge' slot to add a badge at the end.

🇮🇱Israel heyyo Jerusalem

Confirmed, just tested last MT, working perfectly !
Modifying a boolean, doesn't affect other boolean anymore.
And exiting form, and returning doesn't set all boolean to true anymore.
So it's working great, I will be able to play with slider container with 30 props, and maybe 25 boolean :-)

🇮🇱Israel heyyo Jerusalem

I really think I did rebuilt the bundle, but you never know. I'll try to recheck in 2/3 hours from now.
The components I'm using are custom ones not available online, I may release the custom them based mainly on daisyUI and tailwind.
But I did reproduce the same bug with 2 different SDC.

🇮🇱Israel heyyo Jerusalem

Hi ,
I'm trying to test this boolean prop, it works better, but it looks like there is still an issue, when mutiple boolean exist in the sdc.
Changing value to boolean, will change other boolean too...
Video attached to show this weird bug

🇮🇱Israel heyyo Jerusalem

This morning around 6AM UTC time, I pulled last commit on 0.x after larowlan requested me to do so.
The bug was still present. I don't know the exact commit, I pulled another time after that.

I'm not sure I really know how it should behave, but it's quite critical in my mind.

We can't ask to clients to delete all their content using old sdc components, and recreate them.

But after my discussion with larowlan, I had the impression that larowlan thought it was possible to handle this scenario too with component versions. After that, it's above my knowledge :-)

🇮🇱Israel heyyo Jerusalem

Just to inform you, even with newer commit of XB(#a3799e20d3) I have the same exact issue using OpenAI
With those versions:

        "drupal/ai": "^1.1",
        "drupal/ai_agents": "^1.1",
        "drupal/ai_provider_openai": "^1.1",

On this callback /xb/api/v0/config/js_component, I received this status code 422 Unprocessable Entity

With this error:
{
"errors": [
{
"detail": "Unable to find class\/interface \u0022function\u0022 specified in the prop \u0022onButtonClick\u0022 for the component \u0022experience_builder:herobanner\u0022.",
"source": {
"pointer": ""
}
},
{
"detail": "The value you selected is not a valid choice.",
"source": {
"pointer": "props.onButtonClick.type"
}
}
]
}

After step debugging the code it shows the validation of ApiConfigControllers:validate fails because of the react component generated by OpenAI which contains an onButtonClick without declaring it...

🇮🇱Israel heyyo Jerusalem

This latest change broke the possibility to select 'None' value from any select.
We got not this validation error: data must be equal to one of the allowed values

🇮🇱Israel heyyo Jerusalem

Exact steps with latest dev:

0. Check the status property of the SDC Druplicon with drush, we see status: true
drush cget experience_builder.component.sdc.experience_builder.druplicon
1. Disable druplicon in UI : /admin/appearance/component.
2. check again the status property. As expected status turned now to false
You can also the SDC component is not available anymore in XB UI
drush cget experience_builder.component.sdc.experience_builder.druplicon
3. execute drush cr
4. check again the status property. Status turned back to true !
drush cget experience_builder.component.sdc.experience_builder.druplicon

🇮🇱Israel heyyo Jerusalem

I want this closed as you do, don't worry 😛

🇮🇱Israel heyyo Jerusalem

I was happy to read that the boolean SDC issue has been fixed, but it looks like it didn't.
I suppose it was marked as duplicate by mistake, thinking the issue was for code components but it is for SDC components.

🇮🇱Israel heyyo Jerusalem

Thank you for your detailed explanation, makes totally sense.

Really nice design, and I see and will be able not to only resize the sidebar, but to also to close both sidebar and to minimize, and maximize the right one too :-)

One of a client didn't want to use XB for Article page because of this, he wanted to be able to write article in full page.

🇮🇱Israel heyyo Jerusalem

Some questions about this new UX which looks great !
1. Why it was an issue to have sidebars on top of canvas ? It was/is still possible to drag and zoom.
2. Will it be still possible to see desktop and mobile at same time ? It's quite handy to have both at the same time.
3. Any plan to make right sidebar (maybe left too) resizable ? I can image a prop with ckeditor could need lots of space for example

🇮🇱Israel heyyo Jerusalem

Thank you for pointing me to this Elements future functionality.

But I don't understand how it's related to my issue 🤔🙃 ?

If I understood correctly, Elements will be the base of bigger components, like image, button, heading, vidéo...

But how the organization of the props in the generated form of my SDC ( here a slider) is related to those special components.
I'm trying to follow you but I'm lost 😂

🇮🇱Israel heyyo Jerusalem

By default XB adds a 'None' value to the SELECT OPTIONS, which is great.
But it doesn't seem possible to set this None value as the default value.

What I tried:
- Not to add examples at all
- examples: []
- examples: [NULL]
- examples: ['']

All of them return the same error
Twig\Error\RuntimeError: An exception has been thrown during the rendering of a template ("[linno_theme:select/select] Does not have a value in the enumeration ["ratio-32x9","ratio-21x9"]. The provided value is: ""."). in Twig\Template->yield() (line 1 of themes/custom/linno_theme/components/select/select.twig).

Production build 0.71.5 2024