Skip to content

Latest commit

 

History

History
2773 lines (2356 loc) · 291 KB

CHANGELOG.adoc

File metadata and controls

2773 lines (2356 loc) · 291 KB

Changelog

v2025.1.0 (work in progress)

Shapes

Architectural decision records

  • [ADR-172] Add support for Project Data Versioning REST APIs

Deprecation warning

Breaking changes

  • #4110 [view] CheckboxDescriptionStyle.labelPlacement is replaced by Grid layout properties

Dependency update

Bug fixes

  • #4195 [sirius-web] Prevent objects disappearing when dropped on themselves (or a descendant) in the Explorer.

New Features

  • #4110 [form] Add layout capabilities for form widgets

  • #4177 [table] Add table representation support

Improvements

  • #4219 [table] Improve front-end performance

v2024.11.0

Shapes

  • Add support for a table widget in form representations

  • Automatically select newly created nodes on diagrams

  • Add undo/redo support

  • Add support for drag and drop in the explorer

  • Add custom bending points to edges

  • Add support for draggable labels

  • Improve form property section layout

Architectural decision records

  • [ADR-158] Support delegating representation event handling

  • [ADR-159] Create event processor only using the representation id

  • [ADR-160] Persist label position in diagram

  • [ADR-161] Add support for undo redo on semantic changes

  • [ADR-162] Add support for styled labels in view model for trees

  • [ADR-163] Adapt the Diagram Palette API to the new palette design

  • [ADR-164] Add the ability to select newly created diagram elements

  • [ADR-165] Add support for actions in tree item menu

  • [ADR-166] Support Server-Side Pagination for Table Representation

  • [ADR-167] Support REST APIs

  • [ADR-168] Display the icon of the representation in the workbench tab

  • [ADR-169] Compute the icon of a representation

  • [ADR-170] Add support for representations in the Details View

  • [ADR-171] Add support for Sorting and Filtering in Tables

Deprecation warning

Breaking changes

  • #3846 [core] Migrate frontend to React 18, you now need React 18 to import sirius web modules.

  • #3875 [sirius-web] The ExplorerView component has been moved from sirius-components-trees to sirius-web-application module

  • #3155 [core] All the paths in the code involving the modification of some data (project, semantic data, representation data, etc.) will now require a new parameter ICause cause which is the cause of this change. Both IInput and IDomainEvent implement ICause and will thus be used to indicate which action has triggered the change.

  • #3763 [core] updates some services behavior:

    • The org.eclipse.sirius.components.emf.services.DefaultIdentityService#getId(Object object) Can now provides the Id if the Object is of type org.eclipse.emf.ecore.resource.Resource. Before this change, it would have returned null.

    • The org.eclipse.sirius.components.emf.services.DefaultLabelService Can now provides the label if the Object is of type org.eclipse.emf.ecore.resource.Resource. Before this change, it would have returned an empty string.

    • The org.eclipse.sirius.components.emf.services.DefaultContentService#getContents(Object) Can now provides the content if the Object is of type org.eclipse.emf.ecore.resource.Resource. Before this change, it would have returned an empty list.

  • #3972 [diagram] The InsideLabelStyle#displayHeaderSeparator has been renamed to headerSeparatorDisplayMode and is no longer a boolean but an enum with three possible values: NEVER, ALWAYS, and IF-CHILDREN. Previously, the value false was equivalent to NEVER, and true to IF-CHILDREN. The new option ALWAYS allows the separator to be displayed in every case.

  • #3678 [core] Remove IRepresentationMetadataSearchService#findByRepresentation, use IRepresentationMetadataSearchService#findByRepresentationId instead.

  • #4050 [sirius-web] IUploadFileLoader must now return an IResult. This allows an error to be displayed when there is a problem during uploading

  • #4037 [tree] The tree item id passed to ITreeQueryService.findTreeItem is no longer a UUID but is now a String.

  • #4077 [charts] Remove interface RepresentationMetadata from BarChart.types.ts.

  • #3840 [diagram] Migrate to ReactFlow 12, if you have components that uses the library then you’ll need to update them.

  • #2399 [core] When executing successive model operations inside a tool, the execution context (variables, in particular self) of all sibling operations now stays the same. This is much more natural and closer to the behavior of usual languages, but change the behavior.

  • #3679 [core] Split representation metadata from content + Remove org.eclipse.sirius.components.core.api.IRepresentationMetadataSearchService and its implementation. + Use org.eclipse.sirius.web.domain.boundedcontexts.representationdata.services.api.IRepresentationMetadataSearchService#findAllMetadataByTargetObjectId instead of org.eclipse.sirius.components.core.api.IRepresentationMetadataSearchService#findAllByTargetObjectId.

  • #3679 [sirius-web] The service hasChildren requires the editing context like the aql service getChildren.

  • #3983 [tree] The TreeDescription must now implement a dropTreeItemHandler.

  • #3680 [core] The label has been removed from the content of all representations. + The label of a representation is available through its metadata that can be retrieve thanks to the service IRepresentationMetadataSearchService from sirius-web-domain or, IRepresentationMetadataProvider from sirius-components-collaborative.

  • #4114 [sirius-web] The projectActionButtonMenuItemExtensionPoint extension point has been removed. Use the new projectContextMenuEntryExtensionPoint instead which allows the contribution of actual MenuItem components instead of just props. See ProjectDownloadMenuItemExtension for an example. Warning: while more powerful, the new extension point should be used with care: make sure all contributions return an actual MUI MenuItem component.

  • #3681 [sirius-web] Replace all representation specific rename event handlers by RenameRepresentationEventHandler. + It means that an application that only use sirius-components should provide its own means to rename a representation.

  • #3980 [core] Removed the label attribute from WorkbenchSelectionEntry (backend, GraphQL Schema and frontend).

Dependency update

  • [releng] Switch to Spring Boot 3.3.3

  • #3846 [core] Migrate the frontend to react 18.3.1, react-dom 18.3.1, react-router-dom 6.26.0, @xstate/react: 3.0.0 and @ObeoNetwork/gantt-task-react 0.6.0

  • #3840 [diagram] Migrate to ReactFlow 12

  • [releng] Switch to the final release version of AQL 8.0.2

  • #3836 [gantt] Switch to @ObeoNetwork/gantt-task-react 0.6.1 to benefit for enhancements

  • #3823 [table] Add a dependency to material-react-table "2.13.3" and export-to-csv "1.3.0"

  • #3868 [diagram] Add dependency to react-draggable 4.4.6

  • #3868 [diagram] Add dependency to svg-path-parser 1.1.0

Bug fixes

  • #3954 [diagram] Ensure separator bar is displayed immediately after dynamically adding list child

  • #4001 [diagram] Fix an issue with label text overlapped by icon

  • #3965 [diagram] Fix an issue where the label height was not evaluated to define the node size on the first layout

  • #4005 [diagram] Fix a problem synchronizing explorer with current selection

  • #4008 [diagram] Prevent detailsEvent to be triggered twice when selecting a multi-represented element in the diagram

  • #4032 [diagram] Fix an issue where separator list compartment is missing

  • #4028 [tree] Fixed an issue where special characters (e.g. #) could not be used in the treeId due to URL parsing limitations.

  • #3958 [tree] Partial fix of a StackOverflow when expanding an item contained in rendering loop cycle

  • #4050 [sirius-web] Display error message on failed upload document action

  • #4051 Error when deleting Resource that use EReference.isContainer feature

  • #3958 [tree] Prevent expand all action to loop indefinitely.

  • #4073 [tree] Add missing variables ancestorIds and index to variable manager used in the default expand all handler.

  • #4077 [charts] Remove metadata from Charts widgets. Charts' metadata is only relevant when Charts are used as Representations.

  • #3904 [form] Fix an issue where textfield did not update to reflect backend-set value when it matched the initial value.

  • #3836 [gantt] Prevent task.description from resetting after gantt task change.

  • #2399 [core] When executing successive sibling model operations inside a tool, their execution context (in particular the value of self) now stays the same

  • #4117 [core] Fix URLParser for single-character parameter entries (e.g. identifiers).

  • #3681 [core] Fix the representation rename

  • #4149 [diagram] Fix the synchronization on group tool layout

  • #4148 [diagram] Fix an issue when moving child node in free form container.

  • #4154 [diagram] Restore feedback while resizing a list container

  • #4141 [sirius-web] Fix a bug where opening a representation from its URL or from the onboarding area no longer revealed it in the Explorer view.

New Features

  • #3763 [diagram] Make it possible to display semantic candidates in the selection dialog using a tree

  • #3979 [core] Add Project related REST APIs. The new endpoints are:

    • getProjects (GET /api/rest/projects): Get all projects.

    • getProjectById (GET /api/rest/projects/{projectId}): Get project with the given id (projectId).

    • createProject (POST /projects): Create a new project with the given name and description (optional).

    • deleteProject (POST /api/rest/projects/{projectId}): Delete the project with the given id (projectId).

    • updateProject (PUT /projects/{projectId}): Update the project with the given id (projectId). Add Object related REST APIs. The new endpoints are:

    • getElements (GET /api/rest/projects/{projectId}/commits/{commitId}/elements): Get all the elements in a given project at the given commit. There are no commits in Sirius Web so you can use the same Id as the projectId for the commitId.

    • getElementById (GET /api/rest/projects/{projectId}/commits/{commitId}/elements/{elementId}): Get element with the given id (elementId) in the given project at the given commit. There are no commits in Sirius Web so you can use the same Id as the projectId for the commitId.

    • getRelationshipsByRelatedElement (GET /api/rest/projects/{projectId}/commits/{commitId}/elements/{elementId}/relationships): Get relationships that are incoming, outgoing, or both relative to the given related element. There are no commits in Sirius Web so you can use the same Id as the projectId for the commitId.

    • getRootElements (GET /api/rest/projects/{projectId}/commits/{commitId}/roots): Get all the root elements in the given project at the given commit. There are no commits in Sirius Web so you can use the same Id as the projectId for the commitId. A new IObjectRestServiceDelegate interface is available, allowing to customize the default implementation of services related to Object related REST APIs. Specifiers can implement this new interface with a spring Service. Specifiers are also encouraged to implement their own JSON serializers for their domains, as the default one may not return expected results.

  • #3873 [diagram] Make the Selection Dialog available for the EdgeTool

  • #3950 [diagram] Have the multiple selection on the Selection Dialog

  • #3982 [core] Add support for the command palette.

  • #3983 [tree] Add drag and drop support for explorer

  • #3823 [form][table] Add table widget in form.

  • #4113 [sirius-web] Two new extension points have been added to customize the context menu displayed for a project in the edit project view:

    • editProjectNavbarMenuEntryExtensionPoint can be used to add new entries to the menu. See DownloadProjectMenuEntryContribution for an example. Warning: make sure all contributions return an actual MUI MenuItem component.

    • editProjectNavbarMenuContainerExtensionPoint: can be used to wrap the menu inside a custom container, for example to add more context for the items or to completely replace the context menu.

  • #4114 [sirius-web] Two new extension points have been added to customize the context menu displayed for a project in the project browser:

    • projectContextMenuEntryExtensionPoint can be used to add new entries to the menu. They will be added at the end after the default hard-coded actions. See ProjectDownloadMenuItemExtension for an example. Warning: make sure all contributions return an actual MUI MenuItem component.

    • projectContextMenuContainerExtensionPoint: can be used to wrap the menu inside a custom container, for example to add more context for the items or to completely replace the context menu.

  • #3980 [diagram] Add Elements to Select Expression on NodeTool and EdgeTool to control which semantic elements should be selected after the tool’s successful execution

  • #4048 [core] Add the ability to undo/redo only semantic changes after a mutation with crtl+z or ctrl+y on the edit project view (this does not include deleting a resource)

  • #3868 [diagram] Make the path of edges editable

Improvements

  • #2604 [diagram] Expand a tool section when the mouse is over it

  • #3887 [diagram] Memoize diagram representation (improve performance when selecting an element on large diagram)

  • #3987 [sirius-web] Transform widgetFields fragment to retrieve custom widget fields

  • #3875 [sirius-web] Move explorer related code from sirius-components-trees to sirius-web-application

  • #3806 [sirius-web] Add an API to condition the application of migration participants

  • #3155 [core] Propagate the cause of the events in Sirius Web. The interfaces IInput and IDomainEvent are now both extending ICause which let us capture the causes of a domain event recursively. An event may have been caused by another event or caused by an input received from the frontend for example.

  • #4014 [forms] Improve the performance of the reference widget and let end users view all they can need to create new references

  • #3972 [diagram] Added option to force display of separator bar header. It is now possible to choose between three options: never, always and if_children (to display the separator only if children exist).

  • #4021 [sirius-web] Disable the Rename and Delete project menu actions when project is read-only

  • #3677 [diagram] Remove backend layouting code from the time the backend was computing the layout.

  • #3678 [core] Rely on representation id to retrieve representation metadata

  • #3754 [sirius-web] Activate cypress tests again. + Make possible to register view models in the loading editing context when the "test" profile is active. + To activate the test profile add the value test to the SPRING_PROFILES_ACTIVE environment variable.

  • #3882 [sirius-web] Add a new tree event to handle tree description which are not explorer-related

  • #3961 [sirius-web] Extend the explorer to support multiple presentations

  • #3856 [tree] Add tree representation in the view DSL

  • #4000 [tree] Add support for styled labels in view model for trees

  • #4037 [tree] Add mechanism to define actions in tree item context menu

  • #4064 [sirius-web] Ensure that project template images fill the whole content part of the card. Project template images will now have a predictable size of 150px by 110px. This will allow specifier to create images that fir perfectly in the project template card.

  • #3833 [gantt] Enhance Gantt to support Date and DateTime

  • #4029 [sirius-web] Add Project Custom Images element to the exported APIs

  • #4027 [forms] List widgets in read-only mode now still allow the selection of their items, but still prevent the invocation of the corresponding single or double-click handlers (which can perform mutations).

  • #3816 [form] Make EMF default form support Integer null value

  • #3826 [form] Make EMF default form support attributes with a date

  • #2163 [form] Make EMF default form support non changeable features

  • #4086 [form] Wrap widget returned by property section in a div with a specific classname

  • #4088 [trees] Change tree item context menu entries internal management

  • #4130 [sirius-web] The sirius-web-application package now exports useExplorerSubscription and useRelatedElementsViewSubscription.

v2024.9.0

Shapes

  • Add tree representation in the view DSL

  • Add support for object duplication from Explorer

  • Add support for diagram tool shortcuts

  • Extend the explorer to support multiple presentations

Architectural decision records

  • [ADR-152] Add support for any kind of object as semantic element in the tree representation

  • [ADR-153] Restore the Selection Dialog support in diagrams

  • [ADR-154] Add support for finding parent in tree representation

  • [ADR-155] Add max-width expression for diagram labels

  • [ADR-156] Make it possible to display the semantic elements as a tree in the Selection Dialog

  • [ADR-157] Have the multiple selection on the Selection Dialog

Deprecation warning

Breaking changes

  • #3702 [sirius-web] The extension point navigationBarMenuExtensionPoint has been removed. For those who want to entirely replace the appearance of the navigation bar menu icon, it has been replaced by navigationBarMenuIconExtensionPoint. On the other hand, those who want to only change the URL of the help can now use the new extension point navigationBarMenuHelpURLExtensionPoint. Finally, those who want to add new menu entries to the menu can do so using the extension point navigationBarMenuEntryExtensionPoint.

  • #3675 [core] Since the label is removed from the selection, the label of a representation cannot be retrieved from the selection

  • #3742 [sirius-web] Remove the code of the legacy Sirius Web architecture. As a result, the following maven modules have been deleted: sirius-web-sample-application, sirius-web-spring, sirius-web-graphql, sirius-web-services-api, sirius-web-services, sirius-web-persistence.

  • #3676 [representation] Remove the label from representation subscriptions and from graphql types. + Also remove the label from representation metadata (and sometimes the whole metadata) when the label or metadata were not needed.

  • #1470 [view] Since the computation of converted description ID has changed, the identifier of existing representations is not valid anymore, and these representations cannot be opened.

  • #2759 [diagram] Update some API relative to the diagram:

    • The NodeTool#selectionDescription attribute of type SelectionDescription has been renamed into dialogDescription and is now of type DialogDescription.

    • The SelectionDescription type has been renamed into SelectionDialogDescription and inherit from DialogDescription.

    • The InvokeSingleClickOnDiagramElementToolInput#selectedObjectId has been replaced by a variables: [ToolVariable!]! to make it possible to provide any kind of variable to the backend context.

 input InvokeSingleClickOnDiagramElementToolInput {
  id: ID!
  editingContextId: ID!
  representationId: ID!
  variables: [ToolVariable!]!
  diagramElementId: ID!
  startingPositionX: Float!
  startingPositionY: Float!
  toolId: ID!
}
  • The String attribute org.eclipse.sirius.components.collaborative.diagrams.dto.InvokeSingleClickOnDiagramElementToolInput#selectedObjectId has been replaced by the attribute variables of type List<ToolVariable>

    • #3437 [core] Migrate frontend to MUI 5, if you contributed React componenent that use MUI, you should upgrade them to use MUI 5.

    • #2204 [core] Added getStyledLabel in IDefaultLabelService and IObjectService, you must implement this method if you have custom implementation of these interface.

    • #3815 [core] Make child creation descriptions locale independent

    • #3976 [core] Remove the configuration object used to create representation event processors.

The ids used to create a subscription is also changed, refer to [ADR-159] for more details on how to migrate existing API.

Dependency update

  • [releng] Switch to maven-checkstyle-plugin 3.4.0

  • [releng] Switch to Spring Boot 3.3.1

  • [releng] Add a dependency to CycloneDX to compute the software bill of materials during the build

  • #3437 [core] Migrate frontend to MUI 5

  • #3392 [diagram] Add a dependency to pathfinding

Bug fixes

  • #3767 [diagram] Improves the robustness of the arrange all

  • #3784 [sirius-web] Fix the click on a representation which is already selected in the explorer.

  • #2759 [diagram] Reactivate the Selection Dialog

  • #3766 [sirius-web] Fix a potential NPE in RewriteProxiesEventHandler#rewriteProxyURIs

  • #3808 [tree] Fix interactions with TreeItemContextMenu modal

  • #3811 [forms] Fix issue with Reference widget not working when placed in a flexbox container

  • #3776 [tree] Restore expand all functionality for ref widget trees

  • #3824 [core] Fix representation migration participant execution which was failing when there were many representation migration participant to apply.

  • #3851 [tree] Fix an issue where the tree filters menu items were not displayed anymore after a click on the filters menu.

  • #3849 [form] Fix the tree representation in form support the display of the same referenced element many times in the tree.

  • #3878 [diagram] Unmount ReactFlowProvider after layout

  • #3869 [form] Close form-based views when the underlying element no longer exists.

  • #3899 [diagram] Fix an issue when using alt-tab shortcut and trying to drag a node afterwards

  • #3911 [diagram] Fix overflow issue with labels, ensuring proper wrapping and ellipsis.

  • #3933 [vs-code] Fix explorer in vscode extension

  • #3920 [form] Fix DateTime widget default style not set

  • #3934 [diagram] Remove helper lines when moving pinned elements

  • #3907 [diagram] Fix bad state update in handleNodesChange

  • #4079 [sirius-web] Fix a warning in the console when closing the project’s context menu

New Features

  • #3748 [diagram] Store current diagram payload in DiagramContext

  • #3578 [form] Store property and form payload in a context

  • #3821 [sirius-web] Allow to filter resources in RewriteProxiesEventHandler. Introduce new IRewriteProxiesResourceFilter interface, to register resource filter for RewriteProxiesEventHandler.

  • #3570 [diagram] Add max width expression in the View DSL for labels

  • #2204 [core] Added getStyledLabel in IDefaultLabelService and IObjectService that can be used to display styled string in the explorer for example.

    StyledString

  • #3963 [core] Add support for optional GraphQLCodeRegistry post-processing/transformation.

Improvements

  • #3744 [diagram] Add support for helper lines during multi selection move

  • #3770 [diagram] Enable helper lines by default

  • #3756 [sirius-web] Add an extension point to contribute custom footer

  • #3702 [sirius-web] Improve the extensibility of the navigation bar menu by giving consumers of Sirius Web the ability to add new menu entries

  • #3675 [core] Remove the label from the selection entry. + It also introduces a new hook to retrieve representation metadata

  • #1470 [view] Add EKeys to containment references in view metamodels. The ID of description was previously computed using the URI of the view description, which included its index in its containment reference, meaning that the ID wasn’t stable if the view was updated. The new implementation still uses URIs, but URIs now have the following pattern: //@descriptions[name='Form'], which doesn’t rely on the index anymore.

  • #3778 [diagram] Export EdgeData in sirius-components-diagrams/src/index.ts

  • #3755 [sirius-web] Move code related to Sirius Web form based views out of Sirius Components. Thanks to this change, the various form based representations (details, related elements, representations, etc) can now have dedicated features such as specific inputs or additional payloads for their subscriptions.

  • #3794 [view] In diagram view DSL, NodeLabelStyle#showIcon has been change to NodeLabelStyle#showIconExpression, allowing to dynamically change this style option depending on a condition evaluated at runtime. A migration participant has been added to automatically keep compatible all diagram descriptions created before 2024.9.0.

  • #3774 [sirius-web] Add an extension point to contribute custom tools to the diagram palette

  • #3785 [sirius-web] Add an extension point to contribute custom tree item menu entry

  • #3782 [sirius-web] Add an extension point to contribute custom widgets

  • #3801 Add an equivalent of IViewDiagramDescriptionSearchService for Form descriptions

  • #3550 [sirius-web] Add an extension point to contribute setting pages

  • #3776 [tree] Remove unwanted dependency from the reference widget in the explorer

  • #3777 [sirius-web] Add support for any kind of object as semantic element in the tree representation

  • #3392 [diagram] Prevent edge from passing through another node

  • #3763 [diagram] Split the SelectionDialogDescription to prepare the Tree support

  • #3793 [sirius-web] Add mechanism to retrieve the parent object of an element in the tree representation

  • #3880 [sirius-web] Make some tests methods more generic

  • #3834 [deck] Add more variables for DeckDescription

  • #3897 [sirius-web] Improve the search for projects

  • #3902 [core] Move the Help menu entry at the last position (after any contributed entries)

  • #3927 [sirius-web] Make the viewer object configurable

  • #3928 [sirius-web] Derive the read-only state from the project GraphQL query

  • #3932 [forms] Do not display the 'Delete' button (even disabled) for non-deletable lists

  • #3951 [sirius-web] Provide an error page to redirect users in case of error

  • #3974 [diagram] Add support for < and > to trigger direct edit

v2024.7.0

Shapes

  • Add support for text alignment on labels

  • Add support for gantt representation

Architectural decision records

  • [ADR-151] Improve Diagram Subscription Lifecycle

Deprecation warning

  • #3634 All the existing parts of the API used to contribute custom nodes with nodeLayoutHandlers, nodeConverters and nodeTypeContributions will be migrated soon to leverage the extension registry. The signature of the types to implement should not change but the way they are contributed will.

