Changelog
Fixes
- PR categorization — PRs you've reviewed that aren't stale and have no new commits now correctly appear as "waiting on others" with a
Reviewed, waiting on @author detail, instead of being silently dropped from the queue. - Authored PRs with no reviewers — your open PRs with no requested reviewers now appear as "waiting on others" with a
No reviewers assigned detail, instead of being silently dropped.
New
defaultFilter config option — set "defaultFilter": "all" | "pr" | "issue" in your config to open the interactive view pre-filtered to a specific type.
Improvements
- Landing page layout — manifesto and install CTA now fit within a single viewport height using flexbox; no scroll required to reach the install command.
- Font loading — Google Fonts CSS is preloaded and
preconnect to fonts.gstatic.com is added; unused weights (300, 700) and the Inter family are removed. - Footer link hover — footer links animate with a purple dot and indent on hover; CSS-only, no JS.
- Version badge — badge now fetches the latest release tag from the GitHub releases API at runtime instead of hardcoding a version.
Fixes
- Contrast —
--dim and --mid colors bumped to pass WCAG 4.5:1 contrast ratio on both --bg and --surface backgrounds; copy button legibility improved. - Accessibility —
<main> landmark added; decorative intro text marked aria-hidden. - SEO — Open Graph and Twitter Card meta tags added; canonical URL,
robots.txt, and sitemap.xml included. - Badge arrow animation — slide animation on the release badge arrow removed.
New
- GitHub Issues support — assigned issues and mentioned issues appear alongside PRs in a unified attention queue, categorized by why they need you.
- Type filter — press
t to toggle between all items, PRs only, or issues only. PR / Issue prefix — each item shows its type inline, color-coded (purple for PRs, blue for issues) so the queue stays scannable at a glance.Mentioned category — new category surfaces issues and PRs where you've been tagged but have no other direct action.- Issue URL support —
github.com/org/repo/issues/123 now resolves as a valid identifier alongside PR URLs.
Improvements
Needs Re-review → Needs Response — category name now covers both PR re-reviews and issue comment replies.Your PRs Waiting → Waiting on Others — broader name reflects that issues can also be waiting on a response from someone else.Requested Reviews → Requested — shorter label, same meaning.- Bot comment filtering — bot comments no longer count as activity that clears the needs-response state on issues.
- Reactions as acknowledgment — reacting to an issue comment counts as having acknowledged it, keeping the queue accurate.
Improvements
- CLI description — updates
prq --help to read "See what needs your attention — PRs, issues, tickets", reflecting scope beyond PR review. - npm metadata — adds
developer-attention, linear, and issues keywords; updates package description to match. - Landing page — strips down to problem narrative, terminal output, and install command; removes feature sections, scroll animation, and configuration examples.
- Version badge — adds a release badge on the landing page linking to GitHub releases.
Fixes
- Install copy button — reads the install command from the DOM instead of a hardcoded string, so it stays accurate if the command ever changes.
Fixes
- Nudge action — the TUI now immediately recategorizes a PR after nudging it, rather than keeping it in its old category until
prq is restarted. - Action menu nudge — the fix covers both the direct
n key and the action menu path (a → nudge); both now refresh state on success.
New
- PR author in detail line — the detail line under each PR now shows
@author alongside the existing context, in both the standard output and interactive modes.
Fixes
- Needs re-review detection — filters commit history to the PR author's commits only, so rebases or merge commits pushed by others no longer incorrectly trigger a re-review flag.
Fixes
- Interactive mode — PR lookup and scroll bounds now read from mutable
state.result instead of a stale snapshot captured at startup, so navigation stays correct when the PR list updates during a session.
New
- In-progress grouping — PRs marked in-progress now sort to the top of the queue as a single section, so your active work is always the first thing you see.
- Auto-clear on review — marking a PR in-progress and then submitting a review automatically removes the in-progress flag. No manual cleanup.
New
- Search mode in the interactive TUI — press
/ to search your queue by PR number, title, or author; the cursor jumps to the first match as you type, Enter confirms, Esc cancels and restores your previous position.
Fixes
- Shortcuts bar — moves the keyboard shortcut hint and action menu from inline (beneath the selected PR) to a fixed footer line, so it stays visible regardless of scroll position or which PR is selected.
- Pagination rendering — the line-budget calculation no longer accounts for inline shortcut rows, preventing layout shifts when navigating a paginated list; a hard cap ensures only PRs that fit the terminal height are rendered.
- Scroll indicator — the
1–N of M position indicator now appears only when the list is actually paginated, removing the redundant PR count line shown when all PRs fit on screen.
Fixes
- Terminal overflow — the render loop now counts actual output lines as it builds the PR list, ensuring the display never exceeds the terminal height regardless of what
process.stdout.rows reports.
Improvements
- Inline shortcuts — keyboard shortcuts move with the cursor, appearing directly under the selected PR instead of in a fixed bar at the top of the screen.
- Inline action menu — the action menu renders under the selected PR rather than replacing the top bar, keeping context visible while you act.
- Cleaner footer — scroll position and navigation hints consolidate into a single line at the bottom.
Fixes
- PR list rendering — the interactive view now calculates how many PRs fit in the terminal and renders only those, instead of overflowing the screen and relying on the terminal to clip.
- Scroll indicator — a
showing 1-12 of 34 PRs line appears at the bottom when the list exceeds the visible window. - Cursor tracking — the visible window follows the cursor as you navigate up and down, keeping the selected PR always in view.
- Inline category headers — category labels appear inline within the visible window whenever the category changes, so context is never lost mid-scroll.
Fixes
- Interactive mode rendering — replaces the alternate screen buffer approach with basic clear-and-write, fixing unreliable display across terminal emulators.
- Shortcut bar — moves from the bottom footer to the top of the screen so it stays visible regardless of list length.
Improvements
- Page navigation — left/right arrow page jump is now a fixed 10 items, no longer tied to config.
Breaking Changes
pageSize config option removed — page jump is hardcoded to 10. Remove pageSize from your config file if present.
Fixes
- Interactive mode renderer — rewrites the TUI to use an alternate screen buffer (
1049h/1049l), matching the behavior of vim, htop, and fzf; the previous screen is restored cleanly on exit. - Fixed footer — the action bar is always anchored to the bottom of the terminal; scrolling the PR list no longer pushes it off-screen.
- Line truncation — lines are capped to terminal width (ANSI-aware) to prevent text wrapping that would break layout.
- Flicker — replaces
console.clear() + multiple writes with a single process.stdout.write() call and per-line \x1B[K clearing. - TTY detection — checks
stdout.isTTY in addition to stdin.isTTY; interactive mode exits cleanly when stdout is not a terminal. - Terminal resize — re-renders on
SIGWINCH so the layout stays correct when the window is resized.
Fixes
- Interactive rendering — replaces manual ANSI escape sequences with
console.clear() for more reliable screen clearing across terminals.
Fixes
- Terminal rendering — fixes scroll overflow in interactive mode by switching from a full-screen clear to cursor-home + per-line write-and-clear; the action bar now stays anchored at the bottom regardless of content length.
New
pageSize config option — controls how many PRs ← / → jumps when navigating the interactive queue; defaults to 10.
Improvements
- Page navigation —
← and → now move by a fixed count instead of deriving step size from terminal height, making keyboard navigation consistent across window sizes.
New
- Page navigation — left arrow jumps back one page, right arrow jumps forward one page; page size scales with terminal height, so navigating long queues no longer means holding down the arrow key
Fixes
- Nudge on own PRs — pressing
n on one of your own PRs with no requested reviewers now shows no reviewers to nudge instead of posting a comment that mentions yourself.
Fixes
{days} template variable — now reads the actual elapsed time from the PR's detail string (e.g. "Last commit 11d ago", "No activity for 30 days") instead of GitHub's updatedAt timestamp, which resets to zero after every comment or label change.
New
- Activity-based sorting — PRs within each category now sort by most recent activity first, so the work that moved latest surfaces at the top.
New
- Nudged category — nudged PRs now surface in their own dedicated section in
prq output, distinct from the rest of the queue. - Nudged PRs display a magenta
✦ icon and show when the nudge happened — today or Nd ago. - In-progress takes precedence: a PR marked in-progress is never overridden by a nudge.
- Stale
nudgedAt entries are automatically cleaned when PRs leave the queue (merged, closed, or otherwise gone).
New
- Viewport scrolling in interactive mode — the PR list now scrolls when it exceeds the terminal height, keeping the selected PR visible with one line of padding as you move up and down.
Fixes
- Nudge targeting — nudging your own PR now pings the requested reviewers, not yourself; a new
{target} template variable resolves to reviewer handles for waiting-on-others PRs and @author otherwise. - Nudge state tracking — nudge state is now recorded reliably across all code paths (interactive mode,
prq run, action menu); previously, interactive mode never called markNudged and would re-nudge on the next run.
Fixes
- Nudge deduplication in interactive mode — pressing
n in interactive mode now correctly marks a PR as nudged, preventing duplicate nudges from being sent.
New
- Nudge guard —
prq nudge warns if a PR was already nudged and shows how long ago, then prompts before posting again. - Per-PR state tracking — local state migrated from
in-progress.json (a flat array) to state.json (a keyed object), enabling per-PR metadata across commands.
New
- Last commit timestamp for open PRs — the open PRs list now shows "Last commit Xd ago" instead of the generic updated-at time, so you can see exactly when code last changed without opening GitHub.
New
--all flag — fetches every open PR across your configured repos, not just ones involving you, shown as a new "All Open" category below your actionable queue.showAllOpen config option — enables the same behavior permanently without passing --all each time.- Deduplication — PRs already surfaced in higher-priority categories are excluded from "All Open" so nothing appears twice.
- Truncation warning — prints a warning when results exceed GitHub's 100-item search limit, sorted by most recently updated.
Fixes
- Footer count — the summary line now counts only actionable PRs, excluding "All Open" items from the total.
New
- In-progress tracking — press
s to mark any PR as started. Marked PRs surface in a dedicated In Progress category at the top of the queue, above needs-re-review and requested. - In-progress state persists — state is stored locally at
~/.config/prq/in-progress.json and auto-cleans when PRs are merged or closed. - Start/stop action bar — the action bar now shows
s start or s stop depending on the selected PR's current state. - AI-generated release notes — this project now uses
semantic-release-ai-notes to write release notes that explore the codebase directly.
Improvements
- Banner — the site banner now renders with a purple glow and accent border, replacing the dim neutral style.
- Hero logo weight — bumped to 800 per brand spec; was 600.
New
- Simplified
/prq skill — streamlined the Claude Code skill with clearer instructions - Skill install guide —
prq skill --global installs globally, prq skill for current project only
New
- Terminal handoff — actions get full terminal control. Interactive tools like Claude Code take over the screen, and prq resumes when they exit.
- Category variable — use
{category} in action templates to know why a PR needs attention - Announcement banner — prq.sh now highlights the latest features
New
- Interactive mode is now the default — just run
prq and navigate with keyboard shortcuts - Actions menu — press
a to see all available actions (built-in and custom) and run them by number
New
prq skill — install the /prq skill for Claude Code so it can check your queue, open PRs, nudge, and run actions- Landing page — updated prq.sh with action commands, custom config examples, and skill install section
New
- Interactive mode — navigate your queue with keyboard shortcuts. Arrow keys to move,
r to review, o to open, n to nudge, c to copy URL, q to quit.
New
- Pluggable actions — define custom shell command templates in
.prqrc.json. Wire up Claude Code, Codex, gh CLI, or any script. prq review runs whatever you tell it to.
New
prq review — open the files changed tab for any PR directly from the terminal
New
prq open — open any PR in the browser by number, org/repo#number, or URLprq nudge — post a comment on stale PRs to nudge reviewers- Monorepo — restructured to monorepo with a landing page at prq.sh
- Favicon and branding — web identity for prq.sh
Fixes
- Normalize npm package metadata for clean publishing
Fixes
- Version tracking — commit version bump back to repo after each release
Fixes
- Node.js compatibility — use
import.meta.url instead of bun-only import.meta.dir