Skip to content

Releases: yuema137/PairTeX

Release list

0.1.1

Choose a tag to compare

@yuema137 yuema137 released this 11 Sep 14:43
5c9458c

PairTeX 0.1.1 is a patch release focused on reliable formula rendering, source provenance, and review interactions. Python 3.11+ remains supported with no runtime dependencies beyond the standard library.

Fixes

  • Preserve valid conditional-input and bibliography renders when formulas cannot be reliably mapped to source. Such formulas remain readable and selectable for comments, with an explicit read-only notice. Correct source line offsets and preserve adapter-provided anchors. (#13, #17)
  • Report non-Git, unborn, clean, dirty, and unavailable Git states accurately, including saved feedback metadata. Unknown commits and worktree states use null rather than implying a clean, tracked source. (#14, #17)
  • Publish declared local href attachments, including TXT, PDF, and ZIP files. Preserve nested paths and encoded filenames, report missing assets, and reject traversal and symlink escapes. (#15, #17)
  • Reject empty and structurally unusable MathML before publication and on startup/refresh. Keep valid native formulas readable when MathJax cannot load, recover from delayed loading, and preserve renderer output for custom macros. (#12, #16, #17)
  • Allow prose editing around inline formulas, restore interaction mode after refresh, and simplify Edit appearance. (#11, #12)
  • Locate comments on unmapped formulas using unique matching rendered text without inventing source anchors. (#17)

Compatibility notes

  • For uncertain TeX expansion, direct formula editing requires an adapter that supplies explicit source anchors; the generic mapper uses a conservative document-wide read-only fallback.
  • MathML validation checks structure, not every browser/CSS layout condition. CSS url() dependencies and links inside secondary HTML files are not recursively collected.
  • Feedback consumers should handle nullable head_commit and worktree_dirty values and the new git_status field. Unmapped formula comments explicitly record source_mapping and omit unavailable source text.

Validation

The release commit passes the 16-test Python suite and CI on Python 3.11, 3.12, 3.13, and 3.14. The included fixes were also checked with both Playwright suites and synthetic latexmk/make4ht/BibTeX short/full manuscripts, with canonical source bytes unchanged.

Full changelog: 0.1.0...0.1.1

0.1.0

Choose a tag to compare

@yuema137 yuema137 released this 08 Sep 15:51
1935998

First tagged release of PairTeX.

PairTeX is a local, Git-native review layer for LaTeX projects you already have. It replaces the manual loop of compiling a PDF, reading it, and copying quotes and comments back into a chat window by hand: it renders your existing repository into an HTML view where you comment and edit in place, and records every action as a structured feedback file your coding agent reads directly.

Your repository stays canonical and read-only from PairTeX's perspective. The HTML projection and the feedback files are disposable companion artifacts.

What is in this release

  • Local review server (pairtex.py): HTML projection, comments, Edit and Review modes, formula editing, threads, feedback persistence under .pairtex/feedback/, section navigation, and Refresh. Picks the next free localhost port if the requested one is taken.
  • Renderer (pairtex_render.py) defaulting to make4ht, with --adapter-command for an external adapter. The adapter runs against a disposable project copy and never edits your source.
  • Agent protocol in skills/pairtex-agent/SKILL.md: feedback schema, anchor rules, lifecycle semantics, thread format, and the boundaries an agent must respect.
  • Public demos: a minimal demo/fixture, plus the same synthetic paper in ICLR, NeurIPS, and ICML wrappers.
  • English and Simplified Chinese READMEs.
  • MIT license.
  • pyproject.toml declaring the supported Python range (>=3.11) and an explicitly empty dependency list: PairTeX runs on the standard library alone.
  • uv-pinned development environment (.python-version, uv.lock) and a test suite covering the full human-agent loop, run with uv run python -m unittest discover -s tests -t ..
  • --version on both entry points, checked against pyproject.toml by a test so the tag and the tool cannot disagree.
  • CI on every push and pull request, running the tests across the whole declared Python range (3.11 through 3.14) plus a lockfile and version-consistency check, with Dependabot keeping the pinned actions current.

Try it

python3 pairtex.py \
  --project demo/fixture \
  --html demo/fixture/rendered.html \
  --port 8765

Scope

PairTeX is not an IDE or an Overleaf replacement. It does not provide a compiler, a source editor, a bibliography manager, an agent framework, an LLM integration, CRDT collaboration, or HTML-to-LaTeX rewriting.