Upload via GUI (28 Dateien)

This commit is contained in:
2026-10-22 07:15:59 +00:00
parent 99d9629e25
commit 9b3aed6f0a
15 changed files with 4286 additions and 222 deletions
+501 -180
View File
@@ -52,16 +52,11 @@
<div class="tool-group tool-group--utility">
<span class="tool-group-title">Steuerung</span>
<button id="btnSettings" title="Einstellungen">⚙️ Settings</button>
<button id="btnBatchActions" title="Batch-Aktionen">🧩 Batch</button>
<button id="btnOpenActivityLog" title="Aktivitätsprotokoll">📝 Activity</button>
<button id="btnSettings" title="Einstellungen">⚙️ <span class="btn-label">Settings</span></button>
<button id="btnBatchActions" title="Batch-Aktionen">🧩 <span class="btn-label">Batch</span></button>
<button id="btnOpenActivityLog" title="Aktivitätsprotokoll">📝 <span class="btn-label">Activity</span></button>
<button id="btnUploadHistory" title="Verlauf der letzten Uploads">🕘 <span class="btn-label">Verlauf</span></button>
<button id="btnRetryQueueNow" class="secondary" title="Retry-Queue jetzt verarbeiten">🔁 Queue (0)</button>
<button id="btnBack" class="secondary hidden" title="Zurück">⬅️ Zurück</button>
</div>
<div class="toolbar-status-wrap">
<span class="status-dot" aria-hidden="true"></span>
<span id="status" class="status">Bereit</span>
</div>
</div>
</div>
@@ -73,15 +68,34 @@
<button id="btnLoadGiteaRepos" class="accent-btn" title="Projekte der gewählten Plattform laden">🌐 Load Projekte</button>
</div>
<div class="tool-group tool-group--repo">
<span class="tool-group-title">Repository</span>
<div class="tool-group tool-group--platform">
<input id="platform" type="hidden" value="gitea">
<div class="platform-switch" role="tablist" aria-label="Plattform auswählen">
<button type="button" class="platform-option active" data-platform="gitea" aria-pressed="true">Gitea</button>
<button type="button" class="platform-option" data-platform="github" aria-pressed="false">GitHub</button>
</div>
<div class="toolbar-status-wrap">
<span class="status-dot" aria-hidden="true"></span>
<span id="status" class="status">Bereit</span>
</div>
</div>
</div>
<!-- Nur in der Repo-Ansicht sichtbar: erscheint, sobald mindestens ein Knopf darin eingeblendet ist. -->
<div class="toolbar-row toolbar-row--context">
<button id="btnBack" class="secondary hidden" title="Zurück">⬅️ Zurück</button>
<div class="tool-group tool-group--repo-nav">
<span class="tool-group-title">Repository</span>
<button id="btnCommits" class="hidden" title="Commit History anzeigen">📊 Commits</button>
<button id="btnReleases" class="hidden" title="Releases anzeigen">📦 Releases</button>
<button id="btnPulls" class="hidden" title="Pull Requests ansehen, kommentieren und mergen">🔀 PRs</button>
<button id="btnIssues" class="hidden" title="Issues ansehen und kommentieren">🐞 Issues</button>
<button id="btnLocalChanges" class="hidden" title="Lokale Änderungen ansehen und committen">📝 Änderungen</button>
</div>
<div class="tool-group tool-group--repo-tools">
<span class="tool-group-title">Werkzeuge</span>
<button id="btnCleanupIgnored" class="hidden" title="Dateien entfernen, die laut .gitignore nicht ins Repo gehören">🧹 Aufräumen</button>
<button id="btnGitignoreTemplate" class="hidden" title="Standard-.gitignore (Node, .NET, Electron) im Repo anlegen">📄 .gitignore</button>
<button id="btnTrash" class="hidden" style="display:none" title=""><!-- removed --></button>
<button id="btnPurgeTrash" class="hidden" style="display:none" title=""><!-- removed --></button>
</div>
@@ -123,197 +137,502 @@
<div>
<div class="settings-eyebrow">Konfiguration</div>
<h2>⚙️ Einstellungen</h2>
<p class="settings-subtitle">Alle wichtigen Optionen auf einer Seite: Zugangsdaten, Verbindungscheck, Darstellung und Updates.</p>
<p class="settings-subtitle">Links den Bereich wählen. „Speichern“ übernimmt alle Änderungen aus allen Bereichen.</p>
</div>
</div>
</div>
<div class="settings-layout">
<div class="settings-column settings-column--left">
<section class="settings-panel settings-panel--credentials">
<div class="settings-panel-header">
<div>
<h3>Zugangsdaten</h3>
<p>API-Zugriffe für GitHub und Gitea konfigurieren.</p>
<div class="settings-shell">
<nav class="settings-nav" role="tablist" aria-label="Einstellungsbereiche" aria-orientation="vertical">
<button type="button" class="settings-tab is-active" role="tab" data-settings-tab="konten" aria-selected="true">
<span class="settings-tab-icon" aria-hidden="true">🔑</span>
<span class="settings-tab-text"><strong>Konten</strong><small>Gitea, GitHub, Verbindung</small></span>
</button>
<button type="button" class="settings-tab" role="tab" data-settings-tab="darstellung" aria-selected="false">
<span class="settings-tab-icon" aria-hidden="true">🎨</span>
<span class="settings-tab-text"><strong>Darstellung</strong><small>Übersicht und Explorer</small></span>
</button>
<button type="button" class="settings-tab" role="tab" data-settings-tab="uploads" aria-selected="false">
<span class="settings-tab-icon" aria-hidden="true">📤</span>
<span class="settings-tab-text"><strong>Uploads</strong><small>Ausschlüsse, Prüfungen</small></span>
</button>
<button type="button" class="settings-tab" role="tab" data-settings-tab="system" aria-selected="false">
<span class="settings-tab-icon" aria-hidden="true">🖥️</span>
<span class="settings-tab-text"><strong>System</strong><small>Autostart, Version, Updates</small></span>
</button>
<button type="button" class="settings-tab" role="tab" data-settings-tab="backup" aria-selected="false">
<span class="settings-tab-icon" aria-hidden="true">💾</span>
<span class="settings-tab-text"><strong>Backup</strong><small>Sichern, wiederherstellen</small></span>
</button>
<button type="button" class="settings-tab" role="tab" data-settings-tab="diagnose" aria-selected="false">
<span class="settings-tab-icon" aria-hidden="true">🩺</span>
<span class="settings-tab-text"><strong>Diagnose</strong><small>Server prüfen, Fehlersuche</small></span>
</button>
</nav>
<div class="settings-pages">
<div class="settings-tabpanel" data-settings-panel="konten" role="tabpanel">
<div class="settings-column">
<section class="settings-panel settings-panel--credentials">
<div class="settings-panel-header">
<div>
<h3>Zugangsdaten</h3>
<p>API-Zugriffe für GitHub und Gitea konfigurieren.</p>
</div>
</div>
</div>
<div class="settings-credentials-grid">
<article class="settings-auth-card settings-auth-card--github">
<div class="settings-auth-card-header">
<h4>GitHub</h4>
<button id="btnTestGithubConnection" class="secondary" type="button">🔌 Verbindung testen</button>
</div>
<div class="input-group settings-auth-input">
<label for="githubToken">GitHub Token</label>
<input id="githubToken" type="password" placeholder="ghp_...">
</div>
<div class="settings-auth-spacer" aria-hidden="true">GitHub benötigt keine Server-URL</div>
<div id="githubTokenHint" class="settings-inline-hint">Hinweis: Der Token wird direkt über api.github.com geprüft.</div>
</article>
<div class="settings-credentials-grid">
<article class="settings-auth-card settings-auth-card--github">
<div class="settings-auth-card-header">
<h4>GitHub</h4>
<button id="btnTestGithubConnection" class="secondary" type="button">🔌 Verbindung testen</button>
</div>
<div class="input-group settings-auth-input">
<label for="githubToken">GitHub Token</label>
<input id="githubToken" type="password" placeholder="ghp_...">
</div>
<div class="settings-auth-spacer" aria-hidden="true">GitHub benötigt keine Server-URL</div>
<div id="githubTokenHint" class="settings-inline-hint">Hinweis: Der Token wird direkt über api.github.com geprüft.</div>
</article>
<article class="settings-auth-card settings-auth-card--gitea">
<div class="settings-auth-card-header">
<h4>Gitea</h4>
<button id="btnTestGiteaConnection" class="secondary" type="button">🔌 Verbindung testen</button>
</div>
<div class="input-group settings-auth-input">
<label for="giteaToken">Gitea Token</label>
<input id="giteaToken" type="password" placeholder="Token hier einfügen">
</div>
<div class="input-group settings-auth-input">
<label for="giteaURL">Gitea URL</label>
<input id="giteaURL" type="text" placeholder="https://gitea.example.com">
</div>
<div id="giteaUrlHint" class="settings-inline-hint">Hinweis: IPv6 mit Klammern eingeben, z.B. http://[2001:db8::1]:3000</div>
</article>
</div>
</section>
<section class="settings-panel settings-panel--display">
<div class="settings-panel-header">
<div>
<h3>Darstellung</h3>
<p>Übersicht und Explorer an deinen Arbeitsstil anpassen.</p>
<article class="settings-auth-card settings-auth-card--gitea">
<div class="settings-auth-card-header">
<h4>Gitea</h4>
<button id="btnTestGiteaConnection" class="secondary" type="button">🔌 Verbindung testen</button>
</div>
<div class="input-group settings-auth-input">
<label for="giteaToken">Gitea Token</label>
<input id="giteaToken" type="password" placeholder="Token hier einfügen">
</div>
<div class="input-group settings-auth-input">
<label for="giteaURL">Gitea URL</label>
<input id="giteaURL" type="text" placeholder="https://gitea.example.com">
</div>
<div id="giteaUrlHint" class="settings-inline-hint">Hinweis: IPv6 mit Klammern eingeben, z.B. http://[2001:db8::1]:3000</div>
</article>
</div>
</div>
</section>
<div class="settings-toggle-list">
<label class="settings-toggle-row" for="settingFavorites">
<span class="settings-toggle-info">
<span class="settings-toggle-title">⭐ Favoriten-Bereich anzeigen</span>
<span class="settings-toggle-desc">Pinnt wichtige Repositories und Ordner sichtbar im Kopfbereich.</span>
</span>
<span class="toggle-switch">
<input type="checkbox" id="settingFavorites" checked>
<span class="toggle-track"></span>
</span>
</label>
<label class="settings-toggle-row" for="settingRecent">
<span class="settings-toggle-info">
<span class="settings-toggle-title">🕐 Zuletzt geöffnet anzeigen</span>
<span class="settings-toggle-desc">Zeigt deine letzten Projekte direkt in der Übersicht an.</span>
</span>
<span class="toggle-switch">
<input type="checkbox" id="settingRecent" checked>
<span class="toggle-track"></span>
</span>
</label>
<label class="settings-toggle-row" for="settingCompact">
<span class="settings-toggle-info">
<span class="settings-toggle-title">⊞ Kompakt-Modus</span>
<span class="settings-toggle-desc">Verdichtet Karten und Abstände für kleinere Fenster.</span>
</span>
<span class="toggle-switch">
<input type="checkbox" id="settingCompact">
<span class="toggle-track"></span>
</span>
</label>
<label class="settings-toggle-row" for="settingColoredIcons">
<span class="settings-toggle-info">
<span class="settings-toggle-title">🎨 Farbige Datei-Icons</span>
<span class="settings-toggle-desc">Setzt stärkere Dateityp-Farben für schnellere Orientierung.</span>
</span>
<span class="toggle-switch">
<input type="checkbox" id="settingColoredIcons" checked>
<span class="toggle-track"></span>
</span>
</label>
</div>
</section>
<section class="settings-panel settings-panel--diagnostics">
<div class="settings-panel-header">
<div>
<h3>Diagnose</h3>
<p>Erstellt ein Diagnosepaket mit Logs, Plattform und letzten Fehlern für schnelles Debugging.</p>
<section class="settings-panel settings-panel--health">
<div class="settings-panel-header">
<div>
<h3>Verbindungsstatus</h3>
<p>Direkt sehen, ob URL, API und Auth sauber antworten.</p>
</div>
</div>
</div>
<div class="settings-diagnostics-card">
<button id="btnCreateDiagnostics" class="settings-action-btn" type="button">🧪 Diagnose erstellen</button>
</div>
</section>
<div class="settings-health-box">
<div class="settings-health-row"><span>URL</span><strong id="healthUrl">Unbekannt</strong></div>
<div class="settings-health-row"><span>API</span><strong id="healthApi">Unbekannt</strong></div>
<div class="settings-health-row"><span>Auth</span><strong id="healthAuth">Unbekannt</strong></div>
<div class="settings-health-row"><span>Latenz</span><strong id="healthLatency">-</strong></div>
<div class="settings-health-row"><span>Server</span><strong id="healthVersion">-</strong></div>
<div class="settings-health-row"><span>Letzter Fehler</span><strong id="healthLastError">-</strong></div>
</div>
</section>
<section class="settings-panel settings-panel--profiles">
<div class="settings-panel-header">
<div>
<h3>Gitea-Server</h3>
<p>Mehrere Server oder Konten speichern und mit einem Klick wechseln. Tokens werden verschlüsselt gespeichert.</p>
</div>
</div>
<div class="settings-backup-card">
<div class="fx-row">
<div class="input-group">
<label for="giteaProfileSelect">Gespeicherte Server</label>
<select id="giteaProfileSelect"></select>
</div>
<button id="btnGiteaProfileUse" class="settings-action-btn fx-browse-btn" type="button">⇄ Wechseln</button>
<button id="btnGiteaProfileDelete" class="settings-action-btn fx-browse-btn" type="button">🗑 Entfernen</button>
</div>
<div class="fx-row">
<div class="input-group">
<label for="giteaProfileName">Name für den aktuellen Server</label>
<input id="giteaProfileName" type="text" placeholder="z. B. Homelab oder Arbeit">
</div>
<button id="btnGiteaProfileSave" class="settings-action-btn fx-browse-btn" type="button">💾 Als Profil speichern</button>
</div>
<div id="giteaProfileHint" class="settings-inline-hint">Speichert URL und Token aus „Zugangsdaten“ unter diesem Namen.</div>
</div>
</section>
<section class="settings-panel settings-panel--identity">
<div class="settings-panel-header">
<div>
<h3>Git-Identität</h3>
<p>Name und E-Mail für Commits, die die App anlegt (Uploads, lokale Commits, Wiederherstellen).</p>
</div>
</div>
<div class="settings-backup-card">
<div class="fx-row">
<div class="input-group">
<label for="prefGitName">Name</label>
<input id="prefGitName" type="text" placeholder="z. B. M_Viper" autocomplete="off">
</div>
<div class="input-group">
<label for="prefGitEmail">E-Mail</label>
<input id="prefGitEmail" type="email" placeholder="z. B. name@example.com" autocomplete="off">
</div>
</div>
<div class="settings-inline-hint">Ist im Repo oder in deiner globalen Git-Konfiguration schon ein Name eingetragen, gilt dieser. Leer lassen = „Git Manager GUI“.</div>
</div>
</section>
</div>
</div>
<div class="settings-column settings-column--right">
<section class="settings-panel settings-panel--health">
<div class="settings-panel-header">
<div>
<h3>Verbindungsstatus</h3>
<p>Direkt sehen, ob URL, API und Auth sauber antworten.</p>
<div class="settings-tabpanel hidden" data-settings-panel="darstellung" role="tabpanel">
<div class="settings-column">
<section class="settings-panel settings-panel--display">
<div class="settings-panel-header">
<div>
<h3>Darstellung</h3>
<p>Übersicht und Explorer an deinen Arbeitsstil anpassen.</p>
</div>
</div>
</div>
<div class="settings-health-box">
<div class="settings-health-row"><span>URL</span><strong id="healthUrl">Unbekannt</strong></div>
<div class="settings-health-row"><span>API</span><strong id="healthApi">Unbekannt</strong></div>
<div class="settings-health-row"><span>Auth</span><strong id="healthAuth">Unbekannt</strong></div>
<div class="settings-health-row"><span>Latenz</span><strong id="healthLatency">-</strong></div>
<div class="settings-health-row"><span>Server</span><strong id="healthVersion">-</strong></div>
<div class="settings-health-row"><span>Letzter Fehler</span><strong id="healthLastError">-</strong></div>
</div>
</section>
<div class="settings-toggle-list">
<label class="settings-toggle-row" for="settingFavorites">
<span class="settings-toggle-info">
<span class="settings-toggle-title">⭐ Favoriten-Bereich anzeigen</span>
<span class="settings-toggle-desc">Pinnt wichtige Repositories und Ordner sichtbar im Kopfbereich.</span>
</span>
<span class="toggle-switch">
<input type="checkbox" id="settingFavorites" checked>
<span class="toggle-track"></span>
</span>
</label>
<section class="settings-panel settings-panel--system">
<div class="settings-panel-header">
<div>
<h3>System</h3>
<p>Verhalten beim Windows-Start steuern.</p>
</div>
</div>
<div class="settings-toggle-list">
<label class="settings-toggle-row" for="settingAutostart">
<span class="settings-toggle-info">
<span class="settings-toggle-title">🚀 Mit Windows starten</span>
<span class="settings-toggle-desc">Startet die App automatisch beim Anmelden, minimiert im System-Tray.</span>
</span>
<span class="toggle-switch">
<input type="checkbox" id="settingAutostart">
<span class="toggle-track"></span>
</span>
</label>
</div>
</section>
<label class="settings-toggle-row" for="settingRecent">
<span class="settings-toggle-info">
<span class="settings-toggle-title">🕐 Zuletzt geöffnet anzeigen</span>
<span class="settings-toggle-desc">Zeigt deine letzten Projekte direkt in der Übersicht an.</span>
</span>
<span class="toggle-switch">
<input type="checkbox" id="settingRecent" checked>
<span class="toggle-track"></span>
</span>
</label>
<section class="settings-panel settings-panel--app">
<div class="settings-panel-header">
<div>
<h3>App & Updates</h3>
<p>Version prüfen und neue Releases direkt anstoßen.</p>
</div>
</div>
<label class="settings-toggle-row" for="settingCompact">
<span class="settings-toggle-info">
<span class="settings-toggle-title">⊞ Kompakt-Modus</span>
<span class="settings-toggle-desc">Verdichtet Karten und Abstände für kleinere Fenster.</span>
</span>
<span class="toggle-switch">
<input type="checkbox" id="settingCompact">
<span class="toggle-track"></span>
</span>
</label>
<div class="settings-version-card">
<div class="input-group input-group--wide settings-version-field">
<label for="appVersion">App Version</label>
<input id="appVersion" class="settings-readonly-input" type="text" readonly>
</div>
<button id="btnCheckUpdates" class="settings-update-btn">🔄 Nach Updates suchen</button>
</div>
</section>
<label class="settings-toggle-row" for="settingColoredIcons">
<span class="settings-toggle-info">
<span class="settings-toggle-title">🎨 Farbige Datei-Icons</span>
<span class="settings-toggle-desc">Setzt stärkere Dateityp-Farben für schnellere Orientierung.</span>
</span>
<span class="toggle-switch">
<input type="checkbox" id="settingColoredIcons" checked>
<span class="toggle-track"></span>
</span>
</label>
<section class="settings-panel settings-panel--backup">
<div class="settings-panel-header">
<div>
<h3>Backup & Transfer</h3>
<p>Einstellungen, Favoriten und Verlauf exportieren oder auf einem anderen PC importieren.</p>
</div>
</div>
<div class="settings-backup-card">
<div class="settings-tools-grid">
<button id="btnExportSettingsBundle" class="settings-action-btn" type="button">📦 Backup exportieren</button>
<button id="btnImportSettingsBundle" class="settings-action-btn" type="button">📥 Backup importieren</button>
</section>
<section class="settings-panel settings-panel--look">
<div class="settings-panel-header">
<div>
<h3>Design &amp; Größe</h3>
<p>Hell oder dunkel und wie groß die Oberfläche angezeigt wird. Wird sofort angewendet.</p>
</div>
</div>
<div class="settings-inline-hint">
Export enthält Tokens nur verschlüsselt, nie als Klartext. Der Import ist für andere PCs geeignet.
<div class="settings-backup-card">
<div class="fx-row">
<div class="input-group">
<label for="prefTheme">Design</label>
<select id="prefTheme">
<option value="dark">Dunkel</option>
<option value="light">Hell</option>
<option value="system">Wie Windows</option>
</select>
</div>
<div class="input-group">
<label for="prefZoom">Größe</label>
<select id="prefZoom">
<option value="80">80 %</option>
<option value="90">90 %</option>
<option value="100">100 % (Standard)</option>
<option value="110">110 %</option>
<option value="125">125 %</option>
<option value="150">150 %</option>
</select>
</div>
</div>
</div>
</div>
</section>
</section>
</div>
</div>
<div class="settings-tabpanel hidden" data-settings-panel="uploads" role="tabpanel">
<div class="settings-column">
<section class="settings-panel settings-panel--uploads">
<div class="settings-panel-header">
<div>
<h3>Upload-Regeln</h3>
<p>Was beim Hochladen geprüft und weggelassen wird.</p>
</div>
</div>
<div class="settings-toggle-list">
<label class="settings-toggle-row" for="prefSecretScan">
<span class="settings-toggle-info">
<span class="settings-toggle-title">🔐 Zugangsdaten erkennen</span>
<span class="settings-toggle-desc">Dateien wie .env, Keystores oder Bot-Tokens werden erkannt und vor dem Upload abgewählt.</span>
</span>
<span class="toggle-switch">
<input type="checkbox" id="prefSecretScan" checked>
<span class="toggle-track"></span>
</span>
</label>
</div>
<div class="settings-backup-card">
<div class="input-group">
<label for="prefUploadPreview">Upload-Vorschau anzeigen</label>
<select id="prefUploadPreview">
<option value="always">Immer vor dem Hochladen</option>
<option value="warnings">Nur bei Zugangsdaten oder sehr vielen Dateien</option>
</select>
</div>
<div class="input-group input-group--wide">
<label for="prefUploadExcludes">Zusätzlich nie hochladen (zusätzlich zur .gitignore)</label>
<textarea id="prefUploadExcludes" class="settings-textarea" rows="6" spellcheck="false" placeholder="Ein Muster pro Zeile, z. B.&#10;*.log&#10;dist/&#10;.idea/&#10;*.psd"></textarea>
</div>
<div class="settings-inline-hint">Gleiche Schreibweise wie in einer .gitignore. Gilt für alle Projekte. node_modules, .git, .vscode und .idea werden immer weggelassen.</div>
</div>
</section>
</div>
</div>
<div class="settings-tabpanel hidden" data-settings-panel="system" role="tabpanel">
<div class="settings-column">
<section class="settings-panel settings-panel--system">
<div class="settings-panel-header">
<div>
<h3>System</h3>
<p>Verhalten beim Windows-Start steuern.</p>
</div>
</div>
<div class="settings-toggle-list">
<label class="settings-toggle-row" for="settingAutostart">
<span class="settings-toggle-info">
<span class="settings-toggle-title">🚀 Mit Windows starten</span>
<span class="settings-toggle-desc">Startet die App automatisch beim Anmelden, minimiert im System-Tray.</span>
</span>
<span class="toggle-switch">
<input type="checkbox" id="settingAutostart">
<span class="toggle-track"></span>
</span>
</label>
</div>
</section>
<section class="settings-panel settings-panel--app">
<div class="settings-panel-header">
<div>
<h3>App & Updates</h3>
<p>Version prüfen und neue Releases direkt anstoßen.</p>
</div>
</div>
<div class="settings-version-card">
<div class="input-group input-group--wide settings-version-field">
<label for="appVersion">App Version</label>
<input id="appVersion" class="settings-readonly-input" type="text" readonly>
</div>
<button id="btnCheckUpdates" class="settings-update-btn">🔄 Nach Updates suchen</button>
</div>
</section>
<section class="settings-panel settings-panel--behaviour">
<div class="settings-panel-header">
<div>
<h3>Verhalten</h3>
<p>Updates, Schließen-Knopf und Standardordner.</p>
</div>
</div>
<div class="settings-toggle-list">
<label class="settings-toggle-row" for="prefAutoUpdate">
<span class="settings-toggle-info">
<span class="settings-toggle-title">🔄 Beim Start nach Updates suchen</span>
<span class="settings-toggle-desc">Prüft kurz nach dem Start, ob eine neue Version bereitsteht.</span>
</span>
<span class="toggle-switch">
<input type="checkbox" id="prefAutoUpdate" checked>
<span class="toggle-track"></span>
</span>
</label>
</div>
<div class="settings-backup-card">
<div class="input-group">
<label for="prefCloseAction">Beim Schließen des Fensters</label>
<select id="prefCloseAction">
<option value="auto">Automatisch: in den Tray, wenn die App mit Windows startet</option>
<option value="tray">Immer in den Tray (läuft im Hintergrund weiter)</option>
<option value="quit">Immer beenden</option>
</select>
</div>
<div class="input-group input-group--wide">
<label for="prefCloneDir">Standardordner zum Klonen</label>
<div class="fx-row">
<input id="prefCloneDir" type="text" placeholder="z. B. D:\Projekte">
<button id="btnPrefCloneDir" class="settings-action-btn fx-browse-btn" type="button">📂 Wählen</button>
</div>
</div>
<div class="settings-inline-hint">Wird beim Klonen mehrerer Repos (Batch) als Ziel vorgeschlagen.</div>
</div>
</section>
</div>
</div>
<div class="settings-tabpanel hidden" data-settings-panel="backup" role="tabpanel">
<div class="settings-column">
<section class="settings-panel settings-panel--repobackup">
<div class="settings-panel-header">
<div>
<h3>Repo-Backup</h3>
<p>Alle Gitea-Repos automatisch in einen Ordner oder auf die NAS sichern.</p>
</div>
</div>
<div class="settings-backup-card">
<div class="input-group input-group--wide">
<label for="repoBackupTarget">Backup-Ziel (Ordner oder Netzwerkfreigabe)</label>
<div class="fx-row">
<input id="repoBackupTarget" type="text" placeholder="z. B. \\NAS\backup\gitea oder D:\Backups\gitea">
<button id="btnRepoBackupBrowse" class="settings-action-btn fx-browse-btn" type="button">📂 Wählen</button>
</div>
</div>
<div class="fx-row">
<div class="input-group">
<label for="repoBackupInterval">Automatisch sichern</label>
<select id="repoBackupInterval">
<option value="off">Aus</option>
<option value="daily">Täglich</option>
<option value="weekly">Wöchentlich</option>
</select>
</div>
<div class="input-group">
<label for="repoBackupKeep">ZIP-Stände behalten</label>
<input id="repoBackupKeep" type="number" min="1" max="100" value="5">
</div>
</div>
<div class="fx-row">
<div class="input-group">
<label for="repoBackupTime">Frühestens um</label>
<input id="repoBackupTime" type="time">
</div>
<div class="input-group">
<label for="repoBackupNotify">Benachrichtigen</label>
<select id="repoBackupNotify">
<option value="errors">Nur bei Fehlern oder Abbruch</option>
<option value="always">Nach jedem Backup</option>
<option value="never">Nie</option>
</select>
</div>
</div>
<div class="input-group input-group--wide">
<label for="repoBackupExclude">Diese Repos nicht sichern</label>
<textarea id="repoBackupExclude" class="settings-textarea" rows="4" spellcheck="false" placeholder="Ein Muster pro Zeile, z. B.&#10;test-*&#10;M_Viper/alt-*&#10;*-archiv"></textarea>
</div>
<div class="settings-tools-grid">
<button id="btnRepoBackupRun" class="settings-action-btn" type="button">▶️ Jetzt sichern</button>
<button id="btnRepoBackupOpen" class="settings-action-btn" type="button">📂 Backup-Ordner öffnen</button>
</div>
<div id="repoBackupStatus" class="settings-inline-hint">Noch kein Backup gelaufen.</div>
<div class="settings-inline-hint">Automatische Backups laufen, solange die App geöffnet ist (auch im Tray).</div>
</div>
</section>
<section class="settings-panel settings-panel--restore">
<div class="settings-panel-header">
<div>
<h3>Wiederherstellen</h3>
<p>Ein gesichertes Repo zurück auf Gitea spielen oder lokal entpacken.</p>
</div>
</div>
<div class="settings-backup-card">
<div class="settings-tools-grid">
<button id="btnRepoRestore" class="settings-action-btn" type="button">↺ Backup wiederherstellen</button>
</div>
<div class="settings-inline-hint">Zeigt alle Sicherungen im Backup-Ziel. Git-Spiegel enthalten die volle Historie, ZIP-Stände nur den Standard-Branch.</div>
</div>
</section>
<section class="settings-panel settings-panel--backup">
<div class="settings-panel-header">
<div>
<h3>Einstellungen sichern & übertragen</h3>
<p>Einstellungen, Favoriten und Verlauf exportieren oder auf einem anderen PC importieren.</p>
</div>
</div>
<div class="settings-backup-card">
<div class="settings-tools-grid">
<button id="btnExportSettingsBundle" class="settings-action-btn" type="button">📦 Backup exportieren</button>
<button id="btnImportSettingsBundle" class="settings-action-btn" type="button">📥 Backup importieren</button>
</div>
<div class="settings-inline-hint">
Export enthält Tokens nur verschlüsselt, nie als Klartext. Der Import ist für andere PCs geeignet.
</div>
</div>
</section>
</div>
</div>
<div class="settings-tabpanel hidden" data-settings-panel="diagnose" role="tabpanel">
<div class="settings-column">
<section class="settings-panel settings-panel--diagnostics">
<div class="settings-panel-header">
<div>
<h3>Diagnose</h3>
<p>Diagnosepaket für die Fehlersuche erstellen oder die Verbindung zum Gitea-Server Schritt für Schritt prüfen.</p>
</div>
</div>
<div class="settings-diagnostics-card">
<button id="btnCreateDiagnostics" class="settings-action-btn" type="button">🧪 Diagnose erstellen</button>
<button id="btnServerDiagnosis" class="settings-action-btn" type="button">🩺 Server-Diagnose starten</button>
</div>
</section>
<section class="settings-panel settings-panel--transport">
<div class="settings-panel-header">
<div>
<h3>Schneller Git-Weg</h3>
<p>Bricht der Server beim Git-Transport ab, nutzt die App 24 Stunden lang die langsamere API. Hier siehst du den Stand.</p>
</div>
</div>
<div class="settings-backup-card">
<div id="gitTransportState" class="settings-inline-hint">Wird geprüft …</div>
<div class="settings-tools-grid">
<button id="btnGitTransportClear" class="settings-action-btn" type="button">🔓 Sperre aufheben</button>
</div>
</div>
</section>
<section class="settings-panel settings-panel--folders">
<div class="settings-panel-header">
<div>
<h3>Ordner</h3>
<p>Wo die App ihre Daten und Protokolle ablegt.</p>
</div>
</div>
<div class="settings-backup-card">
<div class="settings-tools-grid">
<button id="btnOpenAppData" class="settings-action-btn" type="button">📂 App-Daten öffnen</button>
<button id="btnOpenLogs" class="settings-action-btn" type="button">📄 Protokolle öffnen</button>
</div>
</div>
</section>
</div>
</div>
</div>
</div>
@@ -585,5 +904,7 @@
</div>
</div> <script src="renderer.js"></script>
<script src="features.js"></script>
<script src="settings-extra.js"></script>
</body>
</html>