Guide for adding new configuration settings to Wave Terminal. Use when adding a new setting to the configuration system, implementing a new config key, or adding user-customizable settings.
日本語の概要は準備中です。原文の説明を表示しています。
Guide for adding new Electron APIs to Wave Terminal. Use when implementing new frontend-to-electron communications via preload/IPC.
インストール方法を見るインストールする前に、エージェントに与えられる指示の中身を確認できます。
Electron APIs allow the frontend to call Electron main process functionality directly via IPC.
frontend/types/custom.d.ts - TypeScript ElectronApi typeemain/preload.ts - Expose method via contextBridgeemain/emain-ipc.ts - Implement IPC handlerfrontend/preview/preview-electron-api.ts - Add a no-op stub to keep the previewElectronApi object in sync with the ElectronApi typeipcRenderer.sendSync() + ipcMain.on() + event.returnValue = ...ipcRenderer.invoke() + ipcMain.handle()ipcRenderer.send() + ipcMain.on()In frontend/types/custom.d.ts:
type ElectronApi = {
captureScreenshot: (rect: Electron.Rectangle) => Promise<string>; // capture-screenshot
};
In emain/preload.ts:
contextBridge.exposeInMainWorld("api", {
captureScreenshot: (rect: Rectangle) => ipcRenderer.invoke("capture-screenshot", rect),
});
electron.ipcMain.handle("capture-screenshot", async (event, rect) => {
const tabView = getWaveTabViewByWebContentsId(event.sender.id);
if (!tabView) throw new Error("No tab view found");
const image = await tabView.webContents.capturePage(rect);
return `data:image/png;base64,${image.toPNG().toString("base64")}`;
});
In frontend/preview/preview-electron-api.ts:
captureScreenshot: (_rect: Electron.Rectangle) => Promise.resolve(""),
import { getApi } from "@/store/global";
const dataUrl = await getApi().captureScreenshot({ x: 0, y: 0, width: 800, height: 600 });
type ElectronApi = {
getUserName: () => string; // get-user-name
};
getUserName: () => ipcRenderer.sendSync("get-user-name"),
electron.ipcMain.on("get-user-name", (event) => {
event.returnValue = process.env.USER || "unknown";
});
import { getApi } from "@/store/global";
const userName = getApi().getUserName(); // blocks until returns
type ElectronApi = {
openExternal: (url: string) => void; // open-external
};
openExternal: (url) => ipcRenderer.send("open-external", url),
electron.ipcMain.on("open-external", (event, url) => {
electron.shell.openExternal(url);
});
type ElectronApi = {
onZoomFactorChange: (callback: (zoomFactor: number) => void) => void; // zoom-factor-change
};
onZoomFactorChange: (callback) =>
ipcRenderer.on("zoom-factor-change", (_event, zoomFactor) => callback(zoomFactor)),
webContents.send("zoom-factor-change", newZoomFactor);
Use Sync when:
event.returnValue or browser hangsUse Async when:
Use Fire-and-forget when:
Electron API vs RPC:
ElectronApi in custom.d.tspreload.tsemain-ipc.tspreview-electron-api.tsevent.returnValue (or browser hangs!)まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Guide for adding new configuration settings to Wave Terminal. Use when adding a new setting to the configuration system, implementing a new config key, or adding user-customizable settings.
日本語の概要は準備中です。原文の説明を表示しています。
Guide for adding new RPC calls to Wave Terminal. Use when implementing new RPC commands, adding server-client communication methods, or extending the RPC interface with new functionality.
日本語の概要は準備中です。原文の説明を表示しています。
Guide for adding new wsh commands to Wave Terminal. Use when implementing new CLI commands, adding command-line functionality, or extending the wsh command interface.
日本語の概要は準備中です。原文の説明を表示しています。
Guide for creating and displaying context menus in Wave Terminal. Use when implementing right-click menus, adding context menu items, creating submenus, or handling menu interactions with checkboxes and separators.
日本語の概要は準備中です。原文の説明を表示しています。
Guide for implementing a new view type in Wave Terminal. Use when creating a new view component, implementing the ViewModel interface, registering a new view type in BlockRegistry, or adding a new content type to display within blocks.
日本語の概要は準備中です。原文の説明を表示しています。
Search and order products online. Compares prices across Polish marketplaces (Allegro, Ceneo, Google Shopping), presents options in a comparison table, and assists with checkout. Handles the full flow: priority selection, research, comparison, cart, and checkout handoff. Triggers on: "order", "buy", "find product", "compare prices", "cheapest", "zamow", "kup", "znajdz produkt", "porownaj ceny", "najtaniej".
日本語の概要は準備中です。原文の説明を表示しています。