Configuración de GitHub Sync
Capítulo 38: Configuración de GitHub Sync
GitHub Sync convierte tu workspace de SeaMeet en un árbol Markdown privado y con control de versiones que vive en tu propio repositorio de GitHub. Cada vez que editas una nota, retitulas una grabación o ajustas una página de wiki, SeaMeet confirma silenciosamente el cambio en segundo plano y lo empuja a GitHub. Abre SeaMeet en otro portátil y tus notas se descargan en el primer lanzamiento — sin Dropbox en el medio, sin servidor de Seasalt en el bucle. El repo es tuyo, los datos son tuyos, y puedes navegar por ellos directamente en github.com si alguna vez quieres.
El modelo es simple: tu repositorio de GitHub es el almacenamiento. SeaMeet no ejecuta un servicio de sincronización. Instala una pequeña App de GitHub en tu cuenta, obtiene un token OAuth por usuario y usa ese token para empujar y extraer commits de Git directamente. Como el almacenamiento es el nivel gratuito de GitHub — que te da repositorios privados ilimitados — la sincronización es efectivamente gratis. Y como cada workspace de SeaMeet es su propio repositorio, puedes mantener los workspaces de trabajo y personales totalmente separados.
Objetivos del capítulo
Después de leer este capítulo, podrás:
- Instalar la App de GitHub de SeaMeet en tu cuenta u organización
- Autorizar SeaMeet sobre OAuth y dejar que cree un repositorio de sincronización privado por ti
- Leer la barra de estado de sincronización y comprender cada estado de la máquina de estado de sincronización
- Reconocer cuándo OAuth se ha auto-refrescado en segundo plano y cuándo necesitas reautorizar manualmente
- Resolver un conflicto de sincronización cuando la misma nota se ha editado en dos dispositivos
- Ajustar el panel Sync Settings (auto-sync, intervalo de sincronización, sincronización al inicio)
- Resolver los modos de fallo más comunes
Prerrequisitos
Antes de empezar, asegúrate de tener:
- Una cuenta de GitHub — el nivel gratuito está bien; no necesitas GitHub Pro
- Un derecho de sincronización activo — incluido con los niveles BYOK Pro y Sync Pro. Si tu nivel de facturación no incluye sincronización, la pantalla Sync Settings mostrará un banner "Subscribe to enable sync". Consulta Capítulo 35: Suscripción y facturación para detalles del plan.
- Un workspace abierto en SeaMeet — la sincronización se adjunta al workspace activo, no a la app como un todo. Si tienes varios workspaces, cada uno es su propio repositorio de GitHub.
- Acceso a internet funcional — el flujo de configuración abre GitHub en tu navegador predeterminado
Un repo por workspace. SeaMeet crea un repositorio privado separado para cada workspace que conectas. Esto mantiene las notas de trabajo y las notas personales claramente aisladas y significa que puedes desconectar uno sin tocar el otro.
Configuración paso a paso
La configuración inicial tarda unos 90 segundos: autoriza SeaMeet en GitHub, deja que cree tu repo, espera la subida inicial y has terminado.
Paso 1: Abrir Sync Settings
- Haz clic en el icono de engranaje de Configuración
- Abre la pestaña Sync en el panel izquierdo
- Verás la tarjeta del encabezado "Sync with GitHub"
Si no ves la pestaña Sync, tu nivel de suscripción no incluye sincronización — consulta el Capítulo 35 para actualizar.
Si ves un banner que dice "Back up your notes to a private GitHub repo with BYOK Pro", tienes una cuenta gratuita. Haz clic en el banner para abrir el paywall, o salta el resto de este capítulo hasta que te hayas suscrito.
Paso 2: Haz clic en "Set Up GitHub Sync"
El estado vacío de Sync Settings muestra tres mosaicos de beneficio ("Free & private", "Effectively unlimited", "One repo per workspace") y un botón principal Set Up GitHub Sync en la parte inferior.
Haz clic en él. Tu navegador predeterminado abre una página de autorización de GitHub.
Paso 3: Instalar la App de GitHub de SeaMeet (una vez)
La primera vez que autorizas SeaMeet, GitHub te pedirá que instales la App de GitHub de SeaMeet en tu cuenta. Este es un paso único por cuenta de GitHub (o por organización, si quieres sincronizar a un repo propiedad de la org).
En la página de instalación de GitHub:
- Elige la cuenta o organización en la que quieres que SeaMeet escriba
- Elige "All repositories" o "Only select repositories" — la App de SeaMeet necesita los permisos
contents: writeyadministration: writepara poder crear el repo de sincronización en tu nombre - Haz clic en Install & Authorize
GitHub te devuelve a SeaMeet. El panel Sync Settings ahora muestra:
┌──────────────────────────────────────────────────────┐
│ ✓ Autorizado │
│ ⟳ Creando repositorio y subiendo... │
└──────────────────────────────────────────────────────┘
¿Por qué una App de GitHub y no un token OAuth simple? Las Apps de GitHub tienen permisos por-repo de grano fino y tokens de refresco rotativos. SeaMeet solo tiene acceso de escritura a los repos que elegiste explícitamente, y el token de acceso OAuth expira cada 8 horas — incluso si se filtrara, la ventana sería pequeña. (Consulta la sección Auto-refresco OAuth abajo para ver cómo SeaMeet mantiene eso invisible para ti.)
Paso 4: Creación del repositorio (automático)
SeaMeet ahora llama a la API de GitHub en tu nombre y:
- Crea un repo privado nombrado según tu workspace (p. ej.
seameet-work-notes) - Inicializa un repo Git local dentro de la carpeta de tu workspace si aún no existe uno
- Ejecuta
git init, escribe un.gitignoreque excluye archivos de audio/vídeo/captura de pantalla y hace un commit inicial - Añade el nuevo repo de GitHub como
origin - Empuja el commit inicial
Verás la barra de estado en la parte inferior de la barra lateral transicionar a través de:
Creando repositorio... → Sincronizando... → Sincronizado · justo ahora
Eso es. Tu workspace ahora está respaldado por GitHub.
Paso 5: La primera sincronización se ejecuta automáticamente
A partir de ahora, SeaMeet auto-confirma cada 5 minutos (por defecto) cada vez que tienes cambios sin guardar, y empuja a GitHub inmediatamente después de cada commit. En el próximo lanzamiento de SeaMeet, la app extrae de GitHub antes de que siquiera empieces a editar — así que los cambios hechos en otro dispositivo aparecen en el momento en que se abre la app.
La máquina de estado de sincronización
El SyncManager de SeaMeet ejecuta una pequeña máquina de estado y transmite su estado actual al renderer. La SyncStatusBar de la barra lateral y el panel Sync Settings ambos leen de este estado. Comprender los estados te ayuda a leer la IU con precisión.
┌─────────────┐
│ idle │ ◄──────┐
└──────┬──────┘ │
│ cambio archivo│
▼ │
┌─────────────┐ │
┌────►│ pending │ │
│ └──────┬──────┘ │
cambio │ │ timer commit │
archivo │ ▼ │
│ ┌─────────────┐ │
│ │ committing │ │
│ └──────┬──────┘ │
│ ▼ │
│ ┌─────────────┐ │
│ │ pushing │ │
│ └──────┬──────┘ │
│ ▼ │
│ ┌─────────────┐ │
│ │ synced │── 5s ──┘
│ └─────────────┘
│
│ ┌─────────────┐
├─────┤ pulling │ (inicio o push rechazado)
│ └─────────────┘
│
│ ┌─────────────┐
├─────┤ conflict │ → usuario resuelve → syncing → synced
│ └─────────────┘
│
│ ┌─────────────┐
├─────┤ offline │ → red de vuelta → reintentar
│ └─────────────┘
│
│ ┌─────────────┐
├─────┤ timeout │ → usuario clic Retry
│ └─────────────┘
│
│ ┌────────────────┐
└─────┤ token-expired │ → tarjeta re-autorizar
└────────────────┘
Esto es lo que significa cada estado en la IU:
| Estado | Etiqueta barra estado | Lo que significa |
|---|---|---|
| idle | "Sincronizado · hace 2 min" | Nada pendiente, último commit fue limpio |
| pending | "Pendiente..." | Tienes cambios sin guardar; el timer de commit se activará en el siguiente intervalo |
| committing | "Sincronizando..." | Un commit de Git está en progreso localmente |
| pushing | "Empujando..." | Commit local completo; empujando a GitHub |
| pulling | "Extrayendo..." | O sincronización de inicio, o el push fue rechazado y estamos extrayendo primero |
| syncing | "Sincronizando..." | Terminando un rebase tras resolución de conflicto |
| synced | "Sincronizado · justo ahora" | Éxito recién completado; se muestra durante 5 segundos, luego vuelve a idle |
| conflict | "Conflicto de sincronización" | Local y remoto ambos editaron el mismo archivo. La IU muestra el flujo de resolución de conflictos. |
| error | "Error de sincronización" | Un fallo no de red, no de conflicto (p. ej. fallo de git). Reintenta automáticamente con retroceso exponencial hasta 5 veces. |
| offline | "Sin conexión" | Red inalcanzable. Reintentará en el próximo cambio de archivo o tras 60 segundos. |
| timeout | "Sincronización agotó tiempo" | Un comando git tardó más de 60 segundos (consulta Protección de timeout más abajo) |
| token-expired | "Re-autorizar" | Refresco OAuth falló y el usuario debe reautorizar manualmente |
| installing-app | "Instalando App de GitHub..." | Esperando a que el usuario termine el paso de instalación de la App de GitHub en su navegador |
| creating-repo | "Creando repositorio..." | El flujo de configuración está creando el repo de GitHub y empujando el commit inicial |
Si la barra de estado muestra un spinner, esa es actividad normal en segundo plano. Si es ámbar o roja, consulta la sección Resolución de problemas más abajo.
Auto-refresco OAuth
Las Apps de GitHub emiten tokens de acceso de usuario que expiran cada 8 horas, más un token de refresco que es válido durante 6 meses. SeaMeet gestiona esto por ti para que casi nunca tengas que pensar en ello.
Cómo funciona:
- Cuando SeaMeet está a punto de empujar o extraer,
SyncManager._refreshTokenIfNeeded()comprueba si el token actual expira dentro de los próximos 5 minutos. - Si sí, SeaMeet llama al endpoint
/login/oauth/access_tokende GitHub con el token de refresco almacenado. GitHub devuelve un nuevo token de acceso y rota el token de refresco. SeaMeet escribe ambos de vuelta al archivo de token encriptado en disco. - El comando Git entonces se ejecuta con el token recién refrescado. No ves nada en pantalla — el refresco completo tarda mucho menos de un segundo.
Manejo de fallos transitorios: Si la llamada de refresco falla porque la red es inestable o GitHub devolvió un 5xx (un REFRESH_NETWORK_ERROR), SeaMeet no descarta el token existente. En cambio, la sincronización entra en el estado offline y vuelve a intentar más tarde. Esto importa porque el token existente puede seguir siendo válido durante varios minutos más — descartarlo en un fallo transitorio de red te desconectaría de la sincronización innecesariamente.
Coalescencia de refrescos concurrentes: GitHub rota el token de refresco cada vez que lo usas, así que dos refrescos concurrentes correrían y uno invalidaría al otro. SeaMeet colapsa las llamadas de refresco concurrentes en una sola Promise en vuelo (_refreshPromise) para que la sincronización al inicio y el push-con-reintento nunca peleen por el token rotatorio.
Cuando el refresco realmente falla: Si GitHub devuelve REFRESH_TOKEN_EXPIRED — lo que significa que el token de refresco de 6 meses ha expirado o sido revocado — SeaMeet:
- Elimina el archivo de token encriptado del disco
- Entra en el estado terminal
token-expired - Muestra una tarjeta ámbar en Sync Settings:
┌──────────────────────────────────────────────────────┐
│ ⚠ La autorización de GitHub ha expirado. Por favor │
│ reautoriza para reanudar la sincronización. │
│ │
│ [ ↻ Re-autorizar GitHub ] │
└──────────────────────────────────────────────────────┘
Haz clic en Re-autorizar GitHub. Se te envía de vuelta por el flujo OAuth — pero como la App de GitHub ya está instalada, es un solo clic para confirmar y terminas en unos 10 segundos. SeaMeet luego elimina cualquier token obsoleto de tu git config local (el token antiguo puede estar incrustado en la URL de origin) antes del siguiente push, para que no entres en bucle con una credencial muerta.
Protección de timeout de sincronización
Los comandos de Git pueden colgarse para siempre si una red se queda en silencio a mitad de transferencia — un socket TCP puede sentarse en un estado medio-abierto sin levantar nunca un error. SeaMeet envuelve cada push y pull de Git en un timeout AbortController de 60 segundos.
Si un push o pull no se completa en 60 segundos, SeaMeet:
- Aborta el subproceso git
- Entra en el estado
timeout - Muestra una tarjeta ámbar en Sync Settings:
┌──────────────────────────────────────────────────────┐
│ ⚠ La sincronización agotó el tiempo. Esto puede ser │
│ causado por un problema de red o autorización │
│ GitHub expirada. │
│ │
│ [ ↻ Reintentar ] [ Re-autorizar GitHub ] │
└──────────────────────────────────────────────────────┘
Reintentar ejecuta commitNow de nuevo. Este es el botón correcto para hacer clic si crees que tu red simplemente se cayó brevemente. Re-autorizar GitHub ejecuta el flujo OAuth de nuevo; haz clic en esto si el timeout sigue ocurriendo, lo que normalmente significa que tu token es el problema en lugar de la red.
El estado vuelve a idle automáticamente tras unos 30 segundos incluso si no haces clic en nada — la sincronización reintentará en el próximo cambio de archivo.
Resolución de conflictos
Un conflicto ocurre cuando el mismo archivo ha sido editado en dos dispositivos desde la última sincronización. Ejemplo: escribiste un párrafo en meetings/2026-06-03-standup.md en tu portátil, luego editaste el mismo párrafo en la máquina de un amigo. Cuando el segundo dispositivo empuja, GitHub rechaza el push porque los historiales divergen.
SeaMeet maneja esto:
- Extrayendo los cambios remotos con un rebase
- Detectando los marcadores de conflicto de fusión
- Entrando en el estado
conflict - Mostrando el conflicto en la barra de estado de la barra lateral (que se vuelve clicable) y en el panel de conflictos de Sync Settings
El modal de resolución de conflictos
Hacer clic en la barra de estado cuando la sincronización está en conflict abre el Modal de resolución de conflictos:
┌──────────────────────────────────────────────────────────┐
│ ⚠ Conflicto de sincronización 1 / 2 [×] │
├──────────────────────────────────────────────────────────┤
│ │
│ "2026-06-03-standup.md" fue cambiado en otro dispositivo│
│ │
│ ┌────────────────────────┐ ┌────────────────────────┐ │
│ │ ✎ Editar manualmente │ │ ✦ Fusión con Agente │ │
│ └────────────────────────┘ └────────────────────────┘ │
│ │
└──────────────────────────────────────────────────────────┘
Tienes dos opciones:
Editar manualmente — abre el archivo de conflicto en el editor predeterminado de tu sistema con los marcadores estándar de Git <<<<<<< / ======= / >>>>>>> en su lugar. Edita el archivo para resolverlos, guarda, luego vuelve a SeaMeet y haz clic en Done. SeaMeet pone en stage el archivo resuelto y continúa el rebase.
Fusión con Agente (solo BYOK Pro, requiere Agente de IA configurado) — envía ambas versiones a tu Agente de IA configurado (GitHub Copilot o Claude Code, consulta Capítulo 36: Guía de configuración de BYOK) y le pide que produzca una versión fusionada que mantenga la intención de ambos lados. La salida del agente se pone en stage automáticamente; verás un spinner "Terminando sincronización..." mientras se completa el rebase.
Si hay varios conflictos a la vez, el modal muestra un contador (1 / 2, 2 / 2) y flechas chevrón en el panel de conflictos de Sync Settings para que puedas avanzar por ellos uno a la vez.
Las opciones "Mantener mías" / "Mantener suyas" / "Mantener ambas" surgen como elecciones naturales cuando estás dentro del editor manual: deja solo el texto de tu versión entre los marcadores, solo el texto de la versión remota, o intercala ambas. El botón Fusión con Agente efectivamente hace "mantener ambas, de forma inteligente".
¿Qué pasa si cometes un error? Los conflictos de sincronización son no destructivos. Git mantiene el contenido original "nuestro" y "suyo" en el índice, y
getConflictVersions(filePath)puede recuperar cualquiera en cualquier punto durante la resolución. No perderás trabajo accidentalmente.
El panel Sync Settings
Una vez que estás conectado, Sync Settings (Configuración → Sync) te da una sola pantalla con todo en un solo lugar:
┌─────────────────────────────────────────────────────────────┐
│ ✓ Sync & Backup │
│ Tus notas y wiki se sincronizan automáticamente a GitHub. │
│ Las grabaciones de audio, vídeo y capturas de pantalla no │
│ se sincronizan. │
├─────────────────────────────────────────────────────────────┤
│ ⓘ https://github.com/you/seameet-work-notes │
│ 🕒 Última sync: hace 4 minutos │
├─────────────────────────────────────────────────────────────┤
│ Auto-sync [ ON ◉ ] │
│ Intervalo de sincronización [ 5 min ▾ ] │
│ Rama main │
│ Última sync hace 4 minutos│
├─────────────────────────────────────────────────────────────┤
│ Auto-sync al hacer cambios [ ON ◉ ] │
│ Sync al iniciar [ ON ◉ ] │
├─────────────────────────────────────────────────────────────┤
│ [ ⤓ Sincronizar ahora ] │
├─────────────────────────────────────────────────────────────┤
│ [ ↗ Ver en GitHub ] [ Desconectar ] │
└─────────────────────────────────────────────────────────────┘
Los controles, de arriba a abajo:
- Auto-sync — alternador maestro para el timer de commit en segundo plano. Off significa que SeaMeet solo confirma cuando haces clic en Sincronizar ahora.
- Intervalo de sincronización — con qué frecuencia se activa el timer de commit. Las opciones son 1 / 5 / 10 / 30 minutos. El predeterminado es 5 minutos. Un intervalo de 1 minuto está bien para toma de notas activa; 30 minutos es bueno para workspaces de baja edición donde prefieres agrupar commits.
- Rama — la rama de Git a la que sincroniza SeaMeet. Casi siempre
main. Solo lectura en la IU. - Última sync — marca de tiempo relativa del último push exitoso.
- Auto-sync al hacer cambios — cuando está activo, los empujes ocurren inmediatamente después de cada commit local (el caso típico). Cuando está apagado, SeaMeet confirma localmente pero solo empuja cuando haces clic en Sincronizar ahora. Útil si quieres agrupar empujes (p. ej. en una conexión medida).
- Sync al iniciar — cuando está activo, SeaMeet extrae de GitHub en el momento en que la app se lanza. Recomendado a menos que tengas una conexión muy lenta.
- Sincronizar ahora — fuerza un ciclo de commit-y-empuje inmediato. No espera al timer. Útil antes de cerrar tu portátil.
- Ver en GitHub — abre el repo en tu navegador.
- Desconectar — borra el token OAuth almacenado, elimina el archivo de token encriptado y quita
originde tu repo Git local. Tus archivos Markdown locales y el historial de Git no se tocan — solo se corta el vínculo con GitHub.
Qué se sincroniza (y qué no)
Esto está documentado en el índice de la parte, pero vale la pena repetirlo aquí:
| Sincronizado | No sincronizado |
|---|---|
Notas (archivos .md) | Grabaciones de audio (.webm, .mp3) |
Páginas de wiki (archivos .md) | Grabaciones de vídeo (.webm, .mp4) |
| Manifiestos de grabaciones (JSON de metadatos) | Capturas de pantalla (.png, .jpg) |
| Resúmenes y transcripciones de IA | Generaciones de IA en caché |
| Grafo de wikilinks | Configuración de la app |
.gitignore | Estado de borrador del editor |
El .gitignore que SeaMeet escribe excluye todas las categorías binarias grandes. Esto es intencional: los repos privados gratuitos de GitHub tienen un límite de 1 GB, y un vídeo de 30 minutos lo consumiría por sí solo. SeaMeet mantiene los medios en tu disco local y sincroniza solo el Markdown ligero.
Si quieres sincronización completa de medios, ese es el nivel Sync Pro — consulta el Capítulo 35.
Resolución de problemas
"Authorization failed" justo después de hacer clic en Set Up GitHub Sync
Causas y soluciones:
- Bloqueador de ventanas emergentes — si no se abrió ninguna ventana del navegador, tu SO o navegador puede haber bloqueado el lanzamiento. Haz clic en Set Up GitHub Sync de nuevo y confirma cualquier solicitud emergente.
- Denegaste los permisos de la App de GitHub — vuelve por el flujo y acepta los ámbitos
contents: write+administration: write. Sinadministration: write, SeaMeet no puede crear el repo por ti. - Error de desajuste de estado — cierra cualquier otra ventana de SeaMeet que pueda estar compitiendo por el mismo flujo OAuth, luego reintenta.
Error de "Repo permissions" durante la configuración
El error dice algo como "GitHub App has 'contents: read' permission, but needs 'contents: write'." Esto significa que instalaste una versión más antigua de la App.
Solución:
- Abre github.com/settings/installations
- Encuentra SeaMeet en la lista y haz clic en Configure
- Bajo Repository permissions, cambia Contents y Administration a Read and write
- Guarda, luego desinstala y reinstala la app — GitHub solo aplica nuevos permisos al reinstalar
- Vuelve a ejecutar Set Up GitHub Sync en SeaMeet
"Could not reach GitHub" / sincronización atascada en "Offline"
Fallo de red. SeaMeet reintentará automáticamente cuando:
- Hagas cualquier cambio de archivo (activa un intento de reintento inmediato)
- Pasen 60 segundos desde el último reintento
Si tu red está de vuelta y la sincronización aún muestra Offline tras un par de minutos:
- Haz clic en Sincronizar ahora para forzar un reintento
- Si eso agota el tiempo: comprueba que tu firewall no esté bloqueando github.com
- Como último recurso, reinicia SeaMeet — la sincronización de inicio se activará en el lanzamiento
Sincronización atascada en "Pending"
Esto normalmente significa que el timer de auto-commit aún no se ha activado. Por defecto se activa cada 5 minutos. ¿No quieres esperar? Haz clic en Sincronizar ahora.
Si Sincronizar ahora no mueve la sincronización más allá de Pending, comprueba:
- ¿Estás en un nivel de facturación que incluya sincronización? Abre Sync Settings — si ves el banner de suscripción, la sincronización está deshabilitada en la capa de derechos.
- ¿Hay cambios sin confirmar fuera del árbol Markdown? El timer de auto-commit solo se activa cuando
_pendingChangesno está vacío.
"Veo la tarjeta token-expired"
Este es el final esperado del ciclo de vida del refresco OAuth — tu token de refresco de 6 meses expiró, o revocaste la App de GitHub, o cambiaste tu contraseña de GitHub (lo que invalida todos los tokens OAuth).
Solución: haz clic en Re-autorizar GitHub en la tarjeta. El flujo es el mismo que la configuración inicial pero salta el paso de instalación de la App de GitHub (ya la tienes instalada). Tarda unos 10 segundos.
El panel de resolución de conflictos no se cierra
El panel solo se cierra una vez que todos los conflictos en la lista están resueltos. Si ves el contador (1 / 3), usa las flechas chevrón en el panel de conflictos de Sync Settings para avanzar por los archivos restantes. Cada uno necesita una resolución explícita (edición manual + Done, o Fusión con Agente).
Si el panel insiste en que hay conflictos pero no ves marcadores en tus archivos, haz clic en Sincronizar ahora — un estado conflict obsoleto se borrará en el próximo intento de sincronización exitoso.
Bucles de "Push rechazado"
Si la sincronización alterna entre pushing y pulling repetidamente, GitHub está rechazando tus empujes porque el remoto sigue moviéndose por delante. Esto puede suceder si:
- Otra instancia de SeaMeet está ejecutándose contra el mismo repo y empujando más rápido de lo que esta puede alcanzar — cierra la otra instancia.
- Alguien (o alguna herramienta) está confirmando al repo de GitHub desde fuera de SeaMeet — pausa la herramienta externa hasta que tu clon local se ponga al día.
Notas de seguridad
Dónde se almacena el token OAuth: en el llavero de tu SO vía la API safeStorage de Electron. En Windows eso es DPAPI, en macOS es Keychain Services, en Linux es libsecret. El blob encriptado se escribe en <userData>/github-token.enc con modo de archivo 0o600. El archivo contiene el token de acceso, el token de refresco, la marca de expiración y el ID de cliente de la App de GitHub, el secreto de cliente y el slug.
Lo que no se almacena en argv: el token OAuth nunca se pasa como argumento -c http.extraHeader=... a git, porque argv es visible para otros usuarios vía ps aux. En su lugar, el encabezado de Authorization se inyecta a través de la variable de entorno GIT_CONFIG_PARAMETERS, que es privada del proceso. Otros usuarios en la misma máquina no pueden ver tu token.
Lo que acaba en disco en el repo: archivos Markdown sin formato. Sin tokens, sin secretos, sin credenciales. El .gitignore excluye los archivos multimedia, pero aún deberías evitar pegar secretos en los cuerpos de las notas — esos se sincronizarán.
Revocar acceso: para cortar inmediatamente el acceso de SeaMeet a un repo, desinstala la App de GitHub de SeaMeet en github.com/settings/installations. El próximo intento de sincronización fallará con token-expired y SeaMeet borrará su token local. Tus notas locales no se tocan.
Referencia rápida
┌─────────────────────────────────────────────────────────────┐
│ GITHUB SYNC │
│ Referencia rápida │
├─────────────────────────────────────────────────────────────┤
│ Abrir Sync Settings │ Configuración → Sync │
│ Configuración inicial │ Clic en "Set Up GitHub Sync" │
│ Ámbitos requeridos │ contents: write, admin: write │
│ Nombrado de repo │ Un repo privado por workspace │
├─────────────────────────────────────────────────────────────┤
│ Intervalo sync predet.│ 5 minutos (1 / 5 / 10 / 30) │
│ Forzar una sync │ Botón "Sincronizar ahora" │
│ Auto-sync al push │ On (alternador en Sync Settings) │
│ Sync al iniciar │ On (alternador en Sync Settings) │
├─────────────────────────────────────────────────────────────┤
│ Margen refresco OAuth │ 5 minutos antes de expiración │
│ Timeout comando git │ 60 segundos (AbortController) │
│ Límite auto-reintento │ 5 intentos, retroceso exp. │
│ Almac. de token │ Llavero del SO (safeStorage) │
├─────────────────────────────────────────────────────────────┤
│ IU conflicto │ Clic barra estado al estar en confl.│
│ Resolución manual │ Editar marcadores → Done │
│ Fusión con Agente │ BYOK Pro + Agente de IA configurado│
├─────────────────────────────────────────────────────────────┤
│ Desconectar │ Sync Settings → Desconectar │
│ Revocar de GitHub │ github.com/settings/installations │
│ Ver repo │ Enlace "Ver en GitHub" │
└─────────────────────────────────────────────────────────────┘
Última actualización: 2026-06-04
← Capítulo 37: Proveedor GitHub Copilot | (fin del manual — vuelve al Índice)
Published: