Skip to content

Releases: thomast8/pr-dashboard

v1.16.0

Choose a tag to compare

@thomast8 thomast8 released this 20 Mar 16:56
afcfab2

What's New

Recently Closed filter

New "Recently closed" option in the PR status dropdown showing closed (unmerged) PRs from the last 7 days, sorted newest-first. Backed by a new closed_at column on the PullRequest model.

PR search bar

Free-text search input in the RepoView filter bar. Matches case-insensitively against PR number, title, author login/display name, branch name, reviewer logins/display names, and label names. Includes a clear button and integrates with the existing Reset action.

Fixes

  • PRDetail endpoint now correctly includes closed_at and merged_at fields (were silently omitted)
  • Added ge=0 validation on include_merged_days and include_closed_days query params
  • Added test coverage for include_closed_days filtering

v1.15.0

Choose a tag to compare

@thomast8 thomast8 released this 20 Mar 16:11
60b3170

Auth Health Detection & Guided Remediation

Detect GitHub authentication problems during background sync and surface them to users with actionable remediation steps.

What's new

  • Auth error classification: 401/403 responses are now classified into specific error types (token expired, token revoked, insufficient permissions, SSO required, decrypt failed, repo not accessible)
  • Health banner: Persistent banner below the nav bar when auth issues exist, color-coded by severity (red for critical, orange for partial failures)
  • Health panel: Slide-out panel accessible from the banner or user menu, showing account cards with status badges, error messages, affected repos, and remediation buttons
  • On-demand token validation: "Check all now" button calls GitHub's API to verify each token and updates status immediately
  • Inline repo indicators: Warning icons on repo cards that have sync errors, with tooltip showing the error
  • Auto-recovery: When a token starts working again (e.g., after re-authentication), the error state clears automatically and the banner disappears
  • SSE events: auth_issue and auth_resolved events for real-time frontend updates

Technical details

  • New columns on GitHubAccount (token_status, token_error, token_checked_at) and TrackedRepo (last_sync_error, last_sync_error_at, last_successful_sync_at)
  • Alembic migration included
  • Transient network/server errors are not misclassified as token problems
  • SSE broadcasts only fire on status transitions (not every sync cycle)

v1.14.4

Choose a tag to compare

@thomast8 thomast8 released this 20 Mar 14:03
d6d554b

Bug Fixes

  • Filter draft and prerelease releases from release notes modal: The release notes viewer was showing draft releases (like v1.11.1) when authenticated, making it look like notes hadn't been updated. Now only published, non-prerelease entries appear.
  • Unconditionally hide blocked PRs from attention filters: Blocked PRs were still showing in owner mode when they had actionable items (new feedback, unstable merge). The blocked_by_pr_id check is now applied before mode-specific logic so blocked PRs are hidden in both owner and review modes.

v1.14.3

Choose a tag to compare

@thomast8 thomast8 released this 20 Mar 13:45
7f71fbe

Bug Fix

  • Exclude blocked PRs from attention filters: PRs blocked by another PR in a stack are now hidden from "Waiting on me" (review mode) and "Needs my attention" (owner mode) filters, since there's nothing actionable until the blocker merges. In owner mode, blocked PRs with failing CI or changes requested still appear since those need fixing regardless of stack ordering.

v1.14.2

Choose a tag to compare

@thomast8 thomast8 released this 19 Mar 14:47
2ede423

Fix: Label operations use correct user token

The update_labels endpoint was using a generic token resolver that could pick up an OAuth token instead of the acting user's PAT. This caused 403 errors when setting labels on repos in organizations with OAuth App access restrictions.

All other write operations (reviewers, priority, assignees) already used the correct per-user token resolver. This release aligns label operations with the same pattern.

v1.14.1

Choose a tag to compare

@thomast8 thomast8 released this 19 Mar 13:11
18eb627

Bug Fix: GitHub API Error Handling

What changed

  • 5xx retry: Transient GitHub server errors (500, 502, 503) are now retried up to 3 times with exponential backoff, reducing random failures
  • Descriptive error toasts: The generic "GitHub API error" toast now shows the actual GitHub error message (e.g. "Validation Failed: Reviews may not be requested from pull request authors"), so you can tell what went wrong without checking backend logs

Housekeeping

  • Gitignore all dot-folders (.claude/, .worktrees/, .gitnexus/, .superpowers/, etc.)
  • Added AGENTS.md

v1.14.0

Choose a tag to compare

@thomast8 thomast8 released this 17 Mar 15:52
6d554b8

What's New

Fix: Accurate merge state badges

