SeaMeet Desktop ist da — Alles aufnehmen, nichts verpassen. Kostenlos herunterladen →

GitHub-Sync-Einrichtung

Kapitel 38: GitHub-Sync-Einrichtung

GitHub-Synchronisierung verwandelt Ihren SeaMeet-Workspace in einen privaten, versionskontrollierten Markdown-Baum, der in Ihrem eigenen GitHub-Repository lebt. Jedes Mal, wenn Sie eine Notiz bearbeiten, eine Aufnahme umbenennen oder eine Wiki-Seite anpassen, committet SeaMeet die Änderung im Hintergrund leise und pusht sie zu GitHub. Öffnen Sie SeaMeet auf einem anderen Laptop und Ihre Notizen werden beim ersten Start heruntergeladen – kein Dropbox in der Mitte, kein Seasalt-Server in der Schleife. Das Repo gehört Ihnen, die Daten gehören Ihnen, und Sie können sie direkt auf github.com durchsuchen, wenn Sie jemals möchten.

Das Modell ist einfach: Ihr GitHub-Repository ist der Speicher. SeaMeet betreibt keinen Sync-Dienst. Es installiert eine kleine GitHub-App auf Ihrem Konto, erhält ein pro-Benutzer-OAuth-Token und verwendet dieses Token, um Git-Commits direkt zu pushen und zu pullen. Da der Speicher GitHubs kostenlose Stufe ist – die Ihnen unbegrenzte private Repos gibt – ist die Synchronisierung effektiv kostenlos. Und da jeder SeaMeet-Workspace sein eigenes Repository ist, können Sie Arbeits- und persönliche Workspaces vollständig getrennt halten.


Kapitelziele

Nach dem Lesen dieses Kapitels werden Sie in der Lage sein:

  • Die SeaMeet GitHub-App auf Ihrem Konto oder Ihrer Organisation zu installieren
  • SeaMeet über OAuth zu autorisieren und es ein privates Sync-Repository für Sie erstellen zu lassen
  • Die Sync-Statusleiste zu lesen und jeden Zustand in der Sync-Zustandsmaschine zu verstehen
  • Zu erkennen, wann OAuth im Hintergrund automatisch aktualisiert wurde und wann Sie manuell erneut autorisieren müssen
  • Einen Sync-Konflikt zu lösen, wenn dieselbe Notiz auf zwei Geräten bearbeitet wurde
  • Das Sync-Einstellungs-Panel abzustimmen (Auto-Sync, Sync-Intervall, Sync beim Start)
  • Die häufigsten Fehlermodi zu beheben

Voraussetzungen

Bevor Sie beginnen, stellen Sie sicher, dass Sie haben:

  • Ein GitHub-Konto – die kostenlose Stufe ist in Ordnung; Sie benötigen kein GitHub Pro
  • Eine aktive Sync-Berechtigung – im Lieferumfang von BYOK Pro- und Sync Pro-Stufen enthalten. Wenn Ihre Abrechnungsstufe keine Synchronisierung enthält, zeigt der Sync-Einstellungsbildschirm ein „Abonnieren, um Synchronisierung zu aktivieren"-Banner an. Siehe Kapitel 35: Abonnement & Abrechnung für Tarifdetails.
  • Einen Workspace, der in SeaMeet geöffnet ist – Sync wird an den aktiven Workspace gebunden, nicht an die App als Ganzes. Wenn Sie mehrere Workspaces haben, ist jeder sein eigenes GitHub-Repository.
  • Funktionierender Internetzugang – der Einrichtungs-Flow öffnet GitHub in Ihrem Standardbrowser

Ein Repo pro Workspace. SeaMeet erstellt ein separates privates Repository für jeden Workspace, mit dem Sie sich verbinden. Dies hält Arbeits- und persönliche Notizen sauber getrennt und bedeutet, dass Sie eines trennen können, ohne das andere zu berühren.


Schritt-für-Schritt-Einrichtung

Die Ersteinrichtung dauert etwa 90 Sekunden: Autorisieren Sie SeaMeet auf GitHub, lassen Sie es Ihr Repo erstellen, warten Sie auf den initialen Upload, und Sie sind fertig.

Schritt 1: Sync-Einstellungen öffnen

  1. Klicken Sie auf das Einstellungen-Zahnradsymbol
  2. Öffnen Sie die Sync-Registerkarte in der linken Leiste
  3. Sie sehen die „Sync mit GitHub"-Header-Karte

