AG X v2.0.3 - Antigravity fork with multi-provider support
Features: - Welcome screen on first run (provider choice before LS starts) - 15+ AI providers (Google Gemini, OpenAI, Anthropic, DeepSeek, Ollama, etc.) - Provider config syncs to endpoints.json for translation proxy - Built-in Node.js translation proxy for non-native backends - Auto-update support, tray integration, URI scheme handler
This commit is contained in:
81
dist/menu.js
vendored
Normal file
81
dist/menu.js
vendored
Normal file
@@ -0,0 +1,81 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", { value: true });
|
||||
exports.setupApplicationMenu = setupApplicationMenu;
|
||||
const electron_1 = require("electron");
|
||||
const utils_1 = require("./utils");
|
||||
const updater_1 = require("./updater");
|
||||
const providerSettings_1 = require("./providerSettings");
|
||||
/**
|
||||
* Applies modifications to the default application menu.
|
||||
* Adds "New Window", "AI Provider Settings", and other items.
|
||||
*/
|
||||
function setupApplicationMenu(url) {
|
||||
const menu = electron_1.Menu.getApplicationMenu();
|
||||
if (!menu) {
|
||||
return;
|
||||
}
|
||||
// Adds a "New Window" item to the top of the existing File menu.
|
||||
addItemToSubmenu(menu, 'File', 0, new electron_1.MenuItem({
|
||||
label: 'New Window',
|
||||
accelerator: 'CmdOrCtrl+Shift+N',
|
||||
click: () => {
|
||||
(0, utils_1.createWindow)(url);
|
||||
},
|
||||
}));
|
||||
// Add "AI Provider Settings" to the File menu
|
||||
addItemToSubmenu(menu, 'File', 1, new electron_1.MenuItem({
|
||||
label: 'AI Provider Settings',
|
||||
accelerator: 'CmdOrCtrl+,',
|
||||
click: () => {
|
||||
electron_1.BrowserWindow.getAllWindows()[0]?.webContents.send('provider:open-settings');
|
||||
electron_1.ipcMain.emit('provider:open-settings-request');
|
||||
},
|
||||
}));
|
||||
// Add separator after new items
|
||||
addItemToSubmenu(menu, 'File', 2, new electron_1.MenuItem({
|
||||
type: 'separator',
|
||||
}));
|
||||
// Add "Check for Updates" to the application menu on macOS.
|
||||
if ((0, utils_1.isMacOS)()) {
|
||||
const appSubmenu = menu.items[0]?.submenu;
|
||||
if (appSubmenu) {
|
||||
appSubmenu.insert(1, new electron_1.MenuItem({
|
||||
id: 'check-for-updates',
|
||||
label: updater_1.MenuUpdateStep.CheckForUpdates,
|
||||
click: (menuItem) => {
|
||||
const action = updater_1.updateActions[menuItem.label];
|
||||
action?.();
|
||||
},
|
||||
}));
|
||||
}
|
||||
}
|
||||
// Adds Docs, AI Provider Settings, and Toggle Developer Tools to the Help menu
|
||||
addItemToSubmenu(menu, 'Help', 0, new electron_1.MenuItem({
|
||||
label: 'Docs',
|
||||
click: async () => {
|
||||
await electron_1.shell.openExternal('https://ag-x.dev/docs');
|
||||
},
|
||||
}));
|
||||
addItemToSubmenu(menu, 'Help', 1, new electron_1.MenuItem({
|
||||
label: 'AI Provider Settings',
|
||||
click: () => {
|
||||
electron_1.BrowserWindow.getAllWindows()[0]?.webContents.send('provider:open-settings');
|
||||
electron_1.ipcMain.emit('provider:open-settings-request');
|
||||
},
|
||||
}));
|
||||
addItemToSubmenu(menu, 'Help', 2, new electron_1.MenuItem({
|
||||
role: 'toggleDevTools',
|
||||
}));
|
||||
// Re-apply the menu so the change takes effect.
|
||||
electron_1.Menu.setApplicationMenu(menu);
|
||||
}
|
||||
/**
|
||||
* Adds a menu item to a submenu of the main application menu.
|
||||
*/
|
||||
function addItemToSubmenu(appMenu, submenuLabel, position, item) {
|
||||
const submenuItem = appMenu.items.find((item) => item.label === submenuLabel);
|
||||
if (!submenuItem?.submenu) {
|
||||
return;
|
||||
}
|
||||
submenuItem.submenu.insert(position, item);
|
||||
}
|
||||
Reference in New Issue
Block a user