Releases: finos/FDC3
npm v2.2.2
npm v2.2.2 - 2026-04-20
Maintenance release for the JavaScript implementation of FDC3 2.2 that includes a significant number of fixes to the FDC3 packages, FDC3-for-web reference implementation, FDC3 Conformance framework and FDC3 Workbench application. See CHANGELOG for details:
Added
- Added a notes field to Trade type (#1563)
- Added a notes field to Order and Product types (#1597)
- Added dynamic intent listener support to the reference Desktop Agent implementation (#1613)
- Ported FDC3 Conformance Project as-is into the FDC3 Monorepo, just including minimal fixes for typescript compilation. (#1576)
- Added Conformance tests for FDC3 2.2 (#1586)
- Added custom mocha test runner for conformance tests to better display test progress. (#1769)
Changed
- Converted the standalone app-directory specification test from
src/app-directory/specification/test/into a test that runs as part of CI. (#1720) - Fix for channel change listeners not sending addEventListenerRequests (#1606)
- When adding a listener on the current channel, the payload.channelId should be null (#1611)
- Increased FDC3 Conformance Test WindowCloseWaitTime to 2000 (from 1000). (#1586)
- Enhanced method binding for FDC3 API objects to support destructuring. All public methods of
Channel,PrivateChannel, andIntentResolutionobjects are now properly bound to their instances using.bind(this)in their constructors. (#1645) - Changed fdc3-web-impl to not deliver broadcast messages back to the sending application, as recommended (SHOULD) in the Standard. #1749
- Removed version number prefix from conformance test names and implementation to simplify future maintenance. (#1726)
- Updated workbench from MUI 4 to MUI 5 (#1714)
- Modernized and standardised eslint configuration in all packages. (#1823)
- Reduced log messages in fdc3-web-impl to the debug level and removed logging of all messages recevied in the BroadcastHandler. (#1851)
Fixed
- Added support for passing
originatingAppmetadata to context listeners infdc3-agent-proxyandfdc3-web-impl, matching theContextMetadataspec foraddContextListenercallbacks. (#1819) - Corrected /toolbox/fdc3-for-web/demo to only use MessagePort communication when 'Parent Post-Message' selected in the demo. (#1695)
- Corrected the property set in WCP1Hello by getAgent that indicates whether an intent resolver is needed. (#1684)
- Added unit tests to the fdc3-context package for validating context examples are valid schema.
- Reverted schema of
fdc3.timeRangecontext type back to use anyOf in place of oneOf for thestartTimeandendTimeproperty combinations. This will allow existence of one of either, or both, and pass schema validation. When defined with oneOf, validation would fail due to multiple entries being valid and it could not identify which to apply. (#1592) - Reverted schema of
fdc3.interactioncontext type back to use anyOf in place of oneOf for theinteractionTypeproperty. Since it could be a string enum or a string, validation could not differentiate. (#1598) - Fixed
fdc3.timeRangecontext example to use correctly formatted dateTime. (#1599) - Removed broken sourcemaps from npm package output (#1589)
- Fixed the
fdc3-commonjsbuild to included.tsfiles and corrects the config for easier consumption in different environments. (#1694) - Updated .NET API documentation for IListener.Unsubscribe to be async for 2.2 and current. (#1690)
- Fix for channel change listeners not sending addEventListenerRequests (#1606)
- Fix to ensure that Adding A Channel Change Event Listener Doesn't Send addEventListenerRequest - Conformance 2.2 (#1606)
- Updated Conformance tests to allow agents that fully qualify app Ids (as recommended in the Standard) to pass the conformance tests (#1767)
- Fixed import file extensions and module type to be esm module compliant (#1677)
- Added mising context types to types and enums in. ContextTypes.ts and implemented tests to ensure they stay in sync with the fdc3-context package (#1796)
- Allowed retrieval of User channels as App channels via getOrCreateChannel and getCurrentChannel in fdc3-web-impl. (#1835)
- Corrected description of UCBasic3 in the fdc-conformance framework implementation. (#1823)
- Fixed a race condition in fdc3-workbench's context store which caused the context listeners on user channels to miss replay of current context in some cases. (#1823)
- Fixed lint in the fdc3-workbench implementation. (#1823)
- Stopped fdc3-workbench flagging FDC3 version 2.2 as unsupported. (#1841)
- Resolved vulnerable dependencies (esbuild, serialize-javascript, elliptic) and consolidated shared devDependencies to simplify future maintenance. (#1841)
- Fixed the lack of handling of WCP6Disconnect messages in MessagePort example in the FDC3 Web reference implementation. (#1854)
- Fixed handling of DesktopAgents that start apps joined to a user channel by the agent-proxy by retrieving the current user channel on start-up. (#1858)
- Fixed a race condition in
DefaultChannelSupportinitialization where the current user channel was retrieved asynchronously without being awaited, which could cause apps started on a user channel by the Desktop Agent to miss their initial channel assignment. (#1858)
New Contributors
- @Angela-lltt made their first contribution in #1597
- @jaybhanushali3166 made their first contribution in #1645
- @GaneshPatil7517 made their first contribution in #1747
- @nikhilagrawalnatwest made their first contribution in #1709
- @adityashirsatrao007 made their first contribution in #1720
- @saschabuehrle made their first contribution in #1801
- @SeeWhatsOn made their first contribution in #1815
Full Changelog: release/v2.2...release/v2.2.2
npm v2.2.2-beta.2
npm v2.2.2-beta.2 - 2026-04-16
Maintenance release for the JavaScript implementaiton of FDC3 2.2 that includes a number of fixes to the FDC3 packages, FDC3-for-web reference implementation and FDC3 Workbench application. See CHANGELOG for details:
Added
- Added a notes field to Trade type (#1563)
- Added a notes field to Order and Product types (#1597)
- Added dynamic intent listener support to the reference Desktop Agent implementation (#1613)
- Ported FDC3 Conformance Project as-is into the FDC3 Monorepo, just including minimal fixes for typescript compilation. (#1576)
- Added Conformance tests for FDC3 2.2 (#1586)
- Added custom mocha test runner for conformance tests to better display test progress. (#1769)
Changed
- Converted the standalone app-directory specification test from
src/app-directory/specification/test/into a test that runs as part of CI. (#1720) - Fix for channel change listeners not sending addEventListenerRequests (#1606)
- When adding a listener on the current channel, the payload.channelId should be null (#1611)
- Increased FDC3 Conformance Test WindowCloseWaitTime to 2000 (from 1000). (#1586)
- Enhanced method binding for FDC3 API objects to support destructuring. All public methods of
Channel,PrivateChannel, andIntentResolutionobjects are now properly bound to their instances using.bind(this)in their constructors. (#1645) - Changed fdc3-web-impl to not deliver broadcast messages back to the sending application, as recommended (SHOULD) in the Standard. #1749
- Removed version number prefix from conformance test names and implementation to simplify future maintenance. (#1726)
- Updated workbench from MUI 4 to MUI 5 (#1714)
- Modernized and standardised eslint configuration in all packages. (#1823)
- Reduced log messages in fdc3-web-impl to the debug level and removed logging of all messages recevied in the BroadcastHandler. (#1851)
Fixed
- Added support for passing
originatingAppmetadata to context listeners infdc3-agent-proxyandfdc3-web-impl, matching theContextMetadataspec foraddContextListenercallbacks. (#1819) - Corrected /toolbox/fdc3-for-web/demo to only use MessagePort communication when 'Parent Post-Message' selected in the demo. (#1695)
- Corrected the property set in WCP1Hello by getAgent that indicates whether an intent resolver is needed. (#1684)
- Added unit tests to the fdc3-context package for validating context examples are valid schema.
- Reverted schema of
fdc3.timeRangecontext type back to use anyOf in place of oneOf for thestartTimeandendTimeproperty combinations. This will allow existence of one of either, or both, and pass schema validation. When defined with oneOf, validation would fail due to multiple entries being valid and it could not identify which to apply. (#1592) - Reverted schema of
fdc3.interactioncontext type back to use anyOf in place of oneOf for theinteractionTypeproperty. Since it could be a string enum or a string, validation could not differentiate. (#1598) - Fixed
fdc3.timeRangecontext example to use correctly formatted dateTime. (#1599) - Removed broken sourcemaps from npm package output (#1589)
- Fixed the
fdc3-commonjsbuild to included.tsfiles and corrects the config for easier consumption in different environments. (#1694) - Updated .NET API documentation for IListener.Unsubscribe to be async for 2.2 and current. (#1690)
- Fix for channel change listeners not sending addEventListenerRequests (#1606)
- Fix to ensure that Adding A Channel Change Event Listener Doesn't Send addEventListenerRequest - Conformance 2.2 (#1606)
- Updated Conformance tests to allow agents that fully qualify app Ids (as recommended in the Standard) to pass the conformance tests (#1767)
- Fixed import file extensions and module type to be esm module compliant (#1677)
- Added mising context types to types and enums in. ContextTypes.ts and implemented tests to ensure they stay in sync with the fdc3-context package (#1796)
- Allowed retrieval of User channels as App channels via getOrCreateChannel and getCurrentChannel in fdc3-web-impl. (#1835)
- Corrected description of UCBasic3 in the fdc-conformance framework implementation. (#1823)
- Fixed a race condition in fdc3-workbench's context store which caused the context listeners on user channels to miss replay of current context in some cases. (#1823)
- Fixed lint in the fdc3-workbench implementation. (#1823)
- Stopped fdc3-workbench flagging FDC3 version 2.2 as unsupported. (#1841)
- Resolved vulnerable dependencies (esbuild, serialize-javascript, elliptic) and consolidated shared devDependencies to simplify future maintenance. (#1841)
- Fixed the lack of handling of WCP6Disconnect messages in MessagePort example in the FDC3 Web reference implementation. (#1854)
- Fixed handling of DesktopAgents that start apps joined to a user channel by the agent-proxy by retrieving the current user channel on start-up. (#1858)
- Fixed a race condition in
DefaultChannelSupportinitialization where the current user channel was retrieved asynchronously without being awaited, which could cause apps started on a user channel by the Desktop Agent to miss their initial channel assignment. (#1858)
Changes since v2.2.2-beta.2: release/v2.2.2-beta.1...release/v2.2.2-beta.2
Full Changelog: release/v2.2...release/v2.2.2-beta.2
npm v2.2.2-beta.1
npm v2.2.2-beta.1 - 2026-04-13
Maintenance release for the JavaScript implementaiton of FDC3 2.2 that includes a number of fixes to the FDC3 packages, FDC3-for-web reference implementation and FDC3 Workbench application. See CHANGELOG for details:
Added
- Added a notes field to Trade type (#1563)
- Added a notes field to Order and Product types (#1597)
- Added dynamic intent listener support to the reference Desktop Agent implementation (#1613)
- Ported FDC3 Conformance Project as-is into the FDC3 Monorepo, just including minimal fixes for typescript compilation. (#1576)
- Added Conformance tests for FDC3 2.2 (#1586)
- Added custom mocha test runner for conformance tests to better display test progress. (#1769)
Changed
- Converted the standalone app-directory specification test from
src/app-directory/specification/test/into a test that runs as part of CI. (#1720) - Fix for channel change listeners not sending addEventListenerRequests (#1606)
- When adding a listener on the current channel, the payload.channelId should be null (#1611)
- Increased FDC3 Conformance Test WindowCloseWaitTime to 2000 (from 1000). (#1586)
- Enhanced method binding for FDC3 API objects to support destructuring. All public methods of
Channel,PrivateChannel, andIntentResolutionobjects are now properly bound to their instances using.bind(this)in their constructors. (#1645) - Changed fdc3-web-impl to not deliver broadcast messages back to the sending application, as recommended (SHOULD) in the Standard. #1749
- Removed version number prefix from conformance test names and implementation to simplify future maintenance. (#1726)
- Updated workbench from MUI 4 to MUI 5 (#1714)
- Modernized and standardised eslint configuration in all packages. (#1823)
Fixed
- Added support for passing
originatingAppmetadata to context listeners infdc3-agent-proxyandfdc3-web-impl, matching theContextMetadataspec foraddContextListenercallbacks. (#1819) - Corrected /toolbox/fdc3-for-web/demo to only use MessagePort communication when 'Parent Post-Message' selected in the demo. (#1695)
- Corrected the property set in WCP1Hello by getAgent that indicates whether an intent resolver is needed. (#1684)
- Added unit tests to the fdc3-context package for validating context examples are valid schema.
- Reverted schema of
fdc3.timeRangecontext type back to use anyOf in place of oneOf for thestartTimeandendTimeproperty combinations. This will allow existence of one of either, or both, and pass schema validation. When defined with oneOf, validation would fail due to multiple entries being valid and it could not identify which to apply. (#1592) - Reverted schema of
fdc3.interactioncontext type back to use anyOf in place of oneOf for theinteractionTypeproperty. Since it could be a string enum or a string, validation could not differentiate. (#1598) - Fixed
fdc3.timeRangecontext example to use correctly formatted dateTime. (#1599) - Removed broken sourcemaps from npm package output (#1589)
- Fixed the
fdc3-commonjsbuild to included.tsfiles and corrects the config for easier consumption in different environments. (#1694) - Updated .NET API documentation for IListener.Unsubscribe to be async for 2.2 and current. (#1690)
- Fix for channel change listeners not sending addEventListenerRequests (#1606)
- Fix to ensure that Adding A Channel Change Event Listener Doesn't Send addEventListenerRequest - Conformance 2.2 (#1606)
- Updated Conformance tests to allow agents that fully qualify app Ids (as recommended in the Standard) to pass the conformance tests (#1767)
- Fixed import file extensions and module type to be esm module compliant (#1677)
- Added mising context types to types and enums in. ContextTypes.ts and implemented tests to ensure they stay in sync with the fdc3-context package (#1796)
- Allowed retrieval of User channels as App channels via getOrCreateChannel and getCurrentChannel in fdc3-web-impl. (#1835)
- Corrected description of UCBasic3 in the fdc-conformance framework implementation. (#1823)
- Fixed a race condition in fdc3-workbench's context store which caused the context listeners on user channels to miss replay of current context in some cases. (#1823)
- Fixed lint in the fdc3-workbench implementation. (#1823)
- Stopped fdc3-workbench flagging FDC3 version 2.2 as unsupported. (#1841)
- Resolved vulnerable dependencies (esbuild, serialize-javascript, elliptic) and consolidated shared devDependencies to simplify future maintenance. (#1841)
New Contributors
- @Angela-lltt made their first contribution in #1597
- @jaybhanushali3166 made their first contribution in #1645
- @GaneshPatil7517 made their first contribution in #1747
- @nikhilagrawalnatwest made their first contribution in #1709
- @adityashirsatrao007 made their first contribution in #1720
- @saschabuehrle made their first contribution in #1801
- @SeeWhatsOn made their first contribution in #1815
Full Changelog: v2.2...v2.2.2-beta.1
FDC3 Standard 2.2
v2.2 of the FDC3 standard, consisting of:
Release highlights
Project Infrastructure
- Refactored repository into a modern mono-repo format
- Subdivided NPM module into multiple sub-modules (packages)
- Switched FDC3 NPM module build to ESM only
- Added separate
fdc3-commonjsmodule for compatibility with older projects that use CommonJS
FDC3 for Web Browsers
- Added support for vendor-agnostic connections to Desktop Agents running in a web browser
- Specifications for getAgent() and Browser-Resident Desktop Agents.
- Specifications for Preload Desktop Agents.
- definitions for getAgent() and related types.
- definitions for Desktop Agent Communication Protocol (DACP). These constitute the internal "wire protocol" that the "@finos/fdc3" library uses to communicate with Browser-Resident DAs.
- definitions for Web Connection Protocol (WCP). These constitute the messages used to establish connectivity between "@finos/fdc3" and a Browser-Resident DA.
- Added reference Desktop Agent implementation for FDC3 for Web in /toolbox/fdc3-for-web
API
- FDC3 apps are now encouraged to instantiate their FDC3 interface (DesktopAgent) using the
getAgent()function provided by the @finos/fdc3 module. This will allow apps to interoperate in either traditional Preload DAs (i.e. Electron) as well as the new Browser-Resident DAs. window.fdc3is now an optional property and may or may not be defined. Applications should usegetAgent()as the recommended way of retrieving a reference to the FDC3 API.- Added reference materials and supported platforms information for FDC3 in .NET via the finos/fdc3-dotnet project.
- Added support for event listening outside of intent or context listnener. Added new function addEventListener, type EventHandler, enum FDC3EventType and interfaces FDC3Event and FDC3ChannelChangedEvent.
- Deprecated PrivateChannel's synchronous onAddContextListener, onUnsubscribe and onDisconnect functions in favour of an async addEventListener function consistent with the one added to DesktopAgent.
Listener.unsubscribe()was made async (the return type was changed fromvoidtoPromise<void>) for consistency with the rest of the API.
API Conformance Tests
- Added conformance tests into the FDC3 API documentation in the current version and back-ported into 2.0 and 2.1. Removed outdated 1.2 conformance tests (which are preserved in the older 2.0 and 2.1 versions).
- Added conformance tests to documentation for features introduced in FDC3 2.2 (
fdc3.addEventListener,PrivateChannel.addEventListenerandgetAgent).
Context Data & Intents
- Created intent
CreateOrUpdateProfile- To be used when a user wants to ensure a profile is created or maintained in a system such as a CRM - TypeScript
ContextTypeandIntent(string) types were created for use in DesktopAgent API signatures - they are unions of standardized values and string, enabling autocomplete/IntelliSense in IDEs when working with the FDC3 API. - Added utility functions
isStandardContextType(contextType: string),isStandardIntent(intent: string),getPossibleContextsForIntent(intent: StandardIntent). - Spun off fileAttachment into its own schema, and corrected related examples
See the CHANGELOG.md for full details.
FDC3 Standard 2.1
v2.1 of the FDC3 standard, consisting of:
Release highlights
Agent Bridging
- A new 5th Part to the FDC3 Standard that provides a wire protocol that allows Desktop Agents to collaborate via a 'Bridge', enabling interop for apps managed by those Desktop Agents to span across them and across different devices, for the same user.
API
- Added
MalformedContexterrors to be returned when something other than a context is passed to an FDC3 function. - Added a recommendation that apps add their context or intent listeners via the API within 15 seconds of launch, and that Desktop Agents MUST allow at least a 15 second timeout for them to do so.
- Deprecated the
IntentMetadata.displayNamefield in favor of using intent names for display (which are required to be recognizable) as it can be set differently for each application in the appD. - Clarified description of the behavior of
IntentResolution.getResult()when the intent handler returned void (which is not an error).
App Directory
- OpenAPI spec converted from YAML to JSON Schema.
- Added error examples to the OpenAPI spec.
- Corrected the appD
interop.appChannelsmetadata to use anidfield to identify channels, rather thanname. - Deprecated the
namefield in AppD records, to match the deprecation of API signatures and metadata objects usingname. - Deprecated
interop.intents.listensFor[].displayNamefield in favor of using intent names for display (which are required to be recognizable) as it can be set differently for each application in the appD. - Deprecated the
customConfigfield in an AppD record due to the lack of a standard API to retrieve it. To be replaced with anapplicationConfigelement with a Desktop Agent API call to retrieve it in a future version (see #1006 for more details). - Deprecated the
customConfigelement of an Intent configuration due to a lack of documented use cases. - Corrected bad example URLs in the App Directory overview/discovery page in the current and past versions as they did not agree with the paths provided in the API specification and OpenAPI schema.
Context Data
- Added a description of the standards use of JSON Schema to define context types and Bridging messages.
- Docs for standardized Context types was added to their JSON Schema files and TypeScript interfaces generated from them, so that they may act as a 'single source of truth' for Context definitions.
- Updated definition of the
fdc3.instrumentcontext type to include optional market identifiers - New context types added:
fdc3.action- context type representing an action (an FDC3 intent and context) that might be performed - to be attached to messages or other objects.fdc3.chat.message- context type representing a chat message with addressing details.fdc3.chat.room- context type representing a chat room.fdc3.chat.searchCriteria- context type representing a search for chat messages.fdc3.message- context type representing the content of a message to send (usually a chat message) - now used as part offdc3.chat.initSettings.fdc3.transactionResult- A context type representing the result of a transaction initiated via FDC3.- Added @experimental
fdc3.order,fdc3.orderList,fdc3.product,fdc3.trade&fdc3.tradeListcontext types.
Intents
CreateInteraction- To be used when a user wants to record an interaction into a CRM.ViewChat- to be used when a user wants to open an existing chat room.ViewMessages- to be used when a user wants to search and see a list of messages.StartChat- Updated to recommend that a reference to the chat room is returned as anIntentResult
See the CHANGELOG.md for full details.
FDC3 Standard 2.0
v2.0 of the FDC3 standard, consisting of:
Release highlights
Formal specification
- Significantly improved both the structure and content of the Standard's documentation (including merging the overview and specification pages for each part of the standard, ensuring the docs are DRY)
- Introduced abstract, glossary, references and trademarks pages.
- Consolidated compliance information for each part of the standard and both 'personas' (Platform providers and Application providers).
- Documented existing deprecation and versioning policies and new experimental features policy.
- Create a Community page to showcase support for and uptake of the FDC3 Standard.
API
- Added the ability to return data or a channel from a raised intent, via the addition of an
IntentHandlertype and agetResult()toIntentResolution. - All DesktopAgent and Channel API functions are now async for consistency, changing the return type of the
broadcast,addIntentListener,addContextListenerandgetInfofunctions. - Added support for targetting of intents at specific app instances via an
instanceId(and optionalinstanceMetadata) field toAppIdentifierandAppMetadataand a new `findInstances() function. - Added a new recommended set of user channel definitions to promote consistency between Desktop Agents (in anticipation of Desktop Agent implementations communicating with each other in future).
- Added the optional exposure of originating app metadata to messages received.
- Added a getAppMetdata() function to the desktop agent that can be used to retrieve the full AppMetadata for an AppIdentifier and reduced types such as IntentResolution.source and ContextMetadata.source from AppMetadata to AppIdentifier to clarify what fields a developer can rely on and that they should manually retrieve the full AppMetadata when they need it for display purposes.
- Clarified descriptions of expected behaviour of many functions including
raiseIntent,addContextListenerandjoinChannel - Clarified how the broadcast of 'composed' types should be handled so that apps can respond to the sub-types (broadcast each subtype that you expect other apps to respond to, then the composed type).
- Replaced 'System channels' to 'User channels' to better reflect their usage and reduce developer confusion about the difference between User channels and App Channels.
- Adjusted wording in API spec and documentation to acknowledge the possibility of methods of intent resolution other than a resolver UI.
- The
joinChannel,getCurrentChannel andleaveCurrentChannel` functions have been made optional for FDC3 API compliance (as equivalent functionality is usually implemented by a Desktop Agent via a selector UI on the window chrome. open,raiseIntentandraiseIntentForContextfunction signatures that make use of the appnamehave been deprecated in favour of usingAppIdentifier(which is a new parent ofAppMetadatathat clarifies required fields for API call parameters)- Removed details of the 'global' channel that was deprecated in FDC3 1.2.
App Directory
- Reconfirmed the role appD in FDC3 and its description via a re-written AppD overview page.
- Added /v2/ paths to the AppD's specification, allowing a single implementation to support serving both FDC3 v1.2 and v2.0 application records, enabling simpler migration.
- App Directory endpoint for creating applications was removed as these will often be implementation dependent and should not be required for compliance.
- App Directory endpoint for searching applications was removed as searches over multiple app directories are better implemented by retrieving all the records and searching over the resulting combined dataset.
- Changes to app directory records:
- Improved container independence of appD records by adding support for including or referencing multiple container or web app manifests for each app by removing the
manifestTypeandmanifestproperties and replacing them with the newtype(required),detailsandhostManifestsproperties. - Added better support for native applications in appD via the new
typeanddetailsfields. - Added an
interopfield to AppD application records, replacing theintentsfield, to more fully describe an app's use of FDC3 and enable search for apps that 'interoperate' with a selected app imagesfield was replaced withscreenshotsto better align the application record with web application manifest and match its format to that used by icons- Added a
moreInfoURL field to AppD application records to enable linking to a web page with more information on an app. - Added
langfield to AppD application records to specify the primary language of an app and its appD record. - Added
localizedVersionsfield to AppD application records to support localized versions of descriptive fields in the app records - Added categories field and recommended categories list to AppD application records to enable category based browsing of AppDs
- Improved container independence of appD records by adding support for including or referencing multiple container or web app manifests for each app by removing the
Intents
- Extended Intent Naming conventions to support intents that return or interact with data.
- Added new intent definitions:
ViewResearch: see the latest research on a particular stock.ViewProfile: supersedes the ViewContact intent and allows the viewing of profiles for different entity types (e.g. organisations).ViewInteractions: see the latest interactions (calls, meetings, conferences, roadshows) on a particular stock or with an individual or organization.ViewOrders: see the order history of an individual, an institution or of a particular instrument.StartEmail: initiate an email with a contact or list of contacts.
- Deprecated the ViewContact intent, which is superseded by ViewProfile.
Contexts
- Added support for raiseIntent without a context via the addition of the fdc3.nothing context type (#375)
- Added new context types representing:
- a range of time: `fdc3.timerange.
- a currency:
fdc3.currency. - the price and value of a holding
fdc3.valuation. - a chart
fdc3.chart. - parameters for the initialization of a chat conversation
fdc3.chat.initSettings. - parameters for the initialization of an email to a contact or list of contacts
fdc3.email
- Extended recommended field type conventions for contexts to include types for ids, times, dates, currency codes and country codes.
- The fdc3.country context type was updated to comply with the recommended field name for country codes (COUNTRY_ISOALPHA2).
- Updated definition of the Position context type to support negative (short) positions
See the CHANGELOG.md for full details.
npm v1.2.0
v1.2.0 release of the @finos/fdc3 npm package, corresponding with the FDC3 Standard v1.2.
Release highlights
New ES6 Imports
The new methods from the FDC3 1.2 Standard, raiseIntentForContext() and getInfo(), can now be imported:
import { raiseIntentForContext, getInfo } from '@finos/fdc3'
const info = getInfo()
console.log('FDC3 version: ' + info.fdc3Version)
await raiseIntentForContext({
type: 'fdc3.instrument',
id: {
ticker: 'AAPL'
}
})New utility functions
- The
fdc3Ready()function wraps waiting for thewindow.fdc3global and the newfdc3Readyevent:
import { fdc3Ready, joinChannel, broadcast } from '@finos/fdc3'
await fdc3Ready(1000) // specify the amount of milliseconds to wait before a timeout error
await joinChannel('blue')
broadcast({
type: 'fdc3.contact',
id: {
email: 'jane.doe@mail.com'
}
})- The
compareVersionNumbers()andversionIsAtLeast()functions can be used together withgetInfo()for version checking:
import * as fdc3 from '@finos/fdc3'
const info = fdc3.getInfo()
if (fdc3.versionIsAtLeast(info, 1.2)) {
console.log('Version is >= 1.2')
}🚀 New Features
- ES6 functions for
getInfo()andraiseIntentForContext()(#268, #324) fdc3Ready()utility function that wraps checks for the window.fdc3 global object and newfdc3Readyevent (#360)compareVersionNumbers()andversionIsAtLeast()utility functions to complementgetInfo()(#324)
💅 Enhancements
addContextListener(contextType, handler)now supports passingnullas the context type (#329)- All other API type changes and additions from the FDC3 Standard 1.2 release
👎 Deprecated
See CHANGELOG.md for more details.
FDC3 Standard 1.2
v1.2 of the FDC3 standard, consisting of:
- API 1.2 [Specification] [Overview]
- Intents 1.2 [Specification] [Overview]
- Context Data 1.2 [Specification] [Overview]
- App Directory 1.2 [Specification] [Overview]
Release highlights
Raising an intent for a context type
The new raiseIntentForContext() method allows an application to start just with an FDC3 context data type, and then ask the desktop agent to raise an appropriate intent for that type.
This is similar to calling findIntentsByContext(), followed by raiseIntent(), but an application doesn't have to select from the available intents itself, or ask the user to. It allows the desktop agent to look up all matching intents and apps, and then use its own resolution logic (which could include an agent-provided selection dialog).
Example
const instrument = {
type: 'fdc3.instrument',
id: {
ticker: 'AAPL'
}
}
await fdc3.raiseIntentForContext(instrument)fdc3Ready event
Knowing when the window.fdc3 global object will be initialised and set by the current desktop agent was a challenge in earlier versions of FDC3. The 1.2 API specification adds the concept of a global fdc3Ready event that applications can listen for to know when the FDC3 desktop environment has been initialised, and the window.fdc3 global object is available for use:
Example
if (window.fdc3) {
action()
} else {
window.addEventListener('fdc3Ready', action)
}Specifying metadata for target applications
In FDC3 1.0 and 1.1, the open() and raiseIntent() methods accepts can target specific applications by specifying a string application identifier.
In FDC3 1.2, these methods (along with the new raiseIntentForContext() method) will now also accept the AppMetadata interface to help workflows to be even more targeted, and desktop agents to better identify target applications.
In addition, the AppMetadata interface has been expanded to optionally include appId and version.
Example
const target: TargetApp = {
name: 'MyApp',
version: '2.5'
}
await fdc3.open(target)Obtain information about the current FDC3 environment
A new getInfo() method has been added to FDC3 that returns metadata about the FDC3 implementation that is currently being used, which includes the FDC3 version, as well as (optionally) the provider name and version.
Example
const info = fdc3.getInfo()
console.log('FDC3 version: ' + info.fdc3Version)🚀 New Features
- New
raiseIntentForContext()method (#268) - New
fdc3Readyevent (#269) - New
getInfo()method that returns implementation metadata (#324)
💅 Enhancements
fdc3.open()andfdc3.raiseIntent()now takesTargetApp, which resolves tostring | AppMetadata(#272)AppMetadatareturn type can now optionally includeappIdandversion(#273)addContextListener(contextType, handler)now supports passingnullas the context type (#329)- Simplify API reference documentation and add info about supported platforms, including npm package (#349)
👎 Deprecated
🐛 Bug Fixes
- Return type of
getCurrentChannel()should bePromise<Channel | null>(#282) leaveCurrentChannel()is missing fromDesktopAgentinterface (#283)
See the CHANGELOG.md for full details.
npm v1.2.0-beta
Beta package to coincide with the upcoming release of the FDC3 1.2 Standard.
Included in this release:
- Updated TypeScript typings to match the 1.2 API specification, including correct typings for
getCurrentChannel()andleaveCurrentChannel(), support forTargetAppinopenandraiseIntent, andaddContextListener(contextType, handler)acceptingnullfor thecontextTypeargument - New exported ES6 functions:
getInfo(),raiseIntentForContext() - New exported
fdc3Ready()utility function that wraps checks for thewindow.fdc3global object and newfdc3Readyevent - New exported
compareVersionNumbers()andversionIsAtLeast()utility functions for use together withgetInfo() - Marked
IntentResolution.dataandaddContextListener(handler)as deprecated
npm v1.1.1
🐛 Bug Fix
Intentsenum should containStartChatnotStartChart(#364)
See CHANGELOG.md for more details.