Breaking changes

  • #3562 [sirius-web] Update displayed default model creation action. + Projects that have a nature and need the action to create an empty model will need to register the empty model action like it is done in StudioEditingContextActionProvider.

  • #3553 [core] Remove the concepts RepresentationContext, RepresentationContextProvider and their types which were used to contribute representations for the Sirius Components workbench in favor of an API based on the extension registry. This is one of the first existing API used to extend Sirius Web deprecated in favor of the new extension registry. More existing APIs will be migrated to this new common pattern.

  • #3597 [core] IRepresentationEventProcessorFactory, IRepresentationEventProcessor and IEditingContextEventProcessor change to the signature of the methods in order to create RepresentationEventProcessor without the need of Class<T> representationEventProcessorClass to :

    • boolean canHandle(IRepresentationConfiguration configuration);

    • Optional<IRepresentationEventProcessor> createRepresentationEventProcessor(IRepresentationConfiguration configuration, IEditingContext editingContext);

    • public Optional<IRepresentationEventProcessor> acquireRepresentationEventProcessor(IRepresentationConfiguration configuration, IInput input);

    • Flux<IPayload> getSubscription(String editingContextId, IRepresentationConfiguration representationConfiguration, IInput input);

  • #3623 [form] Remove IWidgetSubscriptionManagerFactory

  • #3634 [sirius-web] Remove GraphQLNodeStyleFragment from NodeTypeRegistry, you can specify additional fields to be retreived by the subscription using the DocumentTransform GraphQL API and the apolloClientOptionsConfigurersExtensionPoint extension point

  • #3641 [core] IRepresentationMetadataProvider now defined a single method Optional<RepresentationMetadata> getMetadata(String representationId) instead of separate canHandle and handle methods.

  • #3684 [form, tree] Remove the existing mechanisms used to contribute instances of FormConverter and TreeConverter

  • #3859 [view] View builders has been grouped in dedicated packages

Dependency update

  • #3510 [releng] Switch to Spring Boot 3.2.5

  • [releng] Switch to @apollo/client 3.10.4

  • [releng] Switch to graphql 16.8.1

  • [releng] Switch to vite 5.2.11, vitest 1.6.0, @vitest/coverage-v8 1.6.0 and @vitejs/plugin-react 4.3.0

  • [releng] Switch to @types/node 20.12.12

  • [releng] Switch to typescript 5.4.5

  • [releng] Switch to turbo 1.13.3

  • [releng] Switch to jacoco 0.8.12

  • [releng] Switch to maven-checkstyle-plugin 3.3.1

  • [releng] Remove the dependency to reflect-metadata

  • [releng] Switch to subscriptions-transport-ws 0.11.0

  • [releng] Switch to EMF Json 2.3.12

  • #3523 [gantt] Move to @ObeoNetwork/gantt-task-react 0.4.19 to benefit for enhancements

Bug fixes

  • #3515 [form] Form pages appear in the addition order

  • #2981 [diagram] Fix a warning when an edge was hidden

  • #3517 [diagram] Prevent edge path for rotatable border node to be inconsistent

  • #2908 [diagram] Homogenize delete icon

  • #3485 [diagram] Add a validation error message when background value is missing

  • #3480 [diagram] Fix an error that prevents border color to be properly applied

  • #3538 [form] Register the Details view description in the editing context

  • #3575 [core] Restore support for studio palette colors

  • #3582 [tree] Restore the initial direct edit tree item label for the explorer

  • #3611 [diagram] Fix missing creation tool image in the contextual palette

  • #3628 [sirius-web] Restore support for expand all and reveal in the explorer

  • #3616 [diagram] Fix potential exceptions due to duplicate keys in diagram event processing

  • #3624 [diagram] Fix an issue where the header separator does not fill the entire width of the node

  • #3531 [diagram] Fix unnecessary edges label re render

  • #3650 [diagram] Fix potential NPE in DiagramNavigator and Node toString method

  • #3649 [sirius-web] Restore support for Related elements view icons

  • #3630 [sirius-web] Restore support for the deletion of dangling representations

  • #3666 [core] Enable EMF’s intrinsicIDToEObjectMap for JSON resources to support languages which use modeled identifiers (e.g. SysMLv2).

  • #3664 [core] The Default.svg image is no longer displayed with the new architecture.

  • #3693 [view] Fix the computation of the candidates for the ReferenceWidget.

  • #3716 [forms] Fix an issue causing some icons of the reference widget to be missing

  • #3672 [forms] Fix an issue preventing the deletion of a list item

  • #3589 [diagram] Add missing migration participant for diagram representation

  • #3668 [diagram] Fix an issue that would cause wrapped label to overflow its container

  • #3709 [domain] Add a conditional edge style for containment references

  • #3722 [sirius-web] Fix reference widget registration

  • #3711 [diagram] Fix an issue that prevent filter elements button to be in read-only mode

  • #3710 [portal] Fix an error raised by switching mode on portal

  • #3700 [diagram] Prevent edge selection from being lost after a diagram refresh

  • #3690 [diagram] Prevent node overlap check from being triggered on border nodes during arrange-all

  • #3691 [diagram] Prevent border nodes from overlapping after the first layout

New Features

  • #3466 [gantt] Persist the gantt table columns

  • #3447 [view] Add support for For construct in the operations DSL

  • #3526 [diagram] Add support for text alignment on node labels

  • #3550 [core] Add ExtensionRegistry merge strategy

  • #3563 [sirius-web] Improve NavigationBar extensibility to allow the contribution of components on the left and right of the navigation bar.

  • #3344 [core] Add support for reloading representations from the database

  • #3553 [core] Add RepresentationFactory extension point

  • #3587 [sirius-web] Add an extension point to contribute new project cards

  • #3614 [core] Add the ability to contribute additional payloads to representation subscriptions

  • #3429 [diagram] Add a diagram filter dialog in the diagram panel. This dialog presents diagram elements in a tree and allows to select them and update their visibility and status (e.g. hide, show, collapse).

    Diagram Filter View

  • #3523 [gantt] Support rounding dates when changing dates from gantt

  • #3655 [gantt] Support "Delete Task Dependency" tool in gantt

  • #3591 [sirius-web] Add EditProject subtitle extension point

  • #3662 [sirius-web] Add an extension point to contribute props to ReactFlow diagram renderer, contributed props must be memoized

  • #3695 [form] Add an extension point to contribute widget labels decorators

Improvements

  • #3511 [diagram] Improve edge handle position for border nodes

  • #2837 [gantt] Enhance gantt scroll bar management

  • #3441 [gantt] Use a DateTime widget for AbstractTask entity

  • #3539 [diagram] Add editing context variable in diagram delete tool

  • #3529 [diagram] Improve edge path when a layout direction is defined

  • #3489 [diagram] Apply a fit to screen after an arrange all

  • #3548 [core] Avoid costly recomputations in MigrationService

  • #3566 [diagram] Remove draggedNodeIdSelector on nodes to improve performance on large diagrams

  • #3552 [core] Rewrite EObjectIdManager using lower-level code for performance

  • #3555 [core] Avoid costly recomputations in RepresentationMigrationService

  • #3558 [core] Avoid all representation migration overhead when not needed

  • #3595 [core] Avoid re-rendering the workbench when the selection does not really change

  • #3601 [sirius-web] Extract test helper classes to sirius-web-tests

  • #3597 [core] Improve the creation of RepresentationEventProcessor

  • #3544 [diagram] Add missing positions for inside label Inside label positions

  • #3574 [diagram] Add a loading indicator during execution of an arrange-all

  • #3586 [diagram] Fix an issue with keypress listener attached to the palette

  • #3623 [form] Remove unused form payload

  • #3627 [form] Remove unused mutation in form

  • #3606 [test] Improve error handling in ExecuteEditingContextFunctionRunner and ExecuteEditingContextFunctionEventHandler

  • #3561 [diagram] Add support for background and border on diagram labels

  • #3604 [diagram] Make node overlap resolution faster during "Arrange All"

  • #3653 [gantt] Add documentation for gantt representation

  • #3634 [sirius-web] Simplifying the contribution to the GraphQL subscription of the diagram for custom nodes

  • #3656 [core] Add the ability to customize the GraphQL type resolver

  • #3645 [core] Revert earlier change made in #3595 which caused regressions

  • #3651 [diagram] Improve performances when interacting with the diagram, especially when dragging a node

  • #3641 [core] Do not fetch representation content when we only need the metadata

  • #3589 [diagram] Add the ability to limit the direction of resize for a node

  • #3706 [sirius-web] Add some documentation explaining how to change the maximum size allowed for uploaded files. The error messages displayed in case of an error while uploading a file have been uploaded to mention that the file may be too large since it can be a common error. We cannot rely on the error message recaived from the backend since Cross Origin Resource Sharing may prevent us from seeing both the message and the 413 status code.

  • #3697 [diagram] Improve arrange-all performance by reducing overlap management complexity

  • #3669 [diagram] Add migration participant to hide label borders by default

  • #3684 [form, tree] Replace form & tree converters configurations with dedicated extension points

  • #3701 [domain] Add edge and node tools to domain diagram including creation tools as well as delete and direct edit tools.

  • #3859 [view] Allow name duplication in ecore by grouping builders in dedicated packages

v2024.5.0

Shapes

  • Configurable collapse

  • Add support for EMF models migration

  • Add support for representations migration

  • Add Assertions and Navigators to improve Diagram testability

  • Improve document upload

  • Configurable visibility

  • Create a representation using the content of another representation as input

  • Add support for DateTime widget

Architectural decision records

  • [ADR-139] Add Is Collapsed By Default Expression in NodeDescription entity in the view DSL

  • [ADR-140] Add collapse and expand services

  • [ADR-141] Factorize GraphQL queries in tests

  • [ADR-142] Add report on document upload

  • [ADR-143] Handle documents upload with other formats than JSON and XMI

  • [ADR-144] Add the support for EMF models migration

  • [ADR-145] Add a hook to update nodes in ReactFlow

  • [ADR-146] Add support for contributing representation metadata for transient representations

  • [ADR-147] Add support for overlapping nodes

  • [ADR-148] Improve edge layout

  • [ADR-149] Add Default Visibility Fields in View DSL

  • [ADR-150] Add hide/reveal/fade/unfade services

Deprecation warning

  • #3279 Starting with Sirius Web 2024.5.0, every maven modules used by sirius-web-sample-application in the sirius-web package will be deprecated including sirius-web-sample-application. This includes maven modules such as sirius-web-persistence, sirius-web-services, sirius-web-graphql among others. They will be replaced by the maven modules of the new architecture used by sirius-web. The removal of those deprecated modules will occur during the iteration 2024.9.0.

Breaking changes

  • #3271 [test] Move IGraphQLRequestor to org.eclipse.sirius.components.graphql.tests.api.

  • #3088 [diagram] Some changes have been made in the View DSL for diagram:

    • attribute labelExpression has been renamed to centerLabelExpression for edges

    • attribute labelExpression has been removed from NodeDescription in favor of InsideLabelDescription

      For further information, please refer to ADR 130_add_support_for_outside_inside_node_labels.adoc

  • #3237 [diagram] Update the name of the diagramEvent variable to diagramEvents to reflect that events are now stored in a list.

  • #2567 [form] The Slider widget is now a standard widget

  • #2567 [form] The TypeScript API used to contribute custom widgets has changed a little to fix some types which could not work in a strict TypeScript environment. The use of generics has thus been greatly reduced since they could not create a set of coherent TypeScript type signatures.

  • #3279 [core] Remove IRepresentationRefreshPolicyRegistry#add since it can easily be replaced with a plain old Spring service dependency injection

  • #3279 [core] Remove the field EditingContext#stereotypeDescriptions from core.graphqls since it is not provided by Sirius Components and only used by Sirius Web

  • #3279 [core] Remove all references to the Stereotype API from sirius-components-core since it has always been a Sirius Web API. This will make the dependency to the old Sirius Web architecture more explicit.

  • #3279 [sirius-web] Simplify the lifecycle and API of the documentation creation in order to provide a simpler yet more powerful API for the new architecture

  • #3279 [sirius-web] The custom nodes project and its edit project have been renamed from sirius-web-customnodes{-edit} to sirius-components-view-diagram-customnodes{-edit} and moved to match other view based projects. They are also now used by the view builder code generator.

  • #3382 [diagram] Remove the hardcoded show/hide tools in the frontend and move it to the backend. Specifiers now need to manually add the hide tools they want in their node/edge palette. New default implementations are available in DefaultToolsFactory to ease the migration.

  • #3304 [core] The ISemanticRepresentation interface has been removed. Its single method, getTargetObjectId, has been moved up into the main IRepresentation interface. For representations which were not ISemanticRepresentation before, their target object is the IEditingContext itself if nothing more relevant is available. Accordingly, IObjectSearchService and IIdentityService now handle actual IEditingContext instances as objects.

  • #3425 [diagram] In our GraphQL schema, DiagramDescription must now declare an ArrangeLayoutDirection.

  • #2655 [diagram] Add optional calculateCustomNodeEdgeHandlePosition method to INodeLayoutHandler.

  • #3456 [diagram] ConnectionTargetHandle now expects isHovered props for custom nodes

  • #3391 [diagram] Some changes have been made in the View DSL for diagram:

    • super types style has been removed from NodeStyleDescription

    • attribute background has been added to RectangularNodeStyleDescription and IconLabelNodeStyleDescription

Dependency update

  • Move to docker compose v2 for our GitHub Actions workflow.

  • [test] Switch to ArchUnit 1.3.0 to restore architectural tests which were failing recently

Bug fixes

  • #3183 [diagram] Fix an issue in which an edge between a child and its parent passed entirely through the child.

  • #3287 [form] The label sent with the form refreshed event payload is the representation name, not the always the FormRepresentationDescription#titleExpression

  • #3290 [diagram] Fix an issue that prevent the group palette to be displayed if only list children are selected.

  • #3018 [gantt] Fix reference widgets for AbstractTask Details

  • #3298 [diagram] Fix an issue in which the diagram had unnecessary rendering

  • #3317 [diagram] Fix an issue that caused a crash when selection changes were made too quickly

  • #3269 [diagram] Disable node drag and drop during multi selection

  • #3352 [diagram] Fix an issue that prevents pinned elements from being unpinned unintentionally

  • #3301 [diagram] Fix an issue that caused direct edit to fail if a node didn’t have an inside label.

  • #3373 [diagram] Fix potential IllegalArgumentException with non uuid shape.

  • #3383 [diagram] Fix an issue where the first resizing after node creation was not persisted.

  • #3411 [diagram] Fix an issue that prevents border node to be move if AreChildNodesDraggableExpression is false

  • #3416 [explorer] Add a tooltip for Filter menu in Explorer view.

  • #3420 [diagram] Fix an issue that prevents position reset after a rejected drag&drop.

  • #3422 [diagram] Fix an issue that prevents element not present on diagram to be selected on first click.

  • #3407 [diagram] Fix performance issue during node drag.

  • #3424 [emf] Fix wrong document migration data when creating a document.

  • #3443 [diagram] Prevent outside label to be truncated.

  • #3440 [diagram] Prevent a border node losing its position after being moved to another border

  • #3214 [vscode] Apply theme colors in the VS Code extension.

  • #3472 [diagram] Prevent arrange-all action to mark nodes as resizedByUser.

  • #3474 [diagram] Prevent the border of the last compartment of a list node from being visible when the node is hidden

  • #3477 [diagram] Prevent dropNode mutation to be send when dropping from the diagram to the diagram

  • #3493 [diagram] Prevent child node to be outside its parent after an arrange all

New Features

  • #3271 [test] Factorize GraphQL queries used in tests. 4 new projects have been created to store GraphQL queries, mutations, and subscription runners: sirius-components-graphql-tests, sirius-components-trees-tests, sirius-components-portals-tests, sirius-web-tests. sirius-components-forms-tests and sirius-components-diagrams-tests now both contain GraphQL queries related to forms and diagrams.

  • #3236 [view] Add a new expression in NodeDescription to specify whether a node is collapsed by default.

  • #3236 [diagram] Add a new predicate in NodeDescription to specify whether a node is collapsed by default.

  • #3163 [gantt] Add support for task drag&drop in task table.

  • #3088 [diagram] Add the support for inside/outside labels. In this first version, the only available positions top_center for inside label en bottom_center for outside label.

    Isinde outside label example

  • #3237 [diagram] Add a DiagramServices class containing services to expand and collapse nodes from AQL expressions (via the new diagramServices variable) and Java services.

  • #3282 [diagram] Add diagram assertions and navigators to ease the definition of diagram tests.

  • #3277 [gantt] Add support for dependency creation

  • #3371 [view] Add new expressions in NodeDescription to specify whether a node is hidden/faded/normal by default.

  • #3371 [diagram] Add new predicates in NodeDescription to specify whether a node is hidden/faded/normal by default.

  • #3372 [diagram] Add services in DiagramServices to hide, reveal, fade, and unfade nodes from AQL expressions and Java services.

  • #2839 [gantt] Add support for persisting task expand/collapse state

  • #3333 [emf] Add support for the migration of semantic data

  • #3382 [diagram] Add a tool section in Node and Edge palettes with tools to hide/show/reset elements and their children.

  • #3135 [diagram] Add new overflow strategies for node label : wrap and ellipsis

  • #3425 [diagram] Make the direction applied during arrangeAll configurable.

  • #3354 [diagram] Add support for overlapping nodes in arrangeAll and distribute elements

  • #3389 [form] Add support for DateTime widget

  • #3307 [representation] Add support for the migration of representation

  • #3503 [tree] Add tree item renaming support to the new architecture

Improvements

  • #3279 [sirius-web] Improve the new architecture to reach feature partity with the old one

  • #2567 [form] Fix the inconsistency in the typing of the custom widget API

  • #3279 [validation] Multiple instances of IValidationService are now supported in the new architecture

  • #3279 [gantt] The expressions TaskDescription#startTimeExpression and TaskDescription#endTimeExpression can now both accept String values as a result if those values can be parsed by java.timeInstant#parse. They still support returning an java.time.Instant object directly.

  • #3309 [diagram] Hide header border-bottom when the node is collapsed

  • #3285 [diagram] Make the icons in the diagram palette use the default color of Sirius Web theme

  • #3312 [form] Make the details view more compact

  • #3349 [diagram] Add a default label when creating a NodeDescription

  • #3342 [deck] Update deck and gantt view metamodel and deck view examples

  • #3346 [workbench] Make the Explorer panel wider by default.

  • #3313 [core] Avoid sending events for no-op updates of domain objects

  • #3362 [diagram] Ignore edge during multi-selection to apply distribution tools on nodes

  • #3360 [sirius-web] Handle documents upload with other formats than JSON and XMI.

  • #3376 [diagram] Prevent getToolSection to be called during multi-selection

  • #3377 [diagram] Only synchronize selection with explorer at the end of the process

  • #3359 [sirius-web] Add report on document upload

  • #3405 [diagram] Display layout tools vertically in group palette

  • #3333 [emf] Store the last migration performed in a document

  • #3409 [diagram] Make border node movement smoother

  • #3279 [sirius-web] Restore support for project images

  • #3279 [core] Image URLs are now sanitized in a similar manner in all datafetchers, as a result absolute URLs to external images are better supported and a leading slash is now required anymore.

  • #3296 [diagram] Add a hook useStore to retrieve local setNodes, setEdges, onEdgesChange and onNodesChange, this hook is used to align how nodes and edges are manipulated during processing of ReactFlow events.

  • #3397 [diagram] Add helper lines when resizing nodes

  • #2655 [diagram] Add calculateCustomNodeEdgeHandlePosition method to position edge handles according to the real layout of the custom node

  • #3456 [diagram] Fix an issue that were causing a large delay when opening a diagram, creating an edge or reconnecting an edge

  • #3391 [diagram] Accept gradient for node background

  • #3435 [diagram] Extract diagram style from useDropNode

  • #3453 [diagram] Memoizing edges and nodes style

  • #3450 [diagram] Add calculateCustomNodeBorderNodePosition method to position border nodes according to the real layout of the custom node

  • #3460 [diagram] Use arrange layout direction properties during edge handle position computing

  • #3366 [gantt] Trigger the zoom on Ctrl+MouseWheel

v2024.3.0

Shapes

  • Transform Sirius Web into an extensible platform

  • Facilitate the insertion of elements into a list node

  • Add support to filter elements on a diagram

  • Add filters on the explorer view

  • Add support for overflow label strategies

  • Improves resizing support for list nodes

Architectural decision records

  • [ADR-126] Add the ability to reuse both the Sirius Web frontend and backend easily

  • [ADR-127] Add the ability to extend the Sirius Web frontend

  • [ADR-128] Add the ability to extend the Sirius Web backend

  • [ADR-129] Add support for confirmation dialogs

  • [ADR-130] Add support for outside and inside node labels

  • [ADR-131] Add more filtering capabilities on diagram

  • [ADR-132] Add support for filters in Explorer View

  • [ADR-133] Add Tree Widget to the View DSL

  • [ADR-134] Split IObjectService in multiples sub services

  • [ADR-135] Add support for representations in object related services

  • [ADR-136] Add variables to the view form dsl

  • [ADR-137] Use a common identification strategy for transient representations

  • [ADR-138] Allow consumers to reuse smaller parts of the Sirius Web backend

Deprecation warning

  • The type RenameProjectSuccessPayload and DeletedProjectSuccessPayload will be replaced by SuccessPayload

  • The type DeleteRepresentationSuccessPayload will be replaced by SuccessPayload

  • The mutation createRepresentation and deleteRepresentation and their datafetcher will be entirely managed by Sirius Components

  • The interface IEditingContextEPackageService should be deleted since we now have access to editing context preprocessors which can be used to contribute packages to editing context and even more.

  • Remove the image for resources from sirius-components-compatibility and org.eclipse.sirius.components.compatibility.services.ImageConstants.

