From 66938968dbcb1bd3120eb294dfb9912f216c477e Mon Sep 17 00:00:00 2001 From: Amit Haridas Date: Sun, 23 Aug 2026 08:34:47 +0530 Subject: [PATCH] fix(templates): wire New from Template menu to existing template-loading flow Extract the sidebar Templates panel's inline load-into-new-tab callback into a shared loadTemplateIntoNewTab() function, and add the missing ipcRenderer.on('load-template-menu', ...) listener so the File > New from Template submenu (which already sends this IPC event, already whitelisted in preload.js) actually loads the selected template. Amit Haridas --- src/renderer.js | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/src/renderer.js b/src/renderer.js index 205a07d..fca75bb 100644 --- a/src/renderer.js +++ b/src/renderer.js @@ -1654,6 +1654,22 @@ class TabManager { // Initialize tab manager let tabManager; let replPanel; + +// Shared by the sidebar Templates panel and the "New from Template" menu items: +// loads a template file's content into a brand-new tab, substituting {{DATE}}. +async function loadTemplateIntoNewTab(file) { + const templateContent = await ipcRenderer.invoke('load-template', file); + if (templateContent) { + const content = templateContent.replace( + /\{\{DATE\}\}/g, + new Date().toISOString().split('T')[0] + ); + tabManager.createNewTab(); + const tab = tabManager.tabs.get(tabManager.activeTabId); + tabManager.setEditorContent(tab.id, content); + } +} + document.addEventListener('DOMContentLoaded', async () => { const ModalManager = _ModalManager; tabManager = new TabManager(); @@ -1743,19 +1759,7 @@ document.addEventListener('DOMContentLoaded', async () => { }); sidebarManager.registerPanel('templates', { title: 'Templates', - render: (container) => - getRenderTemplatesPanel()(container, async (file) => { - const templateContent = await ipcRenderer.invoke('load-template', file); - if (templateContent) { - const content = templateContent.replace( - /\{\{DATE\}\}/g, - new Date().toISOString().split('T')[0] - ); - tabManager.createNewTab(); - const tab = tabManager.tabs.get(tabManager.activeTabId); - tabManager.setEditorContent(tab.id, content); - } - }), + render: (container) => getRenderTemplatesPanel()(container, loadTemplateIntoNewTab), }); let outlinePanelContainer = null; sidebarManager.registerPanel('outline', { @@ -2119,6 +2123,9 @@ document.addEventListener('DOMContentLoaded', async () => { ipcRenderer.on('file-new', () => { tabManager.createNewTab(); }); +ipcRenderer.on('load-template-menu', (event, file) => { + loadTemplateIntoNewTab(file); +}); ipcRenderer.on('file-opened', (event, data) => { // Diagnostic: check library state