diff --git a/renderer.js b/renderer.js
index 7d2aec8..2a5c646 100644
--- a/renderer.js
+++ b/renderer.js
@@ -493,15 +493,32 @@ async function startLiveCountdown(folderObj, msLeft) {
if (idx === -1) return 1; // fallback: erste Seite
return Math.floor(idx / pageSize) + 1;
}
+ async function getPageForCurrentCommit(folderObj, pageSize = 50) { //should probably be fused with the function above
+ // Holt alle Commits (nur die Hashes, schnell genug für moderne Maschinen)
+ const { head, total } = await window.electronAPI.getCommits(folderObj, 1, 100000); // Großer Wert, um alle zu holen (du kannst auch einen eigenen IPC machen, der NUR die Hashes returned)
+ const { commits } = await window.electronAPI.getCommits(folderObj, 1, total);
+ const idx = commits.findIndex(c => c.hash === head);
+ if (idx === -1) return 1;
+ return Math.floor(idx / pageSize) + 1;
+ }
//let commitPage = 1; // Merker für die aktuelle Seite
const PAGE_SIZE = 50;
- // UI-Element für Pagination (in deinem Template anlegen, z.B. unter contentList)
const paginationEl = document.createElement('div');
paginationEl.className = 'pagination flex justify-center items-center my-2 space-x-2';
+ contentList.parentElement.insertBefore(paginationEl, contentList); // nur einmal beim Initialisieren
- contentList.parentElement.insertBefore(paginationEl, contentList); // einmalig nach DOM load
+ // Speichere zuletzt angezeigten Folder/Seite
+ let lastFolderPath = null;
+ let lastPage = null;
+
+ // Helper: gibt die Seite für einen Commit-Hash zurück
+ async function getCommitPageForHash(folderObj, hash, pageSize) {
+ const allHashes = await window.electronAPI.getAllCommitHashes(folderObj); // Muss in Main implementiert sein!
+ const idx = allHashes.findIndex(h => h.startsWith(hash));
+ return idx === -1 ? 1 : Math.floor(idx / pageSize) + 1;
+ }
async function renderContent(folderObj, page) {
closeDropdown();
@@ -509,42 +526,40 @@ async function startLiveCountdown(folderObj, msLeft) {
await updateInteractionBar(folderObj);
titleEl.textContent = folder;
- // --- Neuer Block: Ermittle die Seite des aktuellen Commits ---
+ // --- Seitenwahl beim Ordnerwechsel ---
let usePage = page;
- if (!usePage) {
- // Wenn keine Seite angegeben, gehe auf die Seite des aktuellen HEAD
- const { head } = await window.electronAPI.getCommits(folderObj, 1, 1); // head holen
+ if (!usePage || folder !== lastFolderPath) {
+ // Wenn keine Seite gegeben oder Ordner gewechselt: Seite für aktuellen HEAD suchen
+ const { head } = await window.electronAPI.getCommits(folderObj, 1, 1); // nur für den Hash!
usePage = await getCommitPageForHash(folderObj, head, PAGE_SIZE);
}
- // Holt die paginierten Commits!
- const { head, commits, total, page: currentPage, pageSize, pages } =
- await window.electronAPI.getCommits(folderObj, page, PAGE_SIZE);
+ lastFolderPath = folder;
+ lastPage = usePage;
- commitPage = currentPage; // speichere aktuelle Seite
+ // Paginierte Commits holen
+ const { head, commits, total, page: currentPage, pageSize, pages } =
+ await window.electronAPI.getCommits(folderObj, usePage, PAGE_SIZE);
if (!commits || !commits.length) {
contentList.innerHTML = '
No commits found.
';
paginationEl.innerHTML = '';
return;
- }
- contentList.innerHTML = commits.map(c => {
- // Prüfe, ob der Commit in der Rewrite-Queue ist:
- const isQueued = folderObj.llmCandidates && folderObj.llmCandidates.some(fullHash =>
- fullHash.startsWith(c.hash)
- );
- if(isQueued) console.log("hi");
- // Für random-Winkel (zwischen -10 und +15 Grad, z.B.)
- return `
-
+ }
+
+ // Commit-Liste rendern
+ contentList.innerHTML = commits.map(c => {
+ const isQueued = folderObj.llmCandidates && folderObj.llmCandidates.some(fullHash =>
+ fullHash.startsWith(c.hash)
+ );
+ return `
+
${c.hash}
- ${new Date(c.date).toLocaleString()}
-
+ ${new Date(c.date).toLocaleString()}
${c.message}
-
-
-