2026.11.0

1. Key highlights

  • Project templates can now declare required libraries. These libraries are automatically selected during project creation and cannot be unselected.

  • Downstream projects can now customize node styles without modifying the diagram descriptions.

2. Breaking changes

  • Add a new module named sirius-web-core-domain to extract the core reusable parts of sirius-web-domain. The classes Module, Window, Failure, IResult, Success, and AbstractValidatingAggregateRoot has been moved to this new module. Imports of these classes must be updated to:

    • org.eclipse.sirius.web.core.domain.annotations.Module

    • org.eclipse.sirius.web.core.domain.pagination.Window

    • org.eclipse.sirius.web.core.domain.results.Failure

    • org.eclipse.sirius.web.core.domain.results.IResult

    • org.eclipse.sirius.web.core.domain.results.Success

    • org.eclipse.sirius.web.core.domain.AbstractValidatingAggregateRoot

  • Default tools are now provided only for low-code studios. Each downstream project using programmatic APIs and the old DefaultToolsFactory to define its view should now define its own default tools.

  • Workbench views have been reworked: they are now collapsible, and their toolbar and title bar have been merged into a single header bar. A new component ViewAccordion has been introduced to capture this new design, with two new subcomponents:

    • ViewAccordionToolbar if the view has a toolbar

    • ViewAccordionContent for the content of the view. Downstream projects should now reuse them to align with the new design.

  • The workbench header bar (merge of the title + toolbar) now has a grayish background. This color can be changed through the theme palette view.background. Defining this color may be required.

  • Classes from the library domain such as Library, ILibrarySearchService, ILibraryCreationService or LibraryCreatedEvent have been moved to the new module sirius-web-library-domain. Imports of these classes must be updated to:

    • org.eclipse.sirius.web.library.domain.Library

    • org.eclipse.sirius.web.library.domain.services.api.ILibrarySearchService

    • org.eclipse.sirius.web.library.domain.services.api.ILibraryCreationService

    • org.eclipse.sirius.web.library.domain.events.LibraryCreatedEvent

  • A list of required libraries must now be provided when creating a ProjectTemplate.

  • Classes from the image domain such as Image, IImageSearchService, IImageCreationService or ImageCreatedEvent have been moved to the new module sirius-web-images-domain. Imports of these classes must be updated to:

    • org.eclipse.sirius.web.images.domain.Image

    • org.eclipse.sirius.web.images.domain.services.api.IImageSearchService

    • org.eclipse.sirius.web.images.domain.services.api.IImageCreationService

    • org.eclipse.sirius.web.images.domain.events.ImageCreatedEvent

  • Switch to Spring Boot 4.1.1

  • Remove the field ErrorPayload#message in favor of ErrorPayload#messages.

  • The project images part of the Sirius Web domain has moved to the dedicated Maven module sirius-web-projects-images-domain. Downstream consumers must declare this dependency and replace the package prefix org.eclipse.sirius.web.domain.boundedcontexts.projectimage with org.eclipse.sirius.web.projects.images.domain, including its event, repositories, services, and services.api subpackages.

  • The project semantic data part of the Sirius Web domain has moved to the dedicated Maven module sirius-web-projects-semanticdata-domain. Downstream consumers must declare this dependency and replace the package prefix org.eclipse.sirius.web.domain.boundedcontexts.projectsemanticdata with org.eclipse.sirius.web.projects.semanticdata.domain, including its events, repositories, services, and services.api subpackages.

  • Remove the deprecated types IObjectService and ObjectService since they have been replaced a long time ago by smaller services such as IIdentityService, IObjectSearchService, ILabelService, etc.

  • Reduce the dependency of the images bounded context on sirius-web-domain by adding a dedicated configuration module, sirius-web-images-infrastructure, for its internationalization support.

  • Reduce the dependency of the project images bounded context on sirius-web-domain by adding a dedicated configuration module, sirius-web-projects-images-infrastructure, for its internationalization support.

  • Reduce the dependency of the project semantic data bounded context on sirius-web-domain by adding a dedicated configuration module, sirius-web-projects-semanticdata-infrastructure, for its internationalization support.

  • clearHandlerProvider has been removed from ReferenceWidgetDescription. referenceNameProvider has been added to ReferenceWidgetDescription and is mandatory. A new API has been added to replace clearHandlerProvider: IReferenceWidgetClearHandler, a candidate to handle the clear event. Sirius Web provides ViewReferenceWidgetClearHandler for View-based representations, DetailsViewReferenceWidgetClearHandler for the default EMF properties, NodeStyleReferenceWidgetClearHandler for custom node style properties, EdgeStyleReferenceWidgetClearHandler for custom edge style properties, and TaskReferenceWidgetClearHandler for Task properties. Contributed programmatic views not relying on View DSL should have their own implementation of IReferenceWidgetClearHandler.

  • Reference widget EMF edit classes have been moved from org.eclipse.sirius.components.widgets to org.eclipse.sirius.components.view.widget to match their domain classes.

  • The clear button of the widget reference is now driven by a dedicated EClass in the View DSL. Its body defines the clear behavior; an empty body clears the reference using the default behavior. New Studio widgets contain a default clear operation. All existing representations and the Sirius Web details view are automatically migrated. Programmatic form descriptions should manually add it through ReferenceWidgetDescription.Builder#clearButtonDescription.

  • Reference widget creation handlers are now form handlers instead of editing context handlers. IReferenceWidgetCreateElementHandler#canHandle now accepts a FormDescription instead of a widget description ID. ReferenceWidgetDefaultCreateElementHandler has been replaced by ViewReferenceWidgetCreateElementHandler for View-based forms, DetailsViewReferenceWidgetCreateElementHandler for the default EMF properties, NodeStyleReferenceWidgetCreateElementHandler for custom node style properties, EdgeStyleReferenceWidgetCreateElementHandler for custom edge style properties, and TaskReferenceWidgetCreateElementHandler for Task properties. Other programmatic forms must contribute their own creation handler. The referenceWidgetRootCreationDescriptions and referenceWidgetChildCreationDescriptions GraphQL queries now require the host form’s representationId.

  • The getPalette query is no longer used to compute if a node has an edge creation tool (and thus if a diagram element should render edge creation handles). A new query connectorToolCandidateDescriptionIds(diagramElementId: ID!): [ID!]! is used instead, it returns all element description id that are target candidate for a given source element. This query is using the IConnectorToolCandidateDescriptionIdsProvider, a default implementation is provided. The precondition of an edge tool is no longer evaluated when computing if an element should display its creation handles.

  • Reference widgets now have an optional create button description. Existing persisted View descriptions are migrated to keep their create button. Programmatic descriptions must explicitly configure createButtonDescription to keep the creation action. Custom creation handlers must replace the last description ID argument of createRootObject and createChild with the ReferenceWidget. These methods now return IStatus, and custom operations can succeed without returning an object.

  • The getPalette query no longer return edge tool, use getConnectorPalette instead if needed.

  • Classes from the projects domain such as Project, IProjectSearchService, IProjectCreationService or ProjectCreatedEvent have been moved to the new module sirius-web-projects-domain. Imports of these classes must be updated to:

    • org.eclipse.sirius.web.projects.domain.Project

    • org.eclipse.sirius.web.projects.domain.services.api.IProjectSearchService

    • org.eclipse.sirius.web.projects.domain.services.api.IProjectCreationService

    • org.eclipse.sirius.web.projects.domain.events.ProjectCreatedEvent

  • org.eclipse.sirius.components.widget.reference.ReferenceWidget now requires targetObjectId.

  • Connector tools in the diagram View DSL are now configured directly on node and edge descriptions using edgeTools. The edgeTools properties of node palettes, edge palettes, and node tool sections have been removed. Existing saved View descriptions are migrated automatically, preserving tool order; edge tools previously placed in sections become a flat list. Programmatic descriptions must move their tool declarations to NodeDescriptionBuilder.edgeTools(…​) or EdgeDescriptionBuilder.edgeTools(…​).

  • addHandlerProvider has been removed from ReferenceWidgetDescription. A new API has been added to replace addHandlerProvider: IReferenceWidgetAddElementHandler, a candidate to handle the add event. Sirius Web provides ViewReferenceWidgetAddElementHandler for View-based representations, DetailsViewReferenceWidgetAddElementHandler for the default EMF properties, NodeStyleReferenceWidgetAddElementHandler for custom node style properties, EdgeStyleReferenceWidgetAddElementHandler for custom edge style properties, and TaskReferenceWidgetAddElementHandler for Task properties. Contributed programmatic views not relying on View DSL should have their own implementation of IReferenceWidgetAddElementHandler. The add reference widget feature cannot use rendering AQL variables such as the one provided by a For element.

  • body reference of ReferenceWidget in View DSL cannot be used to describe the behavior of the add element feature anymore. Instead, use add. For multivalued references, an absent add disables value selection and addition. An empty add uses the default addition behavior; a populated add executes its operations. When add is present, its preconditionExpression controls whether values can be selected for multivalued references; an empty expression allows selection. Existing representations have been migrated but programmatic one must be migrated manually.

  • setHandlerProvider has been removed from ReferenceWidgetDescription and setHandler has been removed from ReferenceWidget and ReferenceElementProps. A new API has been added to replace setHandlerProvider: IReferenceWidgetSetElementHandler, a candidate to handle the set event. Sirius Web provides ViewReferenceWidgetSetElementHandler for View-based representations, DetailsViewReferenceWidgetSetElementHandler for the default EMF properties, NodeStyleReferenceWidgetSetElementHandler for custom node style properties, EdgeStyleReferenceWidgetSetElementHandler for custom edge style properties, and TaskReferenceWidgetSetElementHandler for Task properties. Contributed programmatic views not relying on View DSL should have their own implementation of IReferenceWidgetSetElementHandler. The set reference widget feature cannot use rendering AQL variables such as the one provided by a For element.

  • body reference of ReferenceWidget in View DSL cannot be used to describe the behavior of the set element feature anymore and has been removed. Instead, use set. For monovalued references, an absent set disables value selection. An empty set uses the default setting behavior; a populated set executes its operations. When set is present, its preconditionExpression controls whether values can be selected for monovalued references; an empty expression allows selection. Existing representations have been migrated but programmatic one must be migrated manually.

  • itemRemoveHandlerProvider has been removed from ReferenceWidgetDescription. removeHandler has been removed from ReferenceValue. A new API has been added to replace itemRemoveHandlerProvider: IReferenceWidgetRemoveHandler, a candidate to handle the remove event. Sirius Web provides ViewReferenceWidgetRemoveElementHandler for View-based representations, DetailsViewReferenceWidgetRemoveElementHandler for the default EMF properties, NodeStyleReferenceWidgetRemoveElementHandler for custom node style properties, EdgeStyleReferenceWidgetRemoveElementHandler for custom edge style properties, and TaskReferenceWidgetRemoveElementHandler for Task properties. Contributed programmatic views not relying on View DSL should have their own implementation of IReferenceWidgetRemoveHandler.

  • Reference widget creation no longer invokes the widget’s add or set action. Default creation assigns the created object directly to the reference; custom creation bodies and contributed handlers must perform their own reference updates.

  • Each edge tool can now have its own palette, without a palette the body of the edge tool will be executed when making a connection. Existing edge tool actions are moved into a same-named tool in that palette automatically. Programmatic descriptions can configure the edge tool palette and its tools or rely on the edge tool body in order to offer a default behavior (without rendering a palette).

  • The query connectorPalette(sourceDiagramElementId: ID!, targetDiagramElementId: ID!) now returns union ConnectorPaletteResult = Palette | SingleClickOnTwoDiagramElementsTool. The getConnectorTools from the provider IConnectorPaletteProvider return a typed IConnectorToolsProviderResult that can either be record DefaultConnectorToolResult(SingleClickOnTwoDiagramElementsTool tool) implements IConnectorToolsProviderResult or record ConnectorPaletteResult(Palette palette) implements IConnectorToolsProviderResult This change makes it so that when a palette is defined under an edgeTool on a view dsl, then the palette is always rendered when making a connection. If no palette is defined inside the edgeTool, then the edgeTool body will be executed directly after making a connection.

