Releases: eclipse-glsp/glsp-client
Releases · eclipse-glsp/glsp-client
v2.2.1
Changes
- [diagram] Fix a bug that prevented proper rendering of templates/ghost elements during node creation in Firefox #324 - Contributed on behalf of Axon Ivy AG
- [routing] Improve anchor point calculation for edge routing #325
- [validation] Fix a bug that could cause duplicate validation markers after a model update #329
- [di] Introduce a reusable
LazyInjector
that can be used for deferred retrial of services from the container. #330- Introduce
preLoadDiagram
hook forIDiagramStartup
s. This hook is invoked right before theDiagramLoader
starts the model loading process
- Introduce
- [launch] Introduce
GLSPWebWorkerProvider
to simply setting up a worker connection to a in-browser GLSP-server #322 - [diagram] Improve base abstract
UIExtension
to allow more fine-grained definition of container and parent #333 - Contributed on behalf of Axon Ivy AG - [protocol] Improve Geometry API. Add utility functions to
Bound
,Dimension
andPoint
. IntroduceVector
andMovement
types #341 - Contributed on behalf of Axon Ivy AG - [features] Introduce optional
gridModule
for managing and rendering grids anddebugModule
that allows do display additional graphical debug information during development #343 #359 - [diagram] Improve error handling of startup hooks #346
- [feature] Improve style handling in svg exporter #354
- [di] Improve
ContainerConfiguration
API and add additional checks to ensure that all ids ofFeatureModules
are unique #355 - [diagram] Update to sprotty 1.2.0. Non-breaking as all potential API breaks have been mitigated via the glsp-sprotty rexport layer #357
- [diagram] Fix a bug with the
AutocompleteWidget
that prevented proper application of valid suggestions #362 - [api] Improved behavior of default
ToolManager
to avoid unnecessary deactivation and reactivation of default tools #367 - [diagram] Add
onFocusChanged
event toFocusTracker
andEditorContextService
#380
Potentially breaking changes
- [API] Centralize most marquee selection behavior in the
MarqueeUtil
class which is now a singleton, injectable and needs theDOMHelper
. This will cause a break if you manually created the class without injecting it. To construct it manually, you need to provide theDomHelper
as a second argument #373. - [protocol] Avoid indirect dependency to
chai
introduce by accidentally exporting testing modules #321@eclipse-glsp/protocol
no longer exportstest-util.ts
via main index. If needed the module can still be imported via the full path@eclipse-glsp/protocol/lib/utils/test-util.ts
- [API] Apply feedback commands already on
SetModelCommand
and unifyrank
andpriority
property #323.- Method
FeedbackAwareUpdateModelCommand.getFeedbackCommands
moved toIFeedbackEmitter
for re-use, resulting in two new methods:getFeedbackCommands
andapplyFeedbackCommands
. - Method
FeedbackAwareUpdateModelCommand.getPriority
is replaced by a genericrank
property and theRanked
namespace. - The
priority
property (higher priority equals earlier execution) inFeedbackCommand
is superseeded by arank
property (lower rank equals earlier execution).
- Method
- [DI] Introduce deferred injection for multi-injected services (listeners, action handlers etc.). Highly reduces the likelihood of circular dependency issues during container creation #330.
No API breaks in the core API, but it introduces some minor breaks in protected methods/fields of default implementations:GLSPCommandStack
- Handling of
IGModelRootListeners
has moved to theEditorContextService
. onModelRootChanged
is no deprecated. UseEditorContextService.onModelRootChanged
instead
- Handling of
EditorContextService
: ThepostRequestModel
method has been removed. It was previously unused and effectively a no-op.SelectionService
: InjectedcommandStack
property has been removed.
- [diagram] Introduce a reusable
FeedbackEmitter
base implementation that is stable across model updates and allows composing feedback before dispatching it #342
Refactored tool implementations and related services to make use of the newFeedbackEmitter
API. This can cause potential breaks for adopters that have customized the default tool implementations.
Affected tools and services:MouseTrackingElementPositionListener
,HelperLineManager
,FeedbackMoveMouseListener
,NodeCreationToolMouseListener
,EdgeEditListener
, - [diagram] Refactor and improve
ChangeBounds
API by introducing a centralizedChangeBoundsManage
andChangeBoundsTracker
#344 #348 #352 - Contributed on behalf of Axon Ivy AG
This can cause potential breaks for adopters that have customized the default tool implementations
Affected tools and services:MouseTrackingElementPositionListener
,FeedbackMoveMouseListener
,ChangeBoundsTool
,ChangeBoundsListener
,FeedbackEdgeRouteMovingMouseListener
,NodeCreationTool
,
Full Changelog: v2.1.0...v2.2.1
2.1.1 Release
2.1.0 Release
Changes
- [diagram] Fix a bug that prevented correct rendering of projection bars when using
GLSPProjectionView
#298 - [a11y] Improved responsibility and feedback when resizing or moving diagram elements with keyboard-only commands #295
- [diagram] Extends
configureDiagramOptions
function to also allow partial configuration ofViewerOptions
#296 - [diagram] Remove unused handleSetContextActions from ToolPalette #301
- [diagram] Deprecate
ISModelRootListener
API in favor ofIGModelRootListener
#303 - [diagram] Ensure that the suggestion container position of the
AutoCompleteWidget
is rendered correctly #304 - [feature] Extend
ToolPalette
/CreateOperation
API to support rendering of preview/ghost elements when creating new nodes #301 - [protocol] Fix a bug in
BaseJsonRpcClient
to ensure that it can handle multiple open diagram sessions #307 - [diagram] Restructure some tools to have a more common infrastructure and support helper lines #306
- [diagram] Fix a bug in
SelectionService
that caused issues with inversify when injecting certain services (e.g.ActionDispatcher
) inSelectionChangeListener
implementations #305 - [diagram] Ensure that the
SelectionService
does not trigger a change event if the selection did not change on model update #313
Full Changelog: v1.0.0...v2.1.0
2.0.0 Release
Changes
- [layout] Improve Layouter to support more dynamic layouts and complex parent/children node structures #187 - Contributed on behalf of STMicroelectronics
- [diagram] Fix SVG export for nested root elements e.g.
GLSPProjectionView
#196 - [diagram] Scope the styles to not break existing application layout #209
- [routing] Ensure that routes are properly re-calculated when moving a routing point #198
- [diagram] Fix a bug in the
EditLabelUIExtension
where the diagram becomes dirty without an actual change. #766 - [diagram] Extend
ComputedBoundsAction
definition with routing information. This enables proper forwarding of client-side computed routes to the server #201 - [DI] The
createClientContainer
function is now deprecated. Please useinitializeDiagramContainer
instead. This new function can also be used withModuleConfigurations
which allow a more fine granular configuration by adding new modules and/or removing default modules. #218 #231 #236 - [diagram] Fix incorrect calculation of decorator popup positions for edges. #221
- [protocol] Introduce a reusable
Disposable
type #222 - [protocol] Introduce reusable utility functions for DI configuration #236#237
- [diagram] Augment diagram SVG with additional model metadata to enable easier integration tests and accessibility #239
- [validation] Add and track reason for validation markers (e.g. batch and live validation) #243
- [protocol] Introduce optional
deselectAll
flag forSelectAction
s #257 - [protocol] Provide the common interfaces and type definitions for TS-based GLSP servers #245 - Contributed on behalf of STMicroelectronics
- [diagram] Introduce a new set of accessability features for disability-aware conceptual modeling and keyboard-only diagram interactions. (experimental) #240 #241 #242 #254 #276 #279
- [API] Re-work tool and feedback structure #264 #274
- Introduce
registerListener
method on GLSP mouse and key tool to return a disposable for de-registration - Adapt
registerFeedback
method from feedback dispatcher to return a disposable for de-registration - Introduce dedicated
BaseGLSPCreationTool
for tools based on trigger actions - Introduce
toDisposeOnDisable
collection inBaseGLSPTool
to register disable handling during enablement
- Introduce
- [DI] Introduce and consistently use
FeatureModule
s instead of plain inversifyContainerModule
s #267 - [diagram] Introduce
statusModule
that binds UI extension to handle & renderGLSPStatusMessages
. #272 - [diagram] Provide generic dirty state handling in
EditorContextService
#272 - [diagram] Fix bug that broke edge edit (routing) in certain cases #273
- [API] Introduce
DiagramLoader
component + life cycle management #274 #282- Integration projects no longer need to manually implement the initial diagram loading. Instead a set of configurations
IDiagramOptions
and then the diagram loader
is invoked and initializes the diagram. - Add a
onServerInitialized
event to theGLSPClientAPI
. - Introduce
IDiagramStartup
service. Adopters can multi bind this service to hook into the diagram loading lifecycle and provide additional logic. i.e. dispatching of initial actions.
- Integration projects no longer need to manually implement the initial diagram loading. Instead a set of configurations
- [diagram] Fix a bug that broke edge intersection detection when using the
GLSPProjectionView
#275 - [diagram] Fix a bug regarding focus handling when integrated in an application frame like Theia #278
Breaking Changes
- [DI] Injecting an
IButtonHandler
constructor is now deprecated. Please useconfigureButtonHandler()
instead. #195 - Contributed on behalf of STMicroelectronics - [node] Update minimum requirements for Node to >=16.11.0 #210
- [protocol] Renamed
UndoOperation
andRedoOperation
toUndoAction
andRedoAction
to match operation specification #216 - [protocol] Remove dependency to
vscode-ws-jsonrpc
. The protocol package now directly offers functions to create a websocket rpc connections #215 - [protocol] The
elementIds
property ofLayoutOperation
is now optional. Ifundefined
the entire model will be layouted #232 - [API] Refactored base API #259
- Removed the
TYPES.SelectionService
service identifier. Please directly use theSelectionService
class as service identifier instead - The
SelectionService
binding is now part of thedefaultGLSPModule
. This means theSelectionService
remains available even if theselectModule
is not configured RootModelChangeListener
s are no longer tied to theFeedbackawareUpdateModelCommand
instead they are managed by theGLSPCommandStack
IMouseTool
andTYPES.IMouseTool
are no longer available. Directly inject and useMouseTool
instead- Refactored rank utility functions
isRanked()
->Ranked.is()
getRank()
->Ranked.getRank()
DEFAULT_RANK
->Ranked.DEFAULT_RANK
- Removed the
- [API] Introduce Event API to replace the old listener/notifier pattern #261
- Reworked
SelectionService
,GlspCommandStack
&EditorContextService
to make use of this new API - Removed explicit (de)registration methods for listeners. Use the corresponding event property (e.g.
SelectionService.onSelectionChanged
) instead - Aligned naming of injectable interfaces & service identifiers to consistently use the
I
prefix
- Reworked
- [API] Re-work tool and feedback structure #264
- Remove generic
toolsModule
andtoolFeedbackModule
in favor of individual tool modules - Rename
dispatchFeedback
inBaseGLSPTool
toregisterFeedback
to align with feedback dispatcher - Switch arguments in
deregisterFeedback
inBaseGLSPTool
for easier de-registration and clean up actions
- Remove generic
- [protocol] Add messages for server-side progress reporting and remove timeout in
ServerMessageAction
#265 - [DI] Renamed and aligned prefixes of DI modules. #266
- Removed
glsp
prefix from all modules (e.g.glspSelectModule
->selectModule
) - In addition, the following modules have been renamed
defaultGLSPModule
->baseModule
modelHintsModule
->typeHintsModule
enableDefaultToolsOnFocusLossModule
->toolFocusLossModule
glspEditLabelModule
->labelEditModule
- Removed
- [websocket] Introduce a reusable
GLSPWebSocketProvider
class that supports reconnect on connection loss #269 - [API] Introduce
GLSPModelSource
as default implementation for sprotty'sModelSource
API #272 #287GLSPDiagramServer
has been deprecated and is no longer availableSelectionServiceAwareContextMenuMouseListener
renamed toGLSPContextMenuMouseListener
SourceURIAware
interface has been removed. No longe required since we only have oneGLSPModelSource
binding now.
- [protocol] Revise TypeHints API and introduce possibility to dynamically query the server for complex connection conditions #285
EdgeTypeHint
sourceElementTypeIds
andtargetElementTypeIds
are now optional. If not provided all connection targets are allowed- Introduce
dynamic
flag. If a hint has this flag enabled connection tools know that the have to query there server in addition
to checking the default ...
1.1.0 Release Candidate 10
What's Changed
- Add keyboard support for searching elements by @aylin-sarioglu in #242
- Update workflow example README by @ndoschek in #251
- Add keyboard support for resizing elements by @aylin-sarioglu in #240
- GLSP-1026 Use new bundled workflow-server package by @tortmayr in #252
- Add documentation for accessibility features by @aylin-sarioglu in #254
- GLSP-1022: Update dependencies by @tortmayr in #253
Full Changelog: v1.1.0-RC09...v1.1.0-RC10
1.1.0 Release Candidate 9
1.1.0 Release Candiate 8
What's Changed
- Add a reason for requesting and setting markers by @planger in #243
- Add missing
reason
toSetMarkersAction
by @planger in #244 - Add SVGMetadata API by @haydar-metin in #239
- Fix wrong import by @tortmayr in #246
New Contributors
- @haydar-metin made their first contribution in #239
Full Changelog: v1.1.0-RC07...v1.1.0-RC08
1.1.0 Release Candiate 7
What's Changed
- Fix definition of
LayoutOperation
by @tortmayr in #232 - Ensure tha DrawFeedbackEdgeAction uses correct type for schema by @tortmayr in #233
- Reformat code & overall cleanup by @tortmayr in #234
- GLSP-954 Add DI utility to protocol package by @tortmayr in #236
- GLSP-954 Ensure that bindAsAService also work with the DI container as context by @tortmayr in #237
- Bump webpack from 5.75.0 to 5.76.0 by @dependabot in #235
Full Changelog: v1.1.0-RC06...v1.1.0-RC07
1.1.0 Release Candiate 6
What's Changed
- Extend type-util by @tortmayr in #228
- Ensure that drawFeedbackAction uses correct schema type by @tortmayr in #230
- Provide own websocket vsode-jsonrpc connection by @tortmayr in #215
- Refactor
createDiagramContainer
function by @tortmayr in #231
Full Changelog: v1.1.0-RC05...v1.1.0-RC06
1.1.0 Release Candiate 5
What's Changed
- Update CHANGELOG.md by @tortmayr in #219
- Bump json5 from 1.0.1 to 1.0.2 by @dependabot in #220
- Add custom 'GEdge' that provides a 'localToParent' calculation by @martin-fleck-at in #221
- Fix copyright header violations by @tortmayr in #223
- Add common Disposable API by @tortmayr in #222
- Ensure that all objects are assignable to the
AnyObject
type by @tortmayr in #225 - Ensure edge routing point can be grabbed in Firefox Browser by @martin-fleck-at in #224
- Replace 'ApplyTaskEditOperation' with direct use of 'EditTaskOperation' by @martin-fleck-at in #226
- Bump http-cache-semantics from 4.1.0 to 4.1.1 by @dependabot in #227
Full Changelog: v1.1.0-RC04...v1.1.0-RC05