Skip to content

Task how-to - Project publishing

How to turn a public repository into a PDF project

Paste a public GitHub, GitLab.com, or Hugging Face link, import a bounded local copy, review its publishing files, and export without granting repository access.

Review method

Exercised the documented public-repository intake contract and inspected the bounded detached project produced in the browser.

Paste a public GitHub, GitLab.com, or Hugging Face repository, folder, or file URL into Import from public link. Lemmafour recognizes the provider, resolves the current revision, selects supported publishing files within fixed safety limits, and creates an editable local project in the browser.

No provider account is required. The importer does not ask for an access token, clone private history, or gain permission to write to the repository. It reads public HTTPS resources and turns them into a detached project copy.

The importer accepts three useful scopes:

Link scopeResult
RepositoryImports supported publishing files from the project root
FolderImports the selected subdirectory as the project root
Individual fileImports one Markdown, Quarto, or notebook source with the files the provider contract can resolve for that scope

Start with the folder that actually contains the report, documentation, book, or notebook collection. A machine-learning repository might contain model checkpoints, environments, raw datasets, and build outputs that have no place in a PDF project. Selecting /docs, /report, or a specific notebook avoids unnecessary provider requests and makes the resulting Files view easier to understand.

Supported providers are deliberately explicit:

  • GitHub repository, tree/folder, and blob/file links;
  • GitLab.com project, tree/folder, and blob/file links, including nested namespaces;
  • Hugging Face model, dataset, and Space repositories, including folder and file links.

Other Git hosts are not guessed from similar-looking URLs. An unsupported host remains invalid instead of being sent to an arbitrary endpoint.

What is fetched

The intake policy selects source and supporting formats used by the publishing engine: Markdown, Quarto, notebooks, YAML, TOML, JSON, BibTeX, CSL, CSV, TSV, and common raster or SVG images. Development directories, generated caches, and unrelated binary files are ignored according to the discovery policy.

At least one Markdown, Quarto, text, or notebook source must remain after filtering. Current limits are:

  • no more than 256 selected publishing files;
  • no more than 96 MiB across the selected project;
  • no more than 8 MiB for an individual source document;
  • no more than 32 MiB for an individual supporting file.

These are browser safety and responsiveness boundaries, not paid-plan quotas. A provider can also return a truncated tree before Lemmafour reaches its own limits. When that happens, use a folder URL to reduce the scope.

Files are downloaded with bounded concurrency and progress reporting. The provider revision is resolved first, and the imported origin records that revision. This prevents a branch changing halfway through an import from silently combining unrelated versions of files.

The result is a detached local copy

After import, the repository becomes an ordinary Lemmafour project. Open files, edit source, choose a preview target, create Combined PDF contents, and export just as you would with a local folder or ZIP.

“Local copy” has two consequences:

  1. Document compilation stays in the browser after the source and application assets have been fetched.
  2. Changes are not synchronized back to GitHub, GitLab, or Hugging Face.

The initial repository fetch is necessarily a network operation. It would be misleading to call that part offline. The privacy boundary is that Lemmafour does not upload your imported or edited document bytes to its own processing server. Public source bytes come from the provider because you asked to import them; PDF compilation then runs locally.

The project can be saved in browser storage, but clearing site data can remove browser-held projects. Use Download project backup before relying on the copy or moving it to another device.

Import a repository

  1. Open Markdown to PDF.
  2. Open File and project actions and choose Import from public link.
  3. Paste the complete public HTTPS URL.
  4. Confirm that the intended provider is recognized.
  5. Choose Import from GitHub, Import from GitLab, or Import from Hugging Face.
  6. Watch the locating, validating, and downloading progress rather than assuming a large project has frozen.
  7. Review any ignored-file or safety-limit report before opening the result.

A clean import opens directly. An import needing a decision can show a review step. Once open, inspect Files and confirm that the expected entry document, linked images, bibliography, and configuration are present.

Turn repository files into the intended PDF

Importing a repository does not imply that every document is one book. The file open on the left is the current editing context. The PDF preview can target that file or an explicitly configured Combined PDF. Create and order Combined PDF contents only when the deliverable should contain multiple source documents.

This separation is useful for documentation repositories. You can export a single README, a selected tutorial, several PDFs, or one ordered manual from the same imported copy. Supporting images and references remain assets rather than accidental chapters.

Before export, check diagnostics for unresolved links, missing local images, unsupported notebook outputs, duplicate paths, and references that point outside the imported scope. If an image lives elsewhere in the repository, re-import from a common parent folder or add the missing asset locally.

The downloadable fixture below represents the deterministic repository response used by the browser test. The test mocks provider endpoints but exercises the production URL parser, revision pinning, file policy, project intake, editor, and preview flow. That makes the proof repeatable without depending on a third-party repository remaining unchanged.

Reproduce the result

Use the tested example

Lemmafour showing a GitHub repository link recognized for import and the resulting local project
The tested GitHub contract imported a bounded, revision-pinned browser project.
Download the tested detached project fixture

Before you begin

Current limitations

  • Only public GitHub, GitLab.com, and Hugging Face links are supported; private, gated, and sign-in-only repositories are rejected.
  • Import creates a detached editable copy in browser storage. It does not clone Git history, push commits, or write changes back to the provider.
  • Imports are limited to 256 publishing files, 96 MiB total, 32 MiB per supporting file, and 8 MiB per source file; provider tree limits can require a narrower folder link.

FAQ

Questions answered here

Does repository import require a GitHub, GitLab, or Hugging Face login?

No. The current importer accepts public HTTPS links only and does not request private-repository credentials.

Will edits be pushed back to the repository?

No. Import creates a detached editable copy in this browser, pinned to the resolved revision. Download a source or project backup to keep your changes.

What should I do when a repository is too large?

Paste the URL of the specific folder or file that contains the publication instead of the repository root. Large binary and development directories are ignored where the intake policy can identify them.