From d6206589c647db93f1b9fb8a2bef2514a84ac6d7 Mon Sep 17 00:00:00 2001 From: Tim Sinaeve Date: Wed, 12 Nov 2025 10:20:52 +0100 Subject: [PATCH] Remove redundant About modal footer button --- components/modals/AboutModal.tsx | 41 ++++++++++++++++---------------- electron/electron.d.ts | 1 + electron/main.ts | 12 ++++++++++ electron/preload.ts | 1 + index.html | 3 +++ 5 files changed, 38 insertions(+), 20 deletions(-) diff --git a/components/modals/AboutModal.tsx b/components/modals/AboutModal.tsx index 3fd04d4..c3bfbb9 100644 --- a/components/modals/AboutModal.tsx +++ b/components/modals/AboutModal.tsx @@ -45,30 +45,31 @@ const AboutModal: React.FC = ({ isOpen, onClose, appVersion })

Git Automation Dashboard

Version {appVersion}

- -
-

Design and concept by Tim Sinaeve

-

Implementation by Gemini 2.5 Pro

-
- -

- © 2025 Tim Sinaeve -

-
-
- +

© 2025 Tim Sinaeve. All rights reserved.

+ +
+ + +
); }; -export default AboutModal; \ No newline at end of file +export default AboutModal; diff --git a/electron/electron.d.ts b/electron/electron.d.ts index 88312ca..6507106 100644 --- a/electron/electron.d.ts +++ b/electron/electron.d.ts @@ -59,6 +59,7 @@ export interface IElectronAPI { detectExecutables: (repoPath: string) => Promise; launchExecutable: (args: { repoPath: string, executablePath: string }) => Promise<{ success: boolean; output: string }>; openLocalPath: (path: string) => Promise<{ success: boolean; error?: string }>; + openInstallationFolder: () => Promise<{ success: boolean; error?: string; path?: string }>; openWeblink: (url: string) => Promise<{ success: boolean; error?: string }>; openTerminal: (path: string) => Promise<{ success: boolean; error?: string }>; diff --git a/electron/main.ts b/electron/main.ts index 01d54e4..832a441 100644 --- a/electron/main.ts +++ b/electron/main.ts @@ -1784,6 +1784,18 @@ ipcMain.handle('open-local-path', async (event, localPath: string) => { } }); +ipcMain.handle('open-installation-folder', async () => { + try { + const executablePath = app.getPath('exe'); + const installationFolder = path.dirname(executablePath); + await shell.openPath(installationFolder); + return { success: true, path: installationFolder }; + } catch (error: any) { + mainLogger.error('Failed to open installation folder', error); + return { success: false, error: error.message }; + } +}); + ipcMain.handle('open-weblink', async (event, url: string): Promise<{ success: boolean; error?: string, warning?: string }> => { try { const settings = await readSettings(); diff --git a/electron/preload.ts b/electron/preload.ts index 40614da..d9ecc0a 100644 --- a/electron/preload.ts +++ b/electron/preload.ts @@ -68,6 +68,7 @@ contextBridge.exposeInMainWorld('electronAPI', { detectExecutables: (repoPath: string): Promise => ipcRenderer.invoke('detect-executables', repoPath), launchExecutable: (args: { repoPath: string, executablePath: string }): Promise<{ success: boolean; output: string }> => ipcRenderer.invoke('launch-executable', args), openLocalPath: (path: string): Promise<{ success: boolean; error?: string }> => ipcRenderer.invoke('open-local-path', path), + openInstallationFolder: (): Promise<{ success: boolean; error?: string; path?: string }> => ipcRenderer.invoke('open-installation-folder'), openWeblink: (url: string): Promise<{ success: boolean; error?: string }> => ipcRenderer.invoke('open-weblink', url), openTerminal: (path: string): Promise<{ success: boolean; error?: string }> => ipcRenderer.invoke('open-terminal', path), diff --git a/index.html b/index.html index 40622b3..f67772d 100644 --- a/index.html +++ b/index.html @@ -205,6 +205,9 @@ async openWeblink(url) { window.open(url, '_blank', 'noopener'); }, + async openInstallationFolder() { + console.info('Requested to open installation folder'); + }, async openLocalPath(path) { console.info('Requested to open local path:', path); },