diff options
| author | Brendan Allan <[email protected]> | 2026-02-06 18:10:48 +0800 |
|---|---|---|
| committer | Brendan Allan <[email protected]> | 2026-02-06 18:10:48 +0800 |
| commit | e0e32ed3a846be03f66d2f48e2b2659a9e658a11 (patch) | |
| tree | be2b6430e46a9a8561f8ad8c87f7d7bbbccd1949 /packages/desktop/src/menu.ts | |
| parent | 9b20679a610af778e4f0fb741baed524edb2514a (diff) | |
| download | opencode-e0e32ed3a846be03f66d2f48e2b2659a9e658a11.tar.gz opencode-e0e32ed3a846be03f66d2f48e2b2659a9e658a11.zip | |
desktop: add more basic menu bar items
Diffstat (limited to 'packages/desktop/src/menu.ts')
| -rw-r--r-- | packages/desktop/src/menu.ts | 118 |
1 files changed, 94 insertions, 24 deletions
diff --git a/packages/desktop/src/menu.ts b/packages/desktop/src/menu.ts index d41084404..9af6d2b84 100644 --- a/packages/desktop/src/menu.ts +++ b/packages/desktop/src/menu.ts @@ -1,13 +1,14 @@ import { Menu, MenuItem, PredefinedMenuItem, Submenu } from "@tauri-apps/api/menu" import { type as ostype } from "@tauri-apps/plugin-os" import { relaunch } from "@tauri-apps/plugin-process" +import { openUrl } from "@tauri-apps/plugin-opener" import { runUpdater, UPDATER_ENABLED } from "./updater" import { installCli } from "./cli" import { initI18n, t } from "./i18n" import { commands } from "./bindings" -export async function createMenu() { +export async function createMenu(trigger: (id: string) => void) { if (ostype() !== "macos") return await initI18n() @@ -60,29 +61,25 @@ export async function createMenu() { }), ].filter(Boolean), }), - // await Submenu.new({ - // text: "File", - // items: [ - // await MenuItem.new({ - // enabled: false, - // text: "Open Project...", - // }), - // await PredefinedMenuItem.new({ - // item: "Separator" - // }), - // await MenuItem.new({ - // enabled: false, - // text: "New Session", - // }), - // await PredefinedMenuItem.new({ - // item: "Separator" - // }), - // await MenuItem.new({ - // enabled: false, - // text: "Close Project", - // }) - // ] - // }), + await Submenu.new({ + text: "File", + items: [ + await MenuItem.new({ + text: "New Session", + action: () => trigger("session.new"), + }), + await MenuItem.new({ + text: "Open Project...", + action: () => trigger("project.open"), + }), + await PredefinedMenuItem.new({ + item: "Separator", + }), + await PredefinedMenuItem.new({ + item: "CloseWindow", + }), + ], + }), await Submenu.new({ text: "Edit", items: [ @@ -109,6 +106,79 @@ export async function createMenu() { }), ], }), + await Submenu.new({ + text: "View", + items: [ + await MenuItem.new({ + action: () => trigger("sidebar.toggle"), + text: "Toggle Sidebar", + }), + await MenuItem.new({ + action: () => trigger("terminal.toggle"), + text: "Toggle Terminal", + }), + await MenuItem.new({ + action: () => trigger("fileTree.toggle"), + text: "Toggle File Tree", + }), + await PredefinedMenuItem.new({ + item: "Separator", + }), + await MenuItem.new({ + action: () => trigger("common.goBack"), + text: "Back", + }), + await MenuItem.new({ + action: () => trigger("common.goForward"), + text: "Forward", + }), + await PredefinedMenuItem.new({ + item: "Separator", + }), + await MenuItem.new({ + action: () => trigger("session.next"), + text: "Previous Session", + }), + await MenuItem.new({ + action: () => trigger("session.previous"), + text: "Next Session", + }), + await PredefinedMenuItem.new({ + item: "Separator", + }), + ], + }), + await Submenu.new({ + text: "Help", + items: [ + // missing native macos search + await MenuItem.new({ + action: () => openUrl("https://opencode.ai/docs"), + text: "OpenCode Documentation", + }), + await MenuItem.new({ + action: () => openUrl("https://discord.com/invite/opencode"), + text: "Support Forum", + }), + await PredefinedMenuItem.new({ + item: "Separator", + }), + // await MenuItem.new({ + // text: "Release Notes", + // }), + await PredefinedMenuItem.new({ + item: "Separator", + }), + await MenuItem.new({ + action: () => openUrl("https://github.com/anomalyco/opencode/issues/new?template=feature_request.yml"), + text: "Share Feedback", + }), + await MenuItem.new({ + action: () => openUrl("https://github.com/anomalyco/opencode/issues/new?template=bug_report.yml"), + text: "Report a Bug", + }), + ], + }), ], }) menu.setAsAppMenu() |
