Skip to content

Releases: SchweizerischeBundesbahnen/scion-workbench

21.0.0-beta.3 (@scion/workbench)

21 Jan 15:25

Choose a tag to compare

21.0.0-beta.3 (2026-01-21)

Features

  • workbench: add support for @scion/microfrontend-platform version 2.0.0 (690bfb0)

BREAKING CHANGES

  • workbench: SCION Workbench now requires @scion/microfrontend-platform version 2.0.0 or higher. For more information, refer to the changelog of @scion/microfrontend-platform.
  • workbench: SCION Workbench requires @scion/workbench-client version 1.0.0-beta.38 or later.

1.0.0-beta.38 (@scion/workbench-client)

21 Jan 15:15

Choose a tag to compare

1.0.0-beta.38 (2026-01-21)

Features

  • workbench-client: add support for @scion/microfrontend-platform version 2.0.0 (690bfb0)

BREAKING CHANGES

  • workbench-client: SCION Workbench Client now requires @scion/microfrontend-platform version 2.0.0 or higher. For more information, refer to the changelog of @scion/microfrontend-platform.

21.0.0-beta.2 (@scion/workbench)

19 Jan 16:01

Choose a tag to compare

21.0.0-beta.2 (2026-01-19)

Bug Fixes

  • workbench/dialog: allow dialog growing beyond context bounds (6dcddce), closes #730
  • workbench/dialog: prevent dragging user selection when moving dialog (e.g., by previous Ctrl+A) (e72137a)
  • workbench/dialog: open microfrontend dialog in calling context (9d1d06f)
  • workbench/messagebox: open microfrontend message box in calling context (917c683)
  • workbench/popup: open microfrontend popup in calling context (992a544)

Features

  • workbench/popup: add option to position popup relative to context or viewport (b21b08e)
  • workbench: enable host app to contribute microfrontends for parts and views (6d8590c), closes #271

BREAKING CHANGES

  • workbench: The integration of host microfrontends has changed.
    • Dialog, popup, and messagebox microfrontends of the host application now require an empty path.
      To migrate, set the path in the capability and route to empty string and use the new route matchers canMatchWorkbenchDialogCapability, canMatchWorkbenchPopupCapability, or canMatchWorkbenchMessageBoxCapability, respectively.

      Example — route matching a dialog capability with qualifier {dialog: 'about'}

      import {Routes} from '@angular/router';
      import {canMatchWorkbenchDialogCapability} from '@scion/workbench';
      
      const routes: Routes = [
        {path: '', canMatch: [canMatchWorkbenchDialogCapability({dialog: 'about'})], component: AboutComponent},
      ];

      Since the path must be empty, capability parameters cannot be referenced in the path anymore.
      To migrate, inject ActivatedMicrofrontend in the microfrontend component to read the passed parameters.

      Example — inject ActivatedMicrofrontend in a host microfrontend to read capability and parameters:

      import {inject} from '@angular/core';
      import {ActivatedMicrofrontend} from '@scion/workbench';
      
      const {capability, params} = inject(ActivatedMicrofrontend);
    • Host dialog microfrontends must now inject WorkbenchDialog from @scion/workbench (previously from @scion/workbench-client).

    • Host messagebox microfrontends must now inject WorkbenchDialog from @scion/workbench (previously from @scion/workbench-client).

    • Host popup microfrontends must now inject WorkbenchPopup from @scion/workbench (previously from @scion/workbench-client).

    • Host popup microfrontends can read deprecated referrer information from the deprecated WORKBENCH_POPUP_REFERRER DI token (previously from WorkbenchClient).

Dependencies

  • workbench: SCION Workbench requires @scion/workbench-client version 1.0.0-beta.37 or later.

1.0.0-beta.37 (@scion/workbench-client)

19 Jan 15:12

Choose a tag to compare

1.0.0-beta.37 (2026-01-19)

Bug Fixes

  • workbench-client/dialog: open dialog in calling context when opened from host (9d1d06f)
  • workbench-client/messagebox: open message box in calling context when opened from host (917c683)
  • workbench-client/popup: open popup in calling context when opened from host (992a544)

Features

  • workbench-client: enable host app to contribute microfrontends for parts and views (6d8590c), closes #271

21.0.0-beta.1 (@scion/workbench)

27 Nov 16:37

Choose a tag to compare