Previously the dashboard showed "Has conflicts" for PRs that were blocked by branch protection rules (unresolved review threads, missing approvals, etc.) rather than actual merge conflicts. Now each mergeable_state gets its own badge:

  • "Has conflicts" - only shown for actual merge conflicts (dirty)
  • "Merge blocked" - branch protection prevents merge (blocked)
  • "Unresolved threads (N)" - blocked with specific thread count via GraphQL
  • "Branch behind" - base branch has new commits, needs update (behind)
  • "Unstable merge" - mergeable but status checks are not clean (unstable)
  • "Clean merge" - no issues, ready to merge (clean)

Scoring improvements

Each merge state now gets semantically correct priority points instead of collapsing to 0:

  • Review mode: clean (10), blocked (8), behind (6), unstable (5)
  • Owner mode: clean (15), behind (10), unstable (8), blocked (5)

Webhook support for thread resolution

  • New pull_request_review_thread webhook event for real-time updates when threads are resolved/unresolved
  • Existing webhooks are automatically migrated to include the new event on startup

Bug fix: sync_single_pr field extraction

Webhook-triggered PR syncs now correctly update mergeable_state, additions, deletions, changed_files, and commit_count (previously only updated during polling sync).

v1.13.1 — Fix Self-Authored PRs in Review Queue

Choose a tag to compare

@thomast8 thomast8 released this 16 Mar 15:24
081e241

Bug Fix

  • Exclude self-authored PRs from the Review Queue: Your own PRs no longer appear in your review queue, even if you're listed as a requested reviewer or have submitted self-reviews. They remain in "My PRs" where they belong.

v1.13.0 — Smarter Polling for Webhook Repos

Choose a tag to compare

@thomast8 thomast8 released this 16 Mar 13:26
74481b4

What's new

RepoView stats: repositioned, hoverable, clickable

Summary stats ("25 open", "5 failing", "3 approved") now sit right next to the repo name instead of being pushed to the far right. Hovering "failing" or "approved" shows a styled tooltip listing the specific PRs. Clicking toggles the corresponding filter on/off for quick drill-down.

Lightweight polling for webhook-active repos

Repos with an active GitHub webhook now skip all detail API calls (reviews, comments, checks, PR detail) during polling cycles. Instead, a lightweight sync fetches only the PR list (with ETag caching) and runs stale PR detection as a safety net. Webhooks continue delivering instant updates for all detail data. This can save up to 6N API calls per webhook-active repo per cycle (where N = number of changed PRs).

Reduced GitHub API rate limit consumption

Polling now categorizes PRs by change status (changed open, changed closed, unchanged open) and only fetches details for PRs that actually changed. Unchanged open PRs only get CI check refreshes. Unchanged closed PRs are skipped entirely.

Fixes

  • LOG_LEVEL setting: The LOG_LEVEL environment variable now correctly applies to loguru's logger
  • Filter auto-clear: Selecting "Me" in the author filter now automatically clears any complementary filter that would hide your PRs

Commits

  • 74481b4 feat: move RepoView stats next to repo name with hover tooltips and click-to-filter
  • c900722 feat: skip redundant polling detail fetches for webhook-active repos
  • 1a44f0c feat: reduce GitHub API rate limit consumption
  • c1dfd94 fix: apply LOG_LEVEL setting to loguru
  • 3adb621 fix: auto-clear complementary filter when selecting "Me"

v1.12.0 — UI Redesign & Rate Limiting

Choose a tag to compare

@thomast8 thomast8 released this 16 Mar 10:11
0967a26

What's New

UI Redesign

  • Card grid layout — PRs now display as responsive cards instead of rows, with visual distinction between stacked and standalone PRs
  • Navigation overhaul — underline tab style replaces pill buttons; Spaces/Team moved into user menu
  • Overview cards — health bar and compact stats replace the previous stat grid
  • Filter UX — progressive disclosure with primary filters always visible, secondary behind "+ Filter" button
  • Reviewer filter promoted — always visible in primary filter bar; CI filter moves to secondary section
  • Flat view toggle — per-repo toggle to disable dependency graph and show all PRs sorted by priority score (persists to localStorage)
  • Dark theme refinement — darker base tones and improved border contrast

Reliability

  • Client-level rate limiting — concurrency semaphore (max 10 parallel requests), 100ms inter-request throttle, exponential backoff (5s/15s/45s), proactive rate limit monitoring from response headers, and early abort when rate limit is exhausted. Prevents GitHub API abuse detection during sync bursts.

Bug Fixes

  • Priority score bar now sits inline with PR badges instead of floating disconnected