3. Dependency updates

4. Bug fixes

  • Icon label nodes can now be moved inside free-form containers.

  • Border nodes can now display their configured child and border nodes.

  • The available self variable for the precondition of the connector palette is now set to the semantic source of connection (it was previously the target).

  • Add missing palette for the views explorer representation

  • Fix an issue where the global selection was not correctly updated after opening the palette on the diagram.

  • The active representation tab is now closed automatically when it is deleted.

  • Prevent a project style customization from being registered twice for the same project.

  • The Details form in the VS Code extension no longer displays an overlapping workbench header.

  • Reference widgets in Papaya Details views now execute their configured operations, including custom behavior defined through the View DSL.

5. New features

  • Project templates can now define required libraries by namespace, name, and version. When users create a project from such a template, the required libraries are selected automatically and cannot be unselected.

  • Add a new menu button in the diagram panel to manage the current selection. Available default actions are:

    • Select all nodes

    • Selected all edges

    • Unselect child nodes

    • Unselect nodes

    • Unselect edges

  • Add IDiagramToolbarFilterSelectionProvider to add options to the manage diagram selection diagram toolbar tool.

  • Add IDiagramToolbarFilterSelectionHandler to add handlers to the manage diagram selection diagram toolbar tool.

  • Add support for node style customization. Implement INodeStyleCustomizer to customize node styles. Each customizer determines which nodes it applies to. All applicable customizers are applied, but their order is unspecified. If multiple customizers modify the same style property, the last one wins.

  • Project style customizations can now be enabled or disabled from the Appearances tab in the project settings. When changing their activation is not allowed, the checkboxes remain visible but are disabled. Their effect depends on how they are used by the application. For example, node style customizers can use their activation state to decide whether to apply their rules.

    Display the project appearances settings tab with two project style customizations
  • In forms, specifiers can now configure whether reference widgets show a clear button in the View DSL.

  • In forms, specifiers can now configure reference-widget clear-button behavior through its View DSL operation body.

  • In forms, specifiers can now configure reference-widget remove item feature behavior through its View DSL operation body.

  • Studio makers can now show or hide the reference widget’s create button by adding or removing its create button description. The form editor preview reflects this configuration. The create button description can contain operations to customize its behavior. When its body is empty, the button retains the default creation behavior.

  • Downstream projects can provide an IRepresentationRenderVariableCustomizer to add variables to the variable manager during the rendering/refresh phase. Use IRepresentationRenderVariableCustomizer with caution: these customizers operate at the representation level and may be invoked during the rendering/refresh phase for any representation type. Currently, these customizers are used for tree and diagram representations. Downstream projects contributing an IRepresentationRenderVariableCustomizer are responsible for ensuring that it does not pollute the context of other representations. A good practice is to use the representation’s description to determine whether to contribute a variable.

