Conversation
aeddd1a to
9ffb1da
Compare
74d5c25 to
041462a
Compare
97e38f8 to
a2364d6
Compare
Member
Author
|
@Sebobo following (internal) changes have been made As we do not have a strict guideline as to how a plugin should behave to be supported across patch,minor or major versions its never easy to judge an internal change like this. Many parts of the Neos Ui carry a warning in code with them if someone extends those but thats just warnings. As most packages are exposed via the extensibility api I with my knowledge could build a plugin which could observe every detail what changed here but that is only because of my deep knowledge of the ui. None of these changes should matter to a Neos Ui plugin as they are core details:
|
a2364d6 to
c6c9294
Compare
Sebobo
requested changes
Nov 6, 2025
This was referenced Nov 10, 2025
1db58b1 to
cf5e11c
Compare
Sebobo
approved these changes
Nov 11, 2025
Member
Sebobo
left a comment
There was a problem hiding this comment.
Looks good, just a variable name change would be nice.
packages/neos-ui-contentrepository/src/registry/initializeNodeTypesRegistry.ts
Outdated
Show resolved
Hide resolved
packages/neos-ui-contentrepository/src/registry/initializeNodeTypesRegistry.ts
Outdated
Show resolved
Hide resolved
…from boot time see updateCsrfTokenAndWorkThroughQueue which is run after relogin
…a `"@neos-project/neos-ui-configuration"` The System/index.js file was moved to the new package. The side effects were removed from the file and are now part of the neos-ui index: fetchWithErrorHandling.setCsrfToken initializeJsAPI
…nk` tag and prefetch for node type schema endpoint this approach was already started for translations via neos#3804 and now the second endpoint is gone as well.
this simplifies the CR Workspace reduce
…kspaces` into the redux store
previously these options where fully static and part of the "configuration".
But this is misleading, the information depends on other workspaces and thus the database. It is not configuration.
Now they will also be updated when `const {getWorkspaceInfo} = backend.get().endpoints;` is invoked.
During changes only the totalNumberOfChanges are recalculated but not all the allowedTargetWorkspaces
…roviderInterface it does not make sense to build these routes in two different places -> but as the ones are rendered via `<link` tag and fetched immediately they are a little different thus a new method
…ad of "frontendConfiguration" Now that the "configuration" is cleaned up an only contains real configuration - no state, no endpoints - the question is how does it differ to the "frontendConfiguration" and shouldnt the one be part of the other? From what git tells me it was like this: The "configuration" in the bootstrap existed but specifically to pipe the "editPreviewModes" to javascript the "Neos.Neos.Ui.frontendConfiguration" settings was created. This was sorely home to the "editPreviewModes" key and its options which were made available from the original location in Neos.Neos.userInterface. To access these in javascript a new "editPreviewModes" registry was created which was filled by the items in frontendConfiguration.editPreviewModes. -> change 2016 neos#425 One year later it was discussed in slack how to make settings overall available from plugins to the ui (https://neos-project.slack.com/archives/C0U0KEGDQ/p1507709786000036) The "frontendConfiguration" stuck out as option in the settings with the potential to easily do this. The change neos@15afda4 replaced the dedicated "editPreviewModes" registry with a "frontendConfiguration" where all settings from the "frontendConfiguration" were made available to. Now today we end up with the configuration and frontendConfiguration where the former is not extensible. As we alias the editPreviewMode configuration in the "frontendConfiguration" and dont define it there and as this value is an integral part or neos it makes now more sense to put it into the "configuration" and thus get rid of the odd RenderingMode helper - in hindsight this is quiet ironic as the frontendConfiguration was initially made for the rendering modes and now we end up almost not using it anymore. Future of the "frontendConfiguration" The neos ui only uses this setting for the "hotkeys" but they are odd and broken so actually we dont rely on that much. For plugins the frontendConfiguration is still the (only) place to add custom values. Now an alternate future of the "frontendConfiguration" would be to host everything including the editPreviewModes and the nodeTree loading depth but these values are configured in "Neos.Neos.userInterface" and will probably stay there and should not be replaced by an alternative like "Neos.Neos.Ui.frontendConfiguration" (especially as the "editPreviewModes" are so deep integrated in Neos.Neos that they will need to stay configured there)
…ing to use the registry or {frontendConfiguration} parameter and exposes `@neos-project/neos-ui-configuration"` via extensibility
Also move appContainer
csrfToken
systemEnv back to the Ui as no good abstraction was found.
as to due to the changes on the files it might be lost during upmerge.
In the test distribution this change adds a test plugin wich is also registered as yarn workspace so we can use esbuild and more importantly the neos-ui-extensibility to test. via ``` yarn workspace @neos-project/neos-ui-test-plugin run build ``` this plugin is build and the esbuild.js script ensures with a custom analysis that we only bundle files from the source and from the extensibility shims but not any other node_modules An e2e test run via testcafe ensures that the plugin is correctly registered via yaml and initialised. A client function access values from the plugin that were exposed on the window.
…tions for `neosUiTestPlugin`
…pi for plugins but preserver compatibility with `SynchronousRegistry` legacy import
…wedTargetWorkspaces` and `frontendConfigurationRegistry.get('editPreviewModes')`
as these things have been used by Shel.Neos.CommandBar
See https://github.com/Sebobo/Shel.Neos.CommandBar/blob/84a15bf1415d35930ee2e6ff6474a58ea394e8d4/packages/ui-plugin/src/CommandBarUiPlugin.tsx#L685
and https://github.com/Sebobo/Shel.Neos.CommandBar/blob/84a15bf1415d35930ee2e6ff6474a58ea394e8d4/packages/ui-plugin/src/CommandBarUiPlugin.tsx#L55
…Roles" nodeTypes are infact not carried here
cf5e11c to
92932b2
Compare
Sebobo
approved these changes
Nov 11, 2025
34 tasks
This was referenced Dec 9, 2025
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Depends on #4011 and introduces e2e tests for it.
1.) Move
editPreviewModesto actual neos ui "configuration" instead of "frontendConfiguration"Now that the "configuration" is cleaned up an only contains real configuration - no state, no endpoints - the question is how does it differ to the "frontendConfiguration" and shouldnt the one be part of the other?
From what git tells me it was like this:
The "configuration" in the bootstrap existed but specifically to pipe the "editPreviewModes" to javascript the "Neos.Neos.Ui.frontendConfiguration" settings was created. This was sorely home to the "editPreviewModes" key and its options which were made available from the original location in Neos.Neos.userInterface. To access these in javascript a new "editPreviewModes" registry was created which was filled by the items in frontendConfiguration.editPreviewModes. -> change 2016 #425
One year later it was discussed in slack how to make settings overall available from plugins to the ui (https://neos-project.slack.com/archives/C0U0KEGDQ/p1507709786000036)
The "frontendConfiguration" stuck out as option in the settings with the potential to easily do this. The change 15afda4 replaced the dedicated "editPreviewModes" registry with a "frontendConfiguration" where all settings from the "frontendConfiguration" were made available to.
Now today we end up with the configuration and frontendConfiguration where the former is not extensible. As we alias the editPreviewMode configuration in the "frontendConfiguration" and dont define it there and as this value is an integral part or neos it makes now more sense to put it into the "configuration" and thus get rid of the odd RenderingMode helper - in hindsight this is quiet ironic as the frontendConfiguration was initially made for the rendering modes and now we end up almost not using it anymore.
Future of the "frontendConfiguration"
The neos ui only uses this setting for the "hotkeys" but they are odd and broken so actually we dont rely on that much.
For plugins the frontendConfiguration is still the (only) place to add custom values.
Now an alternate future of the "frontendConfiguration" would be to host everything including the editPreviewModes and the nodeTree loading depth but these values are configured in "Neos.Neos.userInterface" and will probably stay there and should not be replaced by an alternative like "Neos.Neos.Ui.frontendConfiguration" (especially as the "editPreviewModes" are so deep integrated in Neos.Neos that they will need to stay configured there)
2.) Separate state from configuration -> move the
allowedTargetWorkspacesinto the redux storepreviously these options where fully static and part of the "configuration".
But this is misleading, the information depends on other workspaces and thus the database. It is not configuration.
Now they will also be updated when
const {getWorkspaceInfo} = backend.get().endpoints;is invoked.During changes only the totalNumberOfChanges are recalculated but not all the allowedTargetWorkspaces
3.) Remove
endpointsfrom initialData configuration by using<linktag and prefetch for node type schema endpointthis approach was already started for translations via #3804 and now the second endpoint is gone as well.
4.) E2E tests for extensibility API
Introduces automatic e2e test to ensure the newest adjustments to our extensibility api are tested before we even publish those to npm.
For that the e2e test distribution now ships a plugin which is build using the extensibility api from the project via yarn workspace.
To build them use
Which builds the extensibility api and then for
Neos.TestNodeTypescompiles an example dummy plugin.Testcafe then boots the real Neos Ui with plugin and uses an exposed global variable
neosUiTestPluginto interact with the plugin. In a later step the plugin could also be used to test that certain container extension points work or that a custom ck plugin can be written.What I did
How I did it
How to verify it