ComdTeX

Integraciones

Sincronización en la nube: trae tu propia nube

ComdTeX no corre un servidor de sincronización propio y nunca habla con la API de un proveedor. No hay login ni OAuth. En cambio trata la sincronización en la nube como un truco de sistema de archivos que ya tienes: instala el cliente propio de Dropbox, OneDrive o Google Drive, apunta un vault a una carpeta dentro de la raíz sincronizada, y el cliente sincroniza tus archivos .md/.tex/.bib igual que sincroniza cualquier otra cosa.

Lo que ComdTeX agrega encima es detección, no sincronización. Al iniciar, prueba rutas conocidas (~/.dropbox/info.json, ~/Library/CloudStorage/GoogleDrive-*, ~/Library/CloudStorage/OneDrive*, y equivalentes en la carpeta de usuario en Windows/Linux) y, si tu vault está dentro de una de ellas, muestra una insignia ☁ Sync: <Proveedor> en la barra de estado. Si el mismo proveedor está instalado pero tu vault queda afuera de su carpeta, un banner sugiere moverlo; ComdTeX nunca mueve archivos por ti.

El panel de conflictos lista cada copia de conflicto que creó el cliente de la nube, emparejada con su original, con acciones por entrada: abrir ambas, mantener la mía, usar la copia, borrar la copia, o mostrarla en el explorador de archivos. La detección de conflictos se basa en patrones de nombre de archivo:

ProveedorPatrónConfianza
Dropboxnombre (conflicted copy AAAA-MM-DD).extAlta
OneDrivenombre-DISPOSITIVO.ext, solo se marca cuando existe un archivo hermano sin el sufijoHeurística
Google DriveNo detectableLimitación documentada

Esa última fila es una limitación honesta, no un descuido: Google Drive para Escritorio no crea archivos de copia de conflicto. Cuando dos dispositivos compiten, Drive se queda en silencio con la versión subida más recientemente y guarda la otra en su propio historial de versiones, algo que ComdTeX no tiene forma de ver. Si necesitas garantías más fuertes que “gana el último en escribir”, pon el vault también bajo Git; la sincronización en la nube queda como respaldo rápido, y Git es tu historial real.

Configuración → Sync tiene dos interruptores independientes: cloudSyncDetectEnabled (interruptor maestro de la detección, la insignia y las marcas en el árbol de archivos) y cloudSyncBannerEnabled (solo el banner de sugerencia “mover a la nube”). Recorrido completo: docs/cloud-sync.md en el repositorio de la app.

Git y colaboración guiada

El panel de Git (el botón de rama en la barra superior) te da rama, cambios preparados/sin preparar, commit, push, más las superficies habituales: ramas, remotos, stash. Funciona en cualquier vault que ya sea un repositorio Git, o se convierte en uno con un clic si todavía no lo es.

Encima de eso está la colaboración guiada, una sección en lenguaje simple para coautores que no saben Git. Usa los mismos comandos por debajo, pero habla en términos de “guardar y enviar” y “traer cambios” en vez de commit y pull:

EstadoQué significaQué presionar
Trabajo sin guardar en el historialEscribiste algo desde el último punto de guardadoGuardar y enviar
N cambios nuevos de tu coautorTe enviaron trabajo que todavía no tienesTraer cambios
N cambios guardados esperando enviarseTus puntos de guardado no llegaron a la copia compartidaEnviar cambios
Al día con la copia compartidaNo hay nada que hacerNada

Configurar la colaboración es un paso único: crea un repositorio privado y vacío (un botón abre GitHub directamente, aunque funciona con cualquier host de Git), pega su dirección, y tu vault se sube y se convierte en la copia compartida. Tu coautor lo clona una vez y abre esa carpeta como vault.

Cuando los dos editan las mismas líneas, traer cambios puede detenerse en un conflicto. La sección guiada lista cada archivo en conflicto con botones Mantener la mía / Usar la suya; para un resultado mixto, abre el archivo directamente y edita entre las marcas <<<<<<< / ======= / >>>>>>>, y luego presiona Terminar la fusión. Recorrido completo: Escribir con alguien más.

Zotero

El Gestor de Citas trae entradas directamente desde una instancia de Zotero en ejecución con el plugin Better BibTeX instalado, a través de su API local JSON-RPC en http://localhost:23119. Sin paso de exportación, sin un .bib intermedio que manejar a mano: eliges la entrada en Zotero y termina en references.bib.

Además de la importación desde Zotero, el Gestor de Citas puede buscar una entrada directamente a partir de un identificador:

IdentificadorFuente
DOICrossRef, y luego DataCite
ID de arXivSe resuelve a través de su DOI (10.48550/arXiv.*)
Bibcode de NASA ADSapi.adsabs.harvard.edu; el token de ADS se guarda en el llavero del sistema operativo, nunca en configuración
Registro de INSPIRE-HEPIDs de registro o URLs explícitas

