diff --git a/index.html b/index.html
index 67b0280..76161f7 100644
--- a/index.html
+++ b/index.html
@@ -179,8 +179,14 @@
+
+
diff --git a/main.js b/main.js
index e165da3..ff1c316 100644
--- a/main.js
+++ b/main.js
@@ -19,6 +19,11 @@ const store = new Store({
// Map zum Speichern der Watcher pro Ordner
const repoWatchers = new Map();
+// Debug Helper
+function debug(msg) {
+ console.log(`[DEBUG ${new Date().toISOString()}] ${msg}`);
+}
+
/**
* Erstellt das BrowserWindow und lädt index.html.
* Gibt das Window-Objekt zurück.
@@ -288,6 +293,60 @@ ipcMain.on('show-folder-context-menu', (event, folderPath) => {
];
const menu = Menu.buildFromTemplate(template);
menu.popup({ window: win });
+
+// main.js
+
+const simpleGit = require('simple-git');
+const path = require('path');
+
+// Debug Helper
+function debug(msg) {
+ console.log(`[DEBUG ${new Date().toISOString()}] ${msg}`);
+}
+
+ ipcMain.handle('commit-current-folder', async (_e, folder, message) => {
+ try {
+ debug(`Commit-Vorgang für ${folder} gestartet…`);
+ const git = simpleGit(folder);
+
+ // HEAD-Status prüfen
+ let currentBranch = null;
+ try {
+ currentBranch = (await git.revparse(['--abbrev-ref', 'HEAD'])).trim();
+ debug(`Aktueller Branch: ${currentBranch}`);
+ } catch (err) {
+ debug('HEAD ist detached.');
+ }
+
+ // Wenn detached, alten Branch umbenennen und neuen master erzeugen
+ if (!currentBranch || currentBranch === 'HEAD') {
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
+ const backupBranch = `backup-master-${timestamp}`;
+
+ // Alten master umbenennen (nur falls vorhanden!)
+ const branches = await git.branchLocal();
+ if (branches.all.includes('master')) {
+ await git.branch(['-m', 'master', backupBranch]);
+ debug(`Alter master-Branch wurde in ${backupBranch} umbenannt.`);
+ }
+ // Neuer master-Branch
+ await git.checkout(['-b', 'master']);
+ debug('Neuer master-Branch erstellt und ausgecheckt.');
+ }
+
+ await git.add(['-A']);
+ debug('Alle Änderungen gestaged.');
+ await git.commit(message || 'test');
+ debug('Commit erfolgreich erstellt.');
+ await git.push(['-u', 'origin', 'master']);
+ debug('Push auf origin/master erfolgreich.');
+
+ return { success: true };
+ } catch (err) {
+ debug(`FEHLER beim Commit: ${err.message}`);
+ return { success: false, error: err.message };
+ }
+ });
});
// clean up on exit
diff --git a/preload.js b/preload.js
index 859eb75..99c05ac 100644
--- a/preload.js
+++ b/preload.js
@@ -25,6 +25,7 @@ contextBridge.exposeInMainWorld('electronAPI', {
getSkipPrompt: () => ipcRenderer.invoke('get-skip-git-prompt'),
setSkipPrompt: val => ipcRenderer.invoke('set-skip-git-prompt', val),
showFolderContextMenu: folderPath => ipcRenderer.send('show-folder-context-menu', folderPath),
+ commitCurrentFolder: (folder, message) => ipcRenderer.invoke('commit-current-folder', folder, message),
});
ipcRenderer.on('repo-updated', (_e, folder) => {
diff --git a/renderer.js b/renderer.js
index 8b64c5d..1cf6c7a 100644
--- a/renderer.js
+++ b/renderer.js
@@ -8,6 +8,11 @@ window.addEventListener('DOMContentLoaded', async () => {
const contentList = document.getElementById('contentList');
const panel = document.querySelector('.flex-1.p-4.overflow-y-auto');
+ const commitBtn = document.getElementById('commitBtn');
+
+
+
+
// 1) Baby-Blau und Nacht-Blau als RGB-Arrays
const DAY_COLOR = [173, 216, 230];
const NIGHT_COLOR = [0, 0, 50];
@@ -394,4 +399,33 @@ async function renderSidebar() {
window.electronAPI.showFolderContextMenu(titleEl.textContent);
}
});
+
+
+
+ commitBtn.addEventListener('click', async () => {
+ const folder = await window.electronAPI.getSelected();
+ console.log('[DEBUG] Selected folder for commit:', folder);
+
+ if (!folder || folder === 'No folder selected') {
+ alert('Kein Ordner ausgewählt!');
+ return;
+ }
+ const message = prompt('Commit-Nachricht:', 'test');
+ if (!message) return;
+
+ commitBtn.disabled = true;
+ commitBtn.textContent = 'Committing...';
+
+ const result = await window.electronAPI.commitCurrentFolder(folder, message);
+ console.log('[DEBUG] Commit result:', result);
+
+ if (result.success) {
+ alert('Commit erfolgreich!');
+ await renderContent(folder); // ← refresht Commit-Liste!
+ } else {
+ alert('Commit fehlgeschlagen:\n' + result.error);
+ }
+ commitBtn.disabled = false;
+ commitBtn.textContent = 'Commit';
+ });
});
\ No newline at end of file