From 71b10b6d9785632077ad963f4081cb72d716c26a Mon Sep 17 00:00:00 2001 From: akira Date: Tue, 11 Aug 2026 10:57:49 -0700 Subject: [PATCH 1/3] feat(workbench): support FDC3 event listeners --- CHANGELOG.md | 1 + toolbox/fdc3-workbench/package.json | 1 + .../src/components/ChannelField.tsx | 31 +++ .../src/components/Channels.tsx | 40 ++++ .../src/components/IntentResolutionField.tsx | 1 + .../Workbench/PrivateChannelListeners.tsx | 28 ++- .../src/fixtures/codeExamples.ts | 34 ++- .../src/fixtures/logMessages.ts | 7 + .../src/store/ChannelStore.test.ts | 82 +++++++ .../fdc3-workbench/src/store/ChannelStore.ts | 84 ++++++- .../fdc3-workbench/src/store/IntentStore.ts | 5 +- .../src/store/PrivateChannelStore.test.ts | 133 +++++++++++ .../src/store/PrivateChannelStore.tsx | 225 ++++++++++++------ .../src/store/SystemLogStore.ts | 4 +- 14 files changed, 582 insertions(+), 94 deletions(-) create mode 100644 toolbox/fdc3-workbench/src/store/ChannelStore.test.ts create mode 100644 toolbox/fdc3-workbench/src/store/PrivateChannelStore.test.ts diff --git a/CHANGELOG.md b/CHANGELOG.md index b658219c4c..b9836018b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Added +* Added FDC3 Workbench support for `DesktopAgent` and `PrivateChannel` events, including automatic user channel updates, private channel event reporting, context-type-aware streaming, FDC3 2.0-2.1 compatibility, and copyable code examples. ([#1674](https://github.com/finos/FDC3/issues/1674)) * Added conformance coverage for `ChannelError.NoChannelFound`, `ChannelError.MalformedContext`, and `ChannelError.InvalidArguments`. ([#1779](https://github.com/finos/FDC3/issues/1779)) * Added conformance coverage verifying that Desktop Agent methods continue to work when destructured from the `fdc3` object. ([#1778](https://github.com/finos/FDC3/issues/1778)) * Added standalone Workbench examples for the FDC3 2.2 `fdc3.action`, `fdc3.fileAttachment`, `fdc3.message`, `fdc3.orderList`, `fdc3.tradeList`, and `fdc3.timeRange` context types. ([#1949](https://github.com/finos/FDC3/pull/1949)) diff --git a/toolbox/fdc3-workbench/package.json b/toolbox/fdc3-workbench/package.json index 199522df63..0d93a852f8 100644 --- a/toolbox/fdc3-workbench/package.json +++ b/toolbox/fdc3-workbench/package.json @@ -13,6 +13,7 @@ "start": "vite", "preview": "vite preview", "build": "tsc && vite build", + "test": "vitest run", "lint": " eslint src/", "lint:fix": "eslint --fix src/**/*.{ts,tsx} && prettier --write src/**/*.{ts,tsx}" }, diff --git a/toolbox/fdc3-workbench/src/components/ChannelField.tsx b/toolbox/fdc3-workbench/src/components/ChannelField.tsx index 1a17f34a11..6709fc57aa 100644 --- a/toolbox/fdc3-workbench/src/components/ChannelField.tsx +++ b/toolbox/fdc3-workbench/src/components/ChannelField.tsx @@ -341,6 +341,37 @@ export const ChannelField = observer( + {isPrivateChannel && ( + + + + Private channel events + + + Received events are shown in the Workbench listeners panel. + + + + + + + + + + + + + + )}