6. Improvements

  • Specifiers customizing the creation, deletion, edition and drop of cards will now be able to leverage the editingContext variable.

  • Update the backend documentation and add a first schema of the lifecycle of the backend with the creation of a project.

  • Added more AQL variables available when computing the precondition of a tool in a palette, this includes for a connector palette : environment, diagramServices, selectedNode, selectedEdge and for a diagram element palette : environment, diagramServices.

  • Extract the appearance logic of nodes and edges in a dedicated service.

  • In forms, the RichTextEditor widget can now insert, open, edit, and delete links using a dedicated link popup.

  • Extract the logic to check if a project has the FLOW nature into a dedicated predicate.

  • Introduced the PageInfoAssert for testing the page info returned by query runner when using the cursor-based pagination in integration tests.

  • Export FilterBarContext from sirius-components-trees in order to reuse filter bar logic more easily.

  • Introduce the RenameProjectExecutor to execute the rename project mutation, and perform assertion on the result with the RenameProjectAssert in integration tests.

  • Add the ability to customize the default result of the ICapabilityEvaluator instead of defaulting to true when no ICapabilityVoter takes part in the evaluation.

  • Align the refresh of the Gantt representation on the new APIs already used by deck and validation.

  • Introduce documentation for the reference widget.

  • Downstream projects which need to customize the behavior of the details view by contributing new page descriptions could do so by using IPropertiesDescriptionRegistryConfigurer. This created issues if the downstream project used the View DSL because the representation description could not be found in the editing context. It also requires the downstream project to convert the view based representation description "manually". A new API has been introduced to support this use case more properly, for that downstream projects can now contribute an IDetailsViewPageDescriptionProviderDelegate which can use the editing context to find the page descriptions from the representation descriptions of the editing context. As such, the view based representation description can be registered as usual and converted by Sirius Web. You just have to find it in the editing context and return it from the delegate. It will also allow to share a form description between the details view and a regular form representation.

