TUI: add full-screen interactive TUI for PR triage and review#63773
TUI: add full-screen interactive TUI for PR triage and review#63773potiuk merged 1 commit intoapache:mainfrom
Conversation
6ab8fb8 to
256ca0b
Compare
3f08b33 to
bcee932
Compare
|
@choo121600 -> it's based on #63770 - I should merge it first :) |
bcee932 to
b92bd88
Compare
923b0b2 to
b38dd2f
Compare
5e85d56 to
014e4d8
Compare
82c8ae8 to
2b18a82
Compare
andreahlert
left a comment
There was a problem hiding this comment.
Security concern with credential handling in _get_claude_cli_api_key.
Adds a full-screen terminal UI (TUI) for the `breeze pr auto-triage` command with interactive PR navigation, real-time LLM review tracking, and direct quick actions. Key features: - Full-screen Rich-based TUI with PR list, detail panel, and diff viewer - Mouse support (click to select, scroll panels) and vim-style keybindings - Background LLM assessment with live status updates per PR - Background diff pre-fetching for instant diff display - Direct quick actions (draft, comment, close, rerun, rebase, flag, LLM) - Batch operations on multi-selected PRs - Category-based PR organization (CI Issues, LLM Errors, Passing, etc.) - Pagination with background page loading - Review mode with green color scheme, review-oriented actions/labels, and detailed code review via review_pr instead of triage assess_pr - Review mode filters to only show PRs with 'ready for maintainer review' label or PRs where the reviewer has previously reviewed Also includes: PR data models, display utilities, caching layer, comment deduplication, and comprehensive test coverage.
Backport failed to create: v3-1-test. View the failure log Run detailsNote: As of Merging PRs targeted for Airflow 3.X In matter of doubt please ask in #release-management Slack channel.
You can attempt to backport this manually by running: cherry_picker 48f0a72 v3-1-testThis should apply the commit to the v3-1-test branch and leave the commit in conflict state marking After you have resolved the conflicts, you can continue the backport process by running: cherry_picker --continueIf you don't have cherry-picker installed, see the installation guide. |
Add a rich full-screen terminal UI for the
breeze pr auto-triagecommandthat replaces the sequential review flow when a TTY is available.
TUI Features
Behind, Title (with labels), Author, LLM status, Suggested action,
Performed action
with timing, labels, assessment summary, violations, unresolved threads
PR Classifications
PRs are automatically categorized: WF Approval, CI Issues, LLM Warnings,
LLM Errors, All passed, Wait for LLM, Stale Review, Recently Triaged.
Each has context-sensitive suggested actions derived from the PR state
(e.g. merge conflicts → draft, 1-2 CI failures → rerun, only unresolved
comments → comment).
Keyboard Shortcuts
f Rerun failed, r Rebase, m Mark ready, x Flag suspicious, l LLM review
Background Operations
per-PR timing (took/queued/attempts), retry (3 attempts, 3min timeout),
on-demand trigger via
lkey, and auto-submission for passing PRsremoves stale entries
Review Mode
Review mode (
--mode review) uses the TUI with green color scheme andadapted UI for code review workflow:
and PRs where the reviewer has previously accepted or requested changes
review_pr(detailed code review with line-levelcomments) instead of
assess_pr(triage quality check)actions; suggested actions show "ready to review", "review findings",
"needs rebase" etc. instead of triage-oriented "draft", "close"
"Review action:" instead of "Quick action:"
CLI Changes
--authorsreplaces--include-collaborators(choice: contributors/collaborators/all)--llm-usereplaces--check-mode(choice: both/api/llm)--llm-concurrencydefaults to CPU count (capped at 8), hardcoded 4 for screenshotsPagination and sorting, Assessment options, Other
Session Summary
On exit, prints a table of acted PRs with links, suggested/performed actions,
per-PR timing, startup/interactive/LLM time, velocity (PRs/hr), and
LLM avg/median duration.
Code Changes
pr_commands.pyinto extracted modules:pr_cache.py,pr_models.py,pr_display.py,pr_comments.py,tui_display.pyAuthorFilterenum for author selection logic_PRRefreshManagerfor background PR status refresh_RefreshResultdataclass for refresh results_review_pr_as_assessment()wrapper to use review_pr results in theexisting LLM pipeline (wraps dict result as PRAssessment)
get_suggested_action()andget_available_actions()withseparate triage/review implementations
13_pr_tasks.rstWas generative AI tooling used to co-author this PR?
Generated-by: Claude Code (claude-opus-4-6) following the guidelines