Breaking changes

  • #3010 [form] The reference widget has been updated. On backend side, clickHandler has been removed from ReferenceValue. itemClickHandlerProvider has been removed from ReferenceWidgetDescription. EventHandler & DataFetcher on widget reference item click action have also been deleted. The reference widget graphql schema and the frontend have been updated accordingly.

  • #2822 [diagram] The GraphQL type Edge must now implement labelEditable boolean field.

  • #2783 [diagram] Remove the package sirius-components-diagrams containing the Sprotty based implementation of our diagrams

  • #2783 [diagram] Rename the package sirius-components-diagrams-reactflow to sirius-components-diagrams since we only have one implementation now

  • #2783 [diagram] Remove the modules sirius-components-diagrams-layout-api and sirius-components-diagrams-layout in favor of the frontend based layout API. As a result, all the APIs relying on this code have been deleted too such as the dead code used to export diagrams on the server or the API for parametric SVGs which was replaced in Reactflow based diagrams.

  • #3020 [sirius-web] Remove the component Views and its dependencies in favor of a more straightforward API.

  • #2823 [diagram] Some changes have been made for node layout, there may be an impact on the custom node.

    • getNodeOrMinWidth and getNodeOrMinHeight have been renamed getDefaultOrMinWidth and getDefaultOrMinHeight.

    • computePreviousSize no longer returns {0,0} when it’s a new node but its default size.

  • #2606 [diagram] Add the attributes topGap and bottomGap to graphql ListLayoutStrategy.

  • #3042 [core] IObjectService have been divided in smaller API IContentService, IObjectSearchService, IIdentityService and ILabelService. If you used the default implementation of IObjectService you can still use it to retrieve the default implementation of the new services. Yet we are recommending using each individual services since this aggregated one may be deprecated in the future. If you want to add your own custom behavior, please use the new services, see the related ADR for more details.

  • #3066 [core] IObjectSearchService, IIdentityService, ILabelService now can also find/resolve representations. This changes a core assumption from before where an element known to those services (i.e. an element for which IIdentityService.getId returned a non-null value) was a "semantic element" and thus could not be a representation.

  • #3021 [sirius-web] Remove the interfaces IRepresentationDescriptionRegistry and IRepresentationDescriptionRegistryConfigurer to replace them with IEditingContextRepresentationDescriptionProvider which provides the same feature but also gives access to the editing context for conditional registration of representation descriptions. This new interface will move in the near future from sirius-components-core to sirius-web-application. It’s current location is only there to simplify the transition to the new Sirius Web architecture.

  • #3021 [sirius-web] Make the ISuggestedRootObjectTypesProvider optional in sirius-components-emf in order to be able to reuse this maven module without the Sirius Desktop compatibility one.

  • #3019 [emf] Remove the dependency from sirius-components-emf to the validation representation. Reusing the EMF compatibility layer will not add any dependency to specific representations. The EMF validation support will now be provided by sirius-web-services.

  • #3156 [core] In our GraphQL schema, Viewer is now a type instead of an interface. Having Viewer as a type did not bring any additional value and it created some overhead by having to create and keep updated an additional type without any benefit.

  • [sirius-web] The field ChangeKind.PROJECT_RENAMING has been deleted since it does not make any sense in Sirius Components.

  • #2713 [diagram] Add the attribute growableNodeIds to graphql ListLayoutStrategy.

  • #3019 [core] Add CoreImageConstants.DEFAULT_SVG to retrieve the default svg image from sirius-components-core instead of the now deleted ImageConstants.DEFAULT_SVG from sirius-components-compatibility

  • #3019 [core] Move the WidgetIdProvider from sirius-components-compatibility to sirius-components-forms to remove unnecessary dependencies to the Sirius Desktop compatibility layer.

  • #3019 [core] Move the EMF based default description of the details view from sirius-components-compatibility-emf to sirius-components-emf-forms since there are no dependency between the default description of the details view and the Sirius Desktop compatibility layer.

  • #3096 [tree] TreeConfiguration has a new parameter List<String> activeFilterIds.

  • #3019 [form] Allow consumers of Sirius Components to reuse the reference widget without the form description editor or the view DSL.

  • #3246 [view] Remove representation specific code from ViewRepresentationDescriptionSearchService

  • #3250 [form] Change the base package of the reference widget from org.eclipse.sirius.components.widgets.reference to org.eclipse.sirius.components.widgets.reference.view

  • #3303 [core] The identifiers for all transient representations have changed. They are now more uniform and more importantly clearly distinct from persisted representations (which all use plain UUIDs):

    • Explorer: explorer://?expandedIds=[…​]&activeFilterIds=[…​]

    • Details: details://?objectIds=[…​]

    • Validation: validation://

    • RelatedElements: relatedElements://?objectIds=[…​]

    • Representations: representations://?objectIds=[…​]

    • Selection: selection://

Dependency update

  • #2783 [diagram] Remove our dependency to Sprotty and Snabbdom

  • #3105 [deck] Move to @ObeoNetwork/react-trello 2.4.11 to avoid warnings because of react-redux depending on react 16.

  • #2785 [gantt] Move to @ObeoNetwork/gantt-task-react 0.4.5 to remove dependency to react-redux

Bug fixes

  • #2984 [deck] Handle successPayload messages in Deck representation.

  • #2666 [formdescriptioneditors] Change widget reference preview to match its new look.

  • #3004 [deck] Fix some of the console errors

  • #2799 [diagram] Remove the unwanted space between the header and first element in list node

  • #2822 [diagram] Prevent direct edit to be triggered on edge if there is no edit label tool corresponding

  • #3061 [form] Ensure Forms are always refreshed using the current version of their target element

  • #3052 [diagram] Fix an issue that prevented user from reconnecting an edge.

  • #3030 [diagram] Fix the position of the palette when multiple diagrams are open at the same time (e.g. inside a portal)

  • #2823 [diagram] Fix an issue that prevents nodes from being resized smaller than their default size.

  • #3063 [selection] Ensure Selections are always refreshed using the current version of their target element

  • #2721 [diagram] Prevent labels to exceed their container

  • #3100 [diagram] Add support for drop on IconLabelNode

  • #3124 [diagram] Fix an issue that prevents manual line break in node label

  • #3127 [diagram] Fix an issue with handles position

  • #3143 [diagram] Fix an issue where the default icon was consistently being used for EdgeTool The implemented fix does not allow to evaluate an AQL expression, but only to retrieve a static value.

  • #3166 [diagram] Fix an issue where label edit tool did nothing on nodes with outside label.

  • #1707 [diagram] Fix an issue where changing cursor position through a click while editing a tree item label lead to the end of the edition.

  • #2825 [diagram] Fix an issue where a click on the text during direct edit opened the palette instead of change the caret position.

  • #3185 [diagram] Fix an issue where child nodes were used in helper lines computation of container.

  • #3149 [diagram] Fix an issue where newly created border nodes could overlap existing one

  • #3217 [diagram] Prevent helper lines to be displayed on moving a pinned node

  • #3215 [vscode] Fix an issue where it was impossible to delete elements on a diagram from the VSCode extension.

  • #3208 [form] Fix an issue with splitbutton default style in form editor

  • #3235 [diagram] Fix an issue where group palette and element palette could be both displayed on edges.

  • #3035 [diagram] Fix an issue where diagram palette and element palette could be both displayed.

  • #3044 [diagram] Fix an issue that caused the selection between the diagram and the explorer to be desynchronized

  • #2956 [diagram] Fix an issue where diagram performance were degraded over time when moving elements.

  • #3228 [diagram] Fix an issue where list child could be moved outside its container

  • #3206 [diagram] Fix an issue where precondition on tool was not respected during palette creation

  • #3257 [diagram] Fix an issue that caused an infinite loop when selecting elements with shift.

  • #3239 [form] Add missing reference widget view builder

  • #3265 [diagram] Fix an error on console when moving a node with an opened palette

  • #3499 [portal] Fix label positioning in portal representation

New Features

  • #3010 [form] Reference widget has been updated. Its body operations are now bind on set/add instead of click.

  • #2942 [deck] Add the Card Drag and Drop capability in the Deck representation.

  • #3024 [sirius-web] Add a new Papaya example diagram Deployment Diagram that will allow us to test border nodes

    Deployment Diagram

    Deployment Diagram

  • #3015 [deck] Add the Lane Selection and Direct edit capability.

  • #3033 [deck] Add the Lane Drag and Drop capability.

  • #2606 [diagram] Add the possibility to insert free space before or after elements in list layouted node

  • #3045 [deck] Make it possible to collapse lanes in the Deck representation.

  • #2841 [diagram] Add the support for read-only diagram. In read-only mode, the palette can not be displayed, some of the panel action are disabled, a node cannot be moved or be resized.

  • #3042 [core] IObjectService have been divided in smaller services IContentService, IObjectSearchService, IIdentityService and ILabelService, see the related ADR for more details.

  • #3089 [sirius-web] Add confirmation dialog on delete.

    Deletion Confirmation Dialog

  • #3087 [deck] Add the Zoom, Full Screen and Fit to screen actions.

  • #3101 [deck] Add a Lane context menu to hide/reveal cards in Deck

  • #3081 [forms] TreeWidget has been added in forms model.

  • #3083 [forms] Add support for icons at the end of a tree item label.

  • #3082 [forms] Add checkbox support for tree widget.

  • #3133 [deck] Add OKR and Kanban samples in the Task template and Deck view stereotype.

  • #3145 [diagram] Add support for helper lines to facilitate the alignment of nodes with each other.

  • #3084 [form] Add SplitButton Widget.

  • #3193 [form] Allow the use of custom variables in the VariableManager initialized by the FormDescription.

  • #3193 [core] Added the methods hasVariable(String name) and getParent() in VariableManager to, respectively, detect if a variable manager defines a variable (it returns false, if the variable is defined by a parent VariableManager) and to navigate to a parent VariableManager. Thanks to this capability, a specifier can easily retrieve a variable overriden by a child VariableManager.

  • #3096 [tree] Tree representations can now support filters

  • #3158 [diagram] Add a new tool to apply adjust-size on diagram node.

  • #3201 [diagram] Add support for tools on multiple diagram elements selection (hide, fade and pin).

  • #3197 [form] Add the FormVariable concept to the view form DSL. Form variables declared in a form description will thus be added in the FormDescription VariableManager.

  • #3198 [form] Add a new variable, variableManager, in most interpreted expressions of the form DSL.

  • #3243 [diagram] Add tools to help manual layout on multiple elements

  • #2999 [formdescriptioneditor] Add the support for read-only Form Description Editors.

  • #3253 [diagram] Add a new tool to apply same size on multiple nodes

Improvements

  • #2775 [gantt] Handle TypeScript strict mode for Gantt module

  • #2975 [diagram] Fix issues with ReactFlow pane events that were slowing down the application.

  • #2988 [diagram] Fix an issue with ReactFlow OnNodesChange event that were slowing down the application.

  • #2978 [diagram] Fix issues with ReactFlow edge and drag events that were slowing down the application.

  • #3000 [portal] Portals which already contain representation now open in "direct" mode.

  • #2875 [forms] Make the Representations view a plain FormBasedView

  • #2732 [diagram] Add missing support for feedback messages on tool action.

  • #3020 [sirius-web] Simplify the code used to update the navigation bar menu and icon.

  • #3024 [diagram] Added two new variables semanticEdgeSource and graphicalEdgeSource to compute the target nodes of an edge.

  • #3050 [sirius-web] Contributes a first version of the new Sirius Web architecture

  • #1844 [emf] Unload resources by default when the EMF based editing context is disposed

  • #3020 [sirius-web] Improve the creation of the Apollo GraphQL client.

  • #3056 [tree] Expand the clickable/draggable zone for tree items

  • [forms] Avoid creating a new subscription when re-selecting the same element

  • [tree] Avoid sending treePath query if the selection does not actually change

  • [core] Ignore empty changes of kind ChangeKind.NOTHING

  • #3020 [sirius-web] Improve the project browser to make the code more robust

  • #3021 [sirius-web] Leverage the new Spring Boot APIs to create the sirius-web-starter autoconfiguration

  • #3020 [sirius-web] Simplify the contribution of views in the workbench

  • #3066 [core] The core object-related services now can also find/resolve representations.

  • [portal] Use MUI tooltips for Portal toolbar elements

  • #2480 [diagram] Merge the rectangle node and the image node into FreeFormNode.

  • #3079 [deck] Add a name attribute on CardDescription and LaneDescription

  • #3019 [sirius-web] Improve the new architecture to let product builders reuse Sirius Web

  • #3141 [portal] Make the header of embedded representations sticky so that it (and its icon) are always visible.

  • #2713 [diagram] Enhances resize support for list nodes

  • #3120 [deck] Provide styles customization in the Deck representation

  • #3187 [diagram] BorderNode creation now considers the click position to define the border.

    BorderNode creation area

    In other scenarios, the default creation position border remains the eastern one.

  • #2785 [gantt] Add cypress tests

  • #3225 [sirius-web] The confirmation dialog on delete does not propose anymore the option allowing to "Disable this confirmation dialog" when the local storage is not available.

  • #3246 [view] Make the ViewRepresentationDescriptionSearchService independent from specific representations

  • #3220 [deck] Add documentation

  • #3178 [portal] Add documentation for portals

  • #2890 [portal] Display the contents of a Portal in the Representations view

v2024.1.0

Shapes

  • Add support for Portal representation

  • Add support for Gantt representation

  • Add support for Deck representation

  • Add support to pin unpin nodes

Architectural decision records

  • [ADR-122] Use the page object model in integration tests

  • [ADR-123] Improve frontend selection support

  • [ADR-124] Add support for libraries

  • [ADR-125] Provide a common ShareRepresentationModal

Breaking changes

  • #2675 [view] IViewDiagramElementFinder has been updated with new methods. All implementations of this interface must implement these new methods:

    • List<NodeDescription> getNodeDescriptions(); to retrieve all NodeDescriptions created by providers.

    • List<EdgeDescription> getEdgeDescriptions(); to retrieve all EdgeDescriptions created by providers.

  • #2658 [sirius-web] Add dedicated colors for navigation bar in the Sirius Web theme. The theme provided by the user must now provide navigation bar colors:

...
navigationBar: {
  border: 'yellow',
  background: 'blue',
},
...
  • #2669 [sirius-web] Add dedicated colors for selected elements in the Sirius Web theme. The theme provided by the user must now provide selected elements colors:

...
selected: 'gray',
...
  • #2672 [sirius-web] Add dedicated colors for toast messages in Sirius Web theme. The theme provided by the user must now provide toast messages colors:

...
success: {
  main: '#43A047',
  dark: '#327836',
  light: '#4EBA54',
},
warning: {
  main: '#FF9800',
  dark: '#D98200',
  light: '#FFB800',
},
info: {
  main: '#2196F3',
  dark: '#1D7DCC',
  light: '#24A7FF',
},
...
  • #2804 [sirius-web] Add the ability to declare custom nodes while using the sirius-web-application frontend package. A new optional component named DiagramRepresentationConfiguration has been introduced. If you want to add some custom nodes, this new component must be declared under SiriusWebApplication:

const nodeTypeRegistry: NodeTypeRegistry = {
  ...
};
<SiriusWebApplication httpOrigin={httpOrigin} wsOrigin={wsOrigin}>
  <DiagramRepresentationConfiguration nodeTypeRegistry={nodeTypeRegistry} />
</SiriusWebApplication>
  • #2790 [diagram] All handles used to resize a node have been updated to be wider, you can update your custom nodes in the same way it’s done in the EllipseNode example.

  • #2932 The line used to resize a node have been updated to be wider, you can update your custom nodes in the same way it’s done in the EllipseNode example.

  • #2872 [diagram] The GraphQL type DiagramDescription has a new field childNodeDescriptionIds, returning a list of Ids. The GraphQL type NodeDescription has a new field childNodeDescriptionIds, returning a list of Ids and replacing the field childNodeDescriptions which has been deleted. The GraphQL type NodeDescription has a new field borderNodeDescriptionIds, returning a list of Ids and replacing the field borderNodeDescriptions which has been deleted.

  • #2872 [diagram] Change the signature of the node converters in order to leverage the diagram description to resolve the reuse descriptions. Additional changes to this interface will probably occur in the near future in order to support more complex use cases.

  • #2889 [emf] Remove the default implementation of the editing context from the sirius-components-emf module. The default implementation of the editing context for Sirius Web, which had Sirius Web specific code already, will be owned by sirius-web-services. This default implementation will now also contain all the view models properly loaded which should be considered during the lifecycle of the editing context.

  • #2796 [sirius-web] All Flow related configurations have been moved to sirius-components-flow-starter module.

  • #2883 [diagram] Add the attribute resizedByUser to reactflow nodes and graphql nodes.

  • #2926 [sirius-web] A new IEditingContextProcessor has been introduced. It allows to execute operations before/after the load of an IEditingContext in EditingContextSearchService.

  • #2901 [diagram] Added nodeDescription prop to ConnectionTargetHandle component.

Dependency update

  • [releng] The frontend now depends on @ObeoNetwork/gantt-task-react v0.3.13

  • [releng] The frontend now depends on react-trello 2.2.11

  • #2842 Move to @ObeoNetwork/react-trello

  • [releng] Switch to EMFJson 2.3.6-SNAPSHOT

  • [releng] The frontend now depends on elkjs 0.8.2

Bug fixes

  • #2812 [tree] Fix an issue that prevents icon to be displayed in treeNodes.

  • #2580 [diagram] Cancel direct edit on 'Esc'.

  • #2778 [diagram] Authorize empty string for direct edit.

  • #2579 [diagram] Fix the invalid text cursor position when editing a label by typing text directly.

  • #2826 [diagram] Fix invalid reference position used for nodes with a depth superior to 2.

  • #2857 [form] Fix default reference widget bugs. Now, for a multi-valued feature, the values are properly displayed and the delete is properly handled.

  • #2888 [view] Ensure that the retrieval of the view models returns properly loaded models

  • #2797 [diagram] Preserve diagram selection after change in the details view.

  • #2755 [diagram] Ensure that the unfolded tool section is always visible above the rest of the palette

  • #2786 [diagram] Fix an issue where resizing was clunky.

  • #2912 [diagram] Send all requested node descriptions to the frontend when requested.

  • #2678 [diagram] Fix an issue where tools from the diagram palette where not executed.

  • #2943 [view] Fix an issue where the default colors were not applied to sub-nodes and border nodes.

  • #2957 [diagram] Fix an issue where children of custom node lose their position.

  • #2934 [portal] Fix the initial position of representations added into portals

  • #2907 [diagram] Fix an issue on some browsers where a tool could not be executed if the tooltip was visible

  • #2901 [diagram] Fix an issue where the connectionLine could be stuck on invalid nodes.

  • #2940 [diagram] Fix an issue where the diagram palette would render with no tools.

  • #2986 [portal] Prevent a portal from containing itself

New Features

  • #2413 Add a debug mode for React Flow diagrams

  • #2735 [gantt] Contribute the first version of the Gantt representation.

  • #2403 [view] Add support for If and Let constructs in the operations DSL.

  • #1545 [core] The current selection can now be read and set from anywhere using the new useSelection() hook.

  • #2736 [gantt] Add a starter project for beans related to task meta-model.

  • #2819 [deck] Contribute the first version of the Deck representation.

  • #2765 [portal] Contribute the first version of the Portal representation.

  • #2737 [gantt] Support create, edit and delete task in gantt.

  • #2793 [diagram] Add the possibility to pin / unpin nodes.

  • #2883 [diagram] The size of manually resized node does not change anymore, unless it needs to.

    The size of nodes that do not have been resized manually tries to fit the node default size.

  • #2792 [diagram] Add a first version for arrange all support.

  • #2926 [sirius-web] Add a first version of the support for {pre|post}processing of the editing context.

  • #2848 [core] The new ShareRepresentationModal can be used to share the URL of any kind of representation.

Improvements

  • #2675 [view] Improve IViewDiagramElementFinder by adding new methods:

    • List<NodeDescription> getNodeDescriptions(); to retrieve all NodeDescriptions created by providers.

    • List<EdgeDescription> getEdgeDescriptions(); to retrieve all EdgeDescriptions created by providers.

  • #2733 Leverage the page object model to improve out integration tests

  • #2658 [sirius-web] Add dedicated colors for navigation bar in the Sirius Web theme

  • #2669 [sirius-web] Add dedicated colors for selected elements in the Sirius Web theme

  • #2672 [sirius-web] Add dedicated colors for toast messages in the Sirius Web theme

  • #2720 [releng] Improve our build process to be faster in development mode

  • #2780 [releng] Upgrade github/aws actions versions in workflows

  • #2644 [diagram] Highlight nodes on hover in React Flow diagrams

  • #2766 [tree] Tree representations (including the explorer) now support dragging any kind of element (not just semantic elements). It is the responsibility of the drop targets (e.g. a diagram) to validate the dropped element(s) type and ignore the one it does not support.

  • #2772 [diagram] Improve the Palette performance.

  • #2679 [diagram] When editing a label, place input element closer to the label’s location (centered).

  • #2804 [sirius-web] Add the ability to declare custom nodes while using the sirius-web-application frontend package.

  • #2718 Replacing useNodes and useEdges by useReactFlow to improve performances.

  • #2787 [view] Add the ability to customize the icons of the node tools and edge tools in the View DSL.

  • #2784 [performance] Expand monitoring capabilities.

  • #2760 Begin and end label placement of and edge takes into account handle position.

  • #2788 [diagram] Add the possibility to declare child nodes undraggable in ListLayoutStrategy.

  • #2790 [diagram] Increase the size of the handles used to resize a node.

    Old resize handles vs new ones

    Compartment with header without separator

  • #2920 [Deck] Add Cypress integration tests

  • #2849 [diagram] Reduce the time taken to open a diagram

  • #2609 [diagram] Move handles after node move to reduce edges crossing.

  • #2484 [diagram] Split the label concept into three concepts: edge label, inside label and outside label. This is a preliminary work to add some proper support for outside labels in the near future.

  • #2869 [diagram] Add diagramContext variable to accessible variables when computing semantic candidates expression.

  • #2774 [gantt] Rework the gantt representation front-end to follow best practises.

  • #2872 [diagram] Reduce the time needed to retrieve a diagram description, thus leading to reduce the duration of diagrams opening.

  • #2889 [emf] Add the IEMFEditingContext interface in order to let any editing context be an EMF aware one. After this change, we will be able to delete the EditingContext class from sirius-components-emf and add new interfaces to describe the various capabilities of an editing context. Among those capabilities, we should find the list of view models to consider during the lifecycle of the editing context.

  • #2889 [view] Load view models only once during the lifecycle of the editing context. This change makes the editing context the single source of truth for the state of the view models.

  • #2904 [sirius-web] Order candidates in Representations sections in the Onboard Area.

  • #2903 [sirius-web] Order New Representation modal candidates.

  • #2796 [sirius-web] Flow diagram description has been converted to the view DSL.

  • #2910 [portal] Make the initial drop area larger and more visible on empty portals

  • #2932 The line and the handle used to resize a node is now bigger. The handle is now circular. .Old resize handles vs new ones Compartment with header without separator

  • #2948 [portal] Use a "close" icon instead of "delete" icon for the button that removes a representation from a portal (but does not delete the representation).

  • #2792 [diagram] Add support to label and call layout after arrangeAll.

  • #2951 [diagram] Set ConnectionLine color to theme.palette.selected.

  • #2909 [portal] Add support for read-only mode on portals.

  • #2983 [deck] Use the strict mode of TypeScript for the Deck package.

v2023.12.0

Shapes

  • Add support for custom nodes in Diagram representations

  • Add the possibility to specify a size ratio on node.

  • Add support for rotatable border node

  • Improve handles management in React Flow based diagrams

Architectural decision records

  • [ADR-111] Add support for image overlay

  • [ADR-112] Provide only valid view descriptions to the renderer

  • [ADR-113] Add support for multiple IObjectService

  • [ADR-114] Add support for multiple IEditService

  • [ADR-115] Split the Sirius Web frontend

  • [ADR-116] Add support for changing the content of the explorer

  • [ADR-117] Add support for changing the content of the details view

  • [ADR-118] Use dynamic handles to connect edges between nodes

  • [ADR-119] Share layout data between subscribers

  • [ADR-120] Improve the arrange all action with reactflow

  • [ADR-121] Add process before and after input handling

