Repository navigation
Releases: gwicho38/prview
Release list
0.2.1 — installable from PyPI
0.2.1 — installable from PyPI, and three hosted-build fixes
2026-09-04 · 4 commits since v0.2.0
Install without a checkout
uv tool install pull-request-view # or: pipx install pull-request-view
prview startThe PyPI name is pull-request-view. An unrelated project owns prview there —
also a GitHub PR tool. A hyphen alone is not enough to clear it: PEP 503 normalization
treats pr-view and prview as distinct, but PyPI's separate similarity check strips
separators, collapses both to prview, and rejects the upload with a 400. The command
it installs is still prview, and the import package is still prview.
Releases publish through Trusted Publishing, so no API token exists in the repo — the
first upload included, via a pending publisher registered before the project existed.
The release workflow installs the built wheel into a clean venv and fetches assets over
HTTP before uploading: server.py mounts prview/static at runtime, so a wheel missing
those files imports cleanly and then 404s everything an import check would never notice.
Fixes
- The overview no longer dies on any PR past a few hundred lines. Every model in
WebLLM's prebuilt list ships a 4096-token window, and prview's prompt budget is sized
forclaudeat 200,000 characters. A 30 KB diff produced an 11,735-token prompt and
the run failed outright. The worker now asks for 8192, and the browser engine asks for
a prompt built to a 16,000 character budget that bounds the description, the file
table, the diffs and the omitted-file list — each of which overran the window on its
own. An unbudgeted prompt is byte-identical to before, soclaudeis untouched. - The keyboard-shortcut bar is back.
#appis a100vhflex column and the hosted
token bar was a sibling above it, so the column ran past the viewport and the action
bar — Viewedv· Explaine· Aska· Commentc· Flagf— was clipped with
no way to scroll to it. - Explain-selection answers in the browser. Selecting diff lines only ever called
the job endpoint, which a static page cannot serve, so it reported "this engine needs
the local app" while already on the in-browser engine.
Upgrading
uv tool install pull-request-view (first time) or uv tool upgrade pull-request-view.
The hosted build is a URL and updates itself.
v0.2.0 — review a PR without installing anything
0.2.0 — review a pull request without installing anything
2026-09-02 · 28 commits since v0.1.0 (2026-07-23) · 31 files changed, +4005 / −218
0.1.0 was a local server that drove the gh and claude CLIs. 0.2.0 adds a hosted
build that needs neither: open a URL, paste a PR, and a code model runs on your own
GPU inside the tab. Nothing is sent to a server, and there is no key to buy.
https://gwicho38.github.io/prview/
Review with no install and no API key
- The hosted site.
scripts/build_pages.pystages the realcore.py,order.py
andbehaviors.pyinto a static build and runs them in Pyodide, so parsing,
ordering and prompt-building have one implementation and one test suite across both
builds. Review state lives inlocalStorage; the PR comes from the GitHub API. - A model in your browser. The
in-browserAI engine runs Qwen2.5-Coder or
Phi-4-mini through WebLLM on WebGPU, in a worker so the diff pane never freezes.
Weights download once from the MLC CDN and are then served from the browser cache. - Private repositories. Paste a GitHub token in the bar at the top; it is verified
against/userand attributed to an account before any PR load depends on it. Every
way GitHub can refuse — invalid token, exhausted quota, secondary rate limit, an
organisation that needs SSO authorization, a missing scope, a repository the token
cannot see — gets its own message and its own remedy. The token is sent only to
api.github.com, lives insessionStorageby default, andRemember on this browseris opt-in.
Read a PR as a story, not an alphabetical file dump
- Behaviour units are derived from a PR's commits, named by an AI pass that cannot
re-partition them, and grouped in the sidebar with behaviour-level comments. - Review order modes, a soft archive for finished reviews, a PR lifecycle badge, and a
link straight back to the submitted review. - Diff ergonomics: syntax highlighting, line wrapping, full-file view, and a text
selection that feeds the Ask box.
Overview diagrams that describe your PR
The whole-PR Overview asks for before/after and lifecycle diagrams. Its prompt shipped
two fully-worked examples from an unrelated system — 44% of the prompt on a small PR —
and models reproduced them verbatim at every size tested, 1.5B through 7B. The examples
are now slot templates and no slot may survive into the answer. Measured on
gwicho38/mcli#163: exemplar copying went from 17 hits to zero.
Local-only, by necessity
The claude engine and everything under Repowise need processes a web page cannot
start, so the hosted build does not offer them. Set the AI engine to in-browser there.
Upgrading
Nothing to do. pipx upgrade prview (or make install) for the local app; the hosted
build is a URL.
v0.1.0
First tagged release.
Web-based, file-by-file GitHub PR review with AI assistance — a portable local-server UI over the gh + claude CLIs. No API keys, no tokens to manage.
Highlights
- Load a PR by
owner/repo#123or URL; walk changed files (sorted by change size) with a side-by-side diff. - Per-file AI summary, Explain, and Ask — powered by your
claudeCLI, cached per file. - Mark viewed, flag with notes, comment (file-level or anchored to selected diff lines), submit a review (approve / request changes / comment).
- Optional Repowise tab: codebase intelligence scoped to the whole repo or just the PR's changed files.
- Local-repo review mode (no PR required), syntax-highlighted diffs, wrap-long-lines toggle, light/dark themes, resumable per-PR state.
Install
uv tool install pr-view
prviewSee the user guide for setup.