21.0.0-beta.1 (2025-11-27)

Features

  • workbench: add support for Angular 21 (37c1887)
  • workbench/dialog: add option to configure providers available for injection (b5c3197)
  • workbench/messagebox: add option to configure providers available for injection (e95fb7f)

Bug Fixes

  • workbench/popup: render popup at specified position on first rendering (0e7139e)

Code Refactoring

  • workbench: remove deprecated option to configure workbench startup (96b548c)
  • workbench: remove deprecated WorkbenchStartup.isStarted and WorkbenchStartup.whenStarted properties (1ea7d11)
  • workbench: remove deprecated registration of workbench initializers (e3856ef)
  • workbench: remove deprecated option to configure workbench splash (0314aab)
  • workbench: remove deprecated method to switch workbench theme (bc5e697)
  • workbench: remove deprecated text property from MenuItemConfig (2a9f854)
  • workbench: remove deprecated visible property from MenuItemConfig (ec6ba13)
  • workbench: remove deprecated support for displaying the empty-path route as the start page (6d76e32)
  • workbench/view: remove deprecated properties for accessing view's navigation details (a6ededb)
  • workbench/dialog: remove generic from dialog handle (fb1a664)
  • workbench/popup: refactor Workbench Popup API (ff2ffaf)
  • workbench/notification: remove deprecated API to set title as Observable (419289a)
  • workbench/notification: refactor Workbench Notification API (8e0d109)

