-
#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 WebToastProvider
andToastContextInitializer
to see how to give Sirius Components the relevant function(s) from notistack. Without the dependency to notistack insirius-components-core
, it will be easier to leverage native VS Code popup to display our errors.
-
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
-
[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
-
#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 renamedResourceMetadataAdapter
and moved to theorg.eclipse.sirius.components.emf
package (insirius-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. TheTreeDescription
used by the Explorer view is now registered using the generalIRepresentationDescriptionRegistryConfigurer
(seeExplorerDescriptionProvider
).
-
#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 handlesPageDescription
directly instead ofFormDescription
. Add of theselection
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.
-
#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.
-
#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.
-
#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.
There is an example of the
IFeedbackMessageService
interface usage inDomainAttributeServices
. 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. -
#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 : after : -
#2121 [diagram] Add new closed arrow with vertical bar to diagram arrow styles
-
#2132 [diagram] Add new closed arrow with dots to diagram arrow styles
-
#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
. TheirTreeDescription.getCanCreatePredicate()
will be invoked with atreeId
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 thetreeEvent
subscription with atreeId
of'explorer://'
, and the backendExplorerDescriptionProvider’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:
The node palette with hide and fade:
-
#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.
-
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
-
[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
-
#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 ofcrypto.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.
-
#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.
-
#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.
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.
-
#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
-
#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
andorg.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.
-
[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
-
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 theEditingContext
is loaded. It will thus improve the performances of the lookup for representation descriptions since they will be referenced directly by theEditingContext
. This does not come with any changes to the interfaceIEditingContext
. Alternate implementations ofIEditingContext
do not have to keep the representation descriptions in their implementation ofIEditingContext
.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`
withnull
as a value for the editing context. Such calls will not work anymore sincenull
will not be an acceptable value anymore by our implementation of this interface. -
[diagram] Changed the type of
Node#descriptionId
andEdge#descriptionId
fromUUID
toString
-
[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
-
#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
-
#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
totrue
. Once activated, this debug mode will display additional information on diagram elements to help debug what has been computed by the backend. -
#1902 [sirius-web] Add new data fetchers to sirius-web allowing to execute AQL requests
-
#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 byNode
andEdge
-
#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.
-
[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
-
[core] Records are now used as the implementations of
IInput
-
#1574 [diagram] In
diagram.graphqls
,SingleClickOnDiagramElementTool
member’stargetDescriptions
is now of new typeDiagramElementDescription
instead ofNodeDescription
. -
#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 inDiagramDescription.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
-
#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
-
#1567 [project] Add support for project templates. Project templates are defined in the backend using the
IProjectTemplateProvider
(template metadata) andIProjectTemplateInitializer
(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.
For each of those tools,
Edit Begin Label
andEdit End Label
in the previous screenshot, the specifier can also enter anInitial 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 variablessemanticEdgeSource
andsemanticEdgeTarget
are now available both in theInitial Direct Edit Label Expression
and while evaluating the behavior of the tools themselves.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. -
#1496 [layout] Add the support for 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 expressionaql: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
-
#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.
-
#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.
-
[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
-
#1437 [backend]
sirius-components-formdescriptioneditors
now depends onsirius-components-forms
.IFormDescriptionEditorWidget.java
have been deleted,FormDescriptionEditor.java
now relies onAbstractWidget.java
fromsirius-components-forms
. -
#1437 [graphql]
formdescriptioneditor.graphqls
now depends on widgets fromforms.graphqls
-
[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
-
#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
-
#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
-
#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
-
[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
-
#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.
-
[backend] Switch to EMFJson 2.3.2-SNAPSHOT. It contains better management of proxy resolution in case of intermodel references
-
#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
-
#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.
-
#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
-
[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
-
#1311 [releng] Allow reusing
sirius-components-emf
without dependencies to the domain or view DSL. As a result, two new projectssirius-components-domain-emf
andsirius-components-view-emf
have been introduced in order to connect the EMF compatibility layer with the domain and view DSL. Consumers ofsirius-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 projectsirius-components-compatibility-emf
has been added in order to provide EMF support for the Sirius desktop compatibility layer. Consumers ofsirius-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 intosirius-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 suffixView
andRepresentation
respectively. As an example, the componentFormWebSocketContainer
is now namedFormRepresentation
-
#1231 [formdescriptioneditors] The components related to formdescriptioneditors have been extracted to
@eclipse-sirius/sirius-components-formdescriptioneditors
. The representation has been renamedFormDescriptionEditorRepresentation
. -
#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, theServerContext
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
. TheExplorerWebSocketContainer
has also been renamedExplorerView
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 theTreeItemContextMenuContext
to provide the contributions -
#1231 [workbench] Move the workbench related code to
@eclipse-sirius/sirius-components-core
. This move includes components such asWorkbench
,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 anobjectId: ID
as argument instead of just the object’skind: 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 adisplayProvider
and astyleProvider
. ThedisplayProvider
is used to display the text of the hyperLink. The GraphQL API has also been changed with two additional fields on the typeLink
:display
andstyle
(optional). The front-end use thedisplay
value instead of thelabel
value to display the hyperlink text. Thelabel
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 butnull
in these cases. -
#1289 [core] The
representationDescriptions
GraphQL query now returns a new attribute nameddefaultName
in addition to thelabel
andid
. For view-based representations and , thedefaultName
is computed from theRepresentationDescription’s `titleExpression
.
-
[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 ofpostcss`
that we use. We will thus usepostcss 8.4.14
andjest-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 withgraphql-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 tographql-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
andxstate 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
-
#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
-
#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 exampleIObjectService
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`
-
#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
-
[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
-
#1141 [frontend] The
PropertiesWebSocketContainer
which was hard-coded to display thepropertiesEvent
subscription has been made more generic and renamedFormBasedView
. It now takes an additional prop namedsubscriptionName
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 newDetailsView
component (which simply configuresFormBasedView
to listen topropertiesEvent
as before).
-
The frontend now depends on
@material-ui/lab
to support the new tree widget (see ADR-065).
-
#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
-
#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 newdisplayMode = 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.
-
#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
-
[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
-
#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
andSite
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 anicon
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.
-
#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
-
#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
andWorkbenchSelectionEntry
tosirius-components-representations
in order to let any representation use those classes. We may rename theSelection
representation in the future in order to rename them toSelection
andSelectionEntry
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
-
#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
-
[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
-
[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
-
#808 [core] Update the namespace of the projects from
sirius-web-xxx
tosirius-components-xxx
. The projectssirius-web-api
andsirius-web-core-api
have been merged intosirius-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
toorg.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
work. It should be very easy for those in a Spring environment, but it is not automatic for those outside of a Spring environmentin the `RequestContextHolder
to make the `EditingContextEventProcessor` -
#699 [core] The
IRepresentationImageProvider
will now use thekind
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 theRepresentationMetadata
-
#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, theExplorerWebSocketContainerProps
,PropertiesWebSocketContainerProps
,RepresentationsWebSocketContainerProps
andValidationWebSocketContainer
types have been removed and replaced with the singleWorkbenchViewComponentProps
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 theEdgeCreationEvent
have been renamed toSinglePositionEvent
andDoublePositionEvent
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. TheCreateNodeTool
andCreateEdgeTool
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
-
#992 [view] Let the
ViewValidator
consider statically contributedEPackages
when validating domain types -
#991 [diagram] Restore edge creation tools feedback
-
#1056 [core] Fix an invalid usage of
forwardRef
inDiagramTreeItemContextMenuContribution
-
#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)
-
#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 theRepresentationMetadata
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
-
#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
-
[ADR-37] Add support for connector tool
-
[ADR-38] Improve the layout of multiple edges between the same nodes
-
#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
-
#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 anIEditingContextEventProcessorExecutorServiceProvider
-
#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 bykind
since it was always thekind
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 newfindAll
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.
-
[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
-
#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 nameddeletionPolicy
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
-
#871 [core] An
IEditingContextEventProcessorExecutorServiceProvider
can be given to theEditingContextEventProcessor
in order to customize theExecutorService
which will be used to handle the processing of theIInput
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 ourObjectMapperConfiguration
-
#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.
-
[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
In addition to members of the Sirius core team, this release includes contributions from the following authors. Many thanks to them!
-
[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
-
#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 likekind
. For example, the behavior of theTreeDescription#getKindProvider
andNodeDescription#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.
-
#804 [core] Update the name of our configuration properties. The configuration property
sirius.web.graphql.websocket.allowed.origins
will now besirius.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 propertyorg.eclipse.sirius.web.editingContextEventProcessorRegistry.disposeDelay
will now besirius.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.
-
#773 [compatibility] Add support for both
createView
anddeleteView
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 ofIExternalJavaAction
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
-
#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 ofITreeInput
-
[diagram] The variable
selectedNode
is now available even if there are noselectedObject
from a selection representation -
#817 [core] Improve the TypeScript typing of the frontend
-
[form] Add support for property groups defined in a different category
-
[diagram] The variable
selectedNode
was only available in the variable manager used when executing node tools if a selection dialog was also available. Now theselectedNode
variable will always be available unless the tool has been invoked on the background of the diagram
In addition to members of the Sirius core team, this release includes contributions from the following authors. Many thanks to them!
-
[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
-
[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 eventIRepresentation#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
-
#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
orEditingContext#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
andsirius-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. ThepayloadSink
should be used to communicate a response to the process which has sent the input to handler. ThechangeDescriptionSink
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 namedIStatus
with two classes implementing it,Failure
andSuccess
. Thanks toFailure
, 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 theErrorPayload
created from theFailure
. 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
andnsPrefix
).
-
#190 [emf] Add support for inverse references navigation thanks to an
ECrossReferenceAdapter
installed directly on theEditingContext
-
#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 addedViewCreationRequest
in order to support unsynchronized diagram description created programmatically
-
[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 internalNoOp
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
andelement
variables for the node/container creation tools -
#729 [emf] Make sure that the resource set of our
EditingContext
is anIEditingDomainProvider
-
#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 thehttpOrigin
inTool.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
-
#654 [domain] Set
Feature#optional
default value totrue
sincefalse
created serialization issues. We cannot providefalse
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
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.
-
[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
-
[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
andsirius-web-graphql
will no longer exist in this repository
-
#569 [emf] Move document-related code out of
sirius-web-emf
-
#569 [core] Remove the last dependency to
sirius-web-services
fromsirius-web-emf
. As a result, theObjectService
does not need to know about representations anymore -
#562 [graphql] Remove references to
projectId
from the subscriptions and useeditingContextId
instead -
#562 [graphql] Move the
representation
andrepresentations
fields fromProject
toEditingContext
-
#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 ofObjectMapper
-
#589 [core] Remove
sirius-web-services
fromsirius-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
orIRepresentationSearchService
-
[core] Provide the editing context while searching and saving representations instead of its identifier. As a result, interfaces such as
IRepresentationPersistenceService
andIRepresentationSearchService
have been modified
-
#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
-
[core] Improve the
ShareDiagramModel
,DeleteDocumentModal
andUploadModelModal
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
-
#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
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.
-
[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
-
[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
-
#152 [releng] Remove usage of
airbnb-props-types
anduniversal-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
andIPayload
. 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
intoChangeDescription
in order to encapsulate the source of the change too. This will allow a representation to distinguish between aSEMANTIC_CHANGE
coming from another representation and one coming from itself -
#347 [diagram] Replace
Size
andPosition
builders bySize#of
andPosition#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, theeditingContextId
-
#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 theFormEventProcessor
-
#357 [core] Remove the
SubscriptionDescription
and use instead the SpringSecurityContextHolder
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 ofIDisposablePublisher
andIEditingContextEventProcessorRegistry
which can impact any customIRepresentationEventProcessor
-
#377 [graphql] Rename the
projectEvent
subscription toeditingContextEvent
-
#382 [diagram] Switch the type of the label identifier from
String
toUUID
-
#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
andToolDescriptionQuery
-
#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 theNavigationBar
-
[core] Remove the now useless components such as
Navbar
,ErrorView
,View
,Go
,UserStatus
andFooter
-
[core] Remove the now useless hooks such as
useCapabilities
,useBranding
,useAuth
-
[core] Remove
VariableManager#children
since it was not used -
#325 [compatibility] Move
ViewExtensionDescriptionConverter
tosirius-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
andsirius-web-diagrams-services
-
#185 [graphql] Move the
toolSections
field fromViewer
toDiagram
-
#402 [core] Remove most dependencies to
sirius-web-services
andsirius-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
-
#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
-
#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 onSinks
-
#341 [diagram] Add the variables
semanticEdgeSource
andsemanticEdgeTarget
to most edge related expressions -
#341 [compatibility] Provide the variables
source
andtarget
for edge related operations by leveraging the newly introduced variablessemanticEdgeSource
andsemanticEdgeTarget
-
#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 anErrorPayload
when the child that has been created has no owner and handleErrorPayload
in theNewObjectModal
-
[core] Add the ability to indicate that a selection is a representation thanks to the
isRepresentation
function on theRepresentationContext
registry
-
#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
withObjectService
,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. ThefeatureName
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
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.
-
[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
-
[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
-
#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 asIEditingContext
,IPayload
andIInput
-
#241 [core] Introduce the
sirius-web-services
project and move some business related concepts likeDocument
,Project
andProjectService
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’sSecurityContextHolder
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 withIInput
-
#241 [core] Remove all dependencies to
sirius-web-services-api
fromsirius-web-collaborative-api
-
#241 [core] Remove the
ProjectRenamedEventPayload
to allow us to prepare the future deletion of theuseProject
hook and the complete removal of business concerns from the collaborative layer -
#241 [core] Rename the
ProjectEventProcessor
toEditingContextEventProcessor
. This concept and its registry have been made independent ofProject
. Those concepts will stop relying on aprojectId
but aneditingContextId
instead even if in practice this variable will still contain the value ofprojectId
for now. -
#241 [core] Remove the method
IEditingContext#getDomain
. This method will now only be available on the EMF specific version of theIEditingContext
. This contraint was not useful for alternate implementations -
#241 [core] Move the
RenameRepresentationInput
to thesirius-web-collaborative-api and `IObjectService
to thesirius-web-core-api
-
#241 [explorer] Use
editingContextId
instead ofprojectId
in the explorer -
#241 [properties] Move properties related services to form related projects
-
#241 [diagram] Remove the dependency to
sirius-web-services-api
insirius-web-spring-collaborative-diagrams
thanks to the introduction of two new projectssirius-web-diagrams-services-api
andsirius-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
andPropertiesWebSocketContainer
have thus been modified. In order to make it easier to reuse a Sirius Components workbench a component namedWorkbench
has been created and new types such asSelection
,Representation
andWorkbenchProps
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
-
#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 typeRepresentationComponentProps
for all representation components which replaces types such asDiagramWebSocketContainerProps
. TheRepresentationContext
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 differenthttpOrigin
to organize their frontend and backend in a very different manner
-
#252 [diagram] Improve the TypeScript typing of the
DiagramWebSocketContainer
with the introduction ofSelection
and a dedicatedDiagramWebSocketContainerProps
-
[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