From 7d417a1f9cffafb6ce7d934ca03bd44f56a02cfb Mon Sep 17 00:00:00 2001 From: gsxdsm Date: Mon, 8 Jun 2026 12:55:52 -0700 Subject: [PATCH] fix(FN-0000): include compound engineering dashboard css --- .../fix-compound-engineering-css-build.md | 5 ++++ .../package.json | 2 +- .../scripts/copy-css.mjs | 23 +++++++++++++++++++ .../src/__tests__/manifest.test.ts | 6 +++++ 4 files changed, 35 insertions(+), 1 deletion(-) create mode 100644 .changeset/fix-compound-engineering-css-build.md create mode 100644 plugins/fusion-plugin-compound-engineering/scripts/copy-css.mjs diff --git a/.changeset/fix-compound-engineering-css-build.md b/.changeset/fix-compound-engineering-css-build.md new file mode 100644 index 0000000000..3a70cfd62d --- /dev/null +++ b/.changeset/fix-compound-engineering-css-build.md @@ -0,0 +1,5 @@ +--- +"@runfusion/fusion": patch +--- + +Fix the bundled Compound Engineering dashboard plugin build so its CSS is included in `dist`. diff --git a/plugins/fusion-plugin-compound-engineering/package.json b/plugins/fusion-plugin-compound-engineering/package.json index ddc60d7f07..a80457741e 100644 --- a/plugins/fusion-plugin-compound-engineering/package.json +++ b/plugins/fusion-plugin-compound-engineering/package.json @@ -15,7 +15,7 @@ } }, "scripts": { - "build": "tsc", + "build": "tsc && node scripts/copy-css.mjs", "test": "vitest run --silent=passed-only --reporter=dot" }, "dependencies": { diff --git a/plugins/fusion-plugin-compound-engineering/scripts/copy-css.mjs b/plugins/fusion-plugin-compound-engineering/scripts/copy-css.mjs new file mode 100644 index 0000000000..1401b8bf30 --- /dev/null +++ b/plugins/fusion-plugin-compound-engineering/scripts/copy-css.mjs @@ -0,0 +1,23 @@ +#!/usr/bin/env node +// Copies every .css file under src/ to the mirrored path under dist/. +import { cp, mkdir, readdir } from "node:fs/promises"; +import { dirname, join, relative } from "node:path"; +import { fileURLToPath } from "node:url"; + +const root = dirname(fileURLToPath(import.meta.url)) + "/.."; +const srcDir = join(root, "src"); +const distDir = join(root, "dist"); + +async function* cssFiles(dir) { + for (const entry of await readdir(dir, { withFileTypes: true })) { + const full = join(dir, entry.name); + if (entry.isDirectory()) yield* cssFiles(full); + else if (entry.isFile() && entry.name.endsWith(".css")) yield full; + } +} + +for await (const file of cssFiles(srcDir)) { + const dest = join(distDir, relative(srcDir, file)); + await mkdir(dirname(dest), { recursive: true }); + await cp(file, dest); +} diff --git a/plugins/fusion-plugin-compound-engineering/src/__tests__/manifest.test.ts b/plugins/fusion-plugin-compound-engineering/src/__tests__/manifest.test.ts index 19c6a87890..15a4e77c30 100644 --- a/plugins/fusion-plugin-compound-engineering/src/__tests__/manifest.test.ts +++ b/plugins/fusion-plugin-compound-engineering/src/__tests__/manifest.test.ts @@ -1,5 +1,6 @@ import { describe, expect, it } from "vitest"; import manifest from "../../manifest.json"; +import packageJson from "../../package.json"; import plugin from "../index.js"; import { COMPOUND_ENGINEERING_SKILLS } from "../skills.js"; import { settingsSchema } from "../settings.js"; @@ -75,6 +76,11 @@ describe("compound engineering plugin manifest", () => { expect(typeof plugin.hooks?.onLoad).toBe("function"); }); + it("copies dashboard CSS into dist during build", () => { + expect(packageJson.scripts.build).toContain("tsc"); + expect(packageJson.scripts.build).toContain("node scripts/copy-css.mjs"); + }); + it("wires the settings schema onto the runtime manifest and manifest.json (U9)", () => { const expectedKeys = [ "defaultProvider",