惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
DataBreaches.Net
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
Webroot Blog
Webroot Blog
AI
AI
P
Palo Alto Networks Blog
Attack and Defense Labs
Attack and Defense Labs
WordPress大学
WordPress大学
月光博客
月光博客
阮一峰的网络日志
阮一峰的网络日志
Spread Privacy
Spread Privacy
T
Tor Project blog
罗磊的独立博客
小众软件
小众软件
S
Security Affairs
酷 壳 – CoolShell
酷 壳 – CoolShell
量子位
Apple Machine Learning Research
Apple Machine Learning Research
T
Threatpost
NISL@THU
NISL@THU
博客园_首页
PCI Perspectives
PCI Perspectives
大猫的无限游戏
大猫的无限游戏
IT之家
IT之家
N
News and Events Feed by Topic
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Forbes - Security
Forbes - Security
博客园 - 叶小钗
D
Darknet – Hacking Tools, Hacker News & Cyber Security
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Last Week in AI
Last Week in AI
L
LINUX DO - 热门话题
T
Threat Research - Cisco Blogs
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
腾讯CDC
Security Latest
Security Latest
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
The Cloudflare Blog
A
About on SuperTechFans
爱范儿
爱范儿
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
TaoSecurity Blog
TaoSecurity Blog
宝玉的分享
宝玉的分享
G
GRAHAM CLULEY
雷峰网
雷峰网
F
Full Disclosure
I
Intezer
Cloudbric
Cloudbric
博客园 - 三生石上(FineUI控件)
U
Unit 42

Hacker News

