feat: consolidate shared UI and harden browser authority for release

This commit is contained in:
2026-09-08 01:35:05 +02:00
parent ac40774785
commit b75ca34295
143 changed files with 8664 additions and 752 deletions
@@ -0,0 +1,41 @@
import assert from "node:assert/strict";
import { dirname, relative, resolve, sep } from "node:path";
import { fileURLToPath } from "node:url";
import { resolveConfig } from "vite";
const webuiRoot = fileURLToPath(new URL("..", import.meta.url));
function contains(parent, candidate) {
const suffix = relative(parent, candidate);
return suffix === "" || (!suffix.startsWith(`..${sep}`) && suffix !== ".." && !suffix.startsWith(sep));
}
// Resolve the real Vite configurations without creating a server, optimizing
// dependencies, or changing any existing development/browser-test cache.
const app = await resolveConfig({
root: webuiRoot,
configFile: resolve(webuiRoot, "vite.config.ts")
}, "serve");
const conformance = await resolveConfig({
root: webuiRoot,
configFile: resolve(webuiRoot, "vite.conformance.config.ts")
}, "serve");
assert.notEqual(app.cacheDir, conformance.cacheDir,
"Browser conformance must never replace the running application's optimized dependencies.");
assert.ok(!contains(app.cacheDir, conformance.cacheDir) && !contains(conformance.cacheDir, app.cacheDir),
"Neither cache may own the other cache's directory: optimizer cleanup must remain isolated.");
assert.equal(dirname(app.cacheDir), dirname(conformance.cacheDir),
"Product and conformance use explicit sibling cache directories.");
assert.ok(contains(resolve(webuiRoot, "node_modules"), app.cacheDir),
"The application cache remains generated local dependency state.");
assert.ok(contains(resolve(webuiRoot, "node_modules"), conformance.cacheDir),
"The conformance cache remains generated local dependency state.");
assert.ok(app.optimizeDeps.include.includes("@xyflow/react"),
"Lazy Workflow and Dataflow graph imports are prebundled before their first visit.");
assert.ok(app.optimizeDeps.include.includes("read-excel-file/browser"),
"Deferred spreadsheet imports remain prebundled.");
assert.ok(app.optimizeDeps.include.includes("@tiptap/react"),
"Deferred rich-text editors remain prebundled.");
console.log("Vite product/conformance dependency-cache isolation passed.");