Links to previous versions of the documentation (3.7 and later) can be found under each version's header.
Release 01-18-21
Finsemble has been updated to use Electron version 10.2.0. (Chromium - 85.0.4183.121)
Bug Fixes
Note: This release also includes patches 5.1.5 and 5.1.6 described below.
Release 12-22-20
Finsemble has been updated to use Electron version 10.1.7. (Chromium - 85.0.4183.121)
New Features and Enhancements
Evergreen Components
Native
Notifications
Window Management
Bug Fixes
App Catalog
Native
Toolbar
Workspaces
Notifications
Schema
Central Logger
General
Release 01-07-21
Bug Fixes
Release 01-05-21
Bug Fixes
Release 12-17-20
Bug Fixes
Release 12-02-20
Bug Fixes
Misc.
Release 11-20-20
Finsemble has been updated to use Electron version 10.1.5. (Chromium - 85.0.4183.121)
Bug Fixes
Release 11-09-20
Finsemble has been updated to use Electron version 10.1.4. (Chromium - 85.0.4183.121)
New Features and Enhancements
Notifications Enhancements
The 5.1.1 Notifications UI repository is located here .
New functionality adds ability to:
BrowserView
Finsemble now supports gRPC.
Evergreen Components
Freestanding Applications
Alpha Mac Support
Native Support
Bug Fixes
Workspaces
Advanced App Launcher
Startup
Misc.
Release 11-04-2020
Enhancements
Release 9-28-2020
New Developer Features
Finsmble UI Library
Common Finsemble UI components are now easily-consumed NPM dependencies. Simply import the Finsemble-UI library into any component to build new components or augment existing ones.
Some examples of premade UI components include:
Click here to read the updated UI documentation
Fully Customizable Toolbar and Window Title Bar
Finsemble 5.0 provides development teams with a fully customizable template and UI library to create and customize Finsemble’s toolbar.
In addition to a fully customizable toolbar, teams may also customize a window’s title bar.
Typescript First
In Finsemble, Typescript creates a much richer developer experience. All Finsemble developers will now enjoy immediate feedback through autocomplete and type safety in supported editors (VS Code is our favorite). Additionally, the seed project’s build system now supports Typescript out-of-the-box, enabling type safety from end to end.
JSON Schema Documentation for Components and Services
Finsemble is driven by configuration. Now, in version 5.0, Finsemble’s configuration is documented and validated using JSON Schema. Development teams can quickly understand what configuration is available to implement and be confident their configuration is correct. Specific benefits include:
General improvements
Decoupled Content Loading
With the implementation of Electon’s BrowserView API, Finsemble windows now load application content and the window title bar in separate views within the same window. Prior to 5.0, Finsemble would load application content into a window and then inject the window titlebar into the same content. This change provides a smoother experience when loading content.
This change to windows impacts how applications can be debugged. Becuase application content is separated into a
BrowserView, while Finsemble's window title bar remains in the window (BrowserWindow), clicking on an application and
hitting ctrl+shift+i
opens the dev tools for the window titlebar (the BrowserWindow). In order to debug the
application content open the devtools via the central logger. You'll know that you're in the right devtools if you see
'View' in the title of the window
Finsemble Toolbar Now Consistent With Windows Taskbar The Finsemble Toolbar now shares consistent behavior with the Windows Taskbar. When docked at the top or bottom of an end user’s monitor, the Finsemble Toolbar remains visible even when using outside applications like MS Word or Excel. This change in behavior allows users to move faster, accessing mission-critical applications in Finsemble without having to locate the toolbar.
In addition, the toolbar is, by default, visible as a taskbar icon and availble when a user presses Alt+Tab.
Upgrading
This release overhauls Finsemble's seed project with the main goal of making upgrades easier. Most component source code
(src/components/../*.js) has been refactored into a new API finsemble-ui
that is now imported as a module.
Click here to read the updated UI documentation
src-built-in
has been removed. The src
directory now only contains jsx "template" files. You may customize these
as desired. Upgrading no longer requires merging source code from newer seed projects.
You can continue to use your existing components if desired. Simply keep them in your existing src
directory and
make sure that you continue to reference them in your components.json
file. If you wish to use a newer 5.0 version
of the component, simply modify the entry in your components.json file to point to the new component.
toolbar.config
is deprecated in the 5.0 Toolbar component. Customization now is simply a matter of rearranging
markup in src\components\toolbar\srcToolbar.jsx
.
The titleBar
component has been renamed windowTitleBar
. If you wish to continue using the old component, point the
url in the windowTitleBar
config entry to "titleBar.js" (finsemble-seed/configs/UIComponents.json).
The AppLauncher
component defaults to not letting users create their own components ("quick components). To turn
this on, modify Toolbar.jsx with <AppLauncher enableQuickComponents={true} />
.
Hotkeys for opening the search window are disabled by default in the new Toolbar. To enable a hotkey modify
Toolbar.jsx like so <Search open={["ctrl"-"alt"-"f"]}>
.
There is a new webpack.finsemble-built-in.entries.json
to the version in the new seed and adding the
"SystemTrayComponent" entry to UIComponents.json. Finally, in config.json update
"systemTrayComponent": "SystemTrayComponent"
(previously "systemTrayComponent": "File Menu")
Move any custom configuration values added to config files to under custom
property.
Issues Fixed
Release 11-04-20
Enhancements
Bug Fixes
Assimilation
Fixed a bug in assimilation where after many successive reloads, some native windows would not group.
The new version of assimilation can be found here:
assimilation_4.5.1.0.zip.
Release 9-25-20
Click here to view the documentation site for version 4.5.0
Finsemble has been updated to use Electron version 9.3.0. (Chromium - 83.0.4103.122)
Workspace Improvements/Fixes
Documentation
Native
Notifications
Startup
Assimilation
Misc.
Release 12-8-2020
Release 9-2-2020
Click here to view the documentation site for version 4.4.3
Release 8-27-2020
Release 8-21-2020
Click here to view the documentation site for version 4.4.1
Note: The 4.4.1 release includes the bug fix from the 4.3.4 release shown below.
WHITELABELING - The mechanism for overriding CSS has been revised. The file theme.css
is now empty and can be used
to set CSS variables (it replaces the former themeWhitelabel.css
). The files fontIconWhitelabel.css
,
styleWhitelabel.css
and themeWhitelavel.css
have all been deprecated. To migrate, copy the contents from all of
those files into the empty theme.css file.
React components should now use the follow import construct:
```jsx
import "@chartiq/finsemble-ui/react/assets/css/finsemble.css";
import "../../../../assets/css/theme.css";
```
Static CSS files should use this construct:
```css
@import url("../../../assets/css/finsemble.css");
@import url("../../../assets/css/theme.css");
```
Finsemble's default theme as well as font-finance are now inside "finsemble.css" and imported from the new `finsemble-ui` dependency. The seed project's build process creates static copies of finsemble.css and font-finance.css in `dist/assets/css`.
See <a href="tutorial-UIComponents.html#css">UI API#css</a> for up to date instructions on customizing Finsemble's CSS
finsemble-react-controls
has been deprecated. We no longer support the controls that were available in that library.
The new finsemble-ui
library provides a React library that allows easier and more complete customization.
defaultAuthentication.html
has been deprecated in favor of Authentication.html
which is now a Finsemble React
component. This makes use of the useAuth()
React hook. It's config now defaults to autoShow: true.
Click here to view the documentation site for version 4.4.1
Splintering support has been removed in favor of "affinity" which provides a less complex strategy for resource conservation. Please note that Electron is moving to a "process per site" model later in 2020 which will change the underlying structure of how affinity is implemented. We will make efforts to maintain backward compatibility with the existing affinity flag.
url-loader
limits have been removed from webpack config files. This is necessary in order for fonts to appear
properly in the toolbar's drop down menus. References to relative paths do not work as expected inside menus
(Release 8-03-2020
Click here to view the documentation site for version 4.4.0
Finsemble has been updated to use Electron version 9.1.0.
Features/Enhancements
Global Preloads
Deployment
Native Apps
Splash Screen
Logging
Workspace Events
Misc.
(19340, 19339) - FSBL now supports taskbar icon overlays.
(15548) - Added browser context menu to FSBL to overcome Electron deficiency that lacked the right-click menu users find familiar.
(26932) - Added the option to force users to wait for the new version of FEA to download before starting FSBL, as opposed to starting Finsemble and forcing a restart when the new FEA has completed its download.
(27290) - Updated FSBL to prevent config files from being loaded from cache.
(27177) - Enhanced FSBL to provide access to FSBL.System in Custom Services.
(27848) - Applied updated branding to FSBL.
Bug Fixes
FEA
Native Apps
Logging
Advanced App Launcher / Foundational Config
Misc.
(26452) - Fixed a bug that launched a second instance of FSBL if you right clicked the taskbar icon for HTML windows in installed versions.
(27391) - Fixed a bug where listeners to the distributed store were not being removed depending on the order they are removed.
(28161) - Fixed a bug where FSBL did not shutdown properly on automatic restart.
(27362) - Fixed a bug where HTML components in a minimized or maximized state in a workspace would load dirty on the reload. Now any workspace should always load clean on a restart or reload.
(26727) - Fixed a bug that was preventing cross domain components from being grouped together in the same render process.
(28354) - Fixed a bug where SaveAs in the workspaces menu was not checking existing workspace names correctly. Also fixed a bug where workspace was prompting as dirty even after selecting Save from the workspaces menu.
Release 9-1-2020 - Finsemble
(28978) - Fixed a bug where calling WindowClient.setWindowTitle immediately upon component load sometimes would not work
Release 8-13-2020 - Finsemble Electron Adapter
Release 7-29-2020
Click here to view the documentation site for version 4.3.3
Release 7-17-2020
Click here to view the documentation site for version 4.3.2
Finsemble has been updated to use Electron version 9.0.5.
Release 6-24-2020
Click here to view the documentation site for version 4.3.1
Finsemble has been updated to use Electron version 9.0.4.
Release 6-17-2020
Click here to view the documentation site for version 4.3.0
Finsemble has been updated to use Electron version 9.0.0.
FDC3 1.1
Finsemble 4.3 brings the new and updated 1.1 FDC3 specification, including the new Channels API. Use
the Finsemble FDC3 integration to: open apps, raise intents, send context and connect apps via channels. Easily port
existing FDC3 1.1 applications to Finsemble. If you would like to find out more about FDC3 you can follow this link to
the specification on their website FDC3 1.1
DesktopAgent and Channel API. The Finsemble FDC3 public repository can be found
here.
Notifications
Finsemble desktop notifications are pop-up windows, called “toasts”, that provide meaningful alerts to the user. These notifications may be customized by the client regarding which apps send and receive the notifications, criteria around that notification, and actions that can be taken from the notification toast window. The Finsemble Notifications public repository can be found here.
Feature Enhancements
Advanced App Launcher
preferPreviousState
added and documented for foundational config in the seed. Added to distributed store
foundation to change how preserved distributed stores are merged with preserved state. Changes 'disableUserRemove' to
'canDelete' and adds an additional 'canEdit' property to folders.Advanced App Catalog
Central Logger
Linker
.NET
Startup
Misc.
Release 7-28-2020
Release 7-20-2020
Release 7-13-2020
Release 7-07-2020
Release 5-29-2020
Click here to view the documentation site for version 4.2.2
Release 5-22-2020
Click here to view the documentation site for version 4.2.1
Finsemble has been updated to use Electron version 7.1.14
Release 5-8-2020
Click here to view the documentation site for version 4.2.0
New developer features
(19152) - TypeScript declarations have been added for the FSBL object. Thus, when you start typing FSBL, TypeScript will supply suggested text, show the documentation in-line, and display what the parameters are. Note: The seed project must be built at least once before this feature kicks in.
(12968) - Custom WebSocket Certificates - If your internal security procedures block Finsemble's transport certificates, you can use custom certificates instead. Read the documentation to configure your custom certificates here.
(21061) - Default zoom level - You can now change the default zoom level for the zoom preload through configuration:
zoomDefault
will set a default percentage for a window's zoom level. This can be set for a component using
finsemble.components.Window Manager.zoomDefault
.
(20133) - Installer name reflects environment - Allows installer name and desktop shortcut to reflect environment. Now, when you make an installer, you can specify what environment you want your application to point to (staging, development, etc.). This is achieved by providing an installer configuration per named environment (as specified in configs/other/server-environment-startup.json) in configs/other/installer.json.
(20875) - .NET WinForms Sample Project - Added a new .NET sample project that demonstrates how to use WinForms (a .NET graphical UI class library) with Finsemble. You can check out the new sample project here.
(25218) - Adds an api method for setShape to the WindowClient. setShape takes an array of rectangles that define the parts of a window that are visible and can be interacted with. All other parts of the window will not be visible and will be unable to be clicked. setShape can be used to make portions of a window click-through.
General improvements
Launcher Client improvements
showWindow()
to change monitor
with non-zero positional values or
lacking additional parameters would break grouping.Logger Client improvements
Native improvements
Router Client improvements
Workspace Client improvements
createWorkspace
to add additional workspaces, but leave the name
field blank, Finsemble will
create a workspace named Untitled1, Untitled 2, etc.Miscellaneous improvements
Release 4-7-2020
Release 3-27-2020
Click here to view the documentation site for version 4.1.0
New developer features
FSBL Protocol Handler (20773) - Protocols are a way for a link to "raise their hand" and ask for help from another application. For example, if you click on a meeting invite in an email, your calendar app will open to put that meeting on your calendar. Now, Finsemble can register as a protocol handler using the URL format fsbl://custom. When an end user clicks on this deep link, Finsemble will open and handle that link. Check out the new tutorial here.
New tutorials: New tutorials have been added to support native developers. _ Java Example Projects: A repository of example Java applications that make use of Finsemble functionality has been made available for Java developers. _ Bloomberg Terminal Connect Integration: If you have Bloomberg Terminal Connect, Finsemble allows you to bring bi-directional Bloomberg data synchronization to your smart desktop.
New API methods for .NET components (17226, 17227) - We have added additional API calls for .NET developers: _
LauncherClient.getActiveDescriptors()
returns the window descriptor for all open windows. _
WindowClient.getSpawnData
retrieves data set with LauncherClient.spawn
General improvements
UX improvements
Authentication
Central Logger
Finsemble Native
Launcher Client
"maxWidth"
, "maxHeight"
, "minWidth"
,
"minHeight"
) were not respected by Finsemble in so much as the end user could widen a window beyond those bounds.
Now, these parameters cannot be changed by an end user's mouse movements. You can still use the Launcher Client API to
change the window bounds.Linker Client
Workspace Client
loadWorkspaceTimeout
and
loadFailureNotificationMessage
have been removed as they are no longer relevant.WorkspaceClient.switchTo
function was resolving too soon. Now the switchTo
function
will only resolve when it is done.setComponentState
),
the data wasn't being saved appropriately. Now, a non-workspace component cannot call setComponentState
and doing so
will return an error.Miscellaneous
window.open
becomes LauncherClient.spawn
).serverConfig
, only the first was loaded.
Now, you can add as many query parameters as you want.Deprecations
Because of the work done to refactor the Workspace Service, the configs loadWorkspaceTimeout
and
loadFailureNotificationMessage
are removed.
Release 1-25-2020
Click here to view the documentation site for version 4.0.
Version 4.0 represents an exciting new era for Finsemble! This release provides a slick new coat of UI paint for end users and introduces tools to help manage an institution's panoply of applications.
For many firms, desktop interoperation technology is new. Developing with JavaScript for the desktop requires a more disciplined approach than developing for the web. ChartIQ has pioneered this technology—as such, Finsemble engineers are creating solid, enterprise-grade solutions.
This release provides changes to Finsemble seed. Updating requires updating the seed. To see which files have been modified, compare your version of Finsemble with Version 4.0. As a major release, 4.0 contains a number of breaking changes. Please coordinate with Client Success if assistance is needed to upgrade.
New UX features
Application Catalog - Our clients have lots (hundreds! thousands!) of applications. Dealing with this sprawling library is now easy as pie with Finsemble Flow.
The [app catalog](tutorial-UIComponents.html#app-catalog-finsemble-flow) is a new UI component that allows Finsemble assemblers to manage a very large application library and allows end users to explore that library in an easy, meaningful way. Applications are displayed in carousels so that end users can see what is available to them. Users can search or filter apps by tags. Essentially, the app catalog makes it easy for end users to discover and use the apps that are relevant to their work.
<img src="tutorials/img/AppCatalog.png" alt="App Catalog" height="500"/>
Advanced Application Launcher - Finsemble Flow now offers an advanced app launcher that is designed to handle thousands of apps and has many more features than the standard app launcher, including: _ Bookmarks _ Advanced search and filtering _ Folders and organization _ Integration with the application catalog
<img src="tutorials/img/advancedAppLauncher.png" alt="Advanced App Launcher" width="600"/>
Aesthetic Update (15911) - Good UI design is not a one-and-done task—it's constantly iterative. After listening to and observing Finsemble users, we've learned a lot about how beautiful UI reinforces the flow state. We've folded these lessons into a general overhaul of Finsemble's UI for 4.0.
In general, the UI refresh provides a fresh coat of paint. Colors and fonts have been updated to provide a slick look and feel to Finsemble. There are many small but meaningful tweaks to create a consistent visual language. Lastly, the process for white labeling has been made easier: [new CSS files control your ability to customize Finsemble's look and feel](tutorial-whiteLabeling.html).
<img src="tutorials/img/4.0aesthetic.png" alt="Finsemble's beautiful UX enhances flow" width="750"/>
Official remote desktop support - Our clients have been using Finsemble on remote desktops (RDP) for some time. However, this release takes additional steps to ensure that remote desktop is fully functional and fully supported. Users on Windows 7 will see a marked improvement in their RDP experience.
New developer features
FDC3 support - 4.0 begins our commercial support for the the FDC3 specification. We will be delivering our support for the specification over this and upcoming releases. In addition to this release’s official capabilities, we have a fully compliant FDC3 desktop agent in pre-release that we can make available to prospects and clients. Features included in this release are: _ The application catalog reads FDC3-compliant AppD directory metadata. _ In our initial release of application catalog, we are including a lightweight, partial implementation of an AppD server to support access to the catalog as well as search.
New Getting Started Tutorial - A new getting started tutorial for new Finsemble developers is now available. Check it out here.
Start-up Sequence Refactor (11595, 14490) - Finsemble's startup processes have been redesigned to significantly improve reliability by adding multiple stages and checkpointing to the startup sequence. Previously, startup was designed on a dependency graph. In practice, this meant that startup operated like a line of dominos: a single failing piece would bring startup to a halt. Now startup uses boot sequencing. If a critical service fails, the system produces output that identifies the specific failure. When a non-critical service fails, the system logs the issue but continues on.
The refactor also adds the [system log](tutorial-debuggingFinsemble.html#debugging-start-up-and-the-system-log). The system log is a helpful new tool for debugging start-up problems. The system log provides:
* The state of the start-up sequence
* Catastrophic error messages
* A copy of all user notifications since last start-up
You can access the system log in one of three ways:
* The log will be displayed only on startup error when the manifest config has `finsemble.bootConfig.onErrorMakeSystemManagerVisible` set to `true`.
* The log will always be displayed when the manifest’s `startup_app.autoShow` value is set to `true`.
* The log can be manually displayed by selecting "System Log" in the Finsemble menu.
General improvements
UX
Launcher
LauncherClient.showWindow
to move native components. The callback was
not resolving correctly. This issue has been fixed.LauncherClient.showWindow
on a window in a group would improperly set bounds when breaking the
group. Now, this call removes the specified window from the group before changing its size.LauncherClient.getComponentsThatCanReceiveDataTypes()
promise/callback will not resolve if invalid
parameters are specified. Finsemble now validates the input to this function.Linker
LinkerClient.unsubscribe
.Notifications
FSBL.UserNotifications.alert
now works appropriately.Search
Workspaces
Miscellaneous
log
level to be ignored. This has been
fixed.fin.desktop.System.getHostSpecs
will return the operating system version in addition to the other
specs it returns.Release 1-9-2020
Release 12-16-2019
This release exclusively impacts the .NET module.
Release 11-22-2019
Note: Because of the new way Finsemble preloads the window title bar, you may notice issues related to how content
loads under the window title bar. If this is the case, you will need to adjust some configs to ensure that the content
loads correctly. See the instructions on setting the FSBLHeader
config to an object in the
Config Reference.
Release 11-15-2019
Click here to view the documentation site for version 3.13.0.
This release provides changes to Finsemble seed. Updating requires updating the seed. To see which files have been modified, compare your version of Finsemble with Version 3.13.0.
New UX features
New Developer Features
concurrentSpawnLimit
in Config Reference for more details.remote-debugging-port
Chromium flag. Setting a
remote debugging port will assist in your collaboration with Client Success. See chromiumFlags
in the
Config Reference for more details.certificateFile
, certificatePassword
, and signWithParams
in the
Config Reference for more details.hideTitleBars
in the Config Reference for more details.UX Improvements
General Improvements
Central Logger
finsemble-electron-adapter.logger.logLevel.transports.console
to true
. When logged to the terminal, the
Electron Adapter logs are colored differently.Launcher
LauncherClient.showWindow
. This API call now works appropriately with this configuration.slave
parameter in LauncherClient.spawn
.Linker
Native
RouterClient.Publish
had an issue that was resolved.path
property is now read from the config. Previously, it was read from the
workspace, which could confuse the Workspace Service since it never had the correct path.alwaysOnTopIcon
and alwaysOnTop
(see the
Config Reference). If set to alwaysOnTop
, the application component will be spawned
at the front of the stack (like a sticky note). The icon allows the end user to toggle this functionality.Workspaces
Release 10-18-2019
shutdownTimeout
to shut down services, and two
seconds less for application components. See the Config Reference for full details.Release 09-13-2019
Click here to view the documentation site for version 3.12.0.
This release provides changes to Finsemble seed. Updating requires updating the seed. To see which files have been modified, compare your version of Finsemble with Version 3.12.0.
General Improvements
Release 08-09-2019
Click here to view the documentation site for version 3.11.0.
This release provides changes to Finsemble seed. Updating requires updating the seed. To see which files have been modified, compare your version of Finsemble with Version 3.11.0.
General Improvements
logger
property was not defined. This
has been fixed.Release 09-20-2019
Release 07-10-2019
LauncherClient.showWindow
.Released 07-10-2019
Click here to view the documentation site for version 3.10.0.
This release provides changes to Finsemble seed. Updating requires updating the seed.
New Developer Features
displayName
in the Config ReferenceUX Improvements
mailto
link, there would be errors. This has been fixed.General Improvements
finsemble.servicesConfig
Level (10896) - The Storage Service config was
moved to the finsemble.servicesConfig
level for consistency with other services: finsemble.defaultStorageAdapter
and finsemble.storage
. The old locations will continue to work for backwards compatibility.remote
module allows renderer processes to access APIs
that are otherwise only available to the main process. The Electron Adapter now filters the remote
modules that
Finsemble does not use.getComponentState
using the fields
parameter, exceptions were previously thrown. This has
been fixed."load"
event. Now they're injected
immediately upon window creation.displayName
changed or if the config
entry was removed. Now these pins are removed in these circumstances.Central Logger
WPF components
Release 07-11-2019
LauncherClient.showWindow
.Released 06-03-2019
Click here to view the documentation site for version 3.9.0.
This release provides changes to Finsemble seed. Updating requires updating the seed.
New features
windowTitleWhiteList
and windowTitleBlackList
to pinpoint which
windows they wish to integrate and exclude by name. For example, this configuration allows a user to launch Microsoft
Outlook via Assimilation: "windowTitleWhiteList": ".*(Inbox|Outbox|Today).*",
"windowTitleBlackList": "Opening.*",
New Window Client Method: removeComponentState (12340) -
removeComponentState
has been added to allow developers to remove a
component's persistent state. Previously, they could change a component's state using the
Window Client, but not remove a field.
Electron Adapter Security (12786) - Developers can now limit navigation to web pages based on protocol or domain. Through the Electron Adapter's permissions, they can ensure their smart desktops only load secure content and known domains. Read how here.
Configurable Search Results (12807) - Two new config entries control what results are returned when end users
perform a search. If workspaceSearch
or componentSearch
are false
, the search providers will not return results
for workspaces or components, respectively.
See the Config Reference for more details.
Improvements and Bug Fixes
Drop-Down Title Bar Changes (14222): We are always polishing Finsemble's user experience. As of this update, closing a window with a drop-down title bar does not close any other windows it was tabbed with. The drop-down title bar (aka the companion window) is often hidden, which obscures the tabs which it manages. In the previous iteration, it was assumed that end users would interpret closing a tabbed window like closing a browser window; they would expect all of the tabs to close. However, testing revealed that end users would occasionally close windows they did not intend to close. Now, if you close a window that has a drop-down title bar with tabbed windows, only the active window closes.
Workspace Client Refactor: We’ve significantly simplified the Workspace Service data model. Previously, workspace
data was duplicated in two places in storage—individually, and then again under fsblWorkspaces
. Now, workspace
data is stored only once—under a key with its respective name. fsblWorkspaces
has been replaced with the key
finsemble.allWorkspaces
, which stores the name of all Finsemble workspaces as an array. Note: This is backwards
compatible. Old workspaces in storage will automatically be converted to the new format. _ (11252) - Workspaces
specified in the config can now accept the same format as an exported workspace. If an end user deletes or renames a
workspace that was specified in config, the workspace defined by the config will be reloaded into Finsemble. _
(11639) - When Finsemble is asked to launch a component of which it is unaware, it will launch a special "unknown"
component in its place. As of this version, Finsemble will replace the unknown component with the actual component if
the user regains access to it. _ (14035) - Previously, if a user imported a workspace with native components that they
did not have access to, it would cause the workspace to hang. Now, an unknown component is shown. _ (11841) -
Finsemble can now be launched even if no default workspace is specified: it simply launches with an empty workspace
devoid of any application components.
Electron Adapter Improvements:
alwaysOnTop
sometimes did not work properly.windowType: "application"
and an affinity, it could
destabilize the system. This is now fixed. If a component is configured with windowType: "application"
, the
component will be isolated in its own process, regardless of the affinity configuration.Assimilation Improvements:
window.options.autoShow
was not respected for native windows. This is fixed.Central Logger Improvements:
Miscellaneous Improvements:
npm install
would fail.isWorkspaceDirty(cb)
now appropriately returns true
or false
, depending
on if the workspace has been modified or not. A bug was causing an undefined
return.Release 07-11-2019
LauncherClient.showWindow
.Release 06-21-2019
Bug Fixes and Improvements
Release 05-17-2019
Bug Fixes and Improvements
npm install
.getStackedWindow
would result in an error even when it worked properly.FSBLReady
event.Release 05-01-2019
Breaking Change - Cross-domain Component Security
A change to the security policies while running on Electron in 3.8.0 introduced additional restrictions to cross-domain components. To learn more about these security policies and how to make sure your Finsemble smart desktop operates safely and smoothly, please read the Security Policy tutorial.
New Features
Bug Fixes and Improvements
Assimilation/WPF Improvements:
Folder
config variable that determines where its log file is written was not working
correctly; the log file was only writing to its default location. This has been fixed.Electron Adapter Improvements:
Miscellaneous:
serverAddress
using manifest-local.json.Release 04-25-2019
LinkerClient.subscribe()
Release 04-19-2019
Upgrading/Big Fixes The 3.8.1 release squashes a bunch of bugs.
forceClose
permissions via the Electron Adapter would cause
unexpected behavior in the window.setBounds
.LauncherClient.spawn() forceOntoMonitor
argument was broken. It's now fixed.dockOnSpawn
argument was broken. It's now fixed.LinkerClient.getLinkedWindows()
failed if no parameters were passed. These should be optional. It's now
fixed.Released 03-29-2019
Click here to view the documentation site for version 3.8.0.
New Features
Electron Support - We are proud to announce support for Electron. Electron is the industry leader, with Slack, Spotify, Microsoft Teams, and thousands of other apps all running on Electron. Our engineers spent years discovering and solving for development issues to create Finsemble. Now with Electron support, we gain improved performance and access to a deeper set of functionality.
Our new Electron Adapter allows Finsemble to run on Electron. The Electron Adapter ensures rigorous security through the following practices: _ The Electron API is removed by default from all windows. This architecture ensures that windows are insulated from the desktop and from each other, communicating only through well-defined, intermediated messaging APIs. _ All of Electron’s extensive security recommendations are implemented; most notably, Chromium sandboxing is turned on and node integration is turned off.
For information on deploying your Finsemble based app on Electron, see Deploying Your Finsemble Application.
How to switch to Electron:
npm install
. This will automatically install the Electron Adapter.finsemble-seed/configs/other/server-environment-startup.json
set "container" : "electron"
_ ENVIRONMENT
VARIABLE: set container=electron
React Upgrade (12183) - Finsemble's UI controls (found in presentation components) now use React v. 16.8.3. 16.8.x is backwards compatible with code built for previous React versions. See our tutorial about our controls for more information. If you use our controls in your own applications, it might be helpful to use the React Development Tools. You can read our tutorial on how to get working with these tools here.
Search Relevancy Improvement (12311) - Previously, Finsemble's component search features provided generous allowance for typos, but short search strings sometimes returned spurious results. With this update, a better balance is struck so that search results are relevant to end users.
Upgrading/Bug Fixes In version 3.8 we've changed the mechanism that loads the Window Title Bar. The new method uses a preload function rather than injected JavaScript. This change allows firms to completely eliminate the use of injected JavaScript, a mechanism that was necessary in older versions of OpenFin. If you've customized the Window Title Bar component you'll need to merge in changes from the newest finsemble-seed version (src-built-in/components/windowTitleBar) with particular care to implement the "ready" event pattern in windowTitleBar.jsx.
if (window.FSBL && FSBL.addEventListener) {
FSBL.addEventListener("onReady", init);
} else {
window.addEventListener("FSBLReady", init);
}
finsemble.services.linkerService.channels
.deliveryMechanism
in the Config Reference for information on how to configure injection if necessary.Released 05-01-2019
Released 03-08-2019
Click here to view the documentation site for version 3.7.0.
spawnAs
. Use this to fine tune concurrency vs. memory footprint. Service configs can now generally be
overridden via the finsemble.servicesConfig
config entry. Electron's "affinity" flag can also be added to service
configs to take advantage of process affinity on that platform. Managing processes through process splintering has
been deprecated in favor of process affinity.LauncherClient.spawn
or set in a component's config: see the
Window Service in the Config Reference for details.Upgrading/Bug Fixes
componentType
.getSpawnData
.close
events were received after closing native applications.true
) for dockableWindow.allowTiling
.serverAddress
(localhost.chartiq.com
) when running on Electron.Released 02-22-2019
serviceConfig.docking.enableWindowsAeroSnap
in the
Config Reference.Upgrading/Bug Fixes
Released 01-29-2019
Upgrading/Bug Fixes
Released 01-15-2019
windowType: application
.Released 01-08-2019
This version includes a performance overhaul of finsemble.dll that will result in improved usability of .NET/WPF applications managed by Finsemble as well as hardening and refactoring of key internal services to improve reliability, debuggability, and performance.
Upgrading/Bug Fixes Assimilation version 3.6.0 is required when running native applications.
TSLint has been added to the dependencies for finsemble-seed in order to support our ongoing conversion to Typescript.
You should run npm install
after upgrading. A default TSLint configuration, based off of Airbnb, has been published
here.
get
configuration is no longer ignored on storage adapters.As of version 3.6, Assimilation version numbers are synced with Finsemble version numbers. Previous versions of the Assimilation changelog are archived here.
Released 12-11-2018
servicesConfig.docking.requireRectangularityForGroupResize
- When false, allows "tetris" shaped groups to be resized
by dragging on any exterior corner. When true, only rectangular groups are resized (dragging on a corner will resize the
individual window). When this is false, grabbing an exterior edge will always resize the individual window rather than
the group as a whole.
servicesConfig.docking.undockDisbandsEntireGroup
- When true, clicking on the undock icon will disband the entire
window. The window that was clicked will not pop out.
servicesConfig.docking.fillHolesOnUndock
- When false, rectangular groups will not maintain their size when a window
is popped out.
Upgrading/Bug Fixes
Released 12-07-2018
Released 12-05-2018
Upgrading/Bug Fixes
persistURL
is set.Released 11-20-2018
This version contains performance improvements and architectural refactoring of the underlying docking, tabbing and tiling code.
New Naming: The Docking Service has been renamed Window Service. No changes are necessary. Removed Stacked Window Manager: The Stacked Window Manager Service has been removed. Workspace Saving Change: When a user declines to save their active workspace, the initial pristine workspace is now loaded on session restart.
Upgrading/Bug Fixes
"unRegister"
has been renamed "unregister"
.foo:$bar
would properly expand the $bar variable but foo:$bar wow
would not. This has been fixed.window.open
regression failure.Released 11-01-2018
This version contains performance improvements and architectural refactoring of the underlying docking, tabbing, and tiling code.
Released 10-12-2018
Upgrading/Bug Fixes
Upgrading/Bug Fixes Requires finsemble-react-controls@3.1.1 Please be sure to update your package.json and download the latest.
(9490) Fixed hover state on dockable toolbar. (9631) Windows that are snapped to the edges of adjacent monitors no longer represent a contiguous group. Pressing the group icon will not link windows that are snapped across monitors.
component.window.dockedHeight
now determines the height of a dockable component when docked.
Released 10-09-2018
Major UI Improvements
Dockable Components: Finsemble now supports "dockable" components. When snapped to the edge of a monitor, a dockable component will fill up the edge. Other components will then snap up against the dockable component. Dockable components support the following config:
```javascript
window.dockable: ["top","bottom"] // The allowable docking positions.
docked: "top" // The initial docking position. Leave empty to float the component by default.
canGroup: false // If canGroup is "false," the component can't be snapped to another component when floating.
```
Floating Toolbar: The Finsemble Toolbar is now a dockable component. End users can grab the toolbar to undock it from the top of the screen, converting it into a "floating" toolbar. The toolbar can be redocked to the top or bottom of any monitor. In order to enable the dockable toolbar, the following changes should be made to the Toolbar component config. See presentationComponents.json in the latest finsemble-seed project.
```javascript
"Toolbar": {
"window": {
"dockable": [
"top",
"bottom"
],
"maxHeight": 39,
"minHeight": 39,
"minWidth": 99,
"docked": "top",
"canGroup": false,
"options": {
"smallWindow": true
}
},
"component": {
"spawnOnAllMonitors": false,
"canMinimize": false
},
"foreign": {
"services": {
"dockingService": {
"isArrangable": false,
"ignoreSnappingRequests": true
},
"workspaceService": {
"global": true,
"ignoreTilingAndTabbingRequests": true
}
},
}
```
The Toolbar can now be hidden or shown using hotkeys. CTRL+ALT+H hide the Toolbar. CTRL+ALT+T will show the Toolbar. If the Toolbar is floating but hidden behind other windows, pressing CTRL+ALT+T will bring the Toolbar to the front of the screen, positioned directly under the mouse pointer.
Smarter Workspaces: Finsemble is much smarter now when restoring or importing workspaces. If you have a different monitor configuration (fewer monitors, different resolutions, different orientations) then Finsemble will intelligently place windows that might otherwise have slipped beyond the scope of your virtual workspace.
Importing and exporting of tabbed window groups is now supported.
Upgrading/Bug Fixes This version requires finsemble-react-controls version 3.1. The finsemble-seed package.json has
been updated. Please check your own package.json to ensure that it is no longer set for 1.*
.
Please note that the default storage adapter in the finsemble-seed project has been changed to the new
indexedDBAdapter
. Your users will lose their existing workspaces and preferences if you switch from
localStorageAdapter
to indexedDBAdapter
. You should only do so if you're experiencing serious issues with OpenFin's
localStorage
flush to disk. These generally occur more often in development than in production.
In order to enable the new Floating Toolbar you should make the config changes described above. If you do not change the config, then Toolbar will continue to operate as it always has.
localStorageAdapter
and indexedStorageAdapter
that was unintentionally leaving the storage
prefix in responses from keys.history.replaceState()
so that workspaces remember the last navigated page from within a component.finsemble.servicesConfig.logger.hotkeyShowCentralLogger
. The default is now CTRL+SHIFT+L. Formerly the default was
CTRL+L and could not be disabled.fsbl-drag-handle
moved inside FSBLHeader
. This fixes scaling issues when the body is zoomed.indexDBAdapter
to handle requests that are received prior to IndexDB
being initialized.indexDBAdapter
. localStoragedapter
is no longer the default because of flush to disk issues with
OpenFin. indexedDB
does not suffer this same problem.Released 09-05-2018
Removed stray, unused mocha references.
Released 07-25-2018
Version 3.0 represents a significant step toward realizing Finsemble as the integration layer for finance. The build improvements, improved native support, and easier white labeling bring Finsemble closer to being a real production-ready solution for "assemblers," versus an SDK for developers. Simultaneously, the new UI-centric features offer a versatile and powerful toolset to the end user.
Major UI Improvements
Tabbing and Tiling: Finsemble now offers tiling and tabbing as turnkey UI features.
Tabbing
Tiling
Improved Process Monitor: Finsemble is fast and economical with memory, but there’s no way to guarantee that 1000+ distinct apps that can each run within a Finsemble instance will always behave. In the case where a malfunctioning app is consuming more than its fair share of memory or has become unresponsive, Finsemble now offers a user-facing process monitor as a convenience tool, much like the Windows Task Manager.
The process monitor can be found by accessing the Central Logger. Click on the Finsemble button on the toolbar, launch the Central Logger, and you'll find the Process Monitor button on the top left.
Presentation Component Redesign: Everybody likes to get a makeover every now and then. Finsemble 3.0 sports a thinner, more professional aesthetic.
Companion Window: The companion window is a small HTML5 window that tracks the location of an integrated native app and unobtrusively sits superimposed. Its normal state is that of a tiny tab. It unfurls with a click, becoming a fully functional Finsemble window title bar. The Companion Window can be styled like any Finsemble header, allowing for consistent theming, UI Controls for context sharing, etc.
Note: This is an experimental feature. If you have feedback about how the companion window works or should work, feel free to let us know.
Major Framework Improvements
Build Restructuring: Finsemble’s build process has been reorganized with a focus on seamless upgrading. Customers can now take advantage of Finsemble’s rapid release cycle and incorporate the latest Finsemble improvements without disrupting the pace or trajectory of their own project.
Improved White Labeling: In tandem with Finsemble’s restyling work, white labeling has been improved. Finsemble styling is now pure CSS and is carefully abstracted; for most customers, the white labeling process is now as simple as interchanging icons and applying a color scheme. These settings propagate through the entire Finsemble instance—and even into constituent applications.
To this end, the white labeling files and variables have changed. _variables.css and _variablesWhiteLabel.css has
been replaced with _theme.css and _themeWhitelabelcss. The new _theme.css file implements a core color scheme
(i.e., -primary-font-color
, -primary-accent-color
). This allows rapid branding by modifying just a few variables. To
implement your branding, copy _theme.css to _themeWhitelabel.css and then modify as appropriate. Please contact us
if you'd like assistance in migrating your CSS.
Native Support: Native integration has been significantly improved.
Environment Variables: Finsemble's assimilation can now spawn native assets. Set config
betaFeatures.assimilation.useOpenFinSpawn=false
. One immediate advantage is the ability to set environment variables
when spawning a native application. These can be set in the component's config for window
↪ env
.
Example, spawn command prompt with the environment variable "FINSEMBLE"
set to true
:
...
"components": {
"Notepad": {
"window": {
"id": "CommandPrompt",
"windowType": "assimilation",
"path": "cmd.exe",
"env": {
"FINSEMBLE": "true"
}
},
...
Assimilation 2.0 + Microsoft Lync Support: Assimilation code has been largely rewritten to allow native components to visually integrate more easily into Finsemble UI. Users will also notice a big uptick in performance, particularly when moving large groups of native and Finsemble windows together. Finsemble 3.0 also supports environments that include Microsoft Lync.
WPF Library Extension: Finsemble’s WPF Library has also been extended. Finsemble’s WPF Library allows native apps to make RPC calls to Finsemble. This means that native apps can use essentially the same code for communicating with Finsemble as they do their own local code, so integration becomes easier and faster.
WPF Window Title Bar: Lastly, a layer of polish has been applied to our WPF window title bar. The WPF window title bar looks and feels like the Finsemble window title bar, and it offers the same functionality (linker, drag and drop, etc.) but is written entirely in native code. For customers who want a 100% pure native app without sacrificing any theming consistency, the WPF window title bar provides an easy path.
Persisting URLs: When a workspace reloads, components will now be re-instantiated with the URL from their config.
However, the optional config entry persistURL
can be used to override this behavior. For instance, you may have a
component that allows user navigation. If persistURL
is true
, then Finsemble's workspace will remember the last
navigated location and restore it. This can be useful for components who store their state as URLs with query strings or
hash tabs.
Example, set a component to persist the last navigated URL:
"components": {
"My Component": {
...
"foreign": {
"services": {
"workspace": {
"persistURL": true
}
},
Improved Central Logger: The Central Logger has gotten a big overhaul. The Logger now even includes a built in config viewer. This can be really helpful in viewing the results of dynamic config operations.
Improved VDI Support: Finsemble now has better support for environments with Virtual Desktop Infrastructure, such as Citrix or VirtualBox. VDI presents a cautionary example to any customer who might wish to build rather than buy; a good window and workspace management layer will inevitably (and rudely) jostle with virtual desktops for control of the user’s experience. Finsemble 3.0’s underlying framework has evolved to mitigate the risks posed by the VDI technology used by most institutions.
Upgrading/Bug Fixes
"servicesConfig->docking->tabbing->enabled"
and "servicesConfig->docking->tiling->enabled"
.Upgrade Info
The gulpfile build process has been substantially refactored. These changes should be transparent to you. You can
continue to use npm run dev
and npm run dev:fresh
. Extending the gulpfile is now substantially easier. Please refer
to gulpfile-extensions.js for instructions on how to do so.
The folder /src-built-in/components/assets has been moved to /assets. This eliminates the need to maintain two separate assets folders for src and src-built-in. The relative paths of the assets have been changed in all import, link, and img tags within src-built-in and config files. You will need to modify these paths for your own configs and custom components. To modify the paths, search across files for ../assets and then change the number of "../" as appropriate.
"finfont" files have been renamed "font-finance".
Tabbing and tiling can be disabled using the finsemble["Window Manager.showTabs"]
config. This can be done both
globally and per component.
When a workspace is loaded (or the app starts), windows will obtain their URL from their component config. Sometimes,
however, you may have a component that should retain its former URL. For instance, if a user navigates in the component,
the URL may reflect the state of the component. For such components you can set the config item
component.foreign.services.workspace.persistURL
to true
in order to retain their prior URL. You can also set the
global servicesConfig.workspace.persistURL
.
Released 7-11-2018
Upgrading/Bug Fixes (7982) Shutdown wasn't occurring quickly enough. This caused localStorage to sometimes not update (resulting in workspaces and central logger changes not retaining state). This also caused .net/WFP applications to miss their shutdown signals. Taskbar icons were showing up as individual icons instead of as a group of icons.
Released 7-03-2018
Upgrading/Bug Fixes (7779) Fixes to allow native components (using finsemble.dll) to shut down cleanly (7822) config imports were limited to 10. This has been changed to 10 levels of recursion.
Released 6-28-2018
Upgrading/Bug Fixes (7503) Don't print assimilation version notification error if assimilation is not enabled.
Released 6-27-2018
Upgrading/Bug Fixes (7653) Fixed error that caused workspaces to fail when reloading an [Openfin] application
Released 6-22-2018
Upgrading/Bug Fixes Fixed syntax error in openfinWindowWrapper.js
Released 6-18-2018
Upgrading/Bug Fixes (7535) Mind control was not being injected into cross-domain components.
(7540) spawnData was not being passed to cross-domain components.
Released 6-06-2018
Upgrading/Bug Fixes (6963) "windowType" : "application" will now open an OpenFin application as a component.
(6963) Cross domain windows automatically open as new "applications". This allows them to display in process monitor (previously they wouldn't show up).
Released 5-30-2018
Upgrade Info
(7022) Notifications can now be styled with CSS variable overrides. See variables that begin with -notification-*
in
src-built-in/assets/css/_variables.css. Override these variables in your _variablesWhitelabel.css file.
(6773) We've cleaned up the dependency chain for Finsemble, cutting down to only fourteen runtime dependencies for the core library and seven for the seed project. For many firms, this will speed up data security sign-off.
Upgrading/Bug Fixes
(6590) Default hotkeys for bring to front and minimize all were changed from CTRL+SHIFT+UP/DOWN to CTRL+ALT+UP/DOWN. The prior key chords were overriding Excel.
(6760) Input dialogs now receive focus automatically when they are launched. This requires an upgrade to finsemble-react-controls.
(6882) User-created (ad hoc) components are now successfully saved and restored to workspaces.
(7067) Fixed a bug wherein undocking a single window from a group would cause the entire window group to undock.
(6758) Windows that are closed from the Windows taskbar weren't being removed from workspaces (they would come back next time you loaded the workspace).
(6846) Assertion code was added to prevent FSBL.onReady()
from firing twice. This can occur in rare conditions where
OpenFin preloads twice, or situations where a developer manually includes FSBL even when it was preloaded. This
introduces subtle state bugs in many components. If this assertion violation is detected, Finsemble will make a best
effort to rectify and will present a notification alerting the developer to the issue.
(6473) Connection errors to assimilation are now detected via timeout and presented to the developer as a notification. This can cause a "white toolbar" problem that is difficult to detect without proactive notification.
Released 5-16-2018
Notifications: Finsemble now supports notifications. These are the fun toast messages that pop up from the bottom right corner of your screen. We provide a semantical interface for notifications. For instance, you can specify that a particular notification should only occur once, or only occur X number of times. You can also specify that a notification belongs to a particular "topic." In future releases, we'll let you turn on or off topic streams by config; this will allow you, for instance, to load up on developer notifications in a development environment, but turn them off during production.
We've included a snazzy notification template. Simply send a notification object containing "description" and "title" fields and our template will do the rest. You can copy this template and make your own as well. One of the cool things about these notifications is that they are plain HTML, so unlike your operating system's notifications you can make them interactive.
Finally, we've started lacing the core Finsemble code with notifications for critical errors. So if, for whatever reason, Finsemble doesn't start, you should now get a notification instead of having to pore through log files. Once we introduce topic filtering we'll provide more useful system notifications so that you can quickly spot bugs and inconsistencies.
"Always On Top" icon: This release introduces pinning capability to components by way of the "Always On Top" icon. When the icon is toggled, the window remains on top (like a sticky note). The icon is not included by default, but you can turn it on system wide by adding a global configuration:
"Window Manager" : {
"alwaysOnTopIcon": true
}
...or you can turn it on for individual components:
"Welcome Component": {
"foreign: {
"components": {
"Window Manager": {
"alwaysOnTopIcon": true
}
}
}
}
We've also added an optional "Always On Top" icon for the toolbar. It can get annoying when the toolbar slips behind other windows. Click on the pin to force the toolbar to float above all other windows. Currently the pin is enabled with a toolbar configuration. In src-built-in/components/toolbar/config.json, look for this entry:
{
"comment": "Change align to add AlwaysOnTop capability",
"align": "none",
"type": "reactComponent",
"reactComponent": "AlwaysOnTop"
},
Change the value of align
to either left
or right
to position it on the toolbar. We'd like your feedback on this
feature to determine how to improve it.
Restart timer: Finsemble now has the ability to automatically restart itself at a particular time of day. This can be set as a config entry for all users which can be overridden by a user preference. That preference can be set in a user's preferences screen.
The config entry should be formatted:
scheduledRestart {
"hour": 16,
"minute": 30,
"dialogTimeout": 10000
}
Hours should be in twenty-four hour time according to the user's local machine's time zone.
When it is time to restart, the user is presented with a dialog to confirm or cancel. Since resets often occur at night
while the machine is unattended, most often the dialog will time out and Finsemble will reset. The dialogTimeout
specifies how long to wait for a user response in milliseconds.
Improved window management: End users have long had the ability to pin their favorite components to the toolbar for ease of access. Now, when an end user SHIFT + clicks on a pinned item on the toolbar, all windows of that type are brought to front. For example, if a user has ChartIQ's charting component pinned to their toolbar, a simple SHIFT + click will bring all charts to the front of their screen.
Released 5-9-2018
Process Monitor: A new Process Monitor component is available located in src-built-in. This component acts a bit like the Windows Task Manager, except that it's focused on applications running in Finsemble. From here you can tell how much CPU and memory each application is using. Also, like Windows Task Manager, you can terminate specific windows or applications (just be careful!).
You'll see this component in the seed project's Apps menu. It's your decision whether you think it will be a good tool for end-users, but it's definitely a very handy tool for developers—a great companion to the Central Logger.
Native Overrides: This release also includes a nativeOverrides.js preload file. This can be used to "monkey patch"
the browser's built in window.open
and window.alert
calls. The window.alert
call is annoying because it creates an
ugly pop-up and, because it's a synchronous call, it freezes the entire application. Most components don't use alerts,
but if you encounter one, you can use the nativeOverrides.js to squash that behavior.
Likewise, some applications call window.open
for pop-outs. You can use nativeOverrides.js to capture these calls and
funnel them through Finsemble's API so that pop-out windows gain a header, window management, and workspace awareness.
You can find the file in src-built-in/preloads/nativeOverrides.js. Look inside for instructions on how to use the overrides.
Released 4-27-2018
The New
Java support: Finsemble now supports Java apps! This required a lot of elbow grease to work out the kinks. Wouldn't you know that every running Java app looks like "java.exe"? That makes life difficult when you're trying to restore them into a workspace. Apps opened through Java Webstart with command line arguments will now fall into place within restored workspaces.
WPF Window Title Bar: On the subject of native apps, we're proud to announce a new window title bar for native applications applications. Simply include finsemble.dll and your application will gain a window title bar that is identical to the title bar in your HTML5 components. This title bar allows your native components to participate in Finsemble’s window management (snapping, docking, grouping). It also provides direct access to Finsemble RPC, so that you can access Finsemble API commands directly from your C# application. You can get access to finsemble.dll and learn how to use it in this public repo: https://github.com/ChartIQ/finsemble-dotnet-seed
You can also set the title of a component (what appears in the title bar) from the config:
"foreign": {
"components": {
"Window Manager": {
"title": "What a Cool Component"
}
}
}
Work/home balance: One of the big differences between desktop apps and web apps is that desktop apps tend to be long lived. Users leave them running for hours, days, even weeks. Computers are locked, put to sleep, or go into hibernation. Finsemble now revives properly when a computer wakes from slumber. It also adapts when you plug and unplug monitors. Go ahead, run your app at work, snap the clamshell closed, and reopen it at home on a different monitor. Your Finsemble app will still be running smoothly.
The Improved
CSS overhaul: In 2.4, the CSS has been totally overhauled to be semantically optimal. You will no longer find
font-family
scattered all over the place, or references to colors in the CSS. Everything is now derived from well
defined CSS variables, all of which can be found in a single location: src-built-in/assets/css/variables.css. These
variables can be overridden by copying these files to your src directory. This should make it easier for the
components that you build to have consistent styling.
Additionally, we've changed the styling of header bars to be much smarter. Want a skinny header bar now? Just change the CSS and Finsemble will automatically adapt.
To that point, we've eliminated SASS! (No, that's a good thing.) Chrome now supports CSS variables which means that we no longer need to rely on a preprocessor to create semantically meaningful CSS. This has been a particularly pesky problem because the good folks who built node-sass leaned heavily on the libsass C++ module, making node-sass heavy. Good riddance we say.
Note: If you need SASS for your own project (maybe your components are built with SASS) then you'll need to add it to gulp-extensions.md and defaultWebpackConfig.js.
Improved white labeling: Branding your Finsemble application has now become super straightforward. All you need are three files in the src-built-in/assets/css directory. These are all blank, ready for you to add branding:
font-icons
, simply use this file. Go
ahead, load your own fonts!Check out the tutorial for more details..
This does mean that the UI components have been overhauled to make use of the new styles. If you've modified any of these components and they no longer look right, let us know and we'll help you migrate.
Improved Central Logger: The Central Logger has received a UX upgrade. Its ease of use has been meaningfully improved.
Deprecated package-lock.json: We got rid of package-lock.json from the project. If you haven't yet been burned by
this file—consider yourself lucky. When you run npm install
though, it will come back. You can stop it from
being generated here.
Released 4-2-2018
Upgrade with Extensibility: Finsemble 2.3 provides a path forward for upgrading your Finsemble framework while keeping all your development work intact. We now provide hooks where you can add customizations to the gulpfile build and not fear that these will be lost during future upgrades. Likewise, we've restructured the webpack build process so that Finsemble's built-in components (such as toolbar) are separated from the components that you've created. This makes upgrades seamless. Finally, we're now including migration scripts with each release so that you can automatically upgrade your build environment with minimal work. Upgrading is easy—starting now.
Go Speed Racer!: We've streamlined and parallelized Finsemble’s start-up processes. This means that your Finsemble application will now start 20% faster than it did previously.
We’ve also restructured the build process in the Finsemble seed project! Rapid iteration is a reality with a ten-fold improvement in build times (yes, seriously).
Deprecated: Hot reload has been temporarily disabled with this release as a way to improve build times. We may reintroduce this feature in a future release.
Authentication Profiles: The Authentication API been expanded to support "authentication profiles" that allow components to trigger authentication actions dynamically during the runtime of an application. An authentication profile is a config for a particular authentication endpoint and a particular authentication protocol. For instance, imagine you brought up a Salesforce component. That component can use the Authentication API to log in when the component is launched. The Authentication API now includes integrated support for OAuth2, making it super easy to connect to identity providers and OpenID providers.
Deprecated: "isAuthEnabled" - Instead, you now set up an authentication profile called "startup". See the Authentication Tutorial for information.
Native Improvements: The RPC Service has been expanded. Native components now have access to the Launcher Client and
the Authentication Client. Native clients can now also serve as the initial component that performs authentication
(replacing defaultAuthentication
).
Flash: Finsemble now supports components written in Adobe Flash. Party like it's 1999.
Configuration Verification: Finsemble now checks for required config items, and verifies that they are valid types (string, object, etc.) during start-up. It will now spit out a helpful error that can prevent one of those multi-hour "d’oh!" debugging sessions.
Polishing the Seed Tutorial: The Finsemble seed project is the best path for developers new to Finsemble waters to get their sea legs. We spent some time providing additional refinement to the seed project tutorial, which you can see here.
Released 3-2-2018
**The New ChartIQ knows that workflows are the thing that users actually care about. With Finsemble 2.2, we bring additional tools for end users so they’re empowered with customized, elegant workflows.
Search: This release delivers the Search API Client. Since your application’s infrastructure will be unique to your organization, our search architecture and returned results are very pluggable. For instance, you could plug in an elasticsearch instance or security master to power your search. To facilitate this, the Search API Client provides federated search results: it can search each installed provider and display unified results that your users can act on.
Hotkeys: We added a number of global hotkeys!
User Preferences: We’ve implemented user preferences in Finsemble. Users can now:
Additionally, developers can now create UI that allows users to overwrite application-level config with their own preferences.
The Improved
Native Apps: We’ve participated in an ongoing effort to have Finsemble coordinate the actions of all your apps, whether they’re native applications or HTML5. Assimilated components now have equal footing with all other components.
UX Improvements: We’re continuing to polish our UX until it’s squeaky clean.
App Suites: We've implemented the ability to have developer-defined groups of windows that can be brought into focus with a click.
ALT+TAB: Grouped windows now possess a single icon, allowing users to ALT+TAB between groups.
Bring All Windows to Front: The toolbar now has a “Bring All Windows to Front” button. Users can now bring related components to the front together, even if they are not spatially adjacent on the desktop. Groups can be summoned by Linker channel, or by shared window identifiers.
Drag and Drop Pins: Pinned workspaces and components can now be reordered on the toolbar via drag and drop.
Hyperfocus: Users can also minimize all windows that aren’t related by SHIFT+Clicking on the 1) Dock icon 2) Reveal App Suit icon or 3) Linker Channel color.
Minimize All: The toolbar now has a “Minimize All” button.
It’s important to note that all UX improvements work with native apps!
Storage Service: The Storage Service can now utilize “topics,” allowing developers to determine where their data is saved. This allows developers to save some data locally and other data to the network.
Released 2-1-2018
This release is certified with OpenFin version 8.56.26.50.
The New
Take a Walk on the Client Side: Finsemble breaks down the borders between windows on the desktop. With Finsemble, developers can create a deep level of interaction between disparate applications using client-side integration. Release 2.1 introduces two new tools to help developers coordinate HTML5 and native applications: the Storage Adapter and the RPC Service.
By default, calls to the Storage API save data to localStorage by way of a Storage microservice. However, the Storage microservice can be adapted to suit your purposes with, well, a Storage Adapter. If you want to utilize a data store besides localStorage—such as a cloud or network based name/value store or database—you can simply create Storage Adapter to interface with that data store and plug it in. We added the default Storage Adapter for localStorage to our seed project repo so developers can clone it and spend some time tinkering.
The RPC Service grants the functionality of the Linker Client to assimilated native applications (e.g., WPF forms, .Net components, Java apps) so that they can synchronize with HTML5 components. For instance, a native component can be linked by stock symbol with an HTML5 component. Now, interoperability is even easier between HTML5 and native desktop components.
The Ecosystem Evolves: The best in fintech is becoming available through Finsemble. Both Salesforce, a leading CRM, and Symphony, a secure chat client, are now part of the Finsemble ecosystem.
Salesforce Contacts, Accounts, Opportunities, and Leads are available within Finsemble as individual components. These components can share data with one another or external third party applications through our Linker API. Salesforce components can also be primed to listen for external activity (such as a phone call or a chat message) and can automatically log that activity as a task for the appropriate Salesforce record.
Symphony contact lists and chats have been primed with Finsemble code, allowing Symphony to serve as a central hub. Advanced charts, research reports, etc., can be shared in a Symphony window via drag and drop. Likewise, Symphony activity can trigger an event in another component—such as a request-for-quote workflow.
The Improved
"finsemble"
class to the root "html"
element of all
components. Designers can use the existence of this class to know that their application is running on a desktop, and
respond with appropriate styling and layout.Released 12-01-2017
We’re pleased to present Finsemble 2.0. This release is a culmination of significant new features, performance improvements, and API enhancements. Though the Finsemble dev team is always iterating, this release is a significant refinement of the tools provided to create multi-window desktop applications. We've also integrated with OpenFin's V8 release, leveraging the advantages therein.
Sample UI Components: To show how simple it is to customize components, we’ve created a suite of UI controls built with React. Each control provides a single piece of UI functionality, like checkboxes or drop-down menus.
Using these controls, we assembled an array of sample UI components. These UI components are built like every other Finsemble component, and offer a beautiful out-of-the-box UI. Use the sample components wholesale for your Finsemble application, customize them for your own needs, or use them as templates to build your own.
The New
A host of new features show off the real power that comes from using Finsemble:
Distributed Store: Finsemble now uses a distributed store data storage mechanism, which solves the "one to many" state management problem. With Finsemble’s distributed store, developers don’t even need to learn the Finsemble API to start building multi-window desktop apps.
Dynamic Configuration: Finsemble can now configure itself on the fly. For instance, menus can be configured based on the results of an authentication or entitlements process. Developers can provide component configurations entirely through API calls if they desire.
Central Logger: The Central Logger is a unified console for viewing messages across all components and services. The Central Logger will help engineers effectively debug operations that occur across multiple windows.
Native Application Integration: You can now bring any external application into Finsemble using our Assimilation technology. For situations where a deep integration is not desired or feasible, Assimilation allows you to quickly manage (launch, move, dock, and group) external desktop apps within your Finsemble application.
The Improved
We’ve fine-tuned the Finsemble framework in a number of ways:
Process Splintering: We’ve implemented splintering, a performance feature that lets Finsemble distribute its memory and CPU footprint across multiple OpenFin browser processes. This allows Finsemble to run lots of powerful components simultaneously. Splintering also isolates components so that the entire application can’t be affected by a single badly behaving piece of code.
Snap and Dock Improvements: Snapping and docking responsiveness is improved, with better real-time tracking to provide much smoother window movement along with improved snapping behavior.
Start-up Time Improvements: We continue to focus on performance improvements across the system. Most notable for 2.0, initialization time for the FSBL preload script has been reduced by 60%.
Hot Reload: We’ve added the ability to hot reload your Finsemble components, reducing your built-test cycle during development. This was implemented through Webpack by adding custom middleware to the component build process that allows your changes to appear instantly.
Multi-Monitor Bug: Fixed some bugs related to how Finsemble supported adding and removing multiple monitors.
Window Dragging Bug: Fixed an edge case where Finsemble "misses" an attempt to click and drag a window.
Minding our Ps and Qs: Good code is supported by good documentation. We’ve been cleaning up and improving our documentation so it’s easy for developers and code-crafty people to understand the choices we’ve made and the functionality we’ve implemented.
Released 11-03-2017
Drag And Drop Client: Drag And Drop Client is out of beta. Documentation. Tutorial. With very little code, users can:
New Beta Features
Core Changes
ConfigClient.get()
parameters changedCore Additions
CLI
Premium Component Updates
Bug Fixes
Released 09-18-2017
Docking Docking is out of beta
New Beta Features
Sample Component Updates
Core Changes
FSBL.Clients.StorageClient.get
now returns what you save. If you send in a string, you receive
a string back. If you save an object, you get an object back. If you are using the storageClient, make sure to remove
any JSON.parse
calls inside of your callbacks.FSBL.Clients.LinkerClient
functions now require a windowIdentifier instead of a windowName to
allow the linker to work across separate Finsemblized applications (different uuid).Core Additions
FSBL.getVersion(cb)
will now return the Finsemble Version.CLI
Bug Fixes
Released 07-25-2017
FSBL.shutdownApplication()
.onShutdown
event. This event allows for components to register cleanup actions to be completed on application
quit. For more, see the Finsemble Lifecycle.onReady
event for any client that uses the baseClient
. You now can add
FSBL.Clients.WindowClient.addEventListener('onReady', cb)
. This is unlikely to be used unless you're creating a
custom component. Note: We still have FSBL.addEventListener('onReady', cb)
.configs/openfin/manifest-local.json
- Config variables (e.g. $applicationRoot
) supported in JSON config files for
added flexibility - See updated Configuration tutorial for more information.finsemble-cli kill
. This will kill node processes that our build process spins up,
as well as any lingering OpenFin processes.Released 07-05-2017
Changed
Added
Enabling Assimilation: To turn on assimilation, you will need to modify two files.
betaFeatures.assimilation
property in configs/application/config.json
matches the config below:"assimilation": {
"enabled": false,
"appAssets": [
{
"src": "/hosted/assimilation.zip",
"version": "1.0.2",
"alias": "assimilation",
"target": "CppWindowsHook.exe"
},
{
"src": "/hosted/putty.zip",
"version": "1.0.0",
"alias": "putty",
"target": "putty.exe"
}
]
}
The appAssets property is an array of external assets that are bundled and delivered with your application. The first
application in the array above is our application that brings native windows programs into Finsemble's snapping and
docking; it also allows you to bundle your own applications and have them participate in the workspace. The second
application is simply an example. To open it, launch NativeTest
from the "Apps" menu on the toolbar.
finsemble-seed/server/FinsembleConfigs.js
matches what's on GitHub.The major changes here are bandaids. Soon we will allow you unfettered access to the OpenFin manifest. Since it is
currently unavailable in the seed project, the code we've added will prepend your application's baseURL to your external
assets. If you want to host assets on another server, simply put the full path in the src
property of your external
asset. We assume that any external application without http
in its src
is hosted alongside the rest of the
application files (e.g., http://localhost:3375/yourSubDirectory/hosted/externalAsset.zip
).
components.json
file. Replace
the alias
property, the key, and the id with information related to your native application."NativeTest": {
"window": {
"id": "NativeTest",
"native":true,
"alias": "putty",
"path":"",
"url":"",
"defaultHeight": 600,
"autoShow": true,
"alwaysOnTop": false,
"resizable": true,
"showTaskbarIcon": false,
"contextMenu": true,
"addToWorkspace": true
},
"component": {
},
"foreign": {
"services": {
"workspaceService": {
"isArrangable": true
}
},
"components": {
"App Launcher": {
"launchableByUser": true
},
"Window Manager": {
"persistWindowState": false,
"FSBLHeader": true
}
}
}
}
If you get stuck trying to add your own application, send us a note at support@finsemble.com or send us a message on slack.
Released 06-30-2017
This is the first official release of Finsemble.
New Features
Snapping windows: Windows now snap to monitor edges and to each other, making it quick and easy for users to assemble their ideal workspace. Snapping is automatically enabled (supported by a new service "dockingService").
Mind Control: Allows JavaScript to be injected at run-time into select components. You can use this JavaScript to modify the behavior of the component by interacting with the FSBL API. See the Integrating HTML Applications tutorial for more information.
API Changes
Support for storage adapters now allow developers to save data to locations other than localStorage. Also, the Storage Client is enhanced. See the Storing Data tutorial for more information.
LauncherClient has been significantly revised to make component launch more flexible. The new model uses a paradigm
based off of CSS div positioning, with the capability of targeting specific monitors or launching components in
positions relative to other components. A new "windowIdentifier" paradigm allows windows to be referenced more
flexibly. Components can now be set to spawnOnStart and spawnOnAllMonitors. They can also generically make claims on
monitor space - to support building custom toolbars. See LauncherClient#spawn
and LauncherClient#showWindow
API calls.
These are breaking changes from the Beta release - any calls to spawn() should be rewritten to use the new parameters.
The RouterClient now dynamically selects an underlying transport. For cross-domain components (i.e. components not on the same domain as the Router Service) an OpenFin-Bus transport is selected. For same-origin components a faster ShareWorker transport layer is selected. With these enhancements, RouterClient initialization is no longer synchronous, requiring a call to RouterClient.onReady() before using other Router method; however, this is transparent to components that only access the RouterClient though the FSBL object (i.e. the RouterClient is preinitialized in FSBL).
These are potentially breaking changes from the Beta release - Application should either use the RouterClient in
FSBL (or for services inheriting from the Base Service, reference the preinitialized this.RouterClient)
or call
RouterClient.onReady()
before invoking other router methods.
WindowClient now offers fitToDOM()
method that allows a window's height to automatically be resized to fit its DOM
contents. This is useful for elements such as menus that have variable height.
A new ConfigClient provides run-time access to Finsemble configuration. See the Configuration tutorial for more information. If you participated in the Beta and wish to retain you project, then your config files will need to be modified to the new format. See "Upgrade Steps" below.
The Finsemble Toolbar is no longer required. If you would like to disable, simply remove the ToolBar entry under
components
in configs/application/config.json
.
New Beta Features
Window grouping: Snapped windows "fuse" to form window groups. A window group can then be moved by the end user, for
instance from one monitor to another monitor. Window grouping is undergoing user testing and is released as a beta for
feedback. To enable window grouping set the docking.enabled
flag in the configs/application/config.json
file.
We're currently working out the kinks in this feature, it should be enabled by default in the coming weeks.
Assimilation: Allows Finsemble to launch native applications from the toolbar which participate in snapping and workspaces. See the assimilation tutorial for more information.
Other Improvements
npm run dev
) has been improved to increase speed.Upgrade Steps
AppData\Local\OpenFin\cache
../src/
.npm install
.npm update -g @chartiq/finsemble-cli
;npm run dev
.If you have problems, contact us.
Released 05-19-2017
Released 05-02-2017
Released 04-21-2017 Minor bug fixes Fixes
Released 04-19-2017 You may be wondering, "Where is 0.2?" The short answer is that Brad messed up bumping the NPM
version. So 0.3.0
is what we're working with. Hope you enjoy the new features!
Added
response
instead of response.data
inside of API Calls. If
responding to a router request, still parse response.data
).Changed
Migration steps We're aware that making changes to your project's structure is a huge pain - we certainly don't intend on making this process commonplace. For this release, however, there are several changes to the underlying application bootstrapping/build process.
There are two paths to migration:
Copying Components
npm install
.npm update -g @chartiq/finsemble-cli
src/components
from your old seed into the root of your new project.Try to run npm run dev
. Contact us if this doesn't work and we'll jump on a call to figure out what isn't set up
properly.
Modifying your existing project
Replace src/node_fileserver/FinsembleConfigs.js
with the file in the seed project on the master branch.
create configs/startup.json
; copy contents from the master branch of the seed project and put in the desired
port/hostname configuration.
Modify gulpfile.js
var StartupConfig = require("./configs/startup");
. Make sure to update any locations using a port
number to the use startup config.launchOpenfin
command) with
configPath: StartupConfig[env].serverConfig
.devServer
change launchOpenfin()
to launchOpenfin("dev")
Also, change all launchOpenfin
function calls to the correct environment. The will match up to your startup config.run npm install
.
run npm update -g @chartiq/finsemble-cli
;
run npm update @chartiq/finsemble
;
run npm run dev
. If it doesn't work, contact us and we'll jump on a call with you.
We apologize for the extensive changes. It's unlikely that we'll do this to you again.
The Finsemble Dev Team.
Misc Integration notes:
* {
display: block;
}
If you don't, you'll get some lovely CSS plastered on the background of your component's DOM.
LauncherClient.getActiveDescriptors
parses response
instead of response.data
.