plugins: dist node_modules symlink + config raw-toggle UI fix (#49490)

* plugins: symlink node_modules into dist plugin dir for bare-specifier resolution

* UI: fix config raw-toggle button sizing and semantic markup

* Update scripts/stage-bundled-plugin-runtime.mjs

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Update ui/src/styles/config.css

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* fix: hoist dist node_modules cleanup before existsSync guard; drop !important from config toggle

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
This commit is contained in:
Val Alexander
2026-03-18 00:20:14 -05:00
committed by GitHub
parent 2c579b6ac1
commit 5f89897df1
4 changed files with 36 additions and 4 deletions

View File

@@ -49,6 +49,12 @@ describe("stageBundledPluginRuntime", () => {
expect(fs.realpathSync(path.join(runtimePluginDir, "node_modules"))).toBe(
fs.realpathSync(sourcePluginNodeModulesDir),
);
// dist/ also gets a node_modules symlink so bare-specifier resolution works
// from the actual code location that the runtime wrapper re-exports into
const distNodeModules = path.join(distPluginDir, "node_modules");
expect(fs.lstatSync(distNodeModules).isSymbolicLink()).toBe(true);
expect(fs.realpathSync(distNodeModules)).toBe(fs.realpathSync(sourcePluginNodeModulesDir));
});
it("writes wrappers that forward plugin entry imports into canonical dist files", async () => {