7. Deprecation warnings

  • Improve the consistency of the variables used. For that the available variables will be found in dedicated variables classes such as:

    • org.eclipse.sirius.components.representations.RepresentationVariables

    • org.eclipse.sirius.components.core.api.variables.CoreVariables These variable declarations allow us to easily find all the available variables instead of having to look at various types scattered all accross the codebase. On top of that, they are now being used for the generation of the documentation of the View DSL builders and are used to validate the execution of some behavior at runtime. We have thus starting to deprecate the existing variable constants which will be replaced by the new ones in the dedicated variables classes. At the moment, we have only deprecated VariableManager.SELF which has been replaced by RepresentationVariables.SELF.name() and IEditingContext.EDITING_CONTEXT which has been replaced by CoreVariables.EDITING_CONTEXT.name(). We will not remove existing variable constants such as VariableManager.SELF and IEditingContext.EDITING_CONTEXT soon, but we will start using these new locations for the variables in our own codebase. When we will be satisfied with the use of these new variable declarations, we will change their annotation from @Deprecated(since = "…​") to @Deprecated(since = "…​", forRemoval = true) and warn downstream consumers in the CHANGELOG and release notes of that version that they should migrate to the new variable declarations. Then, we will remove the existing variable declarations in a future release.

8. Technical details

  • For technical details on this Sirius Web release, including breaking changes, please refer to changelog.