Official

palette

Built-in command palette (⌘⇧P) and chat search (⌘P).

The app opens the listing; nothing installs until an agent in your Plugins workspace has read the files and you enable the plugin. In a terminal: cvg install convergence/palette@0.2.0

Permissions in 0.2.0

  • Run other plugins' commands commands.runHighRuns commands of other plugins.Run the command you pick, whichever plugin it belongs to
  • Read chats chats.readMediumReads your transcripts and chat lists.Search your chats by title and workspace, and open the one you pick
  • Show panels ui.slotsLowShows views in the listed parts of the window.Hold the palette, which opens over the windowSlots: title

Files

main.ts974 B
// Register the palette synchronously, then restore its recent-command ordering in the activation scope.
// Catalog loading and handlers use the same state layer as the pure overlay renderer.
import * as Effect from "effect/Effect";
import { Commands, Views, runPlugin } from "convergence/effect";
import { controller } from "./controller.ts";
import { PaletteState } from "./state.ts";
import { render } from "./view.ts";

const program = Effect.gen(function* () {
  const palette = yield* controller();
  const views = yield* Views;
  const commands = yield* Commands;
  palette.state.view = yield* views.slot("title", (ctx) => render(palette, ctx), { order: 1000, on: ["app_state"] });
  yield* commands.register("palette.commands", palette.openCommands());
  yield* commands.register("palette.chats", palette.openChats());
  yield* Effect.forkScoped(palette.loadRecent(), { startImmediately: true });
});

export const activate = runPlugin(PaletteState.layer, program);

Versions

VersionPublishedPlugin APISizePermissionsStatus
0.2.0latestOct 5, 2026>=2 <311.2 KB3 permissionsListed

Reviews and comments

0 threads · 0 reviews

No comments yet.