Skip to content

Releases: Zack-Will/interleaf

Interleaf 0.3.0

Choose a tag to compare

@Zack-Will Zack-Will released this 17 Oct 14:14

Images: ghcr.io/<owner>/interleaf:6.3.0, ghcr.io/<owner>/git-bridge:6.3.0,
built on ghcr.io/<owner>/interleaf-base:6.3.1; also published as
docker.io/zackwill/interleaf:6.3.0, docker.io/zackwill/git-bridge:6.3.0 and
docker.io/zackwill/interleaf-base:6.3.1.

Based on Overleaf Community Edition 6.3.1 (public commit e039ad26c5 plus the
6.3.1 hotfix patches), up from a pre-6.2.1 main snapshot. The image now runs
Node.js 24 and TeX Live 2026. No database migrations; upgrading is a change of
config/version after the usual backup.

Changed

  • MCP and git-bridge writes send their origin in the shape history stores it
    in; the 6.3 services validate origins strictly and rejected the extra
    revert / merge fields. editor-core's origin schema knows the mcp kind.
  • document-updater: the tracked-change write moved from POST .../doc/:doc_id
    with track_changes to POST .../doc/:doc_id/suggest, built on upstream's
    own tracked setDoc. Adding a comment and rejecting changes keep their
    routes, now served from ReviewApiController.
  • document-updater's setDoc accepts an origin object as source again; 6.3
    only accepted a string, which made edit_file and revert_to fail.
  • The image is built on interleaf-base, built in this repository from
    upstream's Dockerfile-base plus the TeX Live collections
    (build-image.yml with build_base), because upstream no longer publishes
    its base image. A release now replaces only the application layers.

Internal

  • Fewer edits to upstream files, to make upstream merges smaller: module
    settings live in services/web/config/settings.interleaf.js, the review
    panel's track-changes setter moved into the review module, and the history
    panel styles moved into agent-sync.scss. No behaviour change. See
    doc/upstream-sync.md.

Fixed

  • Agent and git-bridge writes no longer open the "Document updated externally"
    dialog in an editor that has the document open. The editor checked
    meta.source, while these writes carry their origin as meta.origin.
  • The first comment or suggestion from the review agent in a project shows the
    agent's name in open editors instead of "Deleted user": adding the agent as a
    collaborator now tells open editors to reload the member list.

See doc/upstream-sync.md for how the fork tracks upstream releases and doc/deploy-toolkit.md for building and deploying.

Interleaf 0.2.1

Choose a tag to compare

@Zack-Will Zack-Will released this 16 Oct 13:26

Images: ghcr.io/<owner>/interleaf:6.2.6, ghcr.io/<owner>/git-bridge:6.2.6,
also published as docker.io/zackwill/interleaf:6.2.6 and docker.io/zackwill/git-bridge:6.2.6.

Fixed

  • server-ce/config/env.sh no longer aborts container start under set -u when
    OVERLEAF_REDIS_PASS (or the web API credentials) are unset. After upgrading,
    the OVERLEAF_REDIS_PASS= workaround can be removed from config/variables.env.
  • Live paragraphs newer than a background pass's snapshot survive the layout
    and move to its new placements. Base PDFs are prefetched and normally switch
    after one second of quiet, including extra live rows that fit on existing pages.
    Visible page pixels and live overlays stay in a separate freeze layer across
    document and zoom resets until each replacement page renders.
  • Missing font glyphs produce deduplicated live warnings with preamble guidance
    and editor gutter markers on affected lines.
  • The compile dropdown has a Live preview section with checked On/Off choices;
    English strings are registered in both locale catalogs.

Changed

  • Layout max-wait adapts to twice the last pass duration, with a 3000 ms floor.
    rtex and its children default to nice 10 and at most two allowed CPUs when
    taskset is available. Each setting is configurable.
  • Viewerless live sessions now stop after 120000 ms (two minutes).
  • The image workflow also pushes to Docker Hub when the DOCKERHUB_USERNAME and
    DOCKERHUB_TOKEN secrets are set; mirror-dockerhub.yml copies an existing
    GHCR tag there without rebuilding.