Wenn Sie die Sync-Registerkarte nicht sehen, enthält Ihre Abonnementstufe keine Synchronisierung – siehe Kapitel 35 zum Upgraden.

Wenn Sie ein Banner sehen, das lautet „Sichern Sie Ihre Notizen in einem privaten GitHub-Repo mit BYOK Pro", haben Sie ein kostenloses Konto. Klicken Sie auf das Banner, um die Bezahlschranke zu öffnen, oder überspringen Sie den Rest dieses Kapitels, bis Sie abonniert haben.

Schritt 2: „GitHub-Sync einrichten" klicken

Der Sync-Einstellungs-Leerzustand zeigt drei Vorteilskacheln („Kostenlos & privat", „Effektiv unbegrenzt", „Ein Repo pro Workspace") und eine primäre GitHub-Sync einrichten-Schaltfläche unten.

Klicken Sie darauf. Ihr Standardbrowser öffnet sich zu einer GitHub-Autorisierungsseite.

Schritt 3: Die SeaMeet GitHub-App installieren (einmalig)

Beim ersten Mal, wenn Sie SeaMeet autorisieren, wird GitHub Sie bitten, die SeaMeet GitHub-App auf Ihrem Konto zu installieren. Dies ist ein einmaliger Schritt pro GitHub-Konto (oder pro Organisation, wenn Sie zu einem org-eigenen Repo synchronisieren möchten).

Auf der GitHub-Installationsseite:

  1. Wählen Sie das Konto oder die Organisation, in das SeaMeet schreiben soll
  2. Wählen Sie entweder „Alle Repositories" oder „Nur ausgewählte Repositories" – die SeaMeet-App benötigt contents: write und administration: write-Berechtigungen, damit sie das Sync-Repo in Ihrem Namen erstellen kann
  3. Klicken Sie auf Installieren & Autorisieren

GitHub leitet Sie zurück zu SeaMeet. Das Sync-Einstellungs-Panel zeigt jetzt:

┌──────────────────────────────────────────────────────┐
│   ✓ Autorisiert                                      │
│   ⟳ Repository wird erstellt & hochgeladen...        │
└──────────────────────────────────────────────────────┘

Warum eine GitHub-App und kein einfaches OAuth-Token? GitHub-Apps haben fein abgestimmte Pro-Repo-Berechtigungen und rotierende Aktualisierungs-Token. SeaMeet hat nur Schreibzugriff auf die Repos, die Sie explizit gewählt haben, und das OAuth-Zugangs-Token läuft alle 8 Stunden ab – selbst wenn es geleakt würde, wäre das Fenster klein. (Siehe Abschnitt OAuth-Auto-Aktualisierung unten, wie SeaMeet das für Sie unsichtbar hält.)

Schritt 4: Repository-Erstellung (automatisch)

SeaMeet ruft jetzt die GitHub-API in Ihrem Namen auf und:

  1. Erstellt ein privates Repo, das nach Ihrem Workspace benannt ist (z. B. seameet-work-notes)
  2. Initialisiert ein lokales Git-Repo in Ihrem Workspace-Ordner, falls noch keines existiert
  3. Führt git init aus, schreibt eine .gitignore, die Audio-/Video-/Screenshot-Dateien ausschließt, und macht einen initialen Commit
  4. Fügt das neue GitHub-Repo als origin hinzu
  5. Pusht den initialen Commit

Sie sehen die Statusleiste am unteren Rand der Seitenleiste durch Folgendes übergehen:

Repository wird erstellt...  →  Synchronisierung...  →  Synchronisiert · gerade eben

Das war's. Ihr Workspace wird jetzt von GitHub unterstützt.

Schritt 5: Erste Synchronisierung läuft automatisch

Von nun an macht SeaMeet automatisch alle 5 Minuten (standardmäßig) einen Commit, wann immer Sie nicht gespeicherte Änderungen haben, und pusht direkt nach jedem Commit zu GitHub. Beim nächsten Start von SeaMeet pullt die App von GitHub, bevor Sie überhaupt mit dem Bearbeiten beginnen – sodass Änderungen, die auf einem anderen Gerät vorgenommen wurden, in dem Moment angezeigt werden, in dem die App geöffnet wird.


Die Sync-Zustandsmaschine

SeaMeets SyncManager führt eine kleine Zustandsmaschine aus und sendet seinen aktuellen Zustand an den Renderer. Die Seitenleiste SyncStatusBar und das Sync-Einstellungs-Panel lesen beide aus diesem Zustand. Das Verständnis der Zustände hilft Ihnen, die UI genau zu lesen.

                      ┌─────────────┐
                      │    idle     │ ◄──────┐
                      └──────┬──────┘        │
                             │ Dateiänderung │
                             ▼               │
                      ┌─────────────┐        │
                ┌────►│   pending   │        │
                │     └──────┬──────┘        │
       Datei-   │            │ Commit-Timer  │
       änderung │            ▼               │
                │     ┌─────────────┐        │
                │     │ committing  │        │
                │     └──────┬──────┘        │
                │            ▼               │
                │     ┌─────────────┐        │
                │     │   pushing   │        │
                │     └──────┬──────┘        │
                │            ▼               │
                │     ┌─────────────┐        │
                │     │   synced    │── 5s ──┘
                │     └─────────────┘
                │
                │     ┌─────────────┐
                ├─────┤   pulling   │ (Start o. Push-abgelehnt)
                │     └─────────────┘
                │
                │     ┌─────────────┐
                ├─────┤  conflict   │ → Benutzer löst → syncing → synced
                │     └─────────────┘
                │
                │     ┌─────────────┐
                ├─────┤   offline   │ → Netzwerk zurück → erneut versuchen
                │     └─────────────┘
                │
                │     ┌─────────────┐
                ├─────┤   timeout   │ → Benutzer klickt Erneut versuchen
                │     └─────────────┘
                │
                │     ┌────────────────┐
                └─────┤ token-expired  │ → Erneut-autorisieren-Karte
                      └────────────────┘

Hier ist, was jeder Zustand in der UI bedeutet:

ZustandStatusleisten-LabelWas er bedeutet
idle„Synchronisiert · vor 2 Min"Nichts ausstehend, letzter Commit war sauber
pending„Ausstehend..."Sie haben nicht gespeicherte Änderungen; Commit-Timer wird im nächsten Intervall feuern
committing„Synchronisierung..."Ein Git-Commit ist lokal im Gange
pushing„Push wird ausgeführt..."Lokaler Commit abgeschlossen; wird zu GitHub gepusht
pulling„Pull wird ausgeführt..."Entweder Start-Sync oder Push wurde abgelehnt und wir pullen zuerst
syncing„Synchronisierung..."Beendet ein Rebase nach Konfliktauflösung
synced„Synchronisiert · gerade eben"Gerade abgeschlossener Erfolg; wird 5 Sekunden lang angezeigt, dann zu idle zurück
conflict„Sync-Konflikt"Lokal und remote haben beide dieselbe Datei bearbeitet. UI zeigt den Konfliktauflösungs-Flow an.
error„Sync-Fehler"Ein nicht-Netzwerk-, nicht-Konflikt-Fehler (z. B. Git-Fehler). Wiederholt automatisch mit exponentieller Backoff bis zu 5 Mal.
offline„Offline"Netzwerk nicht erreichbar. Wird bei der nächsten Dateiänderung oder nach 60 Sekunden erneut versucht.
timeout„Sync hat das Zeitlimit überschritten"Ein Git-Befehl hat länger als 60 Sekunden gedauert (siehe Sync-Timeout-Schutz unten)
token-expired„Erneut autorisieren"OAuth-Aktualisierung ist fehlgeschlagen und der Benutzer muss manuell erneut autorisieren
installing-app„GitHub-App wird installiert..."Wartet darauf, dass der Benutzer den GitHub-App-Installationsschritt in seinem Browser abschließt
creating-repo„Repository wird erstellt..."Einrichtungs-Flow erstellt das GitHub-Repo und pusht den initialen Commit

Wenn die Statusleiste einen Spinner anzeigt, ist das normale Hintergrundaktivität. Wenn sie bernsteinfarben oder rot ist, siehe Abschnitt Fehlerbehebung unten.


OAuth-Auto-Aktualisierung

GitHub-Apps stellen Benutzerzugangstoken aus, die alle 8 Stunden ablaufen, plus ein Aktualisierungs-Token, das 6 Monate lang gültig ist. SeaMeet verwaltet dies für Sie, sodass Sie fast nie darüber nachdenken müssen.

Wie es funktioniert:

  1. Wenn SeaMeet kurz davor steht zu pushen oder zu pullen, prüft SyncManager._refreshTokenIfNeeded(), ob das aktuelle Token innerhalb der nächsten 5 Minuten abläuft.
  2. Wenn ja, ruft SeaMeet GitHubs /login/oauth/access_token-Endpunkt mit dem gespeicherten Aktualisierungs-Token auf. GitHub gibt ein neues Zugangstoken zurück und rotiert das Aktualisierungs-Token. SeaMeet schreibt beide zurück in die verschlüsselte Token-Datei auf der Festplatte.
  3. Der Git-Befehl wird dann mit dem frisch aktualisierten Token ausgeführt. Sie sehen nichts auf dem Bildschirm – die gesamte Aktualisierung dauert weit unter einer Sekunde.

Behandlung vorübergehender Fehler: Wenn der Aktualisierungsaufruf fehlschlägt, weil das Netzwerk schwankt oder GitHub ein 5xx zurückgegeben hat (ein REFRESH_NETWORK_ERROR), wirft SeaMeet das vorhandene Token nicht weg. Stattdessen geht die Synchronisierung in den offline-Zustand und versucht es später erneut. Dies ist wichtig, weil das vorhandene Token möglicherweise noch mehrere Minuten gültig ist – es bei einem vorübergehenden Netzwerkausfall wegzuwerfen, würde Sie unnötigerweise von der Synchronisierung abmelden.

Zusammenführung gleichzeitiger Aktualisierungen: GitHub rotiert das Aktualisierungs-Token jedes Mal, wenn Sie es verwenden, sodass zwei gleichzeitige Aktualisierungen miteinander konkurrieren und eines das andere ungültig machen würde. SeaMeet fasst gleichzeitige Aktualisierungsaufrufe in einer einzelnen In-Flight-Promise (_refreshPromise) zusammen, sodass Start-Sync und Push-mit-Wiederholung nie um das rotierende Token kämpfen.

Wenn die Aktualisierung wirklich fehlschlägt: Wenn GitHub REFRESH_TOKEN_EXPIRED zurückgibt – was bedeutet, dass das 6-monatige Aktualisierungs-Token abgelaufen ist oder widerrufen wurde – tut SeaMeet:

  1. Löscht die verschlüsselte Token-Datei von der Festplatte
  2. Tritt in den token-expired-Endzustand ein
  3. Zeigt eine bernsteinfarbene Karte in den Sync-Einstellungen an:
┌──────────────────────────────────────────────────────┐
│ ⚠  GitHub-Autorisierung ist abgelaufen. Bitte         │
│    autorisieren Sie erneut, um die Synchronisierung   │
│    fortzusetzen.                                      │
│                                                       │
│  [ ↻ GitHub erneut autorisieren ]                     │
└──────────────────────────────────────────────────────┘

Klicken Sie auf GitHub erneut autorisieren. Sie werden zurück durch den OAuth-Flow gesendet – aber da die GitHub-App bereits installiert ist, ist es ein einzelner Klick zur Bestätigung, und Sie sind in etwa 10 Sekunden fertig. SeaMeet entfernt dann jedes veraltete Token aus Ihrer lokalen git config (das alte Token kann in der URL von origin eingebettet sein), bevor der nächste Push, damit Sie nicht in einer Schleife mit einem toten Anmeldeinformation hängen bleiben.


Sync-Timeout-Schutz

Git-Befehle können für immer hängen, wenn ein Netzwerk mitten in der Übertragung stumm wird – ein TCP-Socket kann in einem halb-offenen Zustand sitzen, ohne jemals einen Fehler auszulösen. SeaMeet umhüllt jeden Git-Push und -Pull in ein 60-Sekunden AbortController-Timeout.

Wenn ein Push oder Pull nicht in 60 Sekunden abgeschlossen wird, tut SeaMeet:

  1. Bricht den Git-Subprozess ab
  2. Tritt in den timeout-Zustand ein
  3. Zeigt eine bernsteinfarbene Karte in den Sync-Einstellungen an:
┌──────────────────────────────────────────────────────┐
│ ⚠  Sync hat das Zeitlimit überschritten. Dies kann   │
│    durch ein Netzwerkproblem oder eine abgelaufene    │
│    GitHub-Autorisierung verursacht werden.            │
│                                                       │
│  [ ↻ Sync erneut versuchen ] [ GitHub erneut autoris.]│
└──────────────────────────────────────────────────────┘

Sync erneut versuchen führt commitNow erneut aus. Dies ist die richtige Schaltfläche zum Klicken, wenn Sie denken, dass Ihr Netzwerk gerade kurzzeitig ausgefallen ist. GitHub erneut autorisieren führt den OAuth-Flow erneut aus; klicken Sie darauf, wenn das Timeout immer wieder auftritt, was normalerweise bedeutet, dass Ihr Token das Problem ist, nicht das Netzwerk.

Der Status kehrt nach etwa 30 Sekunden automatisch zu idle zurück, auch wenn Sie nichts klicken – Sync wird bei der nächsten Dateiänderung erneut versucht.


Konfliktauflösung

Ein Konflikt tritt auf, wenn dieselbe Datei seit der letzten Synchronisierung auf zwei Geräten bearbeitet wurde. Beispiel: Sie haben einen Absatz in meetings/2026-06-03-standup.md auf Ihrem Laptop geschrieben, dann später denselben Absatz auf der Maschine eines Freundes bearbeitet. Wenn das zweite Gerät pusht, lehnt GitHub den Push ab, weil die Historien divergieren.

SeaMeet behandelt dies, indem es:

  1. Die Remote-Änderungen mit einem Rebase pullt
  2. Die Merge-Konfliktmarker erkennt
  3. In den conflict-Zustand übergeht
  4. Den Konflikt in der Seitenleisten-Statusleiste anzeigt (die anklickbar wird) und im Sync-Einstellungs-Konfliktpanel

Das Konfliktauflösungs-Modal

Das Klicken auf die Statusleiste, wenn Sync im conflict-Zustand ist, öffnet das Konfliktauflösungs-Modal:

┌──────────────────────────────────────────────────────────┐
│  ⚠  Sync-Konflikt                    1 / 2          [×]  │
├──────────────────────────────────────────────────────────┤
│                                                          │
│  „2026-06-03-standup.md" wurde auf einem anderen Gerät   │
│  geändert.                                               │
│                                                          │
│  ┌────────────────────────┐  ┌────────────────────────┐  │
│  │ ✎  Manuell bearbeiten  │  │ ✦  Agent-Merge         │  │
│  └────────────────────────┘  └────────────────────────┘  │
│                                                          │
└──────────────────────────────────────────────────────────┘

Sie haben zwei Optionen:

Manuell bearbeiten – öffnet die Konfliktdatei im Standardeditor Ihres Systems mit Gits Standard-<<<<<<< / ======= / >>>>>>>-Markern an Ort und Stelle. Bearbeiten Sie die Datei, um sie zu lösen, speichern Sie, dann kommen Sie zu SeaMeet zurück und klicken Sie auf Fertig. SeaMeet staget die gelöste Datei und setzt den Rebase fort.

Agent-Merge (Nur BYOK Pro, erfordert konfigurierten KI-Agent) – sendet beide Versionen an Ihren konfigurierten KI-Agent (GitHub Copilot oder Claude Code, siehe Kapitel 36: BYOK-Einrichtungsanleitung) und bittet ihn, eine zusammengeführte Version zu produzieren, die die Absicht beider Seiten beibehält. Die Ausgabe des Agenten wird automatisch gestaget; Sie sehen einen „Synchronisierung wird abgeschlossen..."-Spinner, während der Rebase abgeschlossen wird.

Wenn es mehrere Konflikte gleichzeitig gibt, zeigt das Modal einen Zähler (1 / 2, 2 / 2) und Chevron-Pfeile im Sync-Einstellungs-Konfliktpanel, sodass Sie sie einzeln durchgehen können.

„Meine behalten" / „Ihre behalten" / „Beide behalten"-Optionen ergeben sich als natürliche Wahlen, wenn Sie im manuellen Editor sind: Lassen Sie nur den Text Ihrer Version zwischen den Markern, nur den Text der Remote-Version oder verschachteln Sie beide. Die Agent-Merge-Schaltfläche tut effektiv „beide behalten, intelligent".

Was, wenn Sie einen Fehler machen? Sync-Konflikte sind nicht-destruktiv. Git behält den ursprünglichen „unseren" und „ihren" Inhalt im Index, und getConflictVersions(filePath) kann beide zu jedem Zeitpunkt während der Auflösung abrufen. Sie verlieren nicht versehentlich Arbeit.


Das Sync-Einstellungs-Panel

Sobald Sie verbunden sind, gibt Ihnen Sync-Einstellungen (Einstellungen → Sync) einen einzigen Bildschirm mit allem an einem Ort:

┌─────────────────────────────────────────────────────────────┐
│  ✓ Sync & Backup                                            │
│  Ihre Notizen und Wiki werden automatisch zu GitHub         │
│  synchronisiert. Audio-Aufnahmen, Video-Aufnahmen und       │
│  Screenshots werden nicht synchronisiert.                   │
├─────────────────────────────────────────────────────────────┤
│  ⓘ  https://github.com/you/seameet-work-notes                │
│  🕒 Letzte Synchronisierung: vor 4 Minuten                   │
├─────────────────────────────────────────────────────────────┤
│  Auto-Sync                                       [ EIN ◉ ]  │
│  Sync-Intervall                                  [ 5 Min ▾ ]│
│  Branch                                              main   │
│  Zuletzt synchronisiert                       vor 4 Minuten │
├─────────────────────────────────────────────────────────────┤
│  Auto-Sync bei Änderungen                        [ EIN ◉ ]  │
│  Sync beim Start                                 [ EIN ◉ ]  │
├─────────────────────────────────────────────────────────────┤
│  [ ⤓ Jetzt synchronisieren ]                                │
├─────────────────────────────────────────────────────────────┤
│  [ ↗ Auf GitHub ansehen ]    [ Trennen ]                    │
└─────────────────────────────────────────────────────────────┘

Die Steuerelemente von oben nach unten:

  • Auto-Sync – Hauptumschalter für den Hintergrund-Commit-Timer. Aus bedeutet, dass SeaMeet nur committet, wenn Sie auf Jetzt synchronisieren klicken.
  • Sync-Intervall – wie oft der Commit-Timer feuert. Auswahlmöglichkeiten sind 1 / 5 / 10 / 30 Minuten. Standard ist 5 Minuten. Ein 1-Minuten-Intervall ist in Ordnung für aktives Notieren; 30 Minuten ist gut für Workspaces mit wenig Bearbeitungen, wo Sie lieber Commits bündeln.
  • Branch – der Git-Branch, zu dem SeaMeet synchronisiert. Fast immer main. Schreibgeschützt in der UI.
  • Zuletzt synchronisiert – relativer Zeitstempel des letzten erfolgreichen Pushs.
  • Auto-Sync bei Änderungen – wenn aktiviert, passieren Pushs sofort nach jedem lokalen Commit (der typische Fall). Wenn deaktiviert, committet SeaMeet lokal, pusht aber nur, wenn Sie auf Jetzt synchronisieren klicken. Nützlich, wenn Sie Pushs bündeln möchten (z. B. bei einer abgerechneten Verbindung).
  • Sync beim Start – wenn aktiviert, pullt SeaMeet von GitHub in dem Moment, in dem die App startet. Empfohlen, es sei denn, Sie haben eine sehr langsame Verbindung.
  • Jetzt synchronisieren – erzwingt einen sofortigen Commit-und-Push-Zyklus. Wartet nicht auf den Timer. Nützlich, bevor Sie Ihren Laptop schließen.
  • Auf GitHub ansehen – öffnet das Repo in Ihrem Browser.
  • Trennen – löscht das gespeicherte OAuth-Token, löscht die verschlüsselte Token-Datei und entfernt origin aus Ihrem lokalen Git-Repo. Ihre lokalen Markdown-Dateien und Git-Historie bleiben unberührt – nur die Verbindung zu GitHub wird getrennt.

Was synchronisiert wird (und was nicht)

Dies ist im Teil-Index dokumentiert, aber es lohnt sich, es hier zu wiederholen:

SynchronisiertNicht synchronisiert
Notizen (.md-Dateien)Audio-Aufnahmen (.webm, .mp3)
Wiki-Seiten (.md-Dateien)Video-Aufnahmen (.webm, .mp4)
Aufnahme-Manifeste (Metadaten-JSON)Screenshots (.png, .jpg)
KI-Zusammenfassungen und TranskripteZwischengespeicherte KI-Generierungen
Wikilink-DiagrammApp-Einstellungen
.gitignoreEditor-Scratch-Status

Die .gitignore, die SeaMeet schreibt, schließt alle großen Binärkategorien aus. Dies ist beabsichtigt: GitHubs kostenlose private Repos sind auf 1 GB begrenzt, und ein 30-minütiges Video würde das allein aufessen. SeaMeet behält Medien auf Ihrer lokalen Festplatte und synchronisiert nur das leichte Markdown.

Wenn Sie volle Medien-Synchronisierung möchten, ist das die Sync Pro-Stufe – siehe Kapitel 35.


Fehlerbehebung

„Autorisierung fehlgeschlagen" direkt nach dem Klicken auf GitHub-Sync einrichten

Ursachen und Behebungen:

  • Pop-up-Blocker – wenn sich kein Browserfenster geöffnet hat, hat Ihr OS oder Browser möglicherweise den Start blockiert. Klicken Sie erneut auf GitHub-Sync einrichten und bestätigen Sie alle Pop-up-Eingabeaufforderungen.
  • Sie haben die GitHub-App-Berechtigungen verweigert – gehen Sie zurück durch den Flow und akzeptieren Sie die contents: write + administration: write-Geltungsbereiche. Ohne administration: write kann SeaMeet das Repo nicht für Sie erstellen.
  • Status-Mismatch-Fehler – schließen Sie alle anderen SeaMeet-Fenster, die möglicherweise im selben OAuth-Flow konkurrieren, dann erneut versuchen.

„Repo-Berechtigungen"-Fehler während der Einrichtung

Der Fehler lautet etwa „GitHub-App hat 'contents: read'-Berechtigung, benötigt aber 'contents: write'." Dies bedeutet, dass Sie eine ältere Version der App installiert haben.

Behebung:

  1. Öffnen Sie github.com/settings/installations
  2. Finden Sie SeaMeet in der Liste und klicken Sie auf Konfigurieren
  3. Unter Repository-Berechtigungen ändern Sie Contents und Administration auf Lesen und Schreiben
  4. Speichern, dann deinstallieren und neu installieren Sie die App – GitHub wendet neue Berechtigungen nur bei der Neuinstallation an
  5. GitHub-Sync einrichten in SeaMeet erneut ausführen

„GitHub konnte nicht erreicht werden" / Sync hängt auf „Offline"

Netzwerkfehler. SeaMeet wird automatisch erneut versuchen, wenn:

  • Sie eine beliebige Dateiänderung vornehmen (löst einen sofortigen Wiederholungsversuch aus)
  • 60 Sekunden seit dem letzten Wiederholungsversuch vergangen sind

Wenn Ihr Netzwerk zurück ist und Sync nach ein paar Minuten immer noch Offline anzeigt:

  1. Klicken Sie auf Jetzt synchronisieren, um eine Wiederholung zu erzwingen
  2. Wenn das Zeitüberschreitung tritt ein: Prüfen Sie, dass Ihre Firewall nicht github.com blockiert
  3. Als letzter Ausweg starten Sie SeaMeet neu – die Start-Synchronisierung wird beim Start ausgelöst

Sync hängt auf „Ausstehend"

Dies bedeutet normalerweise, dass der Auto-Commit-Timer noch nicht gefeuert hat. Standardmäßig feuert er alle 5 Minuten. Möchten Sie nicht warten? Klicken Sie auf Jetzt synchronisieren.

Wenn Jetzt synchronisieren die Synchronisierung nicht über Ausstehend hinaus bewegt, prüfen Sie:

  • Sind Sie auf einer Abrechnungsstufe, die Synchronisierung enthält? Öffnen Sie Sync-Einstellungen – wenn Sie das Abonnieren-Banner sehen, ist die Synchronisierung auf der Berechtigungsebene deaktiviert.
  • Gibt es nicht-committete Änderungen außerhalb des Markdown-Baums? Der Auto-Commit-Timer feuert nur, wenn _pendingChanges nicht leer ist.

„Ich sehe die token-abgelaufen-Karte"

Dies ist das erwartete Ende des OAuth-Aktualisierungs-Lebenszyklus – Ihr 6-monatiges Aktualisierungs-Token ist abgelaufen, oder Sie haben die GitHub-App widerrufen, oder Sie haben Ihr GitHub-Passwort geändert (was alle OAuth-Token ungültig macht).

Behebung: Klicken Sie auf GitHub erneut autorisieren in der Karte. Der Flow ist derselbe wie die Ersteinrichtung, überspringt aber den GitHub-App-Installationsschritt (Sie haben sie bereits installiert). Dauert etwa 10 Sekunden.

Konfliktauflösungs-Panel schließt nicht

Das Panel schließt sich nur, sobald alle Konflikte in der Liste gelöst sind. Wenn Sie den Zähler sehen (1 / 3), verwenden Sie die Chevron-Pfeile im Sync-Einstellungs-Konfliktpanel, um durch die verbleibenden Dateien zu gehen. Jede benötigt eine explizite Auflösung (manuelle Bearbeitung + Fertig oder Agent-Merge).

Wenn das Panel darauf besteht, dass es Konflikte gibt, Sie aber keine Marker in Ihren Dateien sehen, klicken Sie auf Jetzt synchronisieren – ein veralteter conflict-Status wird beim nächsten erfolgreichen Sync-Versuch gelöscht.

„Push abgelehnt"-Schleifen

Wenn Sync wiederholt zwischen pushing und pulling wechselt, lehnt GitHub Ihre Pushs ab, weil der Remote sich weiter bewegt. Dies kann passieren, wenn:

  • Eine andere SeaMeet-Instanz gegen dasselbe Repo läuft und schneller pusht, als diese aufholen kann – schließen Sie die andere Instanz.
  • Jemand (oder ein Tool) committet zum GitHub-Repo von außerhalb SeaMeet – pausieren Sie das externe Tool, bis Ihr lokaler Klon aufgeholt hat.

Sicherheitshinweise

Wo das OAuth-Token gespeichert wird: in Ihrem OS-Keychain über Electrons safeStorage-API. Unter Windows ist das DPAPI, unter macOS ist es Keychain Services, unter Linux ist es libsecret. Das verschlüsselte Blob wird in <userData>/github-token.enc mit Dateimodus 0o600 geschrieben. Die Datei enthält das Zugangs-Token, das Aktualisierungs-Token, den Ablaufzeitstempel und die Client-ID, das Client-Geheimnis und den Slug der GitHub-App.

Was nicht in argv landet: das OAuth-Token wird niemals als -c http.extraHeader=...-Argument an git übergeben, weil argv für andere Benutzer über ps aux sichtbar ist. Stattdessen wird der Authorization-Header über die GIT_CONFIG_PARAMETERS-Umgebungsvariable injiziert, die für den Prozess privat ist. Andere Benutzer auf derselben Maschine können Ihr Token nicht sehen.

Was auf der Festplatte im Repo landet: einfache Markdown-Dateien. Keine Token, keine Geheimnisse, keine Anmeldedaten. Die .gitignore schließt Mediendateien aus, aber Sie sollten dennoch vermeiden, Geheimnisse in Notizkörper einzufügen – die werden synchronisiert.

Zugriff widerrufen: Um SeaMeets Zugriff auf ein Repo sofort zu unterbrechen, deinstallieren Sie die SeaMeet GitHub-App unter github.com/settings/installations. Der nächste Sync-Versuch wird mit token-expired fehlschlagen und SeaMeet wird sein lokales Token löschen. Ihre lokalen Notizen werden nicht angefasst.


Schnellreferenz

┌─────────────────────────────────────────────────────────────┐
│                   GITHUB-SYNCHRONISIERUNG                   │
│                   Schnellreferenz                           │
├─────────────────────────────────────────────────────────────┤
│  Sync-Einst. öffnen   │ Einstellungen → Sync               │
│  Ersteinrichtung      │ Klick auf „GitHub-Sync einrichten" │
│  Erforderl. Bereiche  │ contents: write, admin: write      │
│  Repo-Benennung       │ Ein privates Repo pro Workspace    │
├─────────────────────────────────────────────────────────────┤
│  Std.-Sync-Intervall  │ 5 Minuten (1 / 5 / 10 / 30)        │
│  Sync erzwingen       │ „Jetzt synchronisieren"-Schaltfl.  │
│  Auto-Sync bei Push   │ Ein (Umschalter in Sync-Einst.)    │
│  Sync beim Start      │ Ein (Umschalter in Sync-Einst.)    │
├─────────────────────────────────────────────────────────────┤
│  OAuth-Aktual.-Marge  │ 5 Minuten vor Ablauf               │
│  Git-Befehl-Timeout   │ 60 Sekunden (AbortController)      │
│  Auto-Wiederholgrenze │ 5 Versuche, exp. Backoff           │
│  Token-Speicher       │ OS-Keychain (safeStorage)          │
├─────────────────────────────────────────────────────────────┤
│  Konflikt-UI          │ Statusleiste klick. bei Konflikt   │
│  Manuelle Lösung      │ Marker bearbeiten → Fertig         │
│  Agent-Merge          │ BYOK Pro + KI-Agent konfiguriert   │
├─────────────────────────────────────────────────────────────┤
│  Trennen              │ Sync-Einst. → Trennen              │
│  Von GitHub widerruf. │ github.com/settings/installations  │
│  Repo ansehen         │ „Auf GitHub ansehen"-Link          │
└─────────────────────────────────────────────────────────────┘

Zuletzt aktualisiert: 2026-06-04

Kapitel 37: GitHub Copilot-Anbieter | (Ende des Handbuchs – zurück zum Index)

Published: