Skip to content

Latest commit

 

History

History
1381 lines (1121 loc) · 149 KB

CHANGELOG.adoc

File metadata and controls

1381 lines (1121 loc) · 149 KB

Changelog

v2023.10.0 (work in progress)

Shapes

Architectural decision records

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

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

Bug fixes

New Features

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

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 availables.

  • #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 [forms] 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 [forms] 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 [forms] 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 suscribes 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 [forms] Rich-text editor toolbar on forms representations are not grayed when read-only

  • #1744 [forms] 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 [forms] 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 [forms] 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 [forms] 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 [forms] 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 [forms] 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 [forms] 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 [trees] 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 [forms] The mandatory label attribute which was available in all concrete widget types is now explicitly part of the common supertype.

  • #1215 [forms] 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 [forms] 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 IStereotypeDescriptionService 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