Interleaf 0.2.0

Choose a tag to compare

@Zack-Will Zack-Will released this 16 Oct 13:26

Images: ghcr.io/<owner>/interleaf:6.2.5, ghcr.io/<owner>/git-bridge:6.2.5.

Opt-in LuaLaTeX live preview, with collaborative paragraph updates and complete
background page passes. rtex is pinned to release interleaf-0.0.3-2.

Added

  • Live preview in the Recompile menu, PDF paragraph overlays, source gutter
    markers, live diagnostics, collaborator outlines and independent detached
    preview connections. Normal Recompile and PDF downloads continue through CLSI.
  • A gated web module, separate supervised rtex service and shared protocol
    library, with private project snapshots and project-bound opening/access tokens.
  • Session budgets, viewerless LRU eviction, idle cleanup, crash recovery and Retry.
  • Chinese ctexbook/Fandol acceptance, real-paper memory measurements and operator
    guidance in doc/live-preview.md and doc/deploy-toolkit.md.

Fixed

  • Snapshot materialization rejects unsafe paths and symbolic links, bounds file
    counts/downloads, and replaces source files without changing retained hard links.
  • A trusted LuaLaTeX wrapper reasserts paranoid input/output and disabled shell
    escape after rtex's native environment overrides.
  • Preview sockets enforce origin, connection, incoming-message and heartbeat
    limits; PDFs and glyphs require fresh authorized requests and prevent stale caches.
  • Preview nginx preserves public Host ports for same-origin WebSocket connections
    through proxies using nonstandard ports.
  • Source-service outages report Failed without restart loops, and startup removes
    disposable session directories left by an earlier service process.
  • Deployment docs: CE toolkit installs must override GIT_BRIDGE_API_BASE_URL
    to http://sharelatex/api/v0/; the toolkit's default port 3000 does not serve the
    git-bridge API on CE, which made every clone fail with 403.

Interleaf 0.1.1

Choose a tag to compare

@Zack-Will Zack-Will released this 01 Oct 04:34

Images: ghcr.io/<owner>/interleaf:6.2.4, ghcr.io/<owner>/git-bridge:6.2.4.

MCP usability and safety fixes from an external evaluation of the tools
through the claude.ai connector (issue ids H1–H3, M1–M10, L1–L5 refer to that
evaluation).

Breaking

  • write_files refuses to overwrite an existing file unless the call
    passes overwrite: true (H3). New files and deletes need nothing;
    base_version keeps its conflict check. The error code is file_exists.
    revert_to, merge_branch and git pushes are not affected.
  • read_file leaves pending suggestions out by default (M8). The text
    reads as if every pending tracked change were rejected; pass
    include_suggestions: true for the live text, which edit_file works on,
    and the list of pending suggestions.
  • read_file no longer returns lines (L4); the numbered content string
    is the one content form.
  • write_files returns project_version; version is kept as a deprecated
    alias and will be removed in the next release (M7).
  • diff with a path returns a unified diff string instead of project-history's
    internal parts; without a path it lists only changed files (L1).
  • diff_branch lists only changed files (unchanged_count counts the rest);
    merge_branch names the files it writes or deletes instead of returning
    their merged content (L3).
  • list_history entries have a new shape shared by labels and updates (L2).
  • comments_affected reports a comment shifted along its own line as
    unchanged rather than moved (L5).
  • Error results have a multi-line text (error: <code> … next_action: …)
    instead of the bare message.
  • archive_branch needs write access to the parent project, not just read.

Fixed

  • replace_section stops at the back matter: \appendix,
    \bibliographystyle, \bibliography, \printbibliography,
    \begin{thebibliography}, an appendix \input and \end{document} are no
    longer replaced with the last section (H1). Every edit reports
    replaced_lines; a replacement that removes at least 5 more lines than it
    adds, and at least twice as many, carries a warning.
  • list_history returned updates without versions, time or users, because it
    read the wrong field names from project-history (L2).
  • A read-only collaborator could archive another user's branch.

