Edit together, live
Everyone with a file open is in the same document, as in Overleaf. Typing appears in the other editors as it happens, in the LaTeX and Visual views alike, and each collaborator's caret and selection show in their colour, labelled with their name while they type or when you point at it. Nobody's work waits for anyone else's save, and two people typing in one paragraph both keep what they wrote.
The header shows a chip for each person in the workspace. Point at one for their name and the file they are in; click it to go to their cursor, in the LaTeX or, during a rebuttal, in the Response view. Files others have open carry a small dot in their colour in the file tree and on the tab. Your own chip, on the right, sets the name and colour everyone sees on your cursor; so does Settings → Your name & colour, with a preview. A guest's name is also the one on their comments. Both are remembered on that device.
Saving. The status line reads Saving… while the host has not yet written your latest typing, and All changes saved once it has: saved means the host wrote it to the manuscript file, not that your browser has it. Typing is written a moment after it arrives, never once per keystroke. ⌘S waits until everything you typed is on disk. Compiling first writes everybody's typing, so the PDF shows what the whole team sees.
Offline. If the connection drops, you keep typing; the status line says Offline · edits kept here and the work is also kept on the device. When the connection returns, your edits are sent and merged with what others did meanwhile. If the host restarted in between, your unsaved typing is added to its current version once, never twice.
Undo is per person: ⌘Z undoes your own edits, never a collaborator's typing that landed in between. ⇧⌘Z redoes.
Agents and other programs. An agent's edit, a save from another editor, a restore or a replace across files reaches every open editor straight away, merged with whatever is being typed. An agent's edit arrives as a tracked change in its name; other outside writes have their lines marked as written from outside.
Tracked changes. With Track changes on (⌘ShiftE), your edits are recorded in your colour for the others to accept or reject, and everyone sees the same markup live. The Review tab lists what is pending. See tracked changes.
Renames and deletes. Renaming a file others have open moves their tab to the new name, with their typing. Deleting it closes the live document; whoever had it open keeps their text as an unsaved buffer, and ⌘S writes it back.
What each level can do
| Level | In a shared workspace |
|---|---|
| Read only | Follow the files live as others type, with their cursors; browse the file tree, outline and search; read the PDF and the threads; figures and bibliography; version history when it is shared. |
| Comment | All of that, and start, answer and resolve threads. |
| Suggest edits | All of that, and edit the files in scope live, as tracked changes only: everything they type or delete is recorded in their name for someone with write access to accept or reject. They can withdraw (reject) their own changes, not accept anything. Files out of scope stay a live read-only view. |
| Full editing | All of that, and type into the files in scope live with everyone else, tracking their changes when they choose, and accept or reject anyone's tracked changes in those files; create files where allowed; rename and delete files in scope (whole folders only with access to every file); compile and read the build log when compiling is allowed; replace across the files in scope; save named versions when history is shared. |
Whatever the level, the owner's settings, credentials, agent accounts, external agents, SSH connections, share and tunnel controls, and the workspace library stay with the owner. Files outside a link's scope open read-only, and hidden project records are never shared.
Turn live editing off
Live co-editing is on for every workspace, a single local user included. To go back to whole-file saving with conflict checks for one workspace, add "collaboration": { "liveEditing": false } to its .versofold.json, then reopen the workspace or restart the service; for a whole service, start it with VERSOFOLD_LIVE_EDITING=0. Editors then save each file as a whole about half a second after typing stops and show a conflict when someone else changed it meanwhile. Files already open reload that way in place.
Hosted and desktop collaboration
Hosted mode runs a service bound to one workspace with authenticated invitations. Desktop can open supported workspace links and preserve connection entries. Role and invitation grants govern what a collaborator can access, and live editing works the same way there: the service holds the shared documents, so collaborators keep editing together while the owner's laptop is closed. Each saved connection opens its window at the same local address every time, so that window keeps its layout.
An offline desktop/review copy is not a live connection to the host. Inspect whether work is local, connected, pending import or awaiting review before assuming others have received changes. Back up the host's complete workspace and data according to your deployment setup.
The repository's operator documentation covers service installation and hosting configuration. The user-facing workflow remains: create an invitation, inspect its scope, open it on the collaborator's device, and review proposed changes deliberately.
Send an offline review file
Share → Save review file exports a self-contained HTML reader with the PDF, selected review content and permitted source where configured. The recipient opens it without a running VersoFold server.
The export follows its review level. Comment mode enables discussions; source-editing levels can include the document's relevant source files with locked files marked accordingly. The offline source editor supports ordinary navigation and editing, but it does not provide a full local TeX installation.
The reviewer uses Save my work to return a JSON response, or its copy option. Use Read their comments back to import it. Imported edits remain proposals for author review even if the file claims an editing permission; a returned file does not automatically overwrite the manuscript. They wait in Review → Compare with approved version. With live editing switched off, a suggest link works the same way: its edits are kept aside as a proposal instead of tracked changes.
Exchange Word edits and PDF annotations
Open Publish → Word round trip to export a DOCX and inspect returned edits through the app's import workflow. Keep the original export and source baseline so returned changes can be interpreted. LaTeX and Word have different document models; inspect equations, tables, citations and complex formatting after any round trip.
Equations go out as real Word equations: fractions, scripts, roots, sums and integrals with their limits, Greek and the usual symbols, accents, \mathbf-style alphabets, \text, \left…\right, matrices, cases, \operatorname and functions such as \sin. The document's own \newcommand and \DeclareMathOperator macros are expanded first. An align keeps its lines lined up at &. A labelled equation carries the number the last build gave it, and \tag prints as written; a line with neither has no number, never a guessed one. An equation VersoFold cannot convert exactly, such as one using an unknown macro or \intertext, stays as its LaTeX text. An equation is generated from the source: an edit inside one, tracked or not, comes back as a note that points at its LaTeX, and is never written into the .tex.
Numbers come from the last build. Citation, figure, table and equation numbers, and the reference list, are what the last compile printed. Before exporting, the panel checks that build against the manuscript's sources. When something changed since, it names what and offers Compile first, then export, which builds and then writes the document, or Export anyway, whose numbers may be out of date. If the document has never been built, citations and cross-references show their keys.
Review tracked-change results before applying them and compile the resulting manuscript. Ask for Track Changes in Word. Tables come back cell by cell; an edit on generated text, such as a citation number or a caption's "Figure 2", is reported rather than written into a \cite key.
Edits made with Track Changes off. VersoFold compares that paragraph word by word with what it exported. Each changed word that sits on manuscript text is offered as Propose this rewrite (made with Track Changes off), with a short before and after; tracked edits in the same paragraph are part of it. Nothing is applied until you tick it, and a ticked rewrite becomes a proposal in Review changes like any other. A change on generated text, across LaTeX markup or across files stays under could not be placed.
Use Import an annotated PDF when the input is PDF margin notes rather than Word source edits. Verify anchors and quoted text after import.
Use Git intentionally
Publish → Git manages the manuscript folder's own repository with status/diff, commit, fetch, pull and push workflows. Inspect changed files before committing and confirm the selected remote/branch before pushing.
This repository is separate from VersoFold's automatic history under .versofold/history.git. An app checkpoint is not necessarily a commit pushed to collaborators. Likewise, restoring an app version does not explain every remote Git merge conflict.
Resolve repository conflicts carefully and recompile. Avoid committing credentials, private conversation exports or large generated data without considering what belongs in that repository.
Export or synchronize with Overleaf
Publish → Overleaf sync can create a source ZIP for uploading as a new project. Use its file selection to inspect what travels; build intermediates, VersoFold's own files and the local compiled PDF never travel.
To keep an existing Overleaf project in sync, paste its Git URL (Overleaf → Integrations → Git) and a Git authentication token (Overleaf → Account Settings). The Git bridge is an Overleaf paid feature. Then switch on Sync automatically. The first sync shows what it will do before anything moves.
Automatic sync is two-way and safe while coauthors keep writing on Overleaf:
It runs every few minutes (choose 1–30), shortly after you edit here, and whenever you press Sync now.
A file changed on one side takes that side's version. A file changed on both sides is merged line by line against the version both last had, so edits to different paragraphs both survive.
When you and a coauthor changed the same lines, the file is held back on both sides and listed under the sync switch (a leaf with a count appears in the header). Show displays the clashing lines; Keep mine or Keep Overleaf's decides those lines, and both sides' edits elsewhere in the file are kept. Every other file keeps syncing meanwhile.
The first sync of a folder that began as an Overleaf download finds the Overleaf version it started from, so edits made on both sides since are merged rather than flagged.
Changing the Git URL switches automatic sync off until you turn it on again and review the first sync with the new project. Files that only share a name with Overleaf's are listed for you to choose, never replaced.
Nothing is force-pushed. A sync that would delete many files at once stops and asks (nothing syncs, in either direction, until you confirm or restore the files), and changes arriving from Overleaf are preceded by a history snapshot, so they can be undone from Versions.
Push or pull by hand remains available: Push makes Overleaf match this folder (replacing edits made there since), Pull does the reverse, and both preview added, changed and deleted files before confirming. The integration uses its own sync clone rather than the manuscript's Git repository.
Pick the right output
A PDF shares the rendered paper. A source ZIP supports rebuilding. An offline review file supports anchored feedback. A Word round trip supports collaborators editing in Word. A web edition presents a public research page. None should be assumed to contain a complete backup of personal references, credentials and device preferences.