Obsidian y Overleaf

ComdTeX edita en memoria un formato interno (CMDX), pero lo que queda en disco siempre es .md plano (compatible con Obsidian) o .tex válido (compatible con Overleaf). Puedes tener el mismo vault abierto en Obsidian y en ComdTeX a la vez; los cambios se sincronizan sin fricción porque la conversión es completa, no una aproximación:

En discoEn el editor de ComdTeX
> [!note] Título (callout de Obsidian):::note[Título]
\begin{theorem}[Nombre] (LaTeX):::theorem[Nombre]
\frac{a}{b} (LaTeX)frac(a, b)
\begin{bmatrix}…\end{bmatrix} (LaTeX)mat(…)

Para el panorama completo, incluyendo cómo los bloques especiales exclusivos de ComdTeX (pseudocódigo, diagramas de flujo, tablas de verdad, Graphviz, gráficas, diagramas conmutativos, Excalidraw) se guardan tal cual para que nada se aplane al guardar, ver Obsidian y Overleaf.

Herramientas de línea de comandos opcionales

Desde la v1.3.0 la compilación de PDF no necesita nada externo: el motor LaTeX en WASM incluido (SwiftLaTeX) compila LaTeX real a PDF dentro del propio proceso. Todo lo demás en esta lista es opcional y solo habilita una ruta específica de exportación o respaldo:

HerramientaHabilita
pandocExportación a DOCX, diapositivas Beamer, exportación a Typst (.typ), importación de documentos (.docx, .odt, .tex, .html, .epub, .rst, .org, …), Markdown → PDF por la ruta que no usa LaTeX. El PDF ya no lo necesita.
typstCompilar la salida Typst de pandoc a PDF, y compilación nativa de archivos .typ abiertos directamente en el vault.
zipRespaldo del vault (exporta como .zip) y exportación de archivo .cmdx.
gitEl panel de Git y la colaboración guiada de arriba.
tectonic / xelatex / pdflatexUn respaldo local opcional de LaTeX: si el motor WASM incluido falla, ComdTeX los prueba en ese orden. También hace falta para SyncTeX real (clic para ir a la fuente desde el PDF); los PDF compilados con WASM caen a una coincidencia por encabezados porque el motor incluido no genera salida synctex.

ComdTeX prueba pandoc, zip y typst al iniciar y muestra un banner de aviso ámbar por cada uno que falte; cada aviso se puede descartar por herramienta y ese descarte persiste entre sesiones. La detección corre a través del plugin de shell de Tauri, que cachea el PATH al iniciar, así que una herramienta instalada después de abrir ComdTeX necesita un reinicio para que se detecte. Instrucciones de instalación por plataforma: docs/installing-deps.md.

Actualizador automático

ComdTeX revisa si hay actualizaciones automáticamente al iniciar. Si hay una versión más nueva disponible, aparece un banner dentro de la app, sin necesidad de visitar GitHub. Todos los artefactos de cada release están firmados con minisign, y el actualizador verifica esa firma antes de aplicar cualquier actualización, así que una actualización solo puede instalarse si salió firmada por el pipeline de release real.

Integrations

Cloud sync: bring your own cloud

ComdTeX does not run a sync server and never talks to a provider API. There is no login and no OAuth. Instead it treats cloud sync as a filesystem trick you already have: install Dropbox, OneDrive, or Google Drive’s own client, point a vault at a folder inside the synced root, and the client syncs your .md/.tex/.bib files the same way it syncs anything else.

What ComdTeX adds on top is detection, not sync. On startup it probes known paths (~/.dropbox/info.json, ~/Library/CloudStorage/GoogleDrive-*, ~/Library/CloudStorage/OneDrive*, and home-folder equivalents on Windows/Linux) and, if your vault sits inside one, shows a ☁ Sync: <Provider> badge in the status bar. If the same provider is installed but your vault is outside its folder, a banner suggests moving it in; ComdTeX never moves files for you.

The conflicts panel lists every conflict copy the cloud client created, paired with its original, with per-entry actions: open both, keep mine, use the copy, delete the copy, or reveal it in your file manager. Conflict detection is pattern-based on filenames:

ProviderPatternConfidence
Dropboxname (conflicted copy YYYY-MM-DD).extHigh
OneDrivename-DEVICE.ext, only flagged when a sibling without the suffix existsHeuristic
Google DriveNot detectableDocumented limitation

That last row is an honest limitation, not an oversight: Google Drive for Desktop does not create conflict-copy files. When two devices race, Drive silently keeps the most recently uploaded version and stashes the other in its own version history, which ComdTeX has no way to see. If you need stronger guarantees than last-write-wins, put the vault under Git as well; cloud sync stays a fast backup, Git stays the real history.