randoFont GitHub - onehorizonai/silo-terminal: A dark phosphor Apple Terminal profile inspired by the sealed systems and green-blue screens of Silo. GitHub - unihosted/unifi-os-server-docker Show HN: Onboard-CLI–a fast developer tool built in Go uses AST and LLM Show HN: Finterm.ai Finance CLI for Claude Code and Codex Show HN: Codex Explorer,一款用于 Codex CLI 的本地会话管理器 Pylon — full-stack framework for coding agents GitHub - Corgea/Sighthound: Corgea's rule-based SAST scanner Kastra | Execution Governance for AI Systems devthropology.com Embersent — Know Exactly Who Read Your Document GodUI — UI Collection for Modern Interfaces Show HN: Reverse-engineering web apps into agent tools GitHub - Kuberwastaken/subagentmaxxing: Drive OpenAI Codex & Cursor CLI coding agents as subagents with the same ergonomics as native Claude Code subagents (grok-4.5, composer-2.5, gpt-5.5). Uniform run/fanout CLI + Claude Code skill. Aside Today I’m launching papercrane-cli: a BI tool built for Claude Code | Papercrane Blog Strata - Guess the City from a 3D Map a dark terminal Blocks.ai | Connect your agent to the world. Noticky — Sticky Notes & Always-on-Top Windows for Mac Make the hard day easier for the people you love CASHFLOW — Debt Network Optimizer 0 A.D.: Empires Ascendant FormGrid - Create Delightful Forms & Surveys for Free Codapult — Everything Your SaaS Needs, Already Wired Together LinguaGuessr analog.watch Estimania — Daily Estimation Game I Replaced Whisper with Parakeet on a $55/Month CPU Server. Here Is What Actually Happened. HyperSwitcher – Mac App & Window Switcher CLERC-DATA/epee · Datasets at Hugging Face GitHub - gladiaio/gladia-cli EvenKeel — your money coach BareMetalRT — Bare Metal AI Build a Second Brain That Actually Remembers Why It Changed Tokenstead - Find AI Models for Your Hardware Fideby - Standing by the people you trust, when you can rubber duck GitHub - forgedculture/legibility-field-kit GitHub - ronak-create/FableCut: Zero-dependency browser video editor that AI agents can drive — JSON timeline, MCP + REST, live-reloading UI GitHub - BuceaGeorgia/VIRENA: A minimal Vision-Language-Action model you can read: frozen CLIP + a tiny head on ManiSkill PickCube. Runs on a Mac, no GPU. Fehu - Apps on Google Play GitHub - fresswolf/Slopera: The browser for the slop era Release Kiyeovo 1.0.0 · Realman78/Kiyeovo Noema — AI Company Analysis GitHub - hamidi-dev/opentab: 📊 Browse your AI coding spend in the terminal — OpenCode, Claude Code, Codex & more GitHub - sgInnora/wc2026-prediction-ledger: Receipt-verified AI prediction ledger for World Cup 2026: pre-kickoff sha256-locked forecasts scored vs results, with calibration + market baselines. Live: goalpulse.io/open-data GitHub - michaelwrites67-ctrl/yogen: 予言 Yogen — a 500-agent AI swarm that debates your idea and predicts the outcome. Self-host free with your own Anthropic key. GitHub - teddytennant/wizard: Self-extending autonomous agent in one Rust binary. One-line install, any provider (OpenAI-compatible, Anthropic, xAI) or fully local via llama.cpp, live /evolve self-modification, MCP, messaging gateway, built-in bench arcaide.foo Show HN: Android Developer Verification Package blacklisted in Aurora Store OpenDescent: Private messaging for normal people GitHub - tarunlnmiit/autopilot-jobhunt: AI job agent: scans 130+ careers pages nightly, scores every role against your resume with an LLM (0–100), alerts you on Telegram, and drafts tailored cover letters + resumes. Free & open source. 18 Words - Daily Word Challenge The State of US Local Government Accessibility 2026 flow - Real-time network throughput dashboard for the terminal. - Terminal Trove Battle LLM Robots GitHub - robesris/ffvii-realtime: Speed up Final Fantasy VII (Rebirth / Remake / Revelation) Tactical Mode slow-motion so combat plays at real-time speed Agent Sessions - Local History for AI Coding Agents Scrutora — code, cloud & consent compliance in one platform SoulOS Tutorials GitHub - gaemi/agentic-fc: Open-source football management simulation played by AI agents through MCP and watched through a TUI console. GitHub - talalalrwas/ocr-grab: Flameshot clone that adds OCR. GitHub - JustVugg/colibri: Run GLM-5.2 (744B MoE) on a 25GB-RAM consumer machine — pure C, zero deps, experts streamed from disk. Tiny engine, immense model. 🐦 GitHub - saifmukhtar/kinetic figment computer linear.gratis - Free Linear Client Feedback Forms GitHub - atelier-ws/atelier: Runtime for coding agents. Models are getting smarter, but a model is only as capable as the environment supporting it. Atelier is that environment. https://atelier.ws Atlas · Tomesphere | Tomesphere Codenames Generator GitHub - lyfeninja/lyfeninja_blkseal_python_sdk: Lightweight Python client for signing and verifying digital content using lyfe.ninja's BlkSeal product powered by BlkBolt™. Designed for zero dependencies, simple integration, and exact content verification. DateTimeMate OpenScreenShot — Full-page screenshot & annotation tool for Chrome 38-0 — Build Your Premier League Dream Team Cyrinx — data over sound, measured GitHub - BhaveshThapar/mcp-audit HN Work GitHub - Northwood-Systems/foreman: Self-hosted LLM gateway. Cost effective, deterministic, and fast. Secure and private by default. A Visualization Language for the AI Era GitHub - weirdGuy/kastor: Declarative language and toolchain for AI agents: define agents, tools and prompts in HCL, then compile to frameworks or manage them on hosted platforms with plan/apply semantics. Abralo - Run multiple Claude Code agents in one window GitHub - mehranzand/repofleet: RepoFleet is an issue-centered CLI tool for managing Git workflows across multiple repositories. Pug — Open Source Product Analytics Chiptune Radio — Aleph Void, LLC Free Mermaid Live Editor & Diagram Maker GitHub - hirasso/html-obfuscator: Obfuscate emails, phone numbers, and other sensitive data in PHP. Invisible to humans, hidden from bots until they interact. Davit — a native macOS UI for Apple containers GitHub - rowboatlabs/rowboat: Open-source AI coworker, with memory Yamanote.fun PostgreSQL on AWS: Size & Benchmark EC2 Instances GitHub - Rodiun/frugon: Free, local, open-source LLM cost analyzer — see where your LLM bill leaks, on your machine. WhimFiles - Find Any File in Seconds Agent Draw: An agent draws while you talk, built on TLDraw Neil the Seal GitHub - animesh-94/Onboard-CLI: An AST-powered, local-first CLI that visualizes complex system architectures and enforces architectural boundaries via instant Git hooks. ridealong — live London trains Clusy | Agent-Native Notebook for ML and Data Science snowscroll · Instagram, without the spiral. GitHub - vishal-dehurdle/state-harness: Runtime safety net for LLM agents. Detects token spirals, kills doomed tasks early, tells you exactly why. Rust core, Python SDK. pip install state-harness GitHub - DO-SAY-GO/freelang: I love freelang
LaTeX Diff Viewer - GitHub Marketplace
alpaylan · 2026-07-09 · via Hacker News

