Repository navigation
Releases: yuema137/PairTeX
Release list
0.1.1
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
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 tomake4ht, with--adapter-commandfor 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.tomldeclaring 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 withuv run python -m unittest discover -s tests -t .. --versionon both entry points, checked againstpyproject.tomlby 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.