Breaking changes

  • #2386 [form] Reference widget structure has changed, referenceOptions has been removed to be lazily loaded.

  • #2335 [form] The general mutation editReference has been removed from the reference widget. This mutation has been replaced by finer grain mutations:

    • clearReference mutation: to reset the content references (set the value to null for mono-valued references and to an empty list for multi-valued ones).

    • addReferenceValues mutation: to several reference values to a reference (only used with multi-valued references)

    • setReferenceValue mutation: to set the value of mono-valued references

    • removeReferenceValue mutation: to remove a given value from a reference (in case of mono-valued references, this mutation is equivalent to clearReference)

    • createElementInReference mutation: to create a new element (used in the context of a reference widget)

    • moveReferenceValue mutation: to reorder the list of values in multi-valued references

UI is unchanged except that we removed the transactional behavior of the TransferModal component which is now performing operations live. This means that changes are no longer done when the modal is close (using the Apply button) but as soon as the user interacts with elements (adding or removing values, changing order).

  • #2269 [core] The GraphQL field EditingContext#domains has been modified. A new parameter rootDomainsOnly: Boolean has been added, allowing to remove domains not compatible with root objects. For example, Diagram & Form domains are not root domains because DiagramDescription and FormDescription are not root objects valid candidates.

  • #1712 [diagram] The GraphQL type Node must now implement isLabelEditable boolean field.

  • #2456 [sirius-web] The GraphQL field CreateChildSuccessPayload now expects to have a list of messages.

  • #1982 [diagram] Change the diagram structure. The Node’s 'label' attribute has been renamed into 'insideLabel' and its type changed from Label to InsideLabel (which is currently identical to Label except for the name).

  • #2388 [core] The IObjectService.getImagePath API changed and now must return a list containing all the image paths to compose/overlay. Due to this data structure modification, all existing diagrams can no longer be opened.

  • #2460 [form] The reference widget no longer declares a createElementHandlerProvider, this feature is delegated to the new service IReferenceWidgetCreateElementHandler.

  • #2453 [diagram] The GraphQL fields DeleteFromDiagramSuccessPayload, EditLabelSuccessPayload and DropOnDiagramSuccessPayload now expects to have a list of messages.

  • #2514 [diagram] Move and rename the RectangleNodeStyle withHeader attribute to InsideLabel isHeader. It requires to add a isHeaderProvider to the LabelDescription of Node. Replace only for the programmatic API the LabelDescription type in NodeDescription by InsideLabelDescription and add the inside label location. Update the graphql API accordingly.

  • #2444 [form] ViewFormDescriptionConverterSwitch now extends FormSwitch<Optional<AbstractControlDescription>>

  • #2516 [diagram] Add to the diagram core API the possibility to display the header separator when the inside label is a header. It requires to add a displayHeaderSeparatorProvider to the InsideLabelDescription. For the compatibility layer, the separator will always be displayed if the label is inside a node displaying its children has a list. Add the attribute displayHeaderSeparator to the graphql API.

  • #2535 [view] Add the possibility for the header separator to be displayed or hidden in the View DSL.

    Compartment with header without separator

    Compartment with header without separator

  • #2255 [diagram] The properties widthComputationExpression and heightComputationExpression have been removed from NodeStyleDescription. From now on, use the defaultWidthExpression and defaultHeightExpression properties from NodeDescription.

  • #2537 [sirius-web] sirius-web frontend package has been split in two: sirius-web and sirius-web-application. The package sirius-web now depends on sirius-web-application. A new component SiriusWebApplication has been added. Developers who want to create a sirius-web frontend should use this component as their root component. The API of this component will change over time in order to provide additional capabilities. API breaks should be expected.

    Another component, named Views has also been added. This component will allow developers to customize some parts of the Sirius Web views. It will currently provide the ability to customize the application icon and application menu. The API of this component will also change over time so API breaks should be expected in the upcoming releases.

    This new package and those new components are the first part of our work to make Sirius Web more reusable.

  • #2615 [diagram] useDropNode().dropFeedbackStyleProvider has been removed. Use useDropNodeStyle(node.id) instead to get the feedback of the drop feedback.

  • #2671 [diagram] Switch to Reactflow by default. To open a diagram with Sprotty, suffixes the diagram name with __SPROTTY

Dependency update

  • Remove the dependency to elk.js

  • Switch to EMFJson 2.3.5

Bug fixes

  • #2360 [form] Fix an issue that prevents creation of new object on some containment reference with the reference widget.

  • #2456 [form] Fix an issue that prevents creation of new object on mono valued and containment reference when a value is already set with the reference widget.

  • #2269 [view] Fix an issue where it was possible to create a DiagramDescription or a FormDescription as a root object of a resource.

  • #2470 [form] Fix an issue that prevents the removal of a contained reference from the reference widget.

  • #2469 [form] Fix an issue that occurs when navigating from a reference widget to a filtered item in the explorer.

  • #2466 [form] Fix an issue that prevents the selection of an ancestor in the reference widget.

  • #2456 [form] Add a more meaningful message when trying to add a new value to a mono reference not empty.

  • #2487 [form] Fix an issue that prevents an error when using values not in the option list in a reference widget modal transfert.

  • #1712 [diagram] Fix an issue that triggers direct label edition even if there is no corresponding tool. Note that double-clicking no longer triggers a direct edit.

  • #2498 [diagram] Fix an issue that prevents tool name to be displayed on multi lines in react flow diagram palette.

  • #2491 [diagram] Fix an issue where multiple tool section could be opened.

  • #2509 [diagram] Fix an issue that prevents using graphical DnD in deep node in some cases.

  • #2453 [diagram] Add support for feedback messages on following actions: DropOnDiagram, DeleteFromDiagram, ReconnectEdge and EditLabel

  • #2513 [diagram] Fix the double node border displayed when node list was containing compartments.

  • #2532 [diagram] Fix the limitation on borders that prevent movement on all sides of their node parent.

  • #2543 [diagram] Prevent list items being moved to inconsistent positions

  • #2500 [diagram] Selecting an element in the explorer now correctly selects and focuses on the corresponding edge on the current diagram if there is one.

  • #2547 [diagram] Fix a bug where edge labels could be hidden/covered by other nodes

  • #2539 [diagram] Ignore hidden nodes when determining potential drop targets.

  • #2550 [diagram] Palette is now hidden on viewport or zoom change.

  • #2562 [diagram] Prevent a node to be created on the TOP header of its parent. The node will be created below the header.

  • #2562 [diagram] Fix a bug where edges would stop at the new creation handles instead of the border of their target node

  • #2549 [diagram] Prevent the arrange-all to break the layout of node list. It uses our algorithm instead of elk.js to perform the arrange-all.

  • #2591 [diagram] Give the right node descriptions to node convert handlers.

  • #2601 [emf] Fix an issue in EditingContextCrossReferenceAdapter where references to moved objects were lost.

  • #2582 [diagram] Fix a delay in renderer of palette tools between the one from getPalette backend call and the one declared in frontend.

  • #2615 [diagram] Fix the useDropNode lifecycle.

  • #2614 [diagram] Tool sections now correctly remember the last of their tool invoked and default to that.

  • #2593 [diagram] Fix an issue where and edge could be reconnected if not selected after a semantic change.

  • #2624 [diagram] Fix an issue where edge arrows in react flow diagrams were wrongly drawn.

  • #2625 [diagram] Fix the line style computation on edge and border node.

  • #2633 [diagram] Make sure the grid is visible when enabled, even when moving a non-droppable node

  • #2635 [diagram] Fix an error when switching between react flow representations.

  • #2581 [diagram] Fix an issue where nodes created by custom tool are always on the default position.

  • #2642 [diagram] Fix an issue where moving the viewport was slow.

  • #2640 [diagram] Compute the handle position on diagram conversion, which happens every time a diagram refresh payload is received.

  • #2647 [diagram] Split border shorthand CSS properties into non-shorthand properties for list nodes. Make some border node transparent when the node is in a list node in the convert engine.

  • #2646 [diagram] Fix an issue where the palette was re-rendering too much.

  • #2685 [diagram] Fix direct edit of edge labels with F2.

  • #2464 [diagram] Apply the fit-to-screen after the first layout

  • #2703 [diagram] Remove the explorer menu used to export diagrams as SVG image. This menu was using Sprotty export, which has been replaced by ReactFlow by default (see #2671). The only way to export diagram as SVG image is to use the ReactFlow toolbar located at the top left of each diagram.

  • #2706 [diagram] Fix an issue where node children were not correctly positioned.

  • #2687 [diagram] Fix an issue where ConnectionHandles where rerendering too much

  • #2698 [diagram] Fix an issue that prevents imageNode to be resizable.

  • #2684 [diagram] Fix an issue where the edges' arrows where not exported during the SVG export.

  • #2726 [diagram] Fix an issue that prevents last tool used in a tool section to be added to another palette.

  • #2728 [diagram] Prevents unnecessary rerenders in DiagramPanel

  • #2683 [diagram] Hide diagram element palette when the element itself is moved.

  • #2689 [diagram] Fix the borderNode moves that is no longer anchored to its parent.

  • #2682 [diagram] Fix an error in diagram selection that can lead to a node remaining selected in the diagram but not in the explorer.

  • #2605 [diagram] Fix an issue that prevents last node or edge to remain selected if the new selection is not displayed on the diagram.

  • #2919 [diagram] Reset node position if drag and drop fails.

  • #3001 [diagram] Fix an issue that inverse list order after arrangeAll

  • #2982 [diagram] Fix an issue where the drop position on container was invalid.

New Features

  • #2214 [diagram] Add support for borders nodes with React Flow.

  • #2264 [diagram] Add feedback for edge reconnection with React Flow.

  • #288 [diagram] Add support for drag and drop of nodes inside diagrams. The behavior is controlled by the new Drop Node tools defined on the target element, which can be either a node or the diagram itself (when dropping on the diagram’s background).

  • #1982 [diagram] Make the node label non required

  • #2482 [diagram] Add the support for TOP_CENTER inside label location. Other inside label locations will be supported later.

  • #2256 [diagram] Add the possibility to contribute custom shape. See the EllipseNode example and the documentation for more details. Note that the custom shape replaces the parametric SVG, which is deprecated and will be removed in a future version.

  • #2512 [diagram] Add the support for multi-line label in reactflow. That includes the support during the direct edit. The user can use 'shift+enter' to insert a line break.

  • #2522 [diagram] Add the support for rotatable border node.

  • #2255 [diagram] Add the possibility to specify a ratio on node to guarantee its appearance.

  • #2568 [tree] Allow developers to modify the content of the explorer view

  • #2570 [form] Allow developers to modify the content of the details view

  • #2618 [core] Add an API to provide pre-process and post-process around input handling.

Improvements

  • #2386 [form] Reference widget candidates are now lazily loaded when necessary.

  • #2424 [view] Align the format of description id used in Form generated from View with the one used in diagram. As a result, the identifier of a form description created from a view model will not be an UUID anymore but instead an URL based identifier

  • #2335 [form] Change the capabilities of the reference widget to open it to more customization. In order to provide a first version of those capabilities, some additional coupling has been created between the reference widget and its use in Sirius Web which may prevent its use in other applications. This coupling will be removed in the near future as a consequence, the dependencies of this code will change and some APIs of the reference widget will be broken in the near future.

  • #2380 [diagram] Add typing to reactflow hooks

  • #2430 [diagram] Improve fit to screen feature to zoom on selected nodes

  • #2288 [diagram] Make IconLabel a react flow node

  • #2289 [diagram] Use the layout strategy to layout icon label nodes

  • #2410 [diagram] Do a fit to screen on a diagram opening

  • #2268 [diagram] Create child nodes where the user has clicked.

  • #2475 [diagram] Prevent nodes to move each diagram refresh event. Only the size is still updated.

  • #2485 [view] Change the default size of View Node Description from 1x1 to 150x70.

  • #2493 [diagram] Disable double click to zoom in with React Flow.

  • #2388 [core] Added support for image overlay in icons. All icons can now be composed of multiple images, which will be overlayed on top of each other. An example of use has been added on the domain entity items.

  • #2483 [diagram] Take the header into account in the React Flow layout.

  • #2504 [diagram] Create nodes at the cursor position when using create instance or drop tools.

  • #2444 [form] It is now possible to ignore widgets with invalid descriptions

  • #2528 [core] Add support for multiple IObjectService. It is now possible to contribute specific services to interact with domain objects, through IObjectServiceDelegate. The new implementation of IObjectService, named ComposedObjectService, tries first to delegate to the appropriate IObjectServiceDelegate and then fallback to a default behavior from IDefaultObjectService if needed.

  • #2530 [core] Add support for multiple IEditService. It is now possible to contribute specific services to edit domain objects, through IEditServiceDelegate. The new implementation of IEditService, named ComposedEditService, tries first to delegate to the appropriate IEditServiceDelegate and then fallback to a default behavior from IDefaultEditService if needed.

  • #2555 [diagram] Add distinct edge creation handles (only visible when a node is selected)

  • #2559 [diagram] Allow to target the whole node when creating or reconnecting an edge

  • #2235 [diagram] Reduce the amount of code in DiagramRenderer

  • #2572 [diagram] Each edges now have a dedicated handle

  • #2584 [diagram] Add feedback during edge creation

  • #2608 [diagram] Improve the placement of handles on the left and right side of nodes so that they are properly centered

  • #2262 [diagram] Share diagram layout data between the subscribers of the representation

  • #2621 [diagram] Set the same ConnectionLine path as the one used to render edges

  • #2595 [diagram] Call the layout on node move and resize. Node will not be outside of their container, nor on a node header because of a move or resize.

  • #2552 [diagram] Hide the diagram palette on 'Esc'

  • #2600 [form] Add a small margin at the top of a page

  • #2693 [diagram] Ensure that the reference position is properly shared between subscribers

  • #2715 [diagram] Prevents the layout to be executed when selecting an element.

v2023.10.0

Shapes

  • Add tool sections in the View DSL

  • Add support for Precondition Expressions in Tools

  • Color management in View

  • Add support for image overlay

  • Add the possibility to contribute custom palette tools

Architectural decision records

  • [ADR-107] Add support for dynamic and conditional widgets in Forms

  • [ADR-108] Improve the widget id computation

  • [ADR-109] Add support for transient data in forms

  • [ADR-110] Color Management in View

Breaking changes

  • #2250 [core] Remove all references to notistack from sirius-components-core. As a result, the link between notistack and Sirius Components needs to be updated in applications using Sirius Components. See the Sirius Web ToastProvider and ToastContextInitializer to see how to give Sirius Components the relevant function(s) from notistack. Without the dependency to notistack in sirius-components-core, it will be easier to leverage native VS Code popup to display our errors.

  • #2259 [tree] [sirius-web] Move the NewDocumentModal and the UploadDocumentModal from sirius-components-tree to sirius-web. We introduced the TreeToolBarContribution components to contribute actions to the TreeToolBar such as the NewDocumentModal and the UploadDocumentModal. As a result, the NewDocumentModal and the UploadDocumentModal will not be available in applications.

  • #2270 [core] [sirius-web] Move DeleteProjectModal, NewObjectModal, NewRepresentationModal, NewRootObjectModal and RenameProjectModal from sirius-components to sirius-web`. As a result, they will not be available in the Sirius Components packages anymore, and thus, applications that need such modals will need to implement them.

  • #2274 [core] Remove the Form and FormContainer components. They will not be provided by the sirius-components package anymore.

  • #2276 [core] [sirius-web] Move the ErrorBoundary HOC into sirius-web. It is not available for applications anymore, and thus, applications that need a global error handling strategy will need to implement it by themselves.

  • #2279 [core] Remove the package sirius-components. All of its remaining content was only relevant inside of Sirius Web and it has thus been migrated to this location

  • [releng] Stop minifying the code of Sirius Components packages. As a result the development of applications consuming Sirius Components packages will be easier and it will be the responsibility of the application to minify everything (which they should already be doing).

  • #2296 [diagram] sirius-components-diagrams-reactflow now depends on html-to-image node package.

  • #2236 [form] The introduction of ForDescription and IfDescription elements to the Forms DSL introduced breaking changes in the metamodel. Existing FormDescription documents will need to be modified to load correctly, and any custom widget’s metamodel will need to be regenerated using the new form.ecore version as reference. See [ADR-107] Add support for dynamic and conditional widgets in Forms for the details of the changes. Also, all widget descriptions now have a Function<VariableManager, String> targetObjectIdProvider, needed to compute the widget instance’s id. The new targetObjectIdProvider is required to be non-null, so any code which programmatically builds core Form Descriptions (not View-based ones), needs to pass a non-null provider. A suitable implementation is to get the id of the self object using IObjectService.getId().

  • #2118 [form] The introduction of the new modal for create objects with the reference widget, apply changes for two queries rootObjectCreationDescriptions and childCreationDescriptions. It’s now possible to provide referenceKind to only get the ChildCreationDescription matching this reference.

  • #2253 [diagram] The introduction of ToolSection in palette, change the DiagramDescription structure by adding a new level Palette instead of [ToolSection]. Note that palette will be removed in short-term from the DiagramDescription.

  • #2329 [form] Split of sirius-components-widget-reference to extract EMF-related code into a new module sirius-components-collaborative-widget-reference.

  • #2252 [diagram] The support for React Flow based diagrams now require a DiagramPaletteToolContext in order to contribute custom palette tool.

  • #2343 [sirius-web] Add iconURL field on ChildCreationDescription type.

  • #2371 [view] Colors are now required everywhere. We will not hardcoded decisions in our application, instead all the references to a color should be configured. In the near future, the GraphQL schema and the frontend of sirius-components-forms will thus be updated to reflect this new change.

  • #2371 [sirius-web] Default colors are now loaded from a default model located in sirius-components-view/src/main/resources/studioColorPalettes.json. They are loaded in every studio project but hidden in the explorer. They are also made readonly in the details view. Applications derived from Sirius Web may have to ensure that references to default colors are properly resolved when loading a view model.

  • #2191 [view] The Color property on ImageNodeStyle has been removed.

  • #2388 [tree] treeItem is no longer composed of a single string for the imageURL, but of a list of strings to take into account composite images. The IObjectService.getImagePath API changed and now must return a list containing all the image paths.

  • #2789 [diagram] Added the file ReactFlow.css to sirius-web package.

