feat(web): add pull request list filters - #8809
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Team Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Warning Your free Security trial is over. An organization admin can activate Security or dismiss this notice. Comment |
There was a problem hiding this comment.
UI consistency review found several issues in the changed web UI code: a meta-line separator regression on rows without labels, a menu trigger that hand-rebuilds the outline Button, a call-site height override on InputGroup, stale tests for the new submenu composition (currently failing in CI), and a duplicated label-dot helper.
Posted via Macroscope — UI Consistency
There was a problem hiding this comment.
UI Consistency
Four findings, all in the changed web UI code. The two blocking ones are the hand-rolled outline trigger in the control row and the author search field swallowing the menu's navigation keys.
apps/web/src/routes/_chat.pull-requests.tsx— the newoutlinedmode ofCompactFilterMenureconstructsButton's outline variant on a bareMenuTrigger, next to a Filters trigger that is a realButton variant="outline".apps/web/src/components/pullRequest/PullRequestListFilters.tsx— the author submenu's search input stops propagation of every non-Escape key, so arrow keys never reach the Base UI menu and the autofocused field traps keyboard users.apps/web/src/components/pullRequest/PullRequestListFilters.tsx—InputGroup className="h-8"overrides the wrapper height instead of using theInputsize contract, leaving the inner input taller than its border box.apps/web/src/components/pullRequest/PullRequestRow.tsx—labelDotColorplus the label-dot chip markup is now a third divergent copy of the same treatment.
Posted via Macroscope — UI Consistency
There was a problem hiding this comment.
One finding this round. The earlier notes on the outlined sort trigger, the author search field sizing/key handling, the meta-line separator guard, and the project submenu tests all look resolved.
Posted via Macroscope — UI Consistency
There was a problem hiding this comment.
UI consistency review: three findings on the new filter/sort controls. The earlier notes on the sort trigger rebuilding the outline Button, the in-menu search input's height and key handling, and the meta-line separator guard all look addressed.
Posted via Macroscope — UI Consistency
There was a problem hiding this comment.
Two consistency findings from the filters/sort refactor. Everything flagged in earlier runs (icon-trigger aria-label, the InputGroup height override, arrow-key propagation, the hand-rebuilt outline trigger, the metaline separator guard, the project submenu test coverage) looks resolved on this head.
Posted via Macroscope — UI Consistency
There was a problem hiding this comment.
One layout finding on the new filter submenu triggers.
Posted via Macroscope — UI Consistency
There was a problem hiding this comment.
One finding: the new row label chip is taller than the meta line it joins, which puts labeled rows over the contain-intrinsic-block-size the row declares for skipped rows.
Posted via Macroscope — UI Consistency
There was a problem hiding this comment.
One finding: the new Sort trigger puts a wide, non-shrinking control into the row that also owns the search field, which collapses the search at the narrowest column widths this page supports.
Posted via Macroscope — UI Consistency
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — This PR adds a broad user-facing filtering and sorting capability, including author/label facets, extra list queries, URL state, row metadata, and alternate ordering. The cross-cutting runtime behavior and substantial new implementation warrant human review. You can add or adjust custom eligibility rules. Learn more. |
There was a problem hiding this comment.
One finding: the project options' Icon is now a component created during render, which remounts each ProjectFavicon on every re-render of the filters menu. Everything else previously raised on this branch (project label truncation, the unavailable marker, the filters trigger's accessible name, the in-menu search field sizing, the submenu value alignment, the label chip's line box and its PullRequestMetaLine guard, the outlined sort trigger rendering through Button, and the project test cases) reads as addressed at this head.
Posted via Macroscope — UI Consistency
There was a problem hiding this comment.
One finding on the row's new change-size line; the rest of this revision (submenu geometry, Button-rendered triggers, compact input sizing, hook-free menu, project truncation/unavailable marker) looks consistent with the shared primitives.
Posted via Macroscope — UI Consistency
There was a problem hiding this comment.
One finding: the new label submenu's truncate is defeated by MenuCheckboxItem's grid template, so long label names overflow the fixed-width popup. Earlier rounds' items (row chip height, sub-trigger alignment, outlined trigger going through Button, the project submenu's truncation and unavailable marker, the test helper) all look addressed.
Posted via Macroscope — UI Consistency
There was a problem hiding this comment.
One finding: the new exported label-colour helper duplicates an identical private helper that still owns the same treatment in the detail panel.
Posted via Macroscope — UI Consistency
There was a problem hiding this comment.
One finding: the filters popup is now a fixed w-56, but the new submenu value spans can't ellipsize inside it, so long values give the menu a horizontal scrollbar instead of an ellipsis.
Posted via Macroscope — UI Consistency
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 1a2af3b. Configure here.
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
## What's Changed * Add mobile composer attachment menu with video support by @juliusmarminge in pingdotgg/t3code#8843 * fix(web): restore unified activity logs and composer banners by @t3dotgg in pingdotgg/t3code#8734 * fix(web): address composer banner review follow-ups by @juliusmarminge in pingdotgg/t3code#8850 * fix(web): widen sync banners and simplify the working timer by @juliusmarminge in pingdotgg/t3code#8855 * fix(preview): improve browser recording quality by @maria-rcks in pingdotgg/t3code#8839 * fix(web): mark pull request links as external by @juliusmarminge in pingdotgg/t3code#8856 * fix(mobile): replace Callstack glass with Expo glass by @juliusmarminge in pingdotgg/t3code#8862 * fix(server): skip IDE detection in Claude probes by @yashranaway in pingdotgg/t3code#8634 * chore(macroscope): review diagnostic overrides by @t3-code[bot] in pingdotgg/t3code#8917 * fix(contracts): accept CLI event origins by @nateEc in pingdotgg/t3code#8905 * fix(web): hide invalid slash skill completions by @nateEc in pingdotgg/t3code#8904 * fix(mobile): defer draft navigation until submission completes by @juliusmarminge in pingdotgg/t3code#8914 * chore: disable CodeRabbit review status by @juliusmarminge in pingdotgg/t3code#8933 * Delete app.json by @juliusmarminge in pingdotgg/t3code#8934 * fix(web): show scrollbar for wide markdown tables by @UtkarshUsername in pingdotgg/t3code#8868 * fix(mobile): shimmer active tool rows by @juliusmarminge in pingdotgg/t3code#8932 * chore(deps): bump Electron to 43.4.1 by @StiensWout in pingdotgg/t3code#8626 * fix(chat): smooth worktree setup status by @juliusmarminge in pingdotgg/t3code#8922 * feat(mobile): add video playback with native iOS controls by @juliusmarminge in pingdotgg/t3code#8919 * fix(web): prevent chat metadata overlap by @MatthewFeroz in pingdotgg/t3code#8851 * fix(server): preserve usage cache outside walked roots by @Lucenx9 in pingdotgg/t3code#8540 * feat(mobile): add native image and PDF previews by @juliusmarminge in pingdotgg/t3code#8959 * fix(server): allow long thread IDs in HTTP routes by @nateEc in pingdotgg/t3code#8898 * fix(shared): preserve Windows shell PATH priority by @UtkarshUsername in pingdotgg/t3code#8748 * fix(web): make WSL settings searchable by @UtkarshUsername in pingdotgg/t3code#8881 * feat(web): add expand/collapse all control to the files surface by @UtkarshUsername in pingdotgg/t3code#8889 * feat(mobile): upload attachments while composing by @juliusmarminge in pingdotgg/t3code#8978 * fix(chat): keep agent activity visible between actions by @maria-rcks in pingdotgg/t3code#8984 * fix(server): isolate remote web session cookies by @Bil0000 in pingdotgg/t3code#8085 * feat(pull-requests): link GitHub references in markdown by @maria-rcks in pingdotgg/t3code#8812 * perf(server): reduce frequency of full tool call output being loaded into memory from db by @t3dotgg in pingdotgg/t3code#8988 * feat(web): add pull request list filters by @maria-rcks in pingdotgg/t3code#8809 * feat(web): search individual settings by detail by @maria-rcks in pingdotgg/t3code#8831 * feat(client): render viewed images in work logs by @maria-rcks in pingdotgg/t3code#8936 * fix(client): use package import for markdown image helpers by @juliusmarminge in pingdotgg/t3code#9010 * test: remove static presentation snapshots by @t3-code[bot] in pingdotgg/t3code#9008 * perf(server): bound snapshot activity payload memory by @t3dotgg in pingdotgg/t3code#9000 * perf(server): cut idle CPU use and stop provider event leaks by @t3dotgg in pingdotgg/t3code#8187 * perf(server): scan only appended transcript bytes for usage summaries by @StiensWout in pingdotgg/t3code#9024 * perf(server): cut chatty tool-update frames by 90% by @Adamulek123 in pingdotgg/t3code#8368 * fix(server): settle threads server-side by @t3dotgg in pingdotgg/t3code#8600 * fix(clients): dedupe skills in composer menus by @Adamulek123 in pingdotgg/t3code#8043 * fix(server): stop OpenCode child sessions by @t3dotgg in pingdotgg/t3code#9005 * perf(web): defer pull request line stats until visible by @Adamulek123 in pingdotgg/t3code#6471 * perf(server): skip full-message reads while streaming by @t3dotgg in pingdotgg/t3code#9032 * perf(client-runtime): halve server config bootstrap traffic by @Adamulek123 in pingdotgg/t3code#8367 * fix(web): align un-settle banner action by @StiensWout in pingdotgg/t3code#9033 * fix(web): block type-to-focus behind open dialogs by @Lucenx9 in pingdotgg/t3code#8139 * feat(shortcuts): copy active thread reference by @maria-rcks in pingdotgg/t3code#8994 * fix(mobile): keep thread scroll bounds current after animations by @juliusmarminge in pingdotgg/t3code#9013 * fix(server): cache project favicon resolution by @willsheldon in pingdotgg/t3code#9080 * feat(claude): add Claude Fable 5.1 model by @q1 in pingdotgg/t3code#9078 * fix(preview): restore recording and macOS rendering after Electron 43 by @StiensWout in pingdotgg/t3code#9001 * feat(desktop): add configurable quit shortcut confirmation by @juliusmarminge in pingdotgg/t3code#9076 * feat(web): open project settings from thread menus by @SunkenInTime in pingdotgg/t3code#8925 * fix(chat): reuse one row for live activity by @maria-rcks in pingdotgg/t3code#9062 * feat(models): discover Claude models from remote manifest by @juliusmarminge in pingdotgg/t3code#9084 * Revert "fix(chat): reuse one row for live activity" by @maria-rcks in pingdotgg/t3code#9096 * fix(web): sync sidebar PR state from open panel by @t3-code[bot] in pingdotgg/t3code#9092 * fix(web): changing projects no longer creates a draft by @extoci in pingdotgg/t3code#9097 * fix(web): keep theme placeholder text dimmer than entered text by @flamboh in pingdotgg/t3code#9104 * fix(web): keep the selected environment when changing projects by @t3dotgg in pingdotgg/t3code#9102 ## New Contributors * @willsheldon made their first contribution in pingdotgg/t3code#9080 * @q1 made their first contribution in pingdotgg/t3code#9078 **Full Changelog**: pingdotgg/t3code@v0.0.37...v0.0.38 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.38
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
…merge drops Merge origin/main (04efa79) into fork main; 70 conflicted files resolved keep-both per docs/internals/mt-fork-merges.md. Notable upstream work: server-side thread settlement (pingdotgg#8600), remote Claude model manifest (pingdotgg#9084) + Fable 5.1 (pingdotgg#9078), resumable usage transcript scans (pingdotgg#9024), media previews across clients (pingdotgg#9023), CLI open-in-desktop (pingdotgg#8824), quit-shortcut confirmation (pingdotgg#9076), PR list filters (pingdotgg#8809), settings search (pingdotgg#8831). Fork wiring kept: goals/queued turns/thread_send in decider + ProviderCommandReactor, TurnWatchdogReactor beside ThreadSettlementReactor, MT Auto router, usage sources (grok/cursor/opencode), voice, tabs, upstream PR shelf, Chrome multitab, computer use, environment retargeting. Superseded by upstream: client-side canSettle (queued-turn rule folded into ThreadSettlementPolicy), mobile autoSettleOnMerge preference. Pre-existing fork breakage fixed in passing: preload.ts lost the clientPlatform const (dropped definition, kept call site); ChatMarkdown's remark memo lacked remarkCodexDirectives so Codex file chips and artifact cards never rendered; Claude adapter still checked attachment.type === "pdf" after the 08-29 "file" model; Codex adapter carried a dead PDF-reject branch and a fork-only test asserting it; composerProviderState availability check now uses the alias-aware resolveSelectableModel. Verified: personal-verify-fork-features.sh OK; typecheck clean for contracts, shared, client-runtime, server, web, desktop, mobile; test suites green except two pre-existing fork failures (shared shell PATH ordering, CodexAdapter child-model lifecycle timeout — both fail on the backup branch too). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J764QWzvXpEUTgDPn5ahfo

pull request lists now show summary-style colored labels and per-row additions/deletions, with author and label filters. the author picker stays capped at ten contributors and ranks them by merges in the loaded results. sorting is a separate icon +
Sortcontrol; creation-time and change-size choices explicitly apply to the rows shown.selected labels remain visible and removable when the current state has no matching rows. url labels dedupe case-insensitively.
verified against real pingdotgg/t3code data earlier in this pr: author search narrowed the list to matching rows and loaded change totals sorted strictly by size. the final follow-up passed 101 focused tests and web typecheck.
this capture predates the final narrower icon +
Sorttrigger, but reflects the shipped row-label and filter-menu treatment.generated with gpt-5.6-sol in the codex harness.
Note
Low Risk
Mostly UI and client-side ordering; author/label filters extend existing listing filter plumbing and URL/cache keys, so expect harmless refetches after deploy rather than security or data risks.
Overview
The Pull requests page gains author and labels narrowings (URL-backed with the rest of the menu filters), a separate Sort control, and richer list rows.
The Filters menu is reorganized into compact submenus that show the current choice; the trigger shows a count of active narrowings instead of a dot. New Author (searchable radio list, capped at ten, ordered by merges in loaded results) and Labels (multi-select, up to ten) submenus are fed by
collectPullRequestListFacets, with an extra list fetch only while the menu is open. Sort options (recently updated, newest/oldest shown, largest/smallest by diff size) reorder client-side over the rows currently displayed and collapse involvement grouping when not on the default.Rows show the first label with a colored dot and a
+Nsuffix. Label hex colors go through sharedpullRequestLabelColor(also used in the detail summary). Project options can show favicons viaPullRequestFilterOptionIcon. Tests adjustfindLabeledGroupfor nested submenu radio groups.Reviewed by Cursor Bugbot for commit 275bd19. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Add author, label, and sort filters to pull request list
PullRequestFiltersMenu, with searchable author list ranked by merged count and multi-select label checkboxesupdated,newest,oldest,largest,smallest) to URL search state and a sort control in the list headercollectPullRequestListFacetsin pullRequestList.logic.ts to compute author and label facet lists on demand when the filters menu openspullRequestLabelColoras a shared color validator and addsPullRequestRowLabelsto show the first label with a colored dot and+Nindicator on each rowscopeKeyextended to include author and labels for cache separationMacroscope summarized 275bd19.