en un clic
new-plugin
// Scaffold a new Neovate Desktop plugin across main, shared, and renderer
// Scaffold a new Neovate Desktop plugin across main, shared, and renderer
Create a bug report issue on GitHub
Create a feature request issue on GitHub
Run readiness checks, fix issues, and create a PR
E2E test the Electron auto-updater with local builds, screen recording, and verification. Use when asked to "test auto update", "verify updater", or "record update demo". macOS only.
Sync COSS UI components from shadcn registry and fix imports to relative paths
| name | new-plugin |
| description | Scaffold a new Neovate Desktop plugin across main, shared, and renderer |
| disable-model-invocation | true |
| argument-hint | <plugin-name> (e.g. bookmarks, snippets) |
Create the boilerplate for a new Neovate Desktop plugin across all three processes. All paths are relative to packages/desktop/.
Create shared contract at src/shared/plugins/<name>/contract.ts:
import { oc } from "@orpc/contract";
export const <name>Contract = {
// Define oRPC contract methods here
};
Register contract in src/shared/contract.ts:
import { <name>Contract } from "./plugins/<name>/contract";contract object: <name>: <name>Contract,Create main plugin at src/main/plugins/<name>/index.ts:
import type { MainPlugin, PluginContext } from "../../core/plugin/types";
import { create<Name>Router } from "./router";
export default {
name: "<name>",
async configContributions(ctx: PluginContext) {
return {
router: create<Name>Router(ctx.orpcServer),
};
},
} satisfies MainPlugin;
Create main router at src/main/plugins/<name>/router.ts:
import type { os } from "@orpc/server";
export function create<Name>Router(orpcServer: typeof os) {
return {
// Implement contract handlers here
};
}
Register plugin in src/main/index.ts:
import <name>Plugin from "./plugins/<name>";<name>Plugin to the plugins array in the MainApp constructorCreate renderer directory at src/renderer/src/plugins/<name>/ with an initial component if needed.
Run bun check to verify everything compiles.
See src/main/plugins/terminal/index.ts for the simplest working example (22 lines).