Render git-latexdiff between any two commits of any LaTeX project, and browse the result — on pull requests, via on-demand requests, and as a published, browsable web viewer. All the TeX tooling ships in a prebuilt Docker image; you provide only your build instructions (often none — it auto-detects).

Live demo: https://alpaylan.github.io/latex-diff-viewer-demo/ — pick two commits, view the rendered diff (added text blue + underlined, removed red + struck through), and click a changed page to jump straight to it. The demo repo is a tiny paper with a curated commit history (text edits, a table/float change, a section add).

Walkthrough: open a diff, jump to a changed page, view an added section


Quick start (recommended)

Get PR diffs, on-demand diffs, and a browsable viewer — all in one file.

  1. Add the workflow. Copy examples/consumer.yml to .github/workflows/latex-diff.yml.
  2. (Optional) add difftool.toml. Skip it if your project is a single document built with latexmk — the tool auto-detects the main .tex (the file with \documentclass + \begin{document}). Otherwise:
    main = "paper.tex"
    build_command = "make"      # only if you don't use latexmk
  3. Turn on Pages. After the first run creates the latexdiff-store branch, set Settings → Pages → Deploy from a branch → latexdiff-store / (root).

That's it. Now:

You do… You get…
Open a PR the base→head diff rendered in the viewer, linked from a PR comment
Push to main recent commits' diffs + a current-draft full render, seeded into the viewer
Open an issue latexdiff <base>..<head> that diff built on demand, with a viewer link

The viewer (the latexdiff-store branch, served by Pages) shows all of them in one place, with a clickable changed-pages index — automatically, no config.


What it looks like

PR comment (the diff renders in the viewer; the artifact is just a fork-PR fallback):

📄 LaTeX diff

✅ Built a1b2c3d..e4f5a6b2 changed page(s).

View the diff ↗ · or download the latex-diff artifact from the run.

Issue request — a single comment that transitions in place:

🔧 Building diff v1..HEAD… Follow along in the workflow run ▸.

…then, when it's done (and the issue auto-closes):

📄 Built v1..HEAD2 changed page(s). View it here: https://you.github.io/repo/?diff=v1..HEAD

Viewer on mobile — full-screen PDF (rendered with PDF.js so it works on iOS), with slide-in drawers:

┌──────────────────────────┐
│ ☰ Diffs        Changes(2) │
├──────────────────────────┤
│                          │
│     diff PDF (canvas)    │
│     pinch · scroll       │
│                          │
│                [−][⤢][+] │
└──────────────────────────┘
  ☰ Diffs   → picker + diffs/renders drawer
  Changes(2) → drawer; tap a page to jump

