FN-6119: open CE docs in built-in file viewer

Expose the dashboard file viewer to plugin views and wire Compound Engineering artifacts to it.

- add an openFile callback to the dashboard plugin view context and pass through the app host implementation
- switch Compound Engineering artifact Open actions to the built-in file viewer with matching styling and coverage
- document the new plugin context capability and add a published changeset for the CLI package

Files changed:
 .changeset/ce-docs-built-in-viewer.md              |  5 +++
 docs/PLUGIN_AUTHORING.md                           |  2 +-
 packages/dashboard/app/App.tsx                     |  1 +
 packages/dashboard/app/plugins/types.ts            |  2 ++
 .../src/dashboard-interop.d.ts                     |  1 +
 .../src/dashboard/CompoundEngineeringView.css      | 16 +++++++++
 .../src/dashboard/CompoundEngineeringView.tsx      | 24 +++++++-------
 .../__tests__/CompoundEngineeringView.test.tsx     | 38 ++++++++++++++++++++++
 8 files changed, 76 insertions(+), 13 deletions(-)

Fusion-Task-Id: FN-6119

Fusion-Task-Lineage: 8feb461c-b1d2-4059-9aa1-ffc756d15196
This commit is contained in:
gsxdsm
2026-06-09 13:54:59 -07:00
parent 9819000526
commit 30ba1f005a
8 changed files with 76 additions and 13 deletions

View File

@@ -1446,6 +1446,7 @@ function AppInner() {
workflowSteps,
subscribePluginEvents,
openTaskDetail: (task: Task | TaskDetail, initialTab?: DetailTaskTab) => openDetailTask(task, initialTab),
openFile: openFileInBrowser,
renderTaskCard: (task: Task | TaskDetail) => (
<TaskCard
task={task}

View File

@@ -30,6 +30,8 @@ export interface PluginDashboardViewContext {
tasks: Task[];
workflowSteps: WorkflowStep[];
openTaskDetail: (task: Task | TaskDetail, initialTab?: DetailTaskTab) => void;
/** Open a project-relative file in the dashboard's built-in file viewer. */
openFile: (path: string, options?: { workspace?: string; line?: number; col?: number }) => void;
renderTaskCard?: (task: Task | TaskDetail) => ReactNode;
addToast?: (message: string, type?: PluginToastType) => void;
/**