diff --git a/src/main.js b/src/main.js index 4fdeb6e..5f3ea9c 100644 --- a/src/main.js +++ b/src/main.js @@ -483,6 +483,22 @@ function createMenu() { submenu: buildRecentFilesMenu() }, { type: 'separator' }, + { + label: 'New from Template', + submenu: [ + { label: 'Blog Post', click: () => mainWindow.webContents.send('load-template-menu', 'blog-post.md') }, + { label: 'Meeting Notes', click: () => mainWindow.webContents.send('load-template-menu', 'meeting-notes.md') }, + { label: 'Technical Spec', click: () => mainWindow.webContents.send('load-template-menu', 'technical-spec.md') }, + { label: 'Changelog', click: () => mainWindow.webContents.send('load-template-menu', 'changelog.md') }, + { label: 'README', click: () => mainWindow.webContents.send('load-template-menu', 'readme.md') }, + { label: 'Project Plan', click: () => mainWindow.webContents.send('load-template-menu', 'project-plan.md') }, + { label: 'API Documentation', click: () => mainWindow.webContents.send('load-template-menu', 'api-docs.md') }, + { label: 'Tutorial', click: () => mainWindow.webContents.send('load-template-menu', 'tutorial.md') }, + { label: 'Release Notes', click: () => mainWindow.webContents.send('load-template-menu', 'release-notes.md') }, + { label: 'Comparison', click: () => mainWindow.webContents.send('load-template-menu', 'comparison.md') } + ] + }, + { type: 'separator' }, { label: 'Import Document...', accelerator: 'CmdOrCtrl+I', @@ -574,9 +590,29 @@ function createMenu() { submenu: [ { label: 'Toggle Preview', - accelerator: 'CmdOrCtrl+Shift+P', + accelerator: 'CmdOrCtrl+Shift+V', click: () => mainWindow.webContents.send('toggle-preview') }, + { + label: 'Command Palette', + accelerator: 'CmdOrCtrl+Shift+P', + click: () => mainWindow.webContents.send('toggle-command-palette') + }, + { type: 'separator' }, + { + label: 'Sidebar', + submenu: [ + { label: 'File Explorer', click: () => mainWindow.webContents.send('toggle-sidebar-panel', 'explorer') }, + { label: 'Git', click: () => mainWindow.webContents.send('toggle-sidebar-panel', 'git') }, + { label: 'Snippets', click: () => mainWindow.webContents.send('toggle-sidebar-panel', 'snippets') }, + { label: 'Templates', click: () => mainWindow.webContents.send('toggle-sidebar-panel', 'templates') } + ] + }, + { + label: 'Bottom Panel (REPL)', + click: () => mainWindow.webContents.send('toggle-bottom-panel') + }, + { type: 'separator' }, { label: 'Theme', submenu: [ @@ -883,7 +919,7 @@ function showAboutDialog() {

MarkdownConverter

-
Version 3.0.0
+
Version 4.0.0
by @@ -912,7 +948,7 @@ function showAboutDialog() { `; diff --git a/src/preload.js b/src/preload.js index 4290b19..9eed3e9 100644 --- a/src/preload.js +++ b/src/preload.js @@ -213,7 +213,13 @@ const ALLOWED_RECEIVE_CHANNELS = [ 'pdf-operation-progress', // Insert content from generator windows - 'insert-content' + 'insert-content', + + // v4 menu-triggered events + 'load-template-menu', + 'toggle-command-palette', + 'toggle-sidebar-panel', + 'toggle-bottom-panel' ]; /** diff --git a/tests/preload.test.js b/tests/preload.test.js index 9e4618f..8fb3738 100644 --- a/tests/preload.test.js +++ b/tests/preload.test.js @@ -115,7 +115,11 @@ describe('Preload Security', () => { 'show-ascii-generator', 'show-table-generator-window', 'open-header-footer-dialog', - 'insert-content' + 'insert-content', + 'load-template-menu', + 'toggle-command-palette', + 'toggle-sidebar-panel', + 'toggle-bottom-panel' ]; test('should define all expected send channels', () => {