How it works

   PR ──────────┐   push ─────────┐   issue "latexdiff a..b" ──┐
                ▼                  ▼                            ▼
          pr-diff.yml        store-seed.yml               issue-diff.yml
                └──────── store-add / store-seed ──────────────┘
                                  │  (append, idempotent, one concurrency group)
                                  ▼
                 latexdiff-store branch  =  manifest.json + PDFs + viewer
                                  │  (served by GitHub Pages, branch source)
                                  ▼
                  browsable viewer  ·  ?diff=a..b deep links

Everything appends to one store branch via the same idempotent store-add, so PR, push, and on-demand diffs coexist in a single viewer. The changed-pages index is float-aware: each change's page is recorded at shipout (via zref-abspage), so a changed table or figure points to the page it actually lands on — not the source line. (GitHub artifacts can't power a static viewer — they need auth and expire — which is why the store lives in a branch.)


Configuration (difftool.toml)

All keys optional; a JSON difftool.json with the same keys also works.

key default meaning
main auto-detected, else main.tex Main LaTeX file.
build_command latexmk -pdf -f -interaction=nonstopmode {main} Your full build. {main}/{build_dir}/{jobname} are substituted.
build_dir (unset) latexmk out_dir — set only if your latexmkrc writes the PDF into a subdir.
output_pdf {build_dir}/{jobname}.pdf Where build_command leaves the PDF (auto-discovered if it differs).
latexdiff_options [] Extra flags for git latexdiff (e.g. --add-to-config=VERBATIMLINEENV=code).
untracked_assets [] Globs of gitignored files to mirror into checkouts (e.g. generated figures).
pages_recent 10 How many recent commits store-seed pre-builds on push.
pages_pairs [] Pin specific base..compare diffs (overrides pages_recent).

Local interactive viewer (no CI)

Point it at any repo — nothing to copy in:

git clone https://github.com/alpaylan/latex-diff-viewer && cd latex-diff-viewer
PYTHONPATH=src python3 -m latexdiff_viewer.server --repo /path/to/your/paper
# -> http://127.0.0.1:8765   (pick Base/Compare, Generate diff)

Or from the Docker image, against the current directory:

docker run --rm -it -p 8765:8765 -v "$PWD:/repo" -w /repo \
  ghcr.io/alpaylan/latex-diff-viewer:v1 serve --host 0.0.0.0

Needs python3, git-latexdiff, latexmk, and a LaTeX engine on PATH — or just use the Docker image, which has them.


Alternatives

  • Artifact only (no Pages). Use the composite action directly for a PR comment + a downloadable PDF, without the store viewer:
    - uses: alpaylan/latex-diff-viewer@v1
      with: { config: difftool.toml }
    Inputs: config, main/build_command/build_dir/latexdiff_options/assets (overrides), base/head, full, comment, artifact_name, image. Outputs: diff_pdf, full_pdf, changed_pages.
  • Pre-generated Pages. pages.yml deploys a fresh site via actions/deploy-pages (Pages source: GitHub Actions). Simpler, but no on-demand requests, and it can't coexist with the store viewer (one Pages source per repo).

CLI

The Docker image's entrypoint (also python3 -m latexdiff_viewer.cli):

latex-diff-viewer build-diff  --old A --new B -o out/diff.pdf   # JSON + changed pages
latex-diff-viewer build-full  --commit HEAD   -o out/full.pdf
latex-diff-viewer store-add   --old A --new B --store site      # append a diff to a store
latex-diff-viewer store-seed  --store site                      # append recent diffs + a full render
latex-diff-viewer serve       --port 8765                       # local interactive UI

Development

docker build -t ldv:test .

selftest.yml builds the image and exercises the CLI against a two-commit sample in tests/sample-project/; docker-publish.yml pushes the image to GHCR on a v* tag.

License

This project's own code is MIT. The Docker image bundles git-latexdiff (permissive/BSD), latexdiff and latexmk (GPL), and TeX Live (mixed), each under its own license, unmodified — see THIRD-PARTY-NOTICES.md.