BREAKING CHANGES

  • workbench: SCION Workbench requires Angular 21.

    Note that:

    • SCION Workbench does not support zoneless. Support is planned for 2026.
    • SCION Workbench still requires @angular/animations. Removal is planned for 2026.
  • workbench: SCION Workbench now requires @scion/workbench-client version 1.0.0-beta.36 or higher. For more information, refer to the changelog of @scion/workbench-client.

  • workbench: SCION Workbench now requires @scion/toolkit version 2.0.0 or higher. For more information, refer to the changelog of @scion/toolkit.

  • workbench: SCION Workbench now requires @scion/microfrontend-platform version 1.6.0 or higher. For more information, refer to the changelog of @scion/microfrontend-platform.

  • workbench: Removed deprecated option to configure workbench startup.

    To migrate:

    • Remove WorkbenchConfig.startup.launcher config passed to provideWorkbench().
    • If using the APP_INITIALIZER option, start the workbench manually in an Angular app initializer using WorkbenchLauncher.launch().
    • If using the LAZY option, remove the config, if any. No further migration is required because this is the default behavior.

    Migration example of starting the workbench in an app initializer:

    import {provideWorkbench, WorkbenchLauncher} from '@scion/workbench';
    import {bootstrapApplication} from '@angular/platform-browser';
    import {inject, provideAppInitializer} from '@angular/core';
    
    bootstrapApplication(AppComponent, {
      providers: [
        provideWorkbench(),
        provideAppInitializer(() => inject(WorkbenchLauncher).launch())
      ]
    });
  • workbench: Removed deprecated WorkbenchStartup.isStarted and WorkbenchStartup.whenStarted properties.

    To migrate:

    • WorkbenchStartup.isStarted has been replaced by WorkbenchStartup.done.
    • WorkbenchStartup.whenStarted has been replaced by WorkbenchStartup.whenDone. Note that the type has changed to void.
  • workbench: Removed deprecated option to configure workbench splash.

    To migrate, register a splash via WorkbenchConfig.splashComponent property, previously via WorkbenchConfig.startup.splash.

  • workbench: Removed deprecated registration of workbench initializers.

    The registration of workbench initializers has changed. The new provideWorkbenchInitializer() and provideMicrofrontendPlatformInitializer() functions allow for registration of initializer functions, similar to Angular's provideAppInitializer() function. The previous DI-based registration has been removed.

    To migrate:

    • Use provideWorkbenchInitializer() to register initializer functions, optionally specifying the phase for execution.
      Previous DI tokens WORKBENCH_PRE_STARTUP, WORKBENCH_STARTUP, and WORKBENCH_POST_STARTUP have been removed.
    • Use provideMicrofrontendPlatformInitializer() to register microfrontend-related initializer functions, optionally specifying the phase for execution. Previous DI tokens MICROFRONTEND_PLATFORM_PRE_STARTUP and MICROFRONTEND_PLATFORM_POST_STARTUP have been removed.
    • Class-based initializers have been removed. Instead, register an initializer function and inject the class-based initializer.

    Before Migration

    import {MICROFRONTEND_PLATFORM_POST_STARTUP, provideWorkbench, WORKBENCH_POST_STARTUP, WORKBENCH_STARTUP} from '@scion/workbench';
    import {bootstrapApplication} from '@angular/platform-browser';
    
    bootstrapApplication(AppComponent, {
      providers: [
        provideWorkbench(),
        {
          provide: WORKBENCH_STARTUP,
          multi: true,
          useClass: SomeService1,
        },
        {
          provide: WORKBENCH_POST_STARTUP,
          multi: true,
          useClass: SomeService2,
        },
        {
          provide: MICROFRONTEND_PLATFORM_POST_STARTUP,
          multi: true,
          useClass: SomeService3,
        },
      ],
    });

    After Migration

    import {provideMicrofrontendPlatformInitializer, provideWorkbench, provideWorkbenchInitializer, WorkbenchStartupPhase} from '@scion/workbench';
    import {bootstrapApplication} from '@angular/platform-browser';
    import {inject} from '@angular/core';
    
    bootstrapApplication(AppComponent, {
      providers: [
        provideWorkbench(),
        provideWorkbenchInitializer(() => inject(SomeService1).init()),
        provideWorkbenchInitializer(() => inject(SomeService2).init(), {phase: WorkbenchStartupPhase.PostStartup}),
        provideMicrofrontendPlatformInitializer(() => inject(SomeService3).init()),
      ],
    });
  • workbench: Removed deprecated method to switch workbench theme.

    Previously, the theme was switched using WorkbenchService.switchTheme method.

    To migrate:

    • Use WorkbenchService.settings.theme signal to switch and read the current theme.
    • Read current color scheme using getComputedStyle(inject(DOCUMENT).documentElement).colorScheme.
  • workbench: Removed deprecated text property from MenuItemConfig.

    To migrate, register a text provider instead of configuring the text for each menu item.

    A text provider is a function that returns the text for a translation key. Register the text provider via configuration passed to the provideWorkbench function.

    Before Migration

    import {provideWorkbench} from '@scion/workbench';
    import {inject} from '@angular/core';
    
    provideWorkbench({
      viewMenuItems: {
        close: {text: () => inject(TranslateService).translate('workbench.close_tab.action')},
        closeOthers: {text: () => inject(TranslateService).translate('workbench.close_other_tabs.action')},
        closeAll: {text: () => inject(TranslateService).translate('workbench.close_all_tabs.action')},
        closeToTheRight: {text: () => inject(TranslateService).translate('workbench.close_tabs_to_the_right.action')},
        closeToTheLeft: {text: () => inject(TranslateService).translate('workbench.close_tabs_to_the_left.action')},
        moveRight: {text: () => inject(TranslateService).translate('workbench.move_tab_to_the_right.action')},
        moveLeft: {text: () => inject(Tr...
Read more

1.0.0-beta.36 (@scion/workbench-client)

27 Nov 16:10

Choose a tag to compare

1.0.0-beta.36 (2025-11-27)

Code Refactoring

  • workbench-client/view: change signature of WorkbenchView.params$ and WorkbenchView.snapshot.params from Map<string, any> to Map<string, unknown> (2cb37ec)
  • workbench-client/view: remove deprecated API to set title and heading as Observable (b55c635)
  • workbench-client/view: deprecate transient view parameters (a43db8c)
  • workbench-client/dialog: remove deprecated API to set title as Observable (407cd13)
  • workbench-client/dialog: remove generic from dialog handle (7e8ee5d)
  • workbench-client/popup: refactor Workbench Popup API (57c5406)
  • workbench-client/notification: refactor Workbench Notification API (55e451f)

BREAKING CHANGES

  • workbench-client/view: Changed signature of WorkbenchView.params$ and WorkbenchView.snapshot.params from Map<string, any> to Map<string, unknown>. An explicit cast may be required now.
  • workbench-client/view: Removed deprecated API to set title and heading as Observable. To migrate, pass a translatable and provide the text using a text provider registered in WorkbenchClient.registerTextProvider.
  • workbench-client/popup: Changed signature of WorkbenchPopup.params from Map<string, any> to Map<string, unknown>. An explicit cast may be required now.
  • workbench-client/popup: Removed generic from popup handle as not required on type-level.
  • workbench-client/dialog: Removed generic from dialog handle as not required on type-level.
  • workbench-client/dialog: Removed deprecated API to set title as Observable. To migrate, pass a translatable and provide the text using a text provider registered in WorkbenchClient.registerTextProvider.
  • workbench-client: SCION Workbench Client now requires @scion/toolkit version 2.0.0 or higher. For more information, refer to the changelog of @scion/toolkit.
  • workbench-client: SCION Workbench Client now requires @scion/microfrontend-platform version 1.6.0 or higher. For more information, refer to the changelog of @scion/microfrontend-platform.

Deprecations

  • workbench-client/popup: Refactored the Workbench Popup API to align with other Workbench APIs like Dialog, MessageBox, and Notification. Deprecated the old API and marked it for removal.

    To migrate, use WorkbenchPopupOptions instead of WorkbenchPopupConfig.

  • workbench-client/notification: Refactored the Workbench Notification API to align with other Workbench APIs like Dialog, MessageBox, and Popup. Deprecated the old API and marked it for removal.

    To migrate:

    • Pass text or qualifier as the first argument to WorkbenchNotificationService.show.
    • Set duration in milliseconds, not seconds.
    • Use WorkbenchNotificationOptions instead of WorkbenchNotificationConfig.
  • workbench-client/view: Transient view parameters are deprecated. API marked for removal. No replacement.

    To migrate, send large data as a retained message to a random topic and pass the topic as parameter. After receiving the data, the view should delete the retained message to free resources.

    Example for sending large data

    import {Beans} from '@scion/toolkit/bean-manager';
    import {MessageClient} from '@scion/microfrontend-platform';
    import {WorkbenchRouter} from '@scion/workbench-client';
    
    // Define topic to transfer large data.
    const dataTransferTopic = crypto.randomUUID();
    
    // Open view, passing the transfer topic as a view parameter.
    Beans.get(WorkbenchRouter).navigate({component: 'view'}, {
      params: {dataTransferTopic: dataTransferTopic},
    });
    
    // Send large data to transfer topic.
    const largeData = 'Large Data';
    Beans.get(MessageClient).publish(dataTransferTopic, largeData, {retain: true});

    Example for receiving large data

    import {Beans} from '@scion/toolkit/bean-manager';
    import {MessageClient} from '@scion/microfrontend-platform';
    import {WorkbenchView} from '@scion/workbench-client';
    
    // Read transfer topic from view parameters.
    const transferTopic = Beans.get(WorkbenchView).snapshot.params.get('dataTransferTopic') as string;
    
    // Receive large data.
    Beans.get(MessageClient).onMessage(transferTopic, msg => {
      console.log('large data', msg.body);
    
      // Delete retained message to free resources.
      Beans.get(MessageClient).publish(transferTopic, undefined, {retain: true});
    });

1.0.0-beta.35 (@scion/workbench-client)

12 Nov 10:28

Choose a tag to compare

1.0.0-beta.35 (2025-11-12)

Features

  • workbench-client: enable microfrontend to inject current workbench element (d2e4537)

20.0.0-beta.9 (@scion/workbench)

11 Nov 12:58

Choose a tag to compare

20.0.0-beta.9 (2025-11-11)

Features

  • workbench/perspective: enable contribution of microfrontend parts to a workbench perspective (b6d25cf), closes #683
  • workbench/part: support activating docked part when adding it to the layout (89aba48)
  • workbench/dialog: add support for non-blocking dialog (28b0291)
  • workbench/dialog: add support for part-modal dialog (4411246)
  • workbench/notification: enable closing notification via handle (7b425bd)
  • workbench/notification: prevent notification from closing on hover (903a912)

BREAKING CHANGES

  • workbench: SCION Workbench requires @scion/microfrontend-platform v1.5.0 or higher.
  • workbench: SCION Workbench requires @scion/workbench-client v1.0.0-beta.34 or higher.

Recommendations

  • To use icons in docked parts, configure an icon provider in the workbench host application or include the Material icon font. See documentation for details.

Deprecations

  • workbench/popup: Signature of context option in popup config has changed from object literal to string literal. Migrate {context: {viewId: 'view.x'}} to {context: 'view.x'}.
  • workbench/dialog: Signature of context option in dialog options has changed from object literal to string literal. Migrate {context: {viewId: 'view.x'}} to {context: 'view.x'}.
  • workbench/messagebox: Signature of context option in messagebox options has changed from object literal to string literal. Migrate {context: {viewId: 'view.x'}} to {context: 'view.x'}.
  • workbench/dialog: view modality in dialog options was renamed to context.
  • workbench/messagebox: view modality in messagebox options was renamed to context.

1.0.0-beta.34 (@scion/workbench-client)

11 Nov 12:46

Choose a tag to compare

1.0.0-beta.34 (2025-11-11)

Features

  • workbench-client/perspective: enable contribution of microfrontend parts to a workbench perspective (b6d25cf), closes #683
  • workbench-client/dialog: add support for non-blocking dialog (28b0291)
  • workbench-client/dialog: add support for part-modal dialog (4411246)
  • workbench-client/text: support passing interpolation parameters via options (17718d0)

Recommendations

  • workbench-client: For Angular applications, provide WorkbenchPart for dependency injection. See documentation for details.
    import {WorkbenchPart} from '@scion/workbench-client';
    import {Beans} from '@scion/toolkit/bean-manager';
    
    {provide: WorkbenchPart, useFactory: () => Beans.opt(WorkbenchPart)}
  • To use icons in docked parts, configure an icon provider in the workbench host application or include the Material icon font. See documentation for details.

Deprecations

  • workbench-client/perspective: The modeling of a workbench perspective capability has changed: Parts must be modeled as separate part capabilities and views referenced from part capabilities. To migrate, refer to the documentation of WorkbenchPerspectiveCapability and WorkbenchPartCapability. Support for the deprecated model will be removed in SCION Workbench version 22.

    Before migration:

    {
      "type": "perspective",
      "qualifier": {
        "perspective": "sample-perspective"
      },
      "private": false,
      "properties": {
        "layout": [
          {
            "id": "main-area"
          },
          {
            "id": "navigator",
            "align": "left",
            "relativeTo": "main-area",
            "ratio": 0.25,
            "views": [
              {
                "qualifier": {
                  "view": "navigator"
                }
              }
            ]
          }
        ]
      }
    }

    After migration:

    {
      "type": "perspective",
      "qualifier": {
        "perspective": "sample-perspective"
      },
      "private": false,
      "properties": {
        "parts": [
          {
            "id": "main-area",
            "qualifier": {
              "part": "main-area"
            }
          },
          {
            "id": "navigator",
            "qualifier": {
              "part": "navigator"
            },
            "position": {
              "align": "left",
              "relativeTo": "main-area",
              "ratio": 0.25
            }
          }
        ]
      }
    },
    {
      "type": "part",
      "qualifier": {
        "part": "main-area"
      }
    },
    {
      "type": "part",
      "qualifier": {
        "part": "navigator"
      },
      "properties": {
        "views": [
          {
            "qualifier": {
              "view": "navigator"
            }
          }
        ]
      }
    }
  • workbench-client/popup: Signature of context option in popup config has changed from object literal to string literal. Migrate {context: {viewId: 'view.x'}} to {context: 'view.x'}.

  • workbench-client/dialog: Signature of context option in dialog options has changed from object literal to string literal. Migrate {context: {viewId: 'view.x'}} to {context: 'view.x'}.

  • workbench-client/messagebox: Signature of context option in messagebox options has changed from object literal to string literal. Migrate {context: {viewId: 'view.x'}} to {context: 'view.x'}.

  • workbench-client/dialog: view modality in dialog options was renamed to context.

  • workbench-client/messagebox: view modality in messagebox options was renamed to context.

  • workbench-client/popup: Referrer property on popup handle has been marked for removal. No replacement. Instead, add a parameter to the popup capability for the popup opener to pass required referrer information.

20.0.0-beta.8 (@scion/workbench)

17 Sep 09:27

Choose a tag to compare

20.0.0-beta.8 (2025-09-17)

Bug Fixes

  • workbench/view: prevent stale view title after navigation (11f3226)
  • workbench: prevent flickering of translated texts on re-layout (e4fdc4b), closes #255

Dependencies

  • workbench: SCION Workbench requires @scion/workbench-client version 1.0.0-beta.33 or later.