Dependency update

  • [releng] Switch to typescript 5.1.6

  • [releng] Switch to vite 4.4.9

  • [releng] Switch to vitest 0.34.2

  • [releng] Switch to @vitejs/plugin-react 4.0.4

  • [releng] Switch from c8 to @vitest/coverage-v8 0.34.2 as now recommended

  • [releng] Switch to graphql 16.8.0

  • [releng] Switch to @apollo/client 3.8.1

  • [releng] Switch to reactflow 11.8.1

  • [releng] Switch to Spring Boot 3.1.2

  • [releng] Switch to Sirius Desktop 7.2.0

  • [releng] The frontend now depends on html-to-image to support the "export to SVG" action in the diagram panel of the react-flow prototype (see #2296)

  • [releng] Switch to org.apache.xmlgraphics:batik-bridge 1.17

Bug fixes

  • #2222 [tree] Fix an issue where all the tree items where editable, even for elements that have no label.

  • #2245 [sirius-web] Fix an issue when triggering expandAll on models with multiple root objects.

  • #2333 [diagram] Fix a warning console when opening a palette on a diagram.

  • #2345 [diagram] Fix a issue on React Flow diagram when opening a palette with toolSection without nodeTool.

  • #2192 [view] Fix an issue where the Shape property of an ImageNodeStyle was not mandatory. An error message is now displayed if the Shape is not set.

  • #2309 [diagram] Fix an issue where the edge labels where not always centered on react-flow diagrams

  • #2195 [view] Fix an issue where a border color set to None would set the color to a default color, not none.

  • #2360 [form] Fix an issue that prevent creation of new object on some containment reference with the reference widget.

  • #2357 [view] Fix an issue where the color property was displayed in the Details view for an ImageNodeStyle though it has no impact for this type of style.

  • #2266 [diagram] Keep edges visible when nodes are selected

  • #2162 [diagram] Fix an issue when performing two chained direct-edit on nodes.

  • #2348 [form] Fix a layout issue with the widget reference that can lead to the partial disappearance of action buttons.

  • #2381 [diagram] Fix an issue where the handleId of an edge was undefined.

  • #2191 [view] The Color property on ImageNodeStyle has been removed.

  • #2395 [vs-code] Fix an issue that appeared while rendering diagram with vs-code extension.

  • #2426 [sirius-web] Fix an issue where the Representations view was always empty.

  • #2429 [sirius-web] Ensure that view models can be successfully uploaded by loading the default color palettes

  • #2433 [form] Fix an issue where the readonly property of FlexboxContainerPropertySection was not correctly dispatched to children.

  • #3943 [vs-code] Fix an issue with widget reference

  • #3936 [vs-code] Add FormDescriptionEditor support in vs-code extension

New Features

  • #2185 [diagram] Add support for drop tool from the explorer with React Flow.

  • #2117 [form] Add a modal to select new values for multi-valued references

  • #2118 [form] Add a modal to create new objects on a widget reference

  • #2253 [diagram] Add the possibility of organizing palette tools into sections

  • #2236 [form] It is now possible to use For and If constructs inside the definition of Form (currently only inside Groups and Flexbox containers). Both constructs are commonly combined together, with e.g. For iterating on the different features of the current semantic element and several If inside the loop to decide which concrete widget(s) to instantiate depending on the feature’s type. They can however also be used independently (e.g. a single If outside of a For to make the presence of a widget conditional) and combined in arbitrary ways (e.g. nested loops or conditionals). Note that this first version has a known limitation: FormDescriptions which use For or If elements can not be reliably edited using the Form Description Editor. This will be fixed in the next version.

  • #2254 [diagram] Add the possibility to specify precondition on diagram tools

  • #2252 [diagram] It’s now possible to contribute custom frontend-defined tools in a React Flow diagram palette. To illustrate this new feature, we contribute a new tool on the Papaya Diagram, it’s available only on OperationalActivity and it simply opens a dialog with the node label content.

  • #2044 [view] Add custom icons to edges and nodes label in view dsl.

  • #2396 [vs-code] Add VS Code Integration for React Flow diagrams.

  • #2616 [diagram] Keep a connection line visible when creating a new edge.

Improvements

  • [releng] Add some automatic checks to simplify code reviews

  • [releng] Make some cypress tests more robust

  • #2296 [diagram] Add "export to SVG" action in the diagram panel of the react-flow prototype

  • #2298 [diagram] Support keyboard shortcut for "Delete from model" action on react-flow diagrams

  • #2231 [diagram] Extract the support for full screen in a dedicated hook

  • #2295 [diagram] Support direct edit on edges labels (center, start, end) on react-flow diagrams

  • #2233 [diagram] Move the behavior of the arrange all in the diagram panel component

  • #2311 [diagram] Ensure that the layout uses the same context as the rendering

  • #2208 [diagram] Add Cypress tests for React Flow.

  • #2198 [sirius-web] Add a default Color Palette on View creation

  • #2228 [sirius-web] Creating a domain from the onboard area action now initialize its name.

  • #2329 [form] Change the default representation in the details view for non containment reference from a select widget to a reference widget.

  • #2314 [diagram] Add feedback on edge selection on react-flow diagrams

  • #2313 [diagram] Support edge palette on react-flow diagrams

  • #2350 [form] Change the default tab width in form to fit the page label length.

  • #2208 [diagram] Add Cypress tests for React Flow

  • #2258 [diagram] Add support for image node labels

  • #2355 [core] Remove some warnings from Apollo client since onSubscriptionData and onSubscriptionComplete are now deprecated.

  • #2261 [diagram] Change the handle used by edges depending on the position of the source and target

  • #2265 [diagram] Update the viewport to show the current state of the selection

  • #2368 [form] Remove useless reference to the GraphQL version of Google Guava

  • #2343 [emf] Add icon for type selection in new object modal.

  • #2365 [diagram] Support key down and F2 to enable direct edit on edges on react-flow diagrams.

  • #2358 [form] Adds diagnostic messages to the reference widget.

  • #2260 [diagram] Keep the layout stable over time

  • #2371 [view] Add new default color palettes along with the creation of a view (theme colors, mui colors…​). These color palettes are accessible in studio projects but are not visible in the Explorer view.

  • #2371 [view] Add new validation rules about colors for View diagrams & forms.

  • #2789 [diagram] Increase the size of the edgeupdater to make reconnecting an edge easier.

v2023.8.0

Shapes

  • Add disable / enable concept for widgets

  • Add new custom widget to edit single and multi-valued references

  • Add support for Help Expressions in Form widgets

  • Add border style for containers

  • Add an API for filtering and ordering form pages

Architectural decision records

  • [ADR-103] Improves the existing feedback messages capability

  • [ADR-104] Add support for Help Expressions in Form widgets

  • [ADR-105] Add custom widget to edit EMF references

  • [ADR-106] Add the support for the palette with react flow

Breaking changes

  • #2080 [tree] EditingContextRepresentationDataFetcher will filter on IRepresentation instead of ISemanticRepresentation to be able to support TreeDescription.

    As such targetObjectId is removed from RepresentationMetadata.

  • #2124 [sirius-web,emf] The org.eclipse.sirius.web.services.documents.DocumentMetadataAdapter has been renamed ResourceMetadataAdapter and moved to the org.eclipse.sirius.components.emf package (in sirius-components-emf). This allows for code which does not depend on Sirius Web and the Document notion to properly display the top-level elements of a project in the UI.

  • #2126 [tree] The IExplorerDescriptionProvider interface has been removed. The TreeDescription used by the Explorer view is now registered using the general IRepresentationDescriptionRegistryConfigurer (see ExplorerDescriptionProvider).

Dependency update

  • [releng] Switch to Jacoco 0.8.10

  • [releng] Switch to Guava 32.0.0-jre

Bug fixes

  • #2058 [view] Fix an issue where the default icon for List widget candidates was missing when the candidates were not EObjects.

  • #2060 [form] Fix an issue where the list widget was displayed on a single line inside a flexbox container, no matter the length of the labels of its items.

  • #2076 [sirius-web] Fix EditingDomainFactoryService declaration to use an interface.

  • #2032 [form] Add domainType on PageDescription in the view DSL and takes into account the impacts for the FormDescriptionAggregator. Change for IPropertiesDescriptionRegistry which now handles PageDescription directly instead of FormDescription. Add of the selection variable available in some context.

  • #2072 [view] Fix an NPE when trying to instantiate List/Select/MultiSelect widgets with no candidates expression specified (which is the initial state on creation). An absent/empty candidates expression now simply means the widget is empty.

  • #2064 [view] Enable completion support and other text field customizations for custom widgets

  • #2092 [form] Fix support for help expressions on the FlexboxContainer widget

  • #2088 [tree] Fix initial value of the tree filter bar

  • #2133 [workbench] Fix NPE in Related Elements view

  • #2112 [form] Fix the pages filtering in form editor.

  • #2152 [tree] Fix an issue where some characters typed in the filter bar raised exception

  • #2155 [explorer] Fix an issue where representations leaf tree items were not expanded by Expand All action

  • #2144 [form] Fix the default properties values for widgets with no style.

  • #2140 [tree] Fix Drag’n’drop when a representation is selected.

  • #2179 [tree] Fix an issue where labels of tree items matching exactly pattern typed in the filter bar were not detected.

  • #2178 [view] Fix an error when selecting an EdgeStyle.

  • #2019 [project] Fix exporting and re-importing studio projects

  • #2190 [view] Fix an issue where diagram nodes with image style didn’t use the width and height defined in view node descriptions.

  • #2211 [diagram] Fix an issue where the icons of an edge label where broken with ReactFlow.

  • #2197 [project] Fix an issue where the renaming of a project from the project page needed a refresh to be visible.

  • #2194 [view] Fix an issue where it was impossible to set the None value to a color property in a View Node/Edge Description from the Details view.

  • #2225 [form] Fix an issue where tabs displaying page name could be hidden.

  • #2220 [vs-code] Fix an issue where some React contexts where missing, the treeID variable was missing in graphQLSubscription for the explorer and the Forms were not parts of the list of representations available.

  • #2217 [diagram] Fix the svg export when the file extension was not available. It falls back to the image content type to determine the image type.

New Features

  • #2039 [project] A new "Blank Studio" project template is available to create a project with the "studio" nature but no initial content

  • #2004 [form] Add the possibility to show select options' icons.

    Icons on select widget option

  • #2055 [form] Added initial version of a custom widget to view & edit EMF references (both single and multi-valued).

  • #2056 [form] Add the possibility to control read-only mode for widgets with an expression.

  • #2077 [form] Add the ability to define a border style for groups and flexbox containers.

  • #2080 [tree] Add an initial label value when editing tree items label.

  • #2090 [diagram] Add the support for the arrange all on react flow diagram. The arrange all is made with elkjs.

  • #2094 [diagram] Add the support for the palette on the diagram background

  • #2125 [form] Add the API IFormPostProcessor to programmatically modify all forms just before they are published on the subscription. Note that IFormPostProcessor is a singleton, if several rules must be applied to several forms, a mechanism has to be added to the implementation.

  • #2116 [form] Add a modal to select a new value for single-valued references

  • #2083 [diagram] Add support for edge markers with React Flow.

Improvements

  • #2034 [diagram] Integrate the workbench selection in the react-flow prototype

  • #2047 [view] Activate architectural tests on sirius-components-view-builder

  • #2036 [form] Add the concept of pageAction in form.

  • #2015 [form] Add to the payload the possibility to return a list of messages, these messages will be displayed on the UI.

    Feedback messages

    There is an example of the IFeedbackMessageService interface usage in DomainAttributeServices. Note that in the end, the message list will be the only way to return info in payload, the single message will be removed.

  • #2010 [diagram] Add a palette on node with the alternate diagram rendering.

  • #1988 All Form widgets can now define (if relevant) a dynamically computed "help text". Widgets which define such a help text have a new "?" icon next to their labels; the actual help text is accessible as a tooltip on this icon. For View-based widgets, this materializes as an AQL helpExpression. The help text can include multiple lines (separated by \n), but no text formatting.

    Example of a help tooltip on a widget

  • #2048 [diagram] Add a basic support for the resize. It is possible to reduce the size of a node less than the space needed to display all children.

  • #2064 [form] Make the IWidgetDescriptor API more flexible.

  • #1618 [view] Split the view metamodel into dedicated subpackages.

  • #2083 [diagram] Add support for edge markers

  • #2086 [diagram] Add a panel with the default diagram actions

  • #2087 [diagram] Add support for snap to grid

  • #2115 [form] Add the possibility to choose the label position on checkbox widget. Note that the default position changes from top to end.
    before : checkboxLabelPlacementTop after : checkboxLabelPlacementEnd

  • #2121 [diagram] Add new closed arrow with vertical bar to diagram arrow styles

    closed arrow with vertical bar

  • #2132 [diagram] Add new closed arrow with dots to diagram arrow styles

    closed arrow with dots

  • #2098 [form] Enable vertical scrolling on the Reference widget’s when showing more than a few values.

  • #2135 [tree] Allow `TreeItemContextMenuContribution`s to only apply to specific trees (based on the tree id). The existing context menu contributions now only apply to the Explorer view.

  • #2128 [releng] Update generated classes copyright to apply the same format as other classes.

  • #2091 [diagram] Add support for the direct edit in the diagram with nodes.

  • #2142 [diagram] Add support for Edge labels (begin, center, end) in sirius-components-diagrams-reactflow.

  • #2097 [form] Add click handler support on the reference value of a reference widget.

  • #2123 [tree] Add support for non-selectable tree items

  • #2126 [tree] Add support for multiple Explorer-like tree definitions. These should be registered globally like other representations using a IRepresentationDescriptionRegistryConfigurer. Their TreeDescription.getCanCreatePredicate() will be invoked with a treeId variable (a string) to test if it handles a given tree subscription requested by the front. For example the main Explorer frontend component subscribes to the treeEvent subscription with a treeId of 'explorer://', and the backend ExplorerDescriptionProvider’s tests for `treeId.startsWith("explorer://") to indicate it is the one to use to handle this subscription.

  • #2096 [form] Add style for the reference widget. Use the same style properties as the list widget.

  • #2175 [tree] Change tree behavior to reveal the current value(s) in the model browser.

  • #2171 [tree] Remove from model browser subtrees with no compatible values.

  • #2168 [tree] Add option on tree to disable multiple selection.

  • #2183 [form] Add some data-testid to help cypress tests redaction.

  • #2103 [diagram] Add support for edge reconnection with React Flow.

  • #2086 [diagram] Add the support for the hide and fade of a node

    The diagram panel with unhide all and unfade all:

    Unhide all and Unfade all

    The node palette with hide and fade:

    Hide and Fade on node palette

  • #2095 [diagram] Add support for the creation of new edges in the alternate diagram rendering solution

  • #2104 [diagram] Improve the frontend rendering. Labels and node list are rendered with css.

v2023.6.0

Shapes

  • Filter tree based representations

  • Add pages to form in the view DSL

  • Simplify the programmatic creation of view models

  • Add the ability to convert an odesign to a view model

  • Provide a view-based version of Flow

  • Add support for the features of the compatibility layer not supported in the view DSL

  • Add an example showing how to contribute to the details view with the View DSL

  • Improve the layout of simple nodes

  • Support custom widgets in Form representations

  • Send message to the frontend

Architectural decision records

  • [ADR-098] Use the editing context to compute the metamodels

  • [ADR-099] Filter tree based representations

  • [ADR-100] Add support for custom widgets

  • [ADR-101] Feedback messages on actions

  • [ADR-102] Expand all menu item contribution in Explorer View

Breaking changes

  • #1897 [diagram] ToolSection are now using records

  • #1616 [core] Use Java records for all our payloads

  • #1848 [project] Remove the frontend dependency to uuid in favor of crypto.randomUUID

  • #1907 [view] The management of colors is changing, it is not possible anymore to use color directly represented by a string in the styleDescription. All the colors are now defined in a new palette object ColorPalette with the properties name and value. A view can define as many ColorPalette as desired. In the styleDescription, the definition of a color are now a select list of all the colors contained in the ColorPalette of the view

  • #1970 [diagram] Simplify the lifecycle of the diagram creation and refresh. For that, the DiagramCreationService will have less responsibilities. Starting now, it will stop persisting the diagram after its creation. It will start by improving a bit performances since diagrams were persisted twice in some use cases.

  • #1915 [view] Add the page support in the view DSL.

Dependency update

  • #1936 [releng] Switch to Cypress 12.11.0

  • #1377 [core] Switch to Spring Boot 3.0.6

  • #265 [core] Switch to the latest release of AQL

Bug fixes

  • #1304 [tree] Fix an issue where dropping an element from the tree to a diagram used the current selection instead of the dragged tree item.

  • #1839 [view] Remove default AQL expression on Create Edge and Create Node since they did not work anymore.

  • #1940 [sirius-web] Remove duplicated spring-boot-starter-test dependency in sirius-web-sample-application

  • #1952 [view] Fix a regression introduced in 2023.4.0 where View-based Forms could no longer be instantiated

  • #1968 [sirius-web] Fix a regression introduced with the feature 1907, where for the papaya studio, colors are only searched in the first ColorPalette.

  • #1991 [form] Fix an issue where widgets from different groups share the same ID.

  • #1305 [diagram] Fix an issue where the default tools of the palette’s tool sections where not updated.

  • #2008 [view] Make edge tool more robust for applications which use a custom IViewRepresentationDescriptionSearchService

  • #2027 [diagram] Support both versions of the ITool interface in the imageURL data fetchers

  • #2026 [view] Display the layout strategy description of a node description in the explorer view again

  • #2018 [formdescriptioneditors] Fixed form editor selection to display the page containing the first element selected.

New Features

  • #1883 [sirius-web] Add the possibility to programmatically set some metadata such as specifics natures to a project. These natures can be used later to enable or not some capabilities on a project. This work will start by adding the ability to filter the project’s domains. A large set of features will have to be updated in order to stop considering the list of metamodels available in an editing context as a certainty.

  • #1946 Enabled child extenders in the View DSL implementation. This allows downstream projects and applications to provide their own sub-types of the DSL types (e.g. new WidgetDescriptions). In addition to registering the extension metamodel itself, users must provide a ChildExtenderProvider bean for their extensions to be properly integrated.

  • #1918 [tree] Its is now possible to filter tree items in trees. After selected a tree item, hit Ctrl+f (or Cmd+f on macOS) to enable the filter bar.

    Filter Bar

    All visible tree items containing the value typed in the filter bar will be highlighted. The filter button inside the filter bar allows to filter (hide) all visible tree items not containing the value typed in the filter bar.

    Filter Bar Filter Button

  • #1914 [form] It is now possible for applications to provide their own custom widgets without forking Sirius Components. See the documentation for more details.

  • #1830 [layout] This feature is experimental and can be activated on a diagram by adding "__EXPERIMENTAL" to its name. The new algorithm does the minimum possible to place node without overlap.

  • |#1985 [sirius-web] It is now possible to use in-memory View-based representations by registering them in the new InMemoryViewRegistry. These representations can be created programmatically or loaded from .view EMF models on startup, and do not need to be stored as documents inside a project in the database.

  • #1921 [view] Added a project sirius-components-view-builder.

    Introducing providers interfaces to help creating view programmatically.

    Introducing a generator of builders aimed to help creating view programmatically, the generation makes use of emf-merge and modifications to these builders can be annotated to live during future regeneration.

  • #1912 [core] Add the possibility to send feedback messages to the frontend after an action.

  • #1989 [diagram] Contribute a new way to render diagrams to evaluate an alternate layouting strategy

  • #1996 [explorer] Add an Expand All menu item contribution to the Explorer View.

  • #1966 [view] Add Selection Description in the View DSL

Improvements

  • #1869 [tree] Navigate to the first child with the right arrow if a node is expanded. Navigate to the parent with the left arrow if a node is collapsed

  • #1621 [project] Migrate the onboard area to Material-UI

  • #1852 [layout] Single position event takes the diagram element id and the double position event takes the source id and target id

  • #1971 [layout] Add the first new layout engine integration test

  • #1831 [layout] Improve the data structure of the layout algorithm

  • #1975 [emf] The getContents method from the ObjectService will use the eObject’s IEditingDomainItemProvider if it exists.

  • #1916 [sirius-web] We supply an example of how to provide your own Details view definition for specific elements using a View-based FormDescription. See org.eclipse.sirius.web.sample.configuration.DomainPropertiesConfigurer and org.eclipse.sirius.web.sample.services.DomainAttributeServices for a working example that can be easily adapted.

  • #2003 [view] Make reconnection tool more robust for applications which use a custom IViewRepresentationDescriptionSearchService.

v2023.4.0

Architectural decision records

  • [ADR-094] Provide better control on contextual palette’s content

  • [ADR-095] Use richer data types in the View DSL definition

  • [ADR-096] Distinguish the containment kind of view creation requests

  • [ADR-097] Separate the layout data structures from the diagram data structures

Breaking changes

  • 1643 [core] Removed our dependencies to Spring Security

  • #1592 [view] In View-based diagram definition, all tools applicable on a given element are now configured inside the new Palette element directly inside the element (diagram, node or edge) description.

  • #1761 [core] Remove sirius-web-graphql-schema since it was not really used anymore

  • #1825 [diagram] Distinguish the containment kind of view creation requests

  • #1840 [diagram] The GraphQL field Diagram#autoLayout has been removed. We only use DiagramDescription#autoLayout to retrieve the autolayout state of a diagram.

  • #1638 [view] The lifecycle of the representation descriptions from the view DSL is now aligned with the lifecycle of the metamodels computed from the Domain DSL.

    As such, the representation descriptions available for an EditingContext are now computed and transformed when the EditingContext is loaded. It will thus improve the performances of the lookup for representation descriptions since they will be referenced directly by the EditingContext. This does not come with any changes to the interface IEditingContext. Alternate implementations of IEditingContext do not have to keep the representation descriptions in their implementation of IEditingContext.

    By loading representation descriptions from the View DSL when the editing context is being loaded, we are making the editing context the sole source of truth of the representation descriptions available.

    As a result, any datafetcher requiring a representation description will now have to use the editing context event processor registry to find the requested representation description. We previously had some datafetcher which were using the IRepresentationDescriptionSearchService` with null as a value for the editing context. Such calls will not work anymore since null will not be an acceptable value anymore by our implementation of this interface.

  • [diagram] Changed the type of Node#descriptionId and Edge#descriptionId from UUID to String

  • [view] Changed the values of {Diagram|Node|Edge}descriptionId computed by the view converter:

    • siriusComponents://diagramDescription?sourceKind=view&sourceId=UUID_OF_DOCUMENT&sourceElementId=UUID_OF_SOURCE_ELEMENT

    • siriusComponents://nodeDescription?sourceKind=view&sourceId=UUID_OF_DOCUMENT&sourceElementId=UUID_OF_SOURCE_ELEMENT

    • siriusComponents://edgeDescription?sourceKind=view&sourceId=UUID_OF_DOCUMENT&sourceElementId=UUID_OF_SOURCE_ELEMENT

  • #1890 [view] Tools are now retrieved from their corresponding View Description

    Removing dependencies from sirius-components-compatibility-emf in the canHandle methods of sirius-components-view-emf services

Dependency update

  • [form] Switch to lexical 0.8.1

Bug fixes

  • #1674 [diagram] The fade and hide tools were available on the background of the diagram

  • #1710 [diagram] Ensure that the edit box of an empty edge label is not located at the wrong position

  • #1716 [workbench] Fixed the "Related Elements" view when activated on dynamic instances

  • #1591 [emf] Creating root elements in a model will now use the EPackages loaded in the package registry of the editing domain

  • #1746 [form] Rich-text editor toolbar on forms representations are not grayed when read-only

  • #1744 [form] Checkboxes on forms representations are not grayed when read-only

  • #1639 [core] Support schemaLocation and extendedMetaData for JSON resource

  • #1760 [project] Remove an invalid attribute from our pom.xml

  • #1675 [explorer] Align tree items without children with their siblings

  • #619 [explorer] Fix order of the models in the explorer

  • #1604 [diagram] Fix fade does not work on border nodes

  • #1773 [workbench] Fix editors area tab title may hide close button

  • #1541 [workbench] Editors area can overflow on Details view

  • #1708 [form] Fix the impossibility to move a toolbar action from a group to another with no toolbar actions in FormDescriptionEditors.

  • #1748 [chart] Underline and strike-through style options are not taken into account for BarCharts.

  • #1688 [form] The title of the Details view will not be wrapped on multiple lines anymore

  • #1602 [diagram] The connector tool does not work with descriptions from the View DSL

  • #1833 [explorer] Fix Explorer toolbar and selected item background color width

  • #840 [view] Add the ability to create multiple nested views for unsynchronized node descriptions. For that, specifiers will be able to use properly the variable name property of the create view model operation. The result returned and captured in this variable name will not be the real node since it will be rendered later but it is a placeholder which contains some properties of the real node such as its id which can be used to create the nested views.

  • #1838 [diagram] Collapsing and expanding a node with unsynchronized child nodes will now properly restore the child nodes

  • #1775 [core] Handle representation/document/project label length in UI (by adding ellipsis) and in sirius-web SQL schema (up to 1024 characters)

  • #1829 [diagram] Node descriptions from the view DSL can now reference concepts outside of their containing diagram description

  • #1851 Fix an issue where the explorer could be expanded while not synchronized

  • #1785 [form] Fix name collision on labelFields GraphQL fragment

  • #1908 [workbench] Fix an issue where the Explorer and Details Views titles could be overflowed

  • #1929 [view] Fix an issue where direct edit on View based diagram elements could lead to infinite loop

  • #1891 [projects] The 'Show all templates' dialog was not functional from an empty state (with no existing project)

  • #1934 [formdescriptioneditor] Fix the renaming of a form Description Editor

New Features

  • #1695 [view] Add a precondition expression to the node description

  • #1527 [diagram] Add the new layout data structure which will be used by the new version of our layout algorithm. This new data structure will be used by the frontend if the name of a diagram ends with __EXPERIMENTAL. This will allow us to easily compare the current layout algorithm and the new one.

  • #1846 [diagram] A debug mode has been added for diagrams. This debug mode can be activated by setting the configuration property sirius.components.diagram.debug to true. Once activated, this debug mode will display additional information on diagram elements to help debug what has been computed by the backend. Debug info

  • #1902 [sirius-web] Add new data fetchers to sirius-web allowing to execute AQL requests

Improvements

  • #593 [domain] Add support for referencing and extending other custom domains

  • #1518 [project] Remove the "format all code" save action in order to let us write code without having to specify "@formatter:off" everywhere. It will also make it easier for us to use IDEs other than Eclipse to contribute to Sirius Web

  • #1632 [core] Start documenting the variables available for each operation in our various representations

  • 1565 [view] The definition of the View DSL now uses richer data types for most attributes. This has no visible effect at the moment, but will allow better documentation, validation and configuration later.

  • [studio] Add a project template for the Papaya domains and view

  • #1667 [diagram] Make the contextual palette self contained

  • #1858 [project] Improve project template cards layout

  • #1879 [core] Add an annotation @Builder to identify builders and simplify some use cases involving the builder pattern. It is now possible to use builders in records and it is a first step toward the deprecation of the @Immutable annotation in favor of more records.

  • [diagram] Added a common interface IDiagramElement that is implemented by Node and Edge

  • #1904 [project] Add templates to track our work on shapes and scopes in doc/iterations/YYYY-MM/{scopes/scope.adoc|shapes/shape.adoc}. At the end of every iteration, we will work on the shape of the new iterations and validate them by merging a first version.

    During the iteration, while developers will progress on their work, they will update the scope. We will not create a new commit for each minor change in the scope, instead the scope will evolve while a pull request is updated. The progress on a task could thus be shared with a draft pull request with the rest of the team.

v2023.3.0

Architectural decision records

  • [ADR-085] Add support for project templates

  • [ADR-086] Add support of edges as targets of single click tools

  • [ADR-087] Provide the variables available to each operation

  • [ADR-088] Align the lifecycle of views on the lifecycle of domains

  • [ADR-089] Add a URL based kind to representation description

  • [ADR-090] Improve support for compartments

  • [ADR-091] Add support of the compartment expand/collapse

  • [ADR-092] Add support for diagram nodes labels' auto-wrap

  • [ADR-093] Improve node size control

Breaking changes

  • [core] Records are now used as the implementations of IInput

  • #1574 [diagram] In diagram.graphqls, SingleClickOnDiagramElementTool member’s targetDescriptions is now of new type DiagramElementDescription instead of NodeDescription.

  • #1614 [graphql] Add a SuccessPayload to replace most basic payloads

  • #1615 [diagram] DiagramDescription.getTools() has been removed. It was not actually used, as tools have long been found in DiagramDescription.getToolSections() instead.

  • #1588 [project] Moved the action "New Model" and "Upload model" in a new tree toolbar

  • #1614 [graphql] Add a SuccessPayload to replace most basic payloads, add GQLWidgetOperationPayload to replace most basic Operation

Dependency update

  • #1377 [core] Switch to Java 17

  • [backend] Switch to EMFJson 2.3.4

  • #1496 [layout] Switch to ELK 0.8.1

Bug fixes

  • #1374 [layout] The border node position is now updated when its parents bounds has changed (e.g. when a node increases its size because of a child creation).

  • #1580 [diagram] Border nodes do not return to their previous position after they have been moved manually.

  • #1522 [diagram] Rectangle nodes with a header can now be resized.

  • #1529 [diagram] Improve the layout of newly created edges with a begin or end label

  • #1607 [tree] Make sure that a recently closed representation can be opened again

  • #1686 [diagram] Fix SVG export of the wrapped labels

  • #1692 [core] JPEG images where previously ignored if using a .jpg extension instead of .jpeg. They are now correctly supported

  • #1741 [diagram] Border node placement specified with ELK configuration not taken into account anymore

  • #1720 [diagram] Fix the position where newly created views appear on a diagram after a drop

New Features

  • #1567 [project] Add support for project templates. Project templates are defined in the backend using the IProjectTemplateProvider (template metadata) and IProjectTemplateInitializer (project contents) interfaces.

  • #1456 [diagram] Add the ability to filter the edge created using some graphical variables

  • #1456 [view] Add a precondition expression to the edge description

  • #1463 [diagram] Add support for the direct edit of the start and end labels of an edge. Two new tools can be defined on an edge in order to specify how the begin and end labels can be edited.

    View edit begin and end labels

    For each of those tools, Edit Begin Label and Edit End Label in the previous screenshot, the specifier can also enter an Initial Direct Edit Label Expression which will be used to compute the initial value of the label when the edition will be triggered. This is mostly used to support the edition of computed labels. The variables semanticEdgeSource and semanticEdgeTarget are now available both in the Initial Direct Edit Label Expression and while evaluating the behavior of the tools themselves.

    View edit begin label initial expression

    In order to edit a begin or end label of an edge, it is necessary to double click on said label. Using F2` will trigger the edition of the center label of the edge.

    View edit begin label in action

  • #1496 [layout] Add the support for free form compartment.

    A node with three free form compartment

  • #1624 [diagram] Add support for expand/collapse of nodes. A node can be collapsed or expanded if its view description is collapsible or if its sirius desktop description is a region (Horizontal or Vertical stack).

  • #1624 [diagram] The collapsingState of a node is now available as a variable to compute its style. As a result, it is possible to create a conditional style which will use the collapsing state quite easily. Using the view DSL, one can use the expression aql:collapsingState.toString() = 'COLLAPSED' as a condition to create a style which will be used when the node is collapsed.

  • #1584 [diagram] Studio makers can indicate whether or not a node type can be resized by the end-user or not. Nodes which can not be resized (or have not been resized yet) have their actual size computed from the NodeDescription’s sizeProvider in a uniform way for all node types. Nodes which can and have been resized keep their user-chosen size across both incremental and full layout (as long as the requested size is compatible with other constraints).

  • #1583 [diagram] Add support for diagram nodes labels' auto-wrap

    Diagram node labels auto wrap

  • #1588 [tree] Add support for enabling/disabling the synchronization between the explorer and the current selection. When it is enabled, if the current selection is not visible in the explorer, it will be revealed by expanding the relevant tree items. On the other hand, when it is disabled, the selection will be visible in the explorer but no tree items will be automatically expanded.

Improvements

  • #1559 [view] It is now possible to specify the (computed) width and height separately for a Node Style (instead of a single size before, which always resulted in square shapes).

  • #1560 Remove unused EditingContextCompletionProposalsDataFetcher

  • #1426 [view] Add missing data type on initialDirectEditLabelExpression

  • #1456 [diagram] Add new methods to the diagram rendering cache to compute the parent, ancestors, children and descendants of a given node identifier

  • #1574 [diagram] Single click tools can now be executed on Edges in addition to Nodes

  • #1569 [view] Only delegate semantic deletion to the element’s Delete Tool

  • #1562 [view] The default/canonical behaviors for diagram elements can now be invoked explicitly from AQL expressions. See org.eclipse.sirius.components.view.emf.CanonicalServices. This feature will be used only for internal for now. There will be breaking changes on this topic soon.

  • #1596 [diagram] Sirius Web now includes two example parametric SVG images named "Package" and "Class". They can be used as any custom image (e.g. in a View-based diagram), but their precise shape is partially computed on the backend, in this case to adjust the size of the label compartment to the actual label’s width.

  • #1563 [view] If a diagram description does not explicitly configure a delete/direct edit/element creation tool, the corresponding behavior is simply disabled. By default, new nodes, edges and tools are explicitly configured to invoke the default canonical behavior; it is just made explicit in the model and can now serve as a based or removed to disable the behavior.

  • #1558 [diagram] When a diagram is read-only, the following actions are now disabled: Arrange All, Reveal hidden and Reveal faded elements, and triggering direct edit or delete from the keyboard.

v2023.1.0

Architectural decision records

  • [ADR-075] Add support for a basic image widget

  • [ADR-076] Allow users to upload their own custom images

  • [ADR-077] Improve support for direct edit in diagram

  • [ADR-078] Add support for toolbar actions in Form/FormDescriptionEditor

  • [ADR-079] Add support for a rich text edition widget

  • [ADR-080] Add support for styles preview in FormDescriptionEditor

  • [ADR-081] Add support for multi-groups in Form/FormDescriptionEditor

  • [ADR-082] Add support for optional text completion on textfield widgets

  • [ADR-083] Add the possibility to hide or fade a diagram element

  • [ADR-084] Improve support for View elements' tools icons

Breaking changes

  • #1437 [backend] sirius-components-formdescriptioneditors now depends on sirius-components-forms. IFormDescriptionEditorWidget.java have been deleted, FormDescriptionEditor.java now relies on AbstractWidget.java from sirius-components-forms.

  • #1437 [graphql] formdescriptioneditor.graphqls now depends on widgets from forms.graphqls

Dependency update

  • [backenđ] Upgrade to Apache Batik 1.16.0 (from 1.14.0)

  • [backend] Switch to Spring Boot 2.7.5

  • [backend] Switch to EMFJson 2.3.3

Bug fixes

  • #1431 [form] The default implementation of the Property View should not try to handle a multi valuated EStructuralFeature of type String

  • #1448 [formdescriptioneditors] Create a default style for new TextArea widgets like for the others

  • #1397 [view] Fix an issue where canonical tools of reused node descriptions were not available

  • #666 [diagram] Make the contextual palette display the tools of the current selection

  • #1442 [diagram] Selecting an element in a diagram can hide others

  • #1462 [diagram] Restore the missing hover / selected feedback on parametric SVG style

  • [diagram] When clicking on a node in a diagram, the creation tools list is now always in the same order

  • #1485 [diagram] Select the relevant edge reconnection tools

  • #1401 [tree] The setSelection is called even if the selection did not changed

Improvements

  • #1482 [core] Allow CustomImageLoader to get images from packaged projects. To import images from local files on startup, set -Dorg.eclipse.sirius.web.customImages.pattern="file:///local/path/to/folder/with/files/". To import images from a folder inside a packaged JAR, use -Dorg.eclipse.sirius.web.customImages.pattern="classpath:path/in/jar/". The syntax supports Ant-style path patterns.

  • #1517 [core] Remove the error for strings which are not marked as non-externalized

New Features

  • #1453 [diagram] Add new arrow styles Circle, FillCircle and CrossedCircle

  • #1364 [form] Add support for a basic image widget

  • #1386 [project] Users can now upload their own images from a project’s new settings page (available in the project menu). These images can be displayed in forms using the new image widget, or in View-based diagrams using and ImageNodeStyleDescription and selecting the image in the list of available shapes.

  • #1457 [diagram] Make possible to provide an expression on the label edit tool in View DSL to initialize the direct edit label text field. We kept the current behavior for the compatibility layer but, in fine it will be possible to leverage the direct edit tool Input Label Expression to initialize the direct edit label text field.

  • #1346 [form] Add support for a Rich Text edition widget. The widget behaves in a similar way to the existing Textfield and Textarea widgets, except that the text value should be valid Markdown, and can be edited in a WYSIWYG way by the end user.

  • #1428 [layout] Add support for List layout compartment. We rely on the layout strategy engine handler switch and the layout engine handler switch to dispatch to the correct behavior depending on how children should be laid out and the type of the node. This kind of architecture has already been implemented for model operation for the View DSL. Nothing has changed if nodes have to be laid out freely.

  • #1439 [form] Add support for toolbar actions in Form/FormDescriptionEditor

  • #1437 [form] Add support for styles preview in FormDescriptionEditor `- #1494 [form] Add width and height attributes to BarChart

  • #1510 [form] Add support for multi-groups in Form/FormDescriptionEditor

  • #1504 [releng] Add Cypress-based integration tests

  • #1446 [diagram] Add support for hidden and faded edges

  • #1426 [form] Add support for optional text completion on textfield widgets. This is enabled in the View DSL properties for domain types and AQL expressions

  • #1507 [diagram] Missing variables during execution of a source reconnection tool from the View description (otherEnd,semanticOtherEnd,edgeView and editingContext)

  • #1521 [view] Canonical creation tools from contextual toolbar have no icons

  • #1467 [layout] Elk is now able to compute a list layout. It is an internal change, and thus, nothing should change for the end user

v2022.11.0

Architectural decision records

  • [ADR-069] Add support for children layout strategy

  • [ADR-070] How to contribute a new diagram node style

  • [ADR-071] Add parametric SVG node style

  • [ADR-072] Add support for the edition of routing points

  • [ADR-073] Add support for intermodel references (inside the same project)

  • [ADR-074] Add support for edge reconnection

Breaking changes

  • #1300 [core] Rename SiriusWebJSONResourceFactoryImpl to JSONResourceFactoryImpl

  • #1301 [core] Add support for having intermodel references. Now, the URI of resources added in a ResourceSet must have a scheme. Otherwise, you will encounter exceptions.

  • #1064 [core] Remove the URL utility file and ask for the httpOrigin instead. Consumers of Sirius Components which rely on the behavior of the URL utility file should instead maintain their own utility file since it is dependent on our build technology and development process.

Dependency update

  • [backend] Switch to EMFJson 2.3.2-SNAPSHOT. It contains better management of proxy resolution in case of intermodel references

Bug fixes

  • #1368 [diagram] Do not render rectangle view children twice

  • #931 [layout] When the delete tool of an edge is used, the position of other edges are not affected.

  • #1392 [core] Fix EditingContextCrossReferenceAdapter for derived references

  • #1411 [vscode-extension] Fix a 404 error on the VSCode extension page when loading the image

  • #1454 [vscode-extension] Fix a misprint in VSCode Extension README

Improvements

  • #1339 [layout] Add concept of layout strategy. The purpose of layout strategy is to split the style of a node from the way a node lays out its children.

  • #1385 [releng] Migrate the backend and frontend code of Sirius Web to Sirius Component. The purpose of this migration is to facilitate the maintenance of these two projects (one pull request instead of two different).

  • #997 [diagram] Edge routing points are not reset when one of the edge end is moving

  • #1387 [releng] Migrate VSCode Extension to Sirius Components.

  • #1423 [form] In-browser spell-checking is now disabled on textfields.

New Features

  • #1316 [diagram] Support parametric svg node style

  • #997 [diagram] Add support for edition of routing points in diagrams

  • #1397 [diagram] Add support for reused node descriptions

  • #780 [diagram] Add support for edge reconnection. Edge reconnection descriptions can be defined either inside a classical Sirius desktop VSM or, using the View DSL. While using the Sirius desktop VSM you can define a tool to do both target and source reconnection, you will need to define a tool to reconnect the source and another one to reconnect the target using the View DSL

v2022.9.0

Architectural decision records

  • [ADR-067] Add support for injecting platform services/beans into Java service classes used by studios

  • [ADR-068] Improve support for precondition expression from representation description

Breaking changes

  • #1311 [releng] Allow reusing sirius-components-emf without dependencies to the domain or view DSL. As a result, two new projects sirius-components-domain-emf and sirius-components-view-emf have been introduced in order to connect the EMF compatibility layer with the domain and view DSL. Consumers of sirius-components-emf may have to update their import. The behavior of the code has not been modified

  • #1311 [releng] Allow reusing sirius-component-emf without dependencies to Sirius Desktop. As a result, a new project sirius-components-compatibility-emf has been added in order to provide EMF support for the Sirius desktop compatibility layer. Consumers of sirius-components-emf may have to update their import. The behavior of the code has not been modified

  • #1237 [releng] Remove the two hardcoded dependencies to Spring MVC from Sirius Components. As such, reusing most components from Sirius Components without Spring MVC will be easier. The only projects with a dependency to Spring MVC are located in the web package

  • #1312 [graphql] Provide the datafetchers used by the representations. Starting with the validation representation, we will provide datafetchers directly in Sirius Components to simplify the integration of Sirius Components in various applications. The project sirius-components-graphql-utils has been merged into sirius-components-graphql-api since they had similar dependencies.

  • #1231 [charts] The components related to charts have been extracted to @eclipse-sirius/sirius-components-charts

  • #1231 [form] The components related to forms have been extracted to @eclipse-sirius/sirius-components-forms. The views and representations have adopted the suffix View and Representation respectively. As an example, the component FormWebSocketContainer is now named FormRepresentation

  • #1231 [formdescriptioneditors] The components related to formdescriptioneditors have been extracted to @eclipse-sirius/sirius-components-formdescriptioneditors. The representation has been renamed FormDescriptionEditorRepresentation.

  • #1231 [core] Since the core parts of Sirius Components cannot possibly known the components of the representations installed in a project, the context RepresentationContext will not provide a default value anymore. In a similar fashion, the ServerContext from @eclipse-sirius/sirius-components-core will now be required in order to let Sirius Components retrieve the URL of the backend.

  • #1231 [tree] The trees related components and the explorer have been extracted to @eclipse-sirius/sirius-components-trees. The ExplorerWebSocketContainer has also been renamed ExplorerView to match the naming convention of the other views. The components migrated have also been fully converted to XState and MaterialUI

  • #1231 [workbench] The workbench was depending on some tree components in order to compute the list of TreeItemContextMenuContribution to use in the explorer. This dependency has been removed and as a result, users of the workbench component will have to rely on the TreeItemContextMenuContext to provide the contributions

  • #1231 [workbench] Move the workbench related code to @eclipse-sirius/sirius-components-core. This move includes components such as Workbench, RepresentationContext, WorkbenchViewContribution for example

  • #1231 [diagram] Move the code of the diagram and the selection wizard in the packages @eclipse-sirius/sirius-components-diagrams and @eclipse-sirius/sirius-components-selection

  • #1231 [core] Some code remain in the soon to be deprecated Sirius Component package @eclipse-sirius/sirius-components. Most of this code will either be moved to Sirius Web or be removed entirely (such as the old non MaterialUI widgets)

  • #1288 [core] The EditingContext#representationDescriptions field now takes an objectId: ID as argument instead of just the object’s kind: ID. This allows representation precondition expressions to be more precise as they know the actual candidate instance, not just its type.

  • #1281 [form] The LinkDescription now requires a displayProvider and a styleProvider. The displayProvider is used to display the text of the hyperLink. The GraphQL API has also been changed with two additional fields on the type Link: display and style (optional). The front-end use the display value instead of the label value to display the hyperlink text. The label value is displayed before the widget to be consistent with other properties sections.

  • #1320 [diagram] The selectedNode variable is now always defined in the context of drop handlers and single-click tools. Previously, if the target of the drop or single-click tool was the diagram itself (instead of a node), the variable was not defined at all. Now it is defined but null in these cases.

  • #1289 [core] The representationDescriptions GraphQL query now returns a new attribute named defaultName in addition to the label and id. For view-based representations and , the defaultName is computed from the RepresentationDescription’s `titleExpression.

Dependency update

  • [frontend] Update the format of the package-lock.json by moving to node 18.7.0 and npm 8.15.0. This will allow us to use the latest version of npm which comes with improvements for its workspace support. This will also help us move beyond the change in behavior of node 16.15.1 and npm 8.6

  • [frontend] Update the version of jest-transform-css used in order to fix the long standing issues of its incompatibility with the version of postcss` that we use. We will thus use postcss 8.4.14 and jest-transform-css 4.0.1 now

  • [frontend] Remove our dependency to ts-transform-graphql-tag since it is not maintained and its dependencies are outdated and since it is used to lower the dependency with graphql-tag which we will stop using soon

  • [frontend] Remove the peer dependency to graphql-tag. It will not be required for projects consuming Sirius Components now

  • [frontend] Remove the peer dependency to subscriptions-transport-ws. It is not required by Sirius Components and consumers of Sirius Components will be free to switch to graphql-ws instead of even to not rely on web socket at all to communicate with the backend. Sirius Components itself does not need to specify how the communication with the backend will be done

  • [frontend] Switch to @apollo/client 3.6.9, @material-ui/core 4.12.4, @material-ui/icons 4.11.3, graphql 16.5.0, prop-types 15.8.1, sprotty 0.12.2 and xstate 4.32.1. Various development dependencies have also been updated such as typescript, rollup, prettier etc

  • [backend] Switch to Spring Boot 2.7.2

  • [backend] Switch to the managed version of GraphQL Java, as of Spring Boot 2.7.2, we will thus use GraphQL Java 18.2

Bug fixes

  • #1287 [form] Fix wrong VariableManager scope usage in ViewFormDescriptionConverterSwitch.

  • #1250 [diagram] Fix invoke tool effect hooks dependencies (to avoid evaluating the same tool result multiple times)

  • #1347 [form] Fix Conditional Style menu items (two menu items available instead of one)

  • #1349 [form] Fix Form Representation scrolling on Y axis

  • #1351 [form] Fix Style/ConditionalStyle not applied to List Widget

  • #457 [form] Fix rename Form representation from the project explorer

  • #1354 [form] Fix rename FormDescriptionEditor representation from the project explorer

  • #1356 [view] Semantic Candidates Expression are bypassed on Unsynchronized children nodes

Improvements

  • #1231 [releng] Organize backend projects into scope-specific packages

  • #1231 [releng] Switch to node 18.7 for the continuous integration

  • #1231 [releng] Store code coverage results for the frontend packages just like backend packages

  • #1231 [releng] Fix every unit tests provided in the various frontend packages

  • #1318 [studio] Java service classes used by studios (via IJavaServiceProvider) can now ask to be injected with any Spring bean available in the application context (for example IObjectService or other Sirius Components services they need for their implementation).

  • #1288 [core] Improve support for precondition expression from representation description

  • #1269 [diagram] Prevent dropping elements in a read only diagram

  • #1284 [form] Remove tab when Form representation contains only one page

  • #1329 [studio] The convertedNodes variable which was exposed to node create tools for View-based diagrams is now available for all tools of these diagrams

  • #1289 [core] Improve support for title expression from representation description.

  • #1341 [diagram] Expose source and target node variables during EdgeTool execution

  • [core] The input and payloads manipulated by the EditingContextEventProcessor can now be logged using ` logging.level.org.eclipse.sirius.components.collaborative.editingcontext.EditingContextEventProcessor=trace`

New features

  • #1265 [form] Add support for flexbox containers on FormDescriptionEditors

  • #1272 [form] Add support for button widget on FormDescriptions

  • #1273 [form] Add support for button widget on FormDescriptionEditors

  • #1266 [form] Add styling support on bar-chart and pie-chart Widgets in View DSL

  • #1275 [form] Add support for Label widget in Form representation

  • #1281 [form] Add support for Link widget in Form representation

  • #1292 [form] Add support for List widget in Form representation

v2022.7.0

Architectural decision records

  • [ADR-60] Add support for d3 bars data-structure and bar-chart representation

  • [ADR-61] Add support for flexbox containers on form description

  • [ADR-62] Switch to a monorepo layout

  • [ADR-63] Simplify the Sprotty integration

  • [ADR-64] Add support for a ToggableAreaContainer in forms

  • [ADR-65] Add support for a tree widget in forms

  • [ADR-66] Add a new "Related Elements" view

Breaking changes

  • #1141 [frontend] The PropertiesWebSocketContainer which was hard-coded to display the propertiesEvent subscription has been made more generic and renamed FormBasedView. It now takes an additional prop named subscriptionName so that it can be bound to other subscriptions (which must follow the same API/protocol and send Form payloads). To integrate the "Details" view inside a workbench, one must now use the new DetailsView component (which simply configures FormBasedView to listen to propertiesEvent as before).

Dependency update

  • The frontend now depends on @material-ui/lab to support the new tree widget (see ADR-065).

Bug fixes

  • #1245 [form] Fix Dropping widget from FormDescriptionEditor opens new tab on Firefox

  • #1253 [studio] Fix the computation of unsynchronized semantic elements in studios (which broke the use of the Create View operation)

  • #1193 [layout] Fix edge layout on diagrams with node lists.

  • #1260 [workbench] Fix download project fails when model contains a Form Description Editor

  • #1268 [form] Use literal instead of name for Enum label & newValue

  • #1308 [workbench] Fix the vertical overflow issue on the view header

  • #1306 [form] Fix unable to set None value from a Select widget from View Form

Improvements

  • #1242 [view] Provide icons for View DSL Widgets and FormDescription

  • #1214 [form] The mandatory label attribute which was available in all concrete widget types is now explicitly part of the common supertype.

  • #1215 [form] Widgets can now optionally specify an iconURL. It is not used in the default UI for the details view or forms representations for now, but icons (if present) are visible in the toggle buttons bar for groups using the new displayMode = TOGGLEABLE_AREAS.

  • #1141 [workbench] It is now possible to add a "Related View" contribution to the workbench. It behaves like the "Details" view in that it reacts to the selection by displaying a Form, but is designed to display contextual information about the selected element (i.e. which elements it points to and which elements point to it for example). The actual definition of the application (e.g. Sirius Web), which must provide a single bean implementing the new IRelatedElementsDescriptionProvider interface.

New features

  • #1212 [form] Add styling support on Textfield Widget in View DSL

  • #1233 [form] Handle styling of the View DSL widgets

  • #1236 [form] Handle conditional styling of the View DSL widgets

  • #1203 [charts] Add support for d3 bars data-structure and bar-chart representation

  • #1228 [charts] Add support for bar-chart in view DSL

  • #1248 [charts] Add support for pie-chart in Form representation

  • #1255 [form] Add support for charts in form descriptions editor

v2022.5.0

Architectural decision records

  • [ADR-50] Add support for multiple selection entries in the details view

  • [ADR-51] Add support for form descriptions in the View DSL

  • [ADR-52] Add support for EditingContext actions

  • [ADR-53] Add support for form descriptions in the view converter

  • [ADR-54] Add the support of custom anchors on the frontend side

  • [ADR-55] Stop considering the source and target anchors as routing points anymore

  • [ADR-56] Add support for a form descriptions editor

  • [ADR-57] Add the ability to minimize the content of a site

  • [ADR-58] Compute dynamically the connector tools

  • [ADR-59] Add support for styling of the widgets and charts in the API, DSL, converter and compatibility layer

Deprecation warning

Breaking changes

  • #1088 [core] Change the type of IRepresentationDescription#id from UUID to String. This will allow us, when we will receive an operation to perform with a given representation description identifier, to determine if this operation should be handled by the Sirius Desktop compatibility layer, the View support or by a programmatic API

  • #1138 [workbench] The APIs for the Panels and Site components have been modified to support closing/opening the panels. In particular, Panels now handles all three parts of the layout (the left and right sites and the main area) directly instead of using recursive two-sided panels. See ADR-54 for the details.

  • #1155 [workbench] WorkbenchViewContribution now require an icon prop

  • #1155 [core] The palette used by Sirius Components now require two additional colors for the navigation area. The type of the new palette is described in frontend/src/materialui.ts. Users of the fallback theme can upgrade without having to add those new colors since they are provided by default.

  • #966 [core] The source and target edge anchor are not considered as routing points anymore. Edges of old diagrams may have unexpected behavior since new edges will have two less routing points than existing edges in old diagrams. For further explanation see ADR-054.

  • #1180 [diagram] An implementation of IConnectorToolsProvider has to be made for the connector tool to work.

Dependency update

  • #1118 [core] Switch to Spring Boot 2.6.6

  • #1118 [core] Switch to GraphQL Java 18.0

  • #1118 [core] Switch to Sirius Desktop 7.0.0

  • #1140 [form] The frontend now depends on @material-ui/lab version 4.0.0-alpha.61

Bug fixes

  • #1154 [diagram] Display the palette where the click has been made, not where the cursor is. With the edge animation it was possible for the palette to be displayed at a wrong position which was making possible to create a floating edge.

  • #1148 [diagram] Fix a lot of cases where removing an edge will change the layout of some other edges. This behavior will still happen when it will exist two edges between the two same elements and one of the edge is removed, the other edge will probably take the layout of the removed edge.

  • #1176 [diagram] Fix potential ConcurrentModificationException in ViewDiagramDescriptionConverter when manipulating diagrams. This bug was introduced by the #1152.

  • #1171 [workbench] Fix the overflow behavior of the side panels when they are resized horizontally

  • #1115 [workbench] Stop using the deprecated props rowsMax

  • #1219 [diagram] Fixed diagram svg export diamond arrow path

  • #1195 [diagram] Fix edge svg export

  • #1194 [diagram] Fix empty diagram svg export

Improvements

  • #1165 [doc] Improve the pull request template

  • #1155 [workbench] The left and right panels now use a vertical bar of icons (instead of accordions) to select which view to display

  • #966 [diagram] Add the support source and target edge position ratio on the frontend side. For further explanation see ADR-055.

  • #1179 [core] Move WorkbenchSelection and WorkbenchSelectionEntry to sirius-components-representations in order to let any representation use those classes. We may rename the Selection representation in the future in order to rename them to Selection and SelectionEntry to align the frontend and backend API

  • [releng] Detect the presence of classes without a public visibility or with a package or protected constructor in order to speed up the code reviews.

  • #1138 [workbench] The left and right panels can be closed by clicking on the current view’s icon or by resizing them to the minimum width (showing only the icons). When closed, clicking on any of the views' icon will re-open the panel to make the selected view visible.

  • #689 [diagram] Add a variable containing objects ids to render for unsynchronized nodes rendering

New features

  • #1149 [form] Add support for form descriptions in the View DSL

  • #1112 [explorer] Add support for Ctrl+click or ⌘+click to select multiple elements in the explorer

  • #1116 [form] Add support for multiple selection entries in the details view

  • #1117 [diagram] Add support for multiple selections in a diagram. This work only display the various selection entries in the diagram. It does not support Ctrl+click or ⌘+click in a diagram. Support for this feature would require additional work with major improvements in the lifecycle of the DiagramServer`

  • #1146 [core] Add support for EditingContext actions

  • #1152 [form] Add support for form descriptions in the view converter

  • #1169 [form] Add support for a form description editor

  • #1181 [form] Add backend for a form description editor

  • #1201 [charts] Prepare support for charts in Sirius Components

  • #1180 [diagram] Add support for the dynamic computation of the connector tools to control the tools displayed in the contextual menu.

  • #1212 [form] Add support for styling of the View DSL widgets

v2022.3.0

Architectural decision records

  • [ADR-039] Provide a variable to detect the environment

  • [ADR-040] Add support for a post selection

  • [ADR-041] Add the ability to contribute additional services to the EMFQueryService

  • [ADR-042] Use wildcard collections instead of List<Object> in Providers

  • [ADR-043] Consider multiple objects as the input of a form

  • [ADR-044] Use border node "snap to parent container" algorithm

  • [ADR-045] Allow the explorer to reveal the current selection

  • [ADR-046] Make the workbench panels' content configurable

  • [ADR-047] Add support for tools preconditions

  • [ADR-048] Rename concepts related to tools

  • [ADR-049] Improve the incremental layout for dropper elements

Deprecation warning

  • [core] The various DTOs related to the creation and renaming of both documents and representations will be removed from the project at some point. The only reason why we will keep them for the moment is that some of them are used to trigger some specific behavior in the EditingContextEventProcessor. The split of the representation metadata should help us remove those special use cases

  • [core] The method IRepresentationMetadataSearchService#findByRepresentation will be deleted in the future, it only exists as a transition from requesting the whole content of a representation every time to requesting only its metadata when it’s necessary

  • #779 [diagram] The properties DiagramDescription#toolSections should be removed in the near future since it has no real reason to exist now that the tools are computed on the fly. On top of that, ITool.handler will also be deleted at the same time since we no longer need to create the handlers of all the tools while the server is starting

  • [diagram] The GraphQL mutations deleteFromDiagram will stop being used soon by the delete from model and delete from diagram tools. They will instead be considered as regular tools and thus leverage the "invoke tool" GraphQL API

Breaking changes

  • #808 [core] Update the namespace of the projects from sirius-web-xxx to sirius-components-xxx. The projects sirius-web-api and sirius-web-core-api have been merged into sirius-components-core since there was no difference in scope between both projects and neither of them was strictly limited to an api. Since we have validated that most of our projects can be reused outside of a Spring environment (i.e. an environment where Spring Frameworks is in charge of the ApplicationContext), we have also removed the -spring- from most of our project names. We already had Spring dependencies outside of those -spring- projects anyway.

  • [core] Switch to the org.eclipse.sirius groupId in order to prepare for a future publication of our backend on maven central

  • #808 [core] Update the namespace of the packages from org.eclipse.sirius.web.xxx to org.eclipse.sirius.components.xxx.

  • #998 [core] Remove the various annotations used to support a code-first approach to build the GraphQL schema

  • #975 [core] Remove useless parts of the GraphQL API which were both unused by the Sirius Components frontend and not handled by the Sirius Components backend

  • #959 [diagram] Remove the concept of DeleteTool. This concept was not useful since any tool can perform a deletion

  • #1018 [core] Remove the default implementation of IRepresentationMetadataSearchService since products integrating Sirius Components needs the ability to customize its behavior

  • #1019 [core] Services now have access to the context of the request triggering their execution. Consumer of Sirius Components will have to provide the RequestAttributes in the `RequestContextHolder to make the `EditingContextEventProcessor` work. It should be very easy for those in a Spring environment, but it is not automatic for those outside of a Spring environment

  • #699 [core] The IRepresentationImageProvider will now use the kind of the representation instead of the instance to compute the image. It will allow users to ask for the image of a representation with either its instance or its metadata

  • #699 [core] Add the targetObjectId to the RepresentationMetadata

  • #1045 [core] Providers will now return List<?> instead of List<Object>. This makes it possible for applications to reuse existing services to implement providers without making useless copies of lists

  • #1068 [form] The form representation is now supporting multiple elements as an input

  • #1068 [workbench] The integration of the details view in the workbench is not limited to semantic objects with a kind starting with siriusComponents://semantic. Any object can be used as the input of the details view and we will now provide the identifier of all the objects in the selection. This may include graphical elements such as nodes, edges, representations or anything selected in the explorer for example

  • #693 [workbench] The workbench non longer hard-codes the views which are visible in the left and right side-panels. Instead, each application must explicitly configure its workbench using the new WorkbenchViewContribution element. See ADR-046 for more details. As part of this change, the ExplorerWebSocketContainerProps, PropertiesWebSocketContainerProps, RepresentationsWebSocketContainerProps and ValidationWebSocketContainer types have been removed and replaced with the single WorkbenchViewComponentProps type which is structurally equivalent.

  • #779 [diagram] Change the signature of the GraphQL API used to retrieve the tools of the diagram’s contextual palette in order to include the identifier of the diagram element

  • #1022 [diagram] The NodeCreationEvent and the EdgeCreationEvent have been renamed to SinglePositionEvent and DoublePositionEvent to distinguish from any imagined behavior. Additional tests of the incremental layout should be added in the future to test its behavior in use cases that we did not consider in the past. The CreateNodeTool and CreateEdgeTool have also been renamed in order to describe how the user interact with them instead of the behavior that we imagine they have. Their associated mutations have also been renamed. See the ADR for additional details

Dependency update

  • [core] Switch to Spring Boot 2.6.4

  • [frontend] Switch to sprotty 0.11.1

Bug fixes

  • #992 [view] Let the ViewValidator consider statically contributed EPackages when validating domain types

  • #991 [diagram] Restore edge creation tools feedback

  • #1056 [core] Fix an invalid usage of forwardRef in DiagramTreeItemContextMenuContribution

  • #962 [layout] Fix an issue preventing nodes from being properly resized when a child node is created

  • #1051 [layout] Fix an issue resizing nodes when a child node was created even if it was not necessary

  • #1073 [core] Add missing ErrorCallback on the canBeDisposed subscriber of the EditingContextEventProcessor

  • [diagram] Fix an issue preventing the resizing of a node if the cursor had not moved after a previous resizing

  • #1075 [compatibility] Use the proper icon feature for OperationAction

  • #1104 [diagram] Fix the image base path during the SVG export

  • #1102 [diagram] Fix the node label positioning (rectangle, list and list item)

Improvements

  • #985 [core] Provide a variable to detect which environment is used. The value of the variable will change to something specific for the integrating application (for example siriusWeb). This is only available for the diagram for now

  • #1025 [diagram] Add a new API to perform tests of our layout algorithm

  • #699 [core] Provide the IEditingContext to find all the RepresentationMetadata for a specific object

  • #1054 [diagram] Add missing variables to compute the label of an edge

  • #1063 [explorer] It is now possible to expand or collapse items in the explorer without selecting them by clicking directly on the expand/collapse arrow icon

  • #1068 [form] Add support for displaying details on arbitrary element kinds

  • #956 [diagram] Add the border node concept on front-end and implement the border node snap. The user can move the border node only on the side of its parent node. The border node enters its parent node with 8px. The ELK automatic layout is adapted to have the same behavior.

  • #1081 [workbench] It is now possible to specify the component to display in the main area when no representation is open instead of the OnboardArea (which is still the default when there is no override)

  • #1070 [explorer] When selecting an element or opening a representation (for example from its URL or from the onboard area), it is automatically made visible and selected in the explorer.

  • #919 [diagram] Support the parent container resize for the border nodes on back-end

  • #1071 [diagram] Add a label for the border nodes

  • #1071 [diagram] Improve the resizing of the border nodes

  • #783 [diagram] Nodes which use images can now also have a border with all the relevant properties: color, size, radius, and line style. This applies to modelers using the compatibility layer and the web-based diagram definitions

  • #1033 [view] It is now possible to configure all properties of node’s border in web-based diagrams, including the border line style

  • #837 [layout] Improve the position of the dropped elements

  • #1067 [workbench] Hide hamburger menu on tree items with no operations

  • #1128 [workbench] Select representation opened from a tab

New features

  • #988 [core] Add support for a post selection

  • #1018 [compatibility] Add support for the Navigation model operation from Sirius RCP

  • #1026 [compatibility] Add support for OperationAction. The action are converted to regular tools available in the palette of the frontend

  • #937 [diagram] Add the ability to export diagram as SVG images

  • #779 [diagram] Add support for tools preconditions

  • #781 [diagram] Add support for multiline labels

  • #695 [form] Add support for links in the form representation

v2022.01.0

Architectural decision records

  • [ADR-37] Add support for connector tool

  • [ADR-38] Improve the layout of multiple edges between the same nodes

Deprecation warning

  • #858 [core] Our dependency to Spring Security will be reduced or eliminated soon. Sirius Components will now longer have any opinion on matters of authentication, authorization, principal management, etc. All those concerns will be out of the scope of the project. It will also be way easier to integrate Sirius Components in a Spring based application since it won’t come with this additional requirement

Breaking changes

  • #858 [core] Remove most of the methods of ISubscriptionManager since they were not really useful

  • #871 [core] Change the constructor of the EditingContextEventProcessor in order to let consumers provide an IEditingContextEventProcessorExecutorServiceProvider

  • #134 [workbench] Switch from a single-selection API to a multi-selection API with some changes to the Selection object of the workbench

  • #878 [core] As specified in the ADR-36, the kind of an object (representation, semantic elements, selection entry of the workbench) is now an URI. All previous kind values have been modified

  • #878 [graphql] The GraphQL argument classId which appeared on some fields has been replaced by kind since it was always the kind of an object. Technically, it is always the kind of a semantic element but that may not be the case forever

  • [core] IEditService.findClass() has been removed

  • [core] IRepresentationDescriptionSearchService has a new findAll method to return all the representation descriptions available in a given editing context

  • [core] The package containing the concepts related to the editing context has been renamed to remove references to the project

  • #932 [graphql] Introduce the RepresentationMetadata concept in order to prepare the separation of the metadata from the representation

  • [core] Sirius Components does not depend on Spring Security anymore

  • [diagram] Remove the ToolSeparator components.

Dependency update

  • [core] Switch to Spring Boot 2.6.1

  • [core] Switch to GraphQL Java 17.3

  • [compatibility] Switch to Sirius Desktop 6.6.0

  • [frontend] Switch to @xstate/react 1.6.3

  • [frontend] Switch to typescript 4.5.4

  • [frontend] Switch to @typescript-eslint/parser 5.7.0

  • [frontend] Switch to xstate 4.26.1

  • [frontend] Update various development dependencies such as Rollup, ESLint, Prettier and Jest

New features

  • #726 [view] Nodes can now have a dynamically computed size (using sizeComputationExpression) which depends on the current state of the semantic model. If the expression is present and produces a positive integer, it will be used as both the width and height of the node, in pixels. Currently it is not possible to compute different values for width and height.

  • #133 [diagram] Add a connector tool to help create edges in diagrams

  • #596 [view] It is now possible to define border nodes in dynamic diagram definitions

  • #132 [diagram] Add support for drag and drop from the explorer to a diagram

  • #924 [view] Add support for all text styles on labels

  • #929 [core] Add support for providing a listener on GraphQLWebSocketHandler operations

  • #884 [view] Add support for defining unsynchronized nodes and edges

  • #822 [diagram] Add support for graphical deletion. We can now offer a dedicated menu in the user interface to perform a graphical deletion instead of a semantic one. On the backend, the compatibility layer has been updated to perform a DeletionViewRequest if there is no default deletion tool and a new variable named deletionPolicy is available to determine if the deletion should be performed graphically or semantically

  • #943 [view] Add support for optional begin & end labels on edges in views

  • #822 [view] Handle 'Delete from Diagram' in view-based diagrams

Improvements

  • #871 [core] An IEditingContextEventProcessorExecutorServiceProvider can be given to the EditingContextEventProcessor in order to customize the ExecutorService which will be used to handle the processing of the IInput received. This will allow consumers to change the thread management policy of Sirius Components

  • #134 [workbench] The internal API of the workbench is now ready to accept features leveraging a multi-selection

  • [form] Add a tooltip to always make the full label available

  • [core] Customize the Spring ObjectMapper instead of creating a brand new one from scratch in our ObjectMapperConfiguration

  • #896 [diagram] Allow to make specific changes before and after the layout

  • #897 [compatibility] The Bordered Node Dot Style is now handled in the compatibility layer

  • #565 [diagram] Improve the layout of multiple edges between the same nodes

  • #914 [diagram] Add the graphical selection to the semantic ones while clicking on diagram elements

  • #925 [diagram] Perform a fit to screen after the first render of a diagram

  • #944 [core] Add the ability to dispose the editing context

  • #936 [view] Add support for preconditionExpression in dynamic representations

  • #878 [explorer] Update the tooltips of the tree items by parsing the kind of the tree item

  • [view] Use simple type names for the canonical creation tools

  • #952 [diagram] The contextual palette can be displayed with many lines. The contextual palette cannot have more than 15 elements per line.

Bug fixes

  • [compatibility] Fix a potential NPE in logging code of the WidgetDescriptionConverter

  • [form] Handle invalid format more gracefully when editing numeric properties

  • [view] Fix the canonical domain-based edge creation tool

  • #377 [workbench] Restore the real time feedback on representation renaming

  • #868 [diagram] Fix a layout issue with the label of the newly created edges

  • #746 [core] Keep representations in memory for 5 more seconds when they should be disposed in order to have the time to receive some input before their disposal

  • #425 [diagram] Fix a layout issue with self-loop edge

  • #949 [diagram] Fix the position of the begin/end labels on edges

Thanks

In addition to members of the Sirius core team, this release includes contributions from the following authors. Many thanks to them!

v2021.12.0

Architectural decision records

  • [ADR-032] Relax our ID policy for editing context and representation (update)

  • [ADR-034] Switch from semver to calver

  • [ADR-035] Use a common pattern for configuration properties

  • [ADR-036] Adopt a more structured selection

Deprecation warning

  • #818 [workbench] The concept of Selection will be restructured, as described in the ADR-036. Every part of the code involved in the manipulation of the selection of the workbench will be impacted. This includes concepts as remote as the representation descriptions which are used to computed fields like kind. For example, the behavior of the TreeDescription#getKindProvider and NodeDescription#getTargetObjectKindProvider will have to be updated for all the providers. Failure to update to the new behavior will make the selection fail in the workbench

  • [core] The Success parameterless constructor will be removed soon.

Breaking changes

  • #804 [core] Update the name of our configuration properties. The configuration property sirius.web.graphql.websocket.allowed.origins will now be sirius.components.cors.allowedOriginPatterns and it will support complex patterns on top of regular origins. The default value will be restored to nothing since it has temporarily been set to . In a development environment, the recommended value would be both patterns and * in order to accept requests from any application hosted on the same machine. The configuration property org.eclipse.sirius.web.editingContextEventProcessorRegistry.disposeDelay will now be sirius.components.editingContext.disposeDelay. Its default value will be 1s since it is the only realistic option with domain and view support.

  • #692 [explorer] The explorer view is now more generic and extensible. It can represent arbitrary kinds of tree items, but the tree items supported must be configured for each application.

  • #700 [core] editingContextId and representationId are no longer UUID but String. Products that rely on sirius-components will be able to have their own ID policy for the editingContextId and representationId.

Dependency update

  • [core] Switch to Spring Boot 2.5.6

New features

  • #773 [compatibility] Add support for both createView and deleteView model operations which can be used to support unsynchronized diagrams from Sirius Desktop.

  • #694 [core] Add IRepresentationRefreshPolicyRegistry to contribute `IRepresentationRefreshPolicyProvider`s in order to customize on which kind of change description, representations will be refreshed.

  • #613 [compatibility] Add support for external java action with the new API IExternalJavaActionProvider which allows others to provide instances of IExternalJavaAction in order to perform some custom behavior during the execution of a tool for example.

  • #154 [diagram] Add support for the edition of the label of an edge

Improvements

  • #799 [diagram] The buttons in the diagram’s toolbar now have proper tooltips

  • [core] Add a task to display TypeScript errors in the VS Code problems view

  • #773 [compatibility] The synchronization policy of the node descriptions is now properly computed from the AbstractNodeMapping

  • #694 [core] Data can be provided to Success in order to notify changement made by operation made on the editing context.

  • [explorer] The context menus on explorer items has been migrated to Material UI

  • #692 [tree] The tree representation will now act as a proper representation. Its event handlers will now be implementations of ITreeEventHandler and its input will be implementations of ITreeInput

  • [diagram] The variable selectedNode is now available even if there are no selectedObject from a selection representation

  • #817 [core] Improve the TypeScript typing of the frontend

  • [form] Add support for property groups defined in a different category

Bug fixes

  • [diagram] The variable selectedNode was only available in the variable manager used when executing node tools if a selection dialog was also available. Now the selectedNode variable will always be available unless the tool has been invoked on the background of the diagram

Thanks

In addition to members of the Sirius core team, this release includes contributions from the following authors. Many thanks to them!

v0.5.0

Architectural decision records

  • [ADR-024] Add support for view deletion requests

  • [ADR-025] Switch to a schema first approach for our GraphQL schema

  • [ADR-026] Improve the performance of unsynchronized nodes

  • [ADR-027] Make the explorer independent from modeling concepts

  • [ADR-028] Move representations out of the explorer

  • [ADR-029] Introduce some object services

  • [ADR-030] Add a link representation

  • [ADR-031] Separate metadata representations

  • [ADR-032] Relax our constraints on some of our identifiers

  • [ADR-033] Add support for unsynchronized tools

Deprecation warning

  • [core] The field ChangeKind#NOTHING will be removed soon since we have the option to just not send anything at all

  • [explorer] Representations will be removed from the explorer soon

  • [core] The metadata of the representations will be removed from the content of the representation soon. As a result, fields like IRepresentation#id, IRepresentation#descriptionId or event IRepresentation#label will be removed. It will allow us to massively improve the performance of some use cases and simplify the manipulation of the representations in other use cases

  • [workbench] The workbench will become independent of internal concepts from Sirius Components. As a result, the explorer will not have any hardcoded actions such as "create a new document" or "create a new representation". The concept of document will be removed from the frontend entirely

  • [graphql] The interface ITypeProvider will soon be removed

  • [graphql] All the GraphQL annotations used to build the schema programmatically will be removed soon such as @GraphQLObjectType, @GraphQLField, @GraphQLNonNull, @GraphQLID. Annotations used to execute GraphQL queries like @QueryDataFetcher or @MutationDataFetcher will still be supported

Breaking changes

  • #673 [graphql] Rename namespace to domain in the GraphQL API

  • [core] Remove the need to give a logger to the BaseRender

  • [properties] Remove useless fields from the properties payloads

  • [graphql] Use pagination for the fields used by the onboarding such as EditingContext#stereotypeDescriptions or EditingContext#representations

  • #563 [core] Update the support for custom images by referencing images by their identifiers instead of their file name

  • #683 [core] Move projects such as sirius-web-services-api, sirius-web-services, sirius-web-graphql-schema and sirius-web-graphql out of Sirius Components

  • [core] Remove all the sirius-web-collaborative-XXX-api projects. Those projects became a random collection of all the interfaces (external APIs and internal ones) used by the collaborative projects. Those interfaces now exist within the various collaborative projects

  • [graphql] Remove the field ErrorPayload#additionalMessages since it was useless

  • [graphql] Remove the principal from the GraphQL Context since Spring Security allows us to access it much more easily

  • #744 [core] Use Reactor to communicate event handler results. As a result of this change, the concept of EventHandlerResponse has been removed and replaced with two different sinks. The payloadSink should be used to communicate a response to the process which has sent the input to handler. The changeDescriptionSink can be used in order to indicate to the other event processors a change that has occur. Such change may trigger a refresh or other behavior in the other event processors

  • #727 [core] Make IRepresentationDescriptionSearchService editing context aware

  • #750 [core] Add the ability to provide a status error message. The enumeration Status has been replaced by an interface named IStatus with two classes implementing it, Failure and Success. Thanks to Failure, it is now possible to provide a custom error message for an event handler but as of today this error message is not used in the ErrorPayload created from the Failure. This will change in the future

  • #740 [domain] Remove the explicit nsURI from domain definitions. Now only a name will be required and other properties will be computed from said name (nsURI and nsPrefix).

New features

  • #190 [emf] Add support for inverse references navigation thanks to an ECrossReferenceAdapter installed directly on the EditingContext

  • #588 [domain] Add support for multiple inheritance

  • #598 [view] Add support for node border size, edge width, label font format and node label color in the view language

  • #514 [diagram] Disable move, resize and arrange all on auto-layout diagram

  • #688 [core] Add support for cross site request forgery token while uploading files. Projects integrating Sirius Components will have to decide whether or not they want to add such support and if they want to activate it. It will not be supported for now in Sirius Web

  • #671 [graphql] Add the GraphQL schemas of Sirius Components. Starting with this commit, projects integrating Sirius Components will be able to easily embrace a schema first approach to build their GraphQL schema. It will also be way easier to track changes to our GraphQL schema over time

  • #697 [graphql] Add the ability to perform AQL based queries on the content of an editing context using the queryBasedXxx fields

  • #672 [diagram] Add support for the ViewDeletionRequest in a similar fashion as the previously added ViewCreationRequest in order to support unsynchronized diagram description created programmatically

Improvements

  • [domain] Add multiple validation rules to help create proper domains

  • [view] Add validation rules to help create proper views

  • #646 [view] Improve the default color used for new edges in the view language

  • [core] Replace most NoOpXxx classes by internal NoOp classes on each interface

  • #674 [core] Use the Spring Security executor service to propagate the current principal in the thread of the EditingContextEventProcessor instead of relying on our custom solution

  • #680 [validation] Ensure that the validation view is open by default

  • #690 [diagram] Add the selectedNode variable to the delete from diagram and invoke node tool handlers

  • #638 [diagram] Leverage the automatic layout configuration while computing the incremental layout in order to fix differences in behavior between the incremental layout and the automatic layout

  • #719 [compatibility] Add support for the container and element variables for the node/container creation tools

  • #729 [emf] Make sure that the resource set of our EditingContext is an IEditingDomainProvider

  • #731 [view] Allow an EdgeDescription to have multiple sources and targets

  • #743 [view] Add support for edge labels in views

  • #739 [view] Add a name to node and edge descriptions

  • #761 [domain] Validate the names of domains, entities and their features

  • #767 [core] Use ServerContext to retrieve the httpOrigin in Tool.tsx. Thanks to this improvement, it is possible to embed diagrams with the proper tool image in a complex architecture

  • [workbench] Improve the overflow management of the onboarding area

  • #795 [domain] Custom-defined domains now appear first in the new root object modal

Bug fixes

  • #654 [domain] Set Feature#optional default value to true since false created serialization issues. We cannot provide false as a default value since EMF cannot handle such use case

  • [diagram] Make the DiagramRenderingCache maps predictable in order to improve performances

  • #735 [view] Ensure that the generic edge tool is not used when a custom one is provided

  • #747 [diagram] Fix bounding box computation for images with wide labels

  • #738 [view] Fix the validation rules of the views when using qualified domain type names

  • [view] Consider conditional styles when computing a node type. This bug could lead to the creation of diagrams where node declared a specific type that did not match the type of their style. As a result, we could create diagrams that we could not deserialize with our Jackson parser

  • [core] Add a fallback strategy to the payload sink. With the use of reactor to the event handler, it has become possible to handle an input without ever providing a payload as a response. Now after 5s without a response, an ErrorPayload will be send back. This will not stop the current processing of the input nor will it rollback any change made, it will only send a response to ensure that the frontend is not waiting forever for an answer

  • #776 [view] Avoid id collision between diagram descriptions with the same name by leveraging the URI of the diagram description to create a more unique identifier

v0.4.0 (2021-07-30)

This new release improves support for meta modeling. It also prepares the removal of a lot of code from this repository. Sirius Components will soon be independent from any persistence layer, from the GraphQL layer and even from a specific business layer.

Architectural decision records

  • [ADR-020] Add support for validation in the workbench

  • [ADR-021] Add validation support to forms

  • [ADR-022] Add support for selection dialog

  • [ADR-023] Move business code from Sirius Components to Sirius Web

Deprecation warning

  • [core] All the GraphQL and business related projects will be move to the Sirius Web project. As a result, projects such as sirius-web-services-api, sirius-web-services, sirius-web-graphql-schema and sirius-web-graphql will no longer exist in this repository

Breaking changes

  • #569 [emf] Move document-related code out of sirius-web-emf

  • #569 [core] Remove the last dependency to sirius-web-services from sirius-web-emf. As a result, the ObjectService does not need to know about representations anymore

  • #562 [graphql] Remove references to projectId from the subscriptions and use editingContextId instead

  • #562 [graphql] Move the representation and representations fields from Project to EditingContext

  • #562 [core] Remove multiple references to projectId from the collaborative parts. This will impact various concepts such as the input used to edit forms

  • #584 [graphql] Remove all the GraphQL projects from sirius-web-spring-starter. As such, projects consuming Sirius Components will now have to explicitly depend to those projects. They will soon be removed entirely from Sirius Components to go Sirius Web

  • #584 [core] Remove the need to perform some access control and remove the IDataFetcherEnvironmentService in favor of ObjectMapper

  • #589 [core] Remove sirius-web-services from sirius-web-spring-starter. Our business layer will soon be moved out of Sirius Components to Sirius Web

  • [core] Remove the unused ProjectCreatedEvent

  • [core] Remove the support for modelers since it has never been used

  • [core] Refactor the collaborative layer in order to make it easier to reuse in other applications. This change includes a large set of small API breaks to concepts such as IRepresentationService or IRepresentationSearchService

  • [core] Provide the editing context while searching and saving representations instead of its identifier. As a result, interfaces such as IRepresentationPersistenceService and IRepresentationSearchService have been modified

New features

  • #554 [core] Add support for the validation view

  • #428 [properties] Add support for the edition of multi-valued references in the properties view

  • #559 [diagram] Add support for selection dialogs. This also include the support for SelectModelElementVariable in the Sirius RCP compatibility layer along with an example of such tool in the Flow-Designer

  • #655 [properties] Add support for the validation in the properties view

Improvements

  • [core] Improve the ShareDiagramModel, DeleteDocumentModal and UploadModelModal by migrating them to MaterialUI and XState

  • #550 [diagram] Improve the incremental layout support by taking into account the padding defined in the ELK configuration. On top of that some improvements have been made to the algorithm of the incremental layout in order to maintain it more easily

  • #640 [core] Use accordions to layout the left and right sites of the workbench

Bug fixes

  • #604 [core] Use the MaterialUI ClickAwayListener to close the context menu. This help fix an issue where the context menu of the explorer could be closed automatically after being opened

  • #557 [domain] Fix multiple issues with the first release of domains such as NullPointerException during the transformation and better default values

  • #557 [view] Fix multiple issues with the first release of views

  • #451 [diagram] Fix the issue which caused one character to be swallowed during the direct edit of a label in a diagram

v0.3.0 (2021-05-18)

In this third major release, we have introduced support for the meta modeling in the web browser with the new domain and view languages.

In order to make Sirius Components even more reusable, we have removed all of the views of the frontend. Sirius Components will no longer have an opinion on the architecture of the whole frontend application which will include the workbench. It will only provide as frontend components, representations, the workbench and some utility components but not the core structure of a full web application.

On the backend side, things are moving in the same direction with some massive refactoring for the future removal of the persistence layer and the business layer from Sirius Components. All the related projects will soon move to Sirius Web in order to integrate more easily Sirius Components in applications which do not share the same architectural constraints as Sirius Web.

Some improvements have also been made to the incremental layout in order to support a basic workflow.

Architectural decision records

  • [ADR-011] Decouple the event handlers from the refresh

  • [ADR-012] Incremental layout: Make it possible to move or create a diagram element at a specific position

  • [ADR-013] Refactor incremental layout

  • [ADR-014] Add a correlation identifier to inputs and payloads

  • [ADR-015] Add support for resizing diagram elements

  • [ADR-016] Remove SubscriptionDescription

  • [ADR-017] Improve the source and target edge anchors

  • [ADR-018] Adopt a subset of Ecore to define data schemas for modelers

  • [ADR-019] Support Simple Diagram Definitions by Reusing Sirius Desktop VSMs

Deprecation warning

  • [core] All the business code will be removed from Sirius Components in the months to come (project, document, persistence-related code, etc). This will include projects such as sirius-web-persistence, sirius-web-services-api and more

  • [core] The support for custom images has been integrated as a prototype. Massive changes to its API will occur in the future in order to cleanup its lifecycle

  • [core] The concept IDataFetchingEnvironmentService which can be used to setup an access control policy will soon be removed since it will be up to each application to define its own policy

Breaking changes

  • #152 [releng] Remove usage of airbnb-props-types and universal-cookies since we don’t need them

  • [core] Make views handle the lifecycle of their navbar instead of relying on a common navbar design and lifecycle. This will lower the complexity of the lifecycle of the views and give way more flexibility to the views

  • #342 [core] Introduce the ChangeKind concept to decouple event handlers from representation. Prior to this change, an event handler had to know the behavior of all the representations in order to find out which representations were impacted by its change. Now, it can describe the change made and each representation can find out if this change is relevant to them or not

  • #348 [core] Add a correlation identifier on IInput and IPayload. From now on all payloads created must have, as an identifier, the identifier of the input which has trigger their creation. This will give us the ability to provide advanced features in the future and improve our debugging capabilities now

  • #351 [core] Transform ChangeKind into ChangeDescription in order to encapsulate the source of the change too. This will allow a representation to distinguish between a SEMANTIC_CHANGE coming from another representation and one coming from itself

  • #347 [diagram] Replace Size and Position builders by Size#of and Position#at

  • #378 [core] Make the stereotype description editing context aware. As a result, the IStereotypeService and some related classes are now manipulating an extra parameter in some methods, the editingContextId

  • #368 [core] Remove the now useless PreDestroyPayload

  • [properties] Remove the PropertiesEventProcessor which has never been used. Both the properties and the form representation are using the FormEventProcessor

  • #357 [core] Remove the SubscriptionDescription and use instead the Spring SecurityContextHolder to retrieve the user subscribing to a reactive flux. As a result, this change will give us the ability to use much more easily other GraphQL integration in Spring such as Netflix DGS

  • #268 [core] Dispose instances of IEditingContextEventProcessor when they are not used anymore. This change introduce some minor evolutions to the API of IDisposablePublisher and IEditingContextEventProcessorRegistry which can impact any custom IRepresentationEventProcessor

  • #377 [graphql] Rename the projectEvent subscription to editingContextEvent

  • #382 [diagram] Switch the type of the label identifier from String to UUID

  • #384 [explorer] Make the child creation descriptions editing context aware in order to leverage the domain to compute the children

  • [core] Remove the now useless Subscriber component

  • [compatibility] Remove the now useless CanCreateMappingTester and ToolDescriptionQuery

  • #386 [graphql] Make the representation creation editing context aware. This will move the field representationDescriptions on the editing context in the GraphQL schema

  • #333 [core] Make IEditService#findClass editing context aware

  • #402 [core] Remove all views from Sirius Components. Sirius Components will stop trying to provide a complete product but it will instead be used as a framework which can be used to build collaborative graphical applications. As a result, the views have been removed and most of them been transferred to Sirius Web.

  • #473 [explorer] Improve the support for the read only workbench. This change introduce some API changes in several key workbench components such as PropertiesWebSocketContainer

  • #449 [core] Move the navigation bar to MaterialUI. This change also removes the LoggedInNavbar and introduces the NavigationBar

  • [core] Remove the now useless components such as Navbar, ErrorView, View, Go, UserStatus and Footer

  • [core] Remove the now useless hooks such as useCapabilities, useBranding, useAuth

  • [core] Remove VariableManager#children since it was not used

  • #325 [compatibility] Move ViewExtensionDescriptionConverter to sirius-web-compatibility

  • #402 [graphql] Remove the dependency to GraphQL from the collaborative diagram, form and tree related projects

  • #402 [core] Remove the dependency to the persistence layer from the collaborative diagram and form projects

  • #402 [core] Remove the projects sirius-web-diagrams-services-api and sirius-web-diagrams-services

  • #185 [graphql] Move the toolSections field from Viewer to Diagram

  • #402 [core] Remove most dependencies to sirius-web-services and sirius-web-services-api in preparation of their removal from this repository

  • [core] Remove the unused concept IFrontendContribution

  • #402 [core] Move the import / export support out of sirius-web-emf

New features

  • #276 [emf] Add support for String-based EDataTypes in the properties view

  • #314 [compatibility] Add support for the icon specified in odesign files

  • #238 [diagram] Add the ability for end users to move elements in diagram

  • #221 [domain] Add the first version of the domain language

  • #221 [view] Add the first version of the view language

  • #385 [domain] Load the domain documents as EPackages in the editing context

  • #407 [compatibility] Add support for edges' sizeComputationExpression

  • #289 [diagram] Add support for resizing elements

  • #418 [diagram] Add support for NodeList and NodeListItem

  • #503 [diagram] Add the ability to indicate the layout policy (auto layout or not) or a diagram on its description

  • #239 [diagram] Add support for the arrange all action

  • #510 [diagram] Add support for rounded corners

Improvements

  • #173 [business] Migrate the projects view to MaterialUI and XState

  • [core] Remove usage of the deprecated Reactor DirectProcessor in favor of the new API based on Sinks

  • #341 [diagram] Add the variables semanticEdgeSource and semanticEdgeTarget to most edge related expressions

  • #341 [compatibility] Provide the variables source and target for edge related operations by leveraging the newly introduced variables semanticEdgeSource and semanticEdgeTarget

  • #367 [core] Improve the logging of the reactive flux manipulation

  • #287 [diagram] Refactor the incremental layout

  • #286 [diagram] Use figure bounds intersection as edge anchor

  • #387 [core] Push the history state instead of replacing it where necessary. This will improve the user experience by making the navigation between views more understandable

  • #390 [core] Improve the reusability of the workbench by exporting its types

  • #333 [emf] Put EMF resources in the resource set before loading them

  • #392 [domain] Add containment references to the domain language

  • #408 [diagram] Add missing element variable for delete tools

  • #426 [diagram] Hide the contextual palette when zooming or scrolling/panning

  • #411 [view] Add canonical behaviors to dynamic view definitions

  • #437 [compatibility] Add self variable to VSM-based edge creation tools

  • #285 [compatibility] Compute the initial size of an element by using the VSM information

  • #429 [domain] Add support for cardinalities in the domain language

  • [diagram] Improve the performance of diagrams by removing an useless layout request

  • [core] Make the editing context dispose delay configurable in order to prevent errors with the current lack of lifecycle management of the domains

  • #493 [diagram] Prevent move, resize, delete and direct edit operations on a read-only diagram

  • #441 [diagram] Add first support for custom images in diagrams. This support will not cover any management of the lifecycle of the images

  • #480 [domain] Add support for single inheritance and abstract entities

  • #452 [core] Delete dangling representations automatically

  • [core] Ensure that we only use Gava 30

  • #532 [explorer] Make the CreateChildEventHandler return an ErrorPayload when the child that has been created has no owner and handle ErrorPayload in the NewObjectModal

  • [core] Add the ability to indicate that a selection is a representation thanks to the isRepresentation function on the RepresentationContext registry

Bug fixes

  • #315 [compatibility] Use the label of the conditional style used instead of the fallback style

  • #342 [explorer] Fix a regression caused by a refactoring which caused the explorer to not be refreshed when a representation had been deleted

  • [core] Prevent multiple NullPointerException with ObjectService, NodeMapping#getStyle, Edge#toString

  • #335 [form] Restore icons in list property sections and use the icons of the list item element’s types instead of the selected element’s type

  • #360 [diagram] Restore the use of auto layout on diagram creation

  • #346 [compatibility] Make the behavior of the Unset model operation match the one in Sirius RCP. The previous implementation did not actually match the behavior of Sirius Desktop on several points. The featureName was taken as a fixed string, but Sirius Desktop evaluates it as a dynamic expression and the previous implementation could never actually remove individual elements from a multi-valued feature, only reset/clear it

  • #378 [business] Fix a regression which prevented the creation of new document from the onboarding area

  • #420 [diagram] Fix a regression on the direct edit in diagrams

  • [diagram] Leverage the identifier of the edge description while computing the identifier of the edge in order to ensure that we do not have duplicate edge identifiers in a diagram

v0.2.0 (2021-02-12)

Second major release of Sirius Components after the move to an open source project.

Sirius Components was the core part of the proprietary product Obeo Cloud Platform up until a couple months ago. We have transferred in the Eclipse Foundation most of the code of Obeo Cloud Platform to become both Sirius Web and its core part Sirius Components which should be reusable in multiple applications.

In this release, we have made some major refactoring in order to separate some remaining business concern which are specific to Sirius Web from the core goals of Sirius Web. These improvements are not complete and some of them will need to be improved down the road but the structure of the project is starting to be more visible.

Architectural decision records

  • [ADR-007] Adopt stable identifiers for diagrams

  • [ADR-008] Add support for incremental layout

  • [ADR-009] Adopt a proper versioning strategy

  • [ADR-010] Reduce the coupling of our collaborative support

Deprecation warning

  • [core] The hook useProject will soon be removed. It’s original goal was to provide the ability to subscribe to a project related subscription but this subscription has never really been used. It was way too much used to simply fetch a project while this could be done with way less dependencies

  • [core] Any usage of projectId in the collaborative parts or in the representation related code will be removed in the upcoming months

  • [core] All frontend code using our custom React widgets such as Button, Text, Spacing, Checkbox etc will be modified to use MaterialUI instead

  • [core] All frontend code using custom made state machines instead of XState based ones will be migrated to XState

Breaking changes

  • #241 [core] Introduce the sirius-web-core-api project and move some core concepts from the services API into the new core API project such as IEditingContext, IPayload and IInput

  • #241 [core] Introduce the sirius-web-services project and move some business related concepts like Document, Project and ProjectService out of the collaborative projects

  • #241 [core] Remove the dependency to the persistence from the collaborative API

  • #241 [core] Remove the Context concept which was used to propagate the authenticated principal to the business code. It was given to more than 70 classes while used by only a couple of them. On top of that, Spring’s SecurityContextHolder can perform the same job with a much lower coupling. This will help reduce the coupling between the collaborative parts and the services API

  • #241 [core] Remove the useless IProjectInput and replace its usage with IInput

  • #241 [core] Remove all dependencies to sirius-web-services-api from sirius-web-collaborative-api

  • #241 [core] Remove the ProjectRenamedEventPayload to allow us to prepare the future deletion of the useProject hook and the complete removal of business concerns from the collaborative layer

  • #241 [core] Rename the ProjectEventProcessor to EditingContextEventProcessor. This concept and its registry have been made independent of Project. Those concepts will stop relying on a projectId but an editingContextId instead even if in practice this variable will still contain the value of projectId for now.

  • #241 [core] Remove the method IEditingContext#getDomain. This method will now only be available on the EMF specific version of the IEditingContext. This contraint was not useful for alternate implementations

  • #241 [core] Move the RenameRepresentationInput to the sirius-web-collaborative-api and `IObjectService to the sirius-web-core-api

  • #241 [explorer] Use editingContextId instead of projectId in the explorer

  • #241 [properties] Move properties related services to form related projects

  • #241 [diagram] Remove the dependency to sirius-web-services-api in sirius-web-spring-collaborative-diagrams thanks to the introduction of two new projects sirius-web-diagrams-services-api and sirius-web-diagrams-services. These two new projects are used to allow someone else to use a different persistence strategy for the diagrams. It will need to be refined but this solution allows us to isolate our dependency to the IRepresentationRepository

  • #292 [workbench] Restructure the components used by the workbench to make it reusable by consumers of Sirius Components. Components such as DiagramWebSocketContainer and PropertiesWebSocketContainer have thus been modified. In order to make it easier to reuse a Sirius Components workbench a component named Workbench has been created and new types such as Selection, Representation and WorkbenchProps have been introduced

  • #303 [business] Remove the link to modelers from the project context menu. Since we will not have time to fix the modelers before the release, we will not show this feature to end users and instead remove links to the modeler related pages

New features

  • #256 [emf] Add support for composed images for IObjectService#getImage

  • #220 [core] Add a basic support for the creation and edition of modelers

  • #131 [diagram] Add feedback to diagrams to indicate that tools cannot be applied

  • #232 [diagram] Add first support for incremental layout

  • #153 [workbench] Add the ability to close representations by adding a MaterialUI tabbar to display representations

  • #293 [workbench] Lower the coupling between the workbench and representations by introducing the RepresentationContext and the type RepresentationComponentProps for all representation components which replaces types such as DiagramWebSocketContainerProps. The RepresentationContext can be used to contribute additional representations to the Sirius Components workbench.

  • #296 [core] Introduce the ServerContext in order to customize the URL of the server used by the frontend components. This will allow consumers of Sirius Components to specify a different httpOrigin to organize their frontend and backend in a very different manner

Improvements

  • #252 [diagram] Improve the TypeScript typing of the DiagramWebSocketContainer with the introduction of Selection and a dedicated DiagramWebSocketContainerProps

  • [releng] Trigger the build on any pull requests regardless of their origin

  • #283 [graphql] Add the EditingContext to the GraphQL API

  • #261 [emf] Improve the perform of the DocumentService by removing some useless loading and serializing steps of EMF resources

  • #238 [diagram] Migrate the DiagramWebSocketContainer to XState and MaterialUI

Bug fixes

  • #278 [diagram] Ensure that we are always sending the latest diagram state and not the initial state when new users subscribe to an already opened diagram

  • #295 [diagram] Fix a bug which could lead to the creation of a diagram containing labels with the same identifier