Settings → Sync has two independent toggles: cloudSyncDetectEnabled (master switch for detection, the badge, and file-tree markers) and cloudSyncBannerEnabled (only the “move into cloud” suggestion banner). Full walkthrough: docs/cloud-sync.md in the app repository.

Git and guided collaboration

The Git panel (the branch button in the top bar) gives you branch, staged/unstaged changes, commit, push, plus the usual surfaces: branches, remotes, stash. It works on any vault that is a Git repository, or becomes one with one click if it isn’t yet.

On top of that sits guided collaboration, a section in plain language for coauthors who don’t know Git. It shares the same underlying commands but speaks in terms of “save and send” and “bring changes” instead of commit and pull:

StateWhat it meansWhat you press
Work not yet saved to the historyYou wrote things since the last save pointSave and send
N new changes from your coauthorThey sent work you don’t have yetBring changes
N saved changes waiting to be sentYour save points haven’t reached the shared copySend changes
Level with the shared copyNothing to doNothing

Setting up sharing is a one-time step: create a private, empty repository (a button opens GitHub directly, though any Git host works), paste its address, and your vault uploads and becomes the shared copy. A coauthor clones it once and opens that folder as a vault.

When both of you edit the same lines, bringing changes can stop on a conflict. The guided section lists each conflicted file with Keep mine / Use theirs buttons; for a mixed outcome, open the file directly and edit between the <<<<<<< / ======= / >>>>>>> markers, then press Finish the merge. Full walkthrough: Write with someone else.

Zotero

The Citation Manager pulls entries directly from a running Zotero instance with the Better BibTeX plugin installed, through its local JSON-RPC API at http://localhost:23119. No export step, no intermediate .bib file to manage by hand: pick the entry in Zotero, and it lands in references.bib.

Alongside Zotero import, the Citation Manager can fetch an entry directly from an identifier:

IdentifierSource
DOICrossRef, then DataCite
arXiv IDResolves via its DOI (10.48550/arXiv.*)
NASA ADS bibcodeapi.adsabs.harvard.edu; the ADS token is stored in the OS keychain, never in settings
INSPIRE-HEP recordExplicit record IDs or URLs

Obsidian and Overleaf

ComdTeX edits an internal format (CMDX) in memory, but what lands on disk is always plain .md (Obsidian-compatible) or valid .tex (Overleaf-compatible). You can have the same vault open in Obsidian and ComdTeX at once; changes round-trip cleanly because the conversion is complete, not an approximation:

On diskIn the ComdTeX editor
> [!note] Title (Obsidian callout):::note[Title]
\begin{theorem}[Name] (LaTeX):::theorem[Name]
\frac{a}{b} (LaTeX)frac(a, b)
\begin{bmatrix}…\end{bmatrix} (LaTeX)mat(…)

For the full picture, including how ComdTeX-only special blocks (pseudocode, flowcharts, truth tables, Graphviz, plots, commutative diagrams, Excalidraw) are stored verbatim so nothing gets flattened on save, see Obsidian and Overleaf.

Optional command-line tools

Since v1.3.0 PDF compilation needs nothing external: the bundled WASM LaTeX engine (SwiftLaTeX) compiles real LaTeX to PDF in-process. Everything else on this list is optional and only unlocks a specific export or backup path:

ToolUnlocks
pandocDOCX export, Beamer slides, Typst export (.typ), document import (.docx, .odt, .tex, .html, .epub, .rst, .org, …), Markdown → PDF via the non-LaTeX path. PDF no longer needs it.
typstCompiling pandoc’s Typst output to PDF, and native compilation of .typ files opened directly in the vault.
zipVault backup (exports as .zip) and .cmdx archive export.
gitThe Git panel and guided collaboration above.
tectonic / xelatex / pdflatexAn optional local LaTeX fallback: if the bundled WASM engine fails, ComdTeX tries these in order. Also required for real SyncTeX (click-to-source in the PDF); WASM-compiled PDFs fall back to heading-based matching since the bundled engine ships without synctex output.

ComdTeX probes for pandoc, zip, and typst on startup and shows an amber warning banner for whichever is missing; each warning is dismissible per tool and the dismissal persists across sessions. Detection runs through the Tauri shell plugin, which caches PATH at startup, so a tool installed after ComdTeX was launched needs a restart to be picked up. Install instructions per platform: docs/installing-deps.md.

Auto-updater

ComdTeX checks for updates automatically on startup. If a newer version is available, an in-app banner appears with no need to visit GitHub. All release artifacts are signed with minisign, and the updater verifies that signature before applying any update, so an update can only install if it was built and signed by the real release pipeline.