Skip to content

Releases: finos/FDC3

npm v3.0.0-alpha.2

npm v3.0.0-alpha.2 Pre-release
Pre-release

Choose a tag to compare

@kriswest kriswest released this 22 Jun 10:50
9a720e5

npm v3.0.0-alpha.2 - 2026-04-20

Alpha release of FDC3 3.0.0, which includes some of the biggest changes in scope for 3.0.0, including:

  • FDC3 Metadata (#1290 & #735)
  • FDC3 Security (#1492)
  • Support for specifying context type filters when registering IntentListeners (#1545)
  • Removal of deprecated API functions (#1794)
  • Adding a close API call to allow apps to request that they be closed - important for apps rendered in iFrames (#1809)
  • Deprecated Node 20 support (#1826)
  • FDC3 Conformance is published with other FDC3 packages (#1576)
  • Replace webpack in build of FDC3 Conformance with Vite to match other packages #1830

For other open issues in the v3.0.0 scope, see: https://github.com/finos/FDC3/milestone/15

See CHANGELOG for full details of changes in this alpha release:

Added

  • Added advanced conformance tests (fdc3.intentListenerConflict) covering intent listener conflicts, verifying that addIntentListener/addIntentListenerWithContext reject with ResolveError.IntentListenerConflict for conflicting listeners (unfiltered, or overlapping context types) and allow non-overlapping filtered listeners, listeners for different intents, and re-adding after unsubscribe(). Added the corresponding test definitions to the "Avoiding Adding Multiple Intent Listeners" section of the Intents conformance docs.
  • Added a classification field to Instrument context type (#1665)
  • Added Go language binding. (#1483)
  • Added FDC3 API Metadata support to the Go language binding. (#1905)
  • Added details of and procedures for resolving fully-qualified appIds and unqualified appIds in the API and Bridging Parts of the Standard. (#1523)
  • Added clarification regarding expected behavior upon repeated calls to addContextListener on same or overlapping types (allowed) and addIntentListener on same intent (rejected; new error type added). (#1394)
  • Added clearContext function and associated contextClearedEvent to the Channel API, to be able to clear specific or all context types from the channel. (#1379)
  • Added optional metadata parameter of type AppProvidableContextMetadata to broadcast, open, raiseIntent and raiseIntentForContext API calls, allowing apps to provide traceId, signature and custom metadata with context and intent messages. (#1728)
  • Added getCurrentContextWithMetadata() to the Channel interface and ContextWithMetadata type, allowing retrieval of both the current context and its associated ContextMetadata from a channel. (#1728)
  • Added ContextMetadata and AppProvidableContextMetadata types, replacing the optional OriginatingAppMetadata feature with required metadata support on ContextHandler and IntentHandler callbacks. Desktop Agents MUST provide source and timestamp metadata, and MUST forward app-supplied traceId, signature and custom fields, supporting observability and security use cases. (#1728)
  • Added version-check script and integrated it into the syncpack script and Publish To NPM workflow to prevent version mismatches causing incorrect npm dist-tags. (#1864)
  • Added Channel Interface Compliance and PrivateChannel Interface Compliance subsections to the Desktop Agent API Standard Compliance section in the API spec, enumerating MUST/SHOULD/MAY requirements for all Channel and PrivateChannel functions including getCurrentContextWithMetadata. (#1728)
  • Added getResultMetadata() to IntentResolution to allow the raising app to retrieve ContextMetadata for an intent result. Updated IntentHandler to allow returning ContextWithMetadata so that handlers can include app-provided metadata (e.g. traceId, signature) alongside a context result. The Desktop Agent merges app-provided metadata with its own generated fields before delivering to the raising app. For Channel or void results, only Desktop Agent generated metadata is returned. (#1728)
  • Added FDC3 Security & Identity support, enabling applications to sign, encrypt, and validate contexts, and securely exchange user identity information, without relying on the Desktop Agent (#1909:
    • @experimental standard documentation, GetUser intent, and fdc3.security.* context types for signed contexts, encrypted payloads, symmetric key exchange, and user identity.
    • @finos/fdc3-security reference library (JWS/JWE, anti-replay, secure-boundary handlers) with samples and tests.
    • fdc3-example-apps toolbox with runnable security demos (identity provider apps, Login POC, signed broadcast, encrypted channels).
    • READMEs, Glossary entries and an API spec introduction for securing inter-app communication.
  • Added engines restriction to all package.json files requiring at least node 22 for all packages. (#1926)
  • Added labels and tooltips to dropdowns in the FDC3 for Web reference implementation demo. (#193)
  • Added fdc3.close() API call allowing an app to request that its own window or frame be closed, with closeRequest/closeResponse DACP messages and CloseError enumeration (#1918)

Changed

  • The fdc3-agent-proxy now enforces intent listener conflicts on the client side: addIntentListener and addIntentListenerWithContext reject with ResolveError.IntentListenerConflict when a new listener conflicts with an existing one for the same intent (either listener being unfiltered, or their context types overlapping). Multiple filtered listeners for the same intent with non-overlapping context types are now allowed, and the addIntentListener/addIntentListenerWithContext documentation was updated accordingly.
  • DACP ContextMetadata in api.schema.json now allows optional antiReplay claims on the wire (e.g. merged into raiseIntentResultResponse.resultMetadata). The agent proxy and reference web implementation forward antiReplay from app metadata on raiseIntent / raiseIntentForContext and merge it from intentResultRequest metadata into the intent result delivered to the raising app. Cucumber steps and features cover iat / exp / jti alongside signatures.
  • Updated "Releasing FDC3 to NPM" instructions in README to reflect the current GitHub Actions release workflow. (#1864)
  • Improved loading of example applications, fdc3-conformance and fdc3-workbench in the FDC3 for Web reference implementation demo. (#1924)

Removed

  • Removed deprecated functions from the Desktop Agent, Channel and PrivateChannel APIs for deprecations applied in FDC3 2.0-2.2 (#1928)

Full Changelog: release/v2.2.3...release/v3.0.0-alpha.2

npm v2.2.3

Choose a tag to compare

@kriswest kriswest released this 14 May 15:34

npm v2.2.3 - 2026-05-14

Maintenance release for the JavaScript implementation of FDC3 2.2 that resolve an issue with the ChannelChangedEvent in fdc3-agent-proxy and includes recent dependnecy updates to resolve a number of CVEs in dependencies.

See CHANGELOG for details:

Fixed

  • Fixed addEventListener callback receiving the raw channelChangedEvent wire message instead of a properly structured FDC3ChannelChangedEvent when a user leaves a channel or when the currentChannelId field is used in place of the deprecated newChannelId field. (#1870)

Full Changelog: v2.2.2...v2.2.3

npm v2.2.2

Choose a tag to compare

@kriswest kriswest released this 22 Apr 13:51

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, and IntentResolution objects 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 originatingApp metadata to context listeners in fdc3-agent-proxy and fdc3-web-impl, matching the ContextMetadata spec for addContextListener callbacks. (#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.timeRange context type back to use anyOf in place of oneOf for the startTime and endTime property 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.interaction context type back to use anyOf in place of oneOf for the interactionType property. Since it could be a string enum or a string, validation could not differentiate. (#1598)
  • Fixed fdc3.timeRange context example to use correctly formatted dateTime. (#1599)
  • Removed broken sourcemaps from npm package output (#1589)
  • Fixed the fdc3-commonjs build to include d.ts files 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 DefaultChannelSupport initialization 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

Full Changelog: release/v2.2...release/v2.2.2

npm v2.2.2-beta.2

npm v2.2.2-beta.2 Pre-release
Pre-release

Choose a tag to compare

@kriswest kriswest released this 16 Apr 22:25

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, and IntentResolution objects 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 originatingApp metadata to context listeners in fdc3-agent-proxy and fdc3-web-impl, matching the ContextMetadata spec for addContextListener callbacks. (#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.timeRange context type back to use anyOf in place of oneOf for the startTime and endTime property 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.interaction context type back to use anyOf in place of oneOf for the interactionType property. Since it could be a string enum or a string, validation could not differentiate. (#1598)
  • Fixed fdc3.timeRange context example to use correctly formatted dateTime. (#1599)
  • Removed broken sourcemaps from npm package output (#1589)
  • Fixed the fdc3-commonjs build to include d.ts files 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 DefaultChannelSupport initialization 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 Pre-release
Pre-release

Choose a tag to compare

@kriswest kriswest released this 14 Apr 12:57

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, and IntentResolution objects 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 originatingApp metadata to context listeners in fdc3-agent-proxy and fdc3-web-impl, matching the ContextMetadata spec for addContextListener callbacks. (#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.timeRange context type back to use anyOf in place of oneOf for the startTime and endTime property 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.interaction context type back to use anyOf in place of oneOf for the interactionType property. Since it could be a string enum or a string, validation could not differentiate. (#1598)
  • Fixed fdc3.timeRange context example to use correctly formatted dateTime. (#1599)
  • Removed broken sourcemaps from npm package output (#1589)
  • Fixed the fdc3-commonjs build to include d.ts files 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

Full Changelog: v2.2...v2.2.2-beta.1

FDC3 Standard 2.2

Choose a tag to compare

@kriswest kriswest released this 08 Apr 15:23

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-commonjs module 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.fdc3 is now an optional property and may or may not be defined. Applications should use getAgent() 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 from void to Promise<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.addEventListener and getAgent).

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 ContextType and Intent (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

Choose a tag to compare

@kriswest kriswest released this 14 Sep 14:09
8351ead

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 MalformedContext errors 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.displayName field 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.appChannels metadata to use an id field to identify channels, rather than name.
  • Deprecated the name field in AppD records, to match the deprecation of API signatures and metadata objects using name.
  • Deprecated interop.intents.listensFor[].displayName field 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 customConfig field in an AppD record due to the lack of a standard API to retrieve it. To be replaced with an applicationConfig element with a Desktop Agent API call to retrieve it in a future version (see #1006 for more details).
  • Deprecated the customConfig element 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.instrument context 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 of fdc3.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.tradeList context 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 an IntentResult

See the CHANGELOG.md for full details.

FDC3 Standard 2.0

Choose a tag to compare

@kriswest kriswest released this 30 Aug 11:31
21e5318

v2.0 of the FDC3 standard, consisting of:

Release highlights

Formal specification

API

  • Added the ability to return data or a channel from a raised intent, via the addition of an IntentHandler type and a getResult() to IntentResolution.
  • All DesktopAgent and Channel API functions are now async for consistency, changing the return type of the broadcast, addIntentListener, addContextListener and getInfo functions.
  • Added support for targetting of intents at specific app instances via an instanceId (and optional instanceMetadata) field to AppIdentifier and AppMetadata and 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, addContextListener and joinChannel
  • 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 and leaveCurrentChannel` 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, raiseIntent and raiseIntentForContext function signatures that make use of the app name have been deprecated in favour of using AppIdentifier (which is a new parent of AppMetadata that 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 manifestType and manifest properties and replacing them with the new type (required), details and hostManifests properties.
    • Added better support for native applications in appD via the new type and details fields.
    • Added an interop field to AppD application records, replacing the intents field, to more fully describe an app's use of FDC3 and enable search for apps that 'interoperate' with a selected app
    • images field was replaced with screenshots to better align the application record with web application manifest and match its format to that used by icons
    • Added a moreInfo URL field to AppD application records to enable linking to a web page with more information on an app.
    • Added lang field to AppD application records to specify the primary language of an app and its appD record.
    • Added localizedVersions field 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

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

Choose a tag to compare

@rikoe rikoe released this 19 Apr 21:40
4cef6a7

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 the window.fdc3 global and the new fdc3Ready event:
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() and versionIsAtLeast() functions can be used together with getInfo() 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() and raiseIntentForContext() (#268, #324)
  • fdc3Ready() utility function that wraps checks for the window.fdc3 global object and new fdc3Ready event (#360)
  • compareVersionNumbers() and versionIsAtLeast() utility functions to complement getInfo() (#324)

💅 Enhancements

  • addContextListener(contextType, handler) now supports passing null as the context type (#329)
  • All other API type changes and additions from the FDC3 Standard 1.2 release

👎 Deprecated

  • addContextListener(handler) (#329)
  • IntentResolution.data (#341)

See CHANGELOG.md for more details.

FDC3 Standard 1.2

Choose a tag to compare

@rikoe rikoe released this 19 Apr 16:40
4cef6a7

v1.2 of the FDC3 standard, consisting of:

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 fdc3Ready event (#269)
  • New getInfo() method that returns implementation metadata (#324)

💅 Enhancements

  • fdc3.open() and fdc3.raiseIntent() now takes TargetApp, which resolves to string | AppMetadata (#272)
  • AppMetadata return type can now optionally include appId and version (#273)
  • addContextListener(contextType, handler) now supports passing null as the context type (#329)
  • Simplify API reference documentation and add info about supported platforms, including npm package (#349)

👎 Deprecated

  • addContextListener(handler) (#329)
  • IntentResolution.data and 'global' channel concept (#341)

🐛 Bug Fixes

  • Return type of getCurrentChannel() should be Promise<Channel | null> (#282)
  • leaveCurrentChannel() is missing from DesktopAgent interface (#283)

See the CHANGELOG.md for full details.