Added

  • The edits schema of edit_file and suggest_edits is a union on type,
    one variant per edit type with its own described fields, and the tool
    descriptions carry an example of each (H2).
  • New edit type insert_at_anchor with side: "before" | "after" (H2).
  • Edits are validated before any runs; an unknown type lists the valid ones,
    a missing field is named, and every error names the failing edits[i]
    (edit_index) (M1, M4). An out-of-range occurrence says how many matches
    exist.
  • replace_section without level matches any heading level; several matches
    are an error listing each heading's level and line (M2). new_text must
    start with the heading line, as documented (M3).
  • Version conflicts carry current_version and changed_paths, the files that
    changed since base_version (M5).
  • Every write tool returns project_version, including the comment and
    suggestion tools (M7).
  • add_comment and reanchor_comment take occurrence (from 1) and use
    start_line / end_line next to exact or start_with_ellipsis to narrow
    the search (M9).
  • Branch tools take a branch name together with project; a project name
    where an id belongs lists same-named projects as candidates (M10).
  • list_projects returns last_updated and sorts newest first.
  • Every error's text carries its code, message, details and next_action,
    because some clients show the model only the text of a tool result.
  • Every timestamp in a tool result is ISO 8601 (L4).
  • Every tool description says what it returns; agent and act_as_agent are
    described.

Not changed

  • The write lock stays per project (M6); conflicts now name the changed files
    instead.

Interleaf 0.1.0

Choose a tag to compare

@Zack-Will Zack-Will released this 13 Sep 09:26

Interleaf is Overleaf Community Edition with an AI agent as a first-class collaborator. This is the first release.

What it adds

  • A built-in MCP endpoint at POST /mcp, stateless and authenticated with a personal access token. An agent reads and writes files, follows the history, opens and merges branches, reads review comments and replies to them, and offers edits as tracked changes for a person to accept or reject.
  • Comment-driven collaboration. The review panel exists in the Community Edition source but is switched off; this turns it on, adds the web routes it needs, and gives an agent its own service account so a thread reads as a conversation between named participants. Comments survive rewrites of the text they anchor to.
  • A readable change history. Every agent write carries the client name and the message it sent, shown under the author line. Labels stay what they are upstream, milestones a human chose, rather than one per machine edit.
  • Git access on Community Edition. The web half of the official Java git-bridge, written from scratch; the bridge itself is upstream's MIT-licensed service, built from source in this repository.
  • One-way GitHub backup. Link a project to a repository and its history is mirrored there on a schedule or on demand, fast-forward only, tokens encrypted at rest.
  • TeX Live scheme-full in the image, installed in groups so the layers stay pullable on a slow link.

Images

Image Contents
ghcr.io/<owner>/interleaf:6.2.3 Community Edition plus the modules above, with full TeX Live
ghcr.io/<owner>/git-bridge:6.2.3 Upstream's MIT-licensed Java bridge, built from source

Image tags follow the Overleaf release the image is built from, because the Overleaf Toolkit requires a version-shaped tag and derives the bridge tag from the same string. Project releases are tagged interleaf-vX.Y.Z in git.

Installing

doc/deploy-toolkit.md has the full runbook, including the one patch the Overleaf Toolkit needs before it will run git-bridge outside Server Pro. doc/agent-sync-usage.md covers tokens, the MCP tools and the comment workflow.

Fixes carried in this build

Two bugs that stock Community Edition shares: the production image installs only runtime dependencies, so a package imported at runtime must not sit in devDependencies; and server-ce/config/settings.js assigned the link-sharing encryptor options onto module.exports before the file replaces it, so OVERLEAF_INVITE_TOKEN_SECRET never took effect.

Relationship to Overleaf

An independent fork of overleaf/overleaf, not affiliated with or endorsed by Overleaf. No Server Pro source was used. Licensed AGPL-3.0, the same as upstream.