feat(web): add pull request list filters - #8809

Merged
maria-rcks merged 27 commits into
pingdotgg:mainfrom
maria-rcks:t3code/improve-pull-request-filters
Sep 1, 2026
Merged

feat(web): add pull request list filters#8809
maria-rcks merged 27 commits into
pingdotgg:mainfrom
maria-rcks:t3code/improve-pull-request-filters

Conversation

@maria-rcks

@maria-rcksmaria-rcks commented Aug 30, 2026

Copy link
Copy Markdown
Collaborator

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 + Sort control; 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.

beforefeature layout
beforefeature layout

this capture predates the final narrower icon + Sort trigger, 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 +N suffix. Label hex colors go through shared pullRequestLabelColor (also used in the detail summary). Project options can show favicons via PullRequestFilterOptionIcon. Tests adjust findLabeledGroup for 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

  • Adds author and label filter submenus to PullRequestFiltersMenu, with searchable author list ranked by merged count and multi-select label checkboxes
  • Adds sort options (updated, newest, oldest, largest, smallest) to URL search state and a sort control in the list header
  • Introduces collectPullRequestListFacets in pullRequestList.logic.ts to compute author and label facet lists on demand when the filters menu opens
  • Extracts pullRequestLabelColor as a shared color validator and adds PullRequestRowLabels to show the first label with a colored dot and +N indicator on each row
  • Converts existing filter groups (State, Involvement, Draft, Review, Checks, Host, Server, Project) into submenu entries with a numeric active-filter count badge on the trigger
  • Behavioral Change: typed query qualifiers now override menu filter state for author and labels; scopeKey extended to include author and labels for cache separation

Macroscope summarized 275bd19.

@coderabbitai

coderabbitaiBot commented Aug 30, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Team

Run ID: 03825c79-bbde-4b8f-960a-71ae47b71ac1

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. labels Aug 30, 2026
Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 new outlined mode of CompactFilterMenu reconstructs Button's outline variant on a bare MenuTrigger, next to a Filters trigger that is a real Button 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.tsxInputGroup className="h-8" overrides the wrapper height instead of using the Input size contract, leaving the inner input taller than its border box.
  • apps/web/src/components/pullRequest/PullRequestRow.tsxlabelDotColor plus the label-dot chip markup is now a third divergent copy of the same treatment.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx
Comment threadapps/web/src/routes/_chat.pull-requests.tsx
Comment threadapps/web/src/routes/_chat.pull-requests.tsx
Comment threadapps/web/src/routes/_chat.pull-requests.tsx
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One layout finding on the new filter submenu triggers.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated
@macroscopeapp

macroscopeappBot commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: 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.

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/pullRequestList.logic.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ 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.

Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated
@maria-rcks
maria-rcks merged commit d35c71d into pingdotgg:mainSep 1, 2026
26 checks passed
henrychu04 pushed a commit to henrychu04/t3code-coder that referenced this pull request Sep 1, 2026
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
henrychu04 pushed a commit to henrychu04/t3code-coder that referenced this pull request Sep 1, 2026
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Sep 1, 2026
## 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
henrychu04 pushed a commit to henrychu04/t3code-coder that referenced this pull request Sep 1, 2026
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
henrychu04 pushed a commit to henrychu04/t3code-coder that referenced this pull request Sep 1, 2026
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
sheehanmunim added a commit to munimtechnologies/mtcode that referenced this pull request Sep 2, 2026
…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
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL500-999 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@maria-rcks
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat(web): add pull request list filters - #8809

Merged
maria-rcks merged 27 commits into
pingdotgg:mainfrom
maria-rcks:t3code/improve-pull-request-filters
Sep 1, 2026
Merged

feat(web): add pull request list filters#8809
maria-rcks merged 27 commits into
pingdotgg:mainfrom
maria-rcks:t3code/improve-pull-request-filters

Conversation

@maria-rcks

@maria-rcksmaria-rcks commented Aug 30, 2026

Copy link
Copy Markdown
Collaborator

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 + Sort control; 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.

beforefeature layout
beforefeature layout

this capture predates the final narrower icon + Sort trigger, 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 +N suffix. Label hex colors go through shared pullRequestLabelColor (also used in the detail summary). Project options can show favicons via PullRequestFilterOptionIcon. Tests adjust findLabeledGroup for 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

  • Adds author and label filter submenus to PullRequestFiltersMenu, with searchable author list ranked by merged count and multi-select label checkboxes
  • Adds sort options (updated, newest, oldest, largest, smallest) to URL search state and a sort control in the list header
  • Introduces collectPullRequestListFacets in pullRequestList.logic.ts to compute author and label facet lists on demand when the filters menu opens
  • Extracts pullRequestLabelColor as a shared color validator and adds PullRequestRowLabels to show the first label with a colored dot and +N indicator on each row
  • Converts existing filter groups (State, Involvement, Draft, Review, Checks, Host, Server, Project) into submenu entries with a numeric active-filter count badge on the trigger
  • Behavioral Change: typed query qualifiers now override menu filter state for author and labels; scopeKey extended to include author and labels for cache separation

Macroscope summarized 275bd19.

@coderabbitai

coderabbitaiBot commented Aug 30, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Team

Run ID: 03825c79-bbde-4b8f-960a-71ae47b71ac1

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. labels Aug 30, 2026
Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 new outlined mode of CompactFilterMenu reconstructs Button's outline variant on a bare MenuTrigger, next to a Filters trigger that is a real Button 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.tsxInputGroup className="h-8" overrides the wrapper height instead of using the Input size contract, leaving the inner input taller than its border box.
  • apps/web/src/components/pullRequest/PullRequestRow.tsxlabelDotColor plus the label-dot chip markup is now a third divergent copy of the same treatment.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx
Comment threadapps/web/src/routes/_chat.pull-requests.tsx
Comment threadapps/web/src/routes/_chat.pull-requests.tsx
Comment threadapps/web/src/routes/_chat.pull-requests.tsx
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One layout finding on the new filter submenu triggers.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated
@macroscopeapp

macroscopeappBot commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: 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.

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/pullRequestList.logic.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ 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.

Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated
@maria-rcks
maria-rcks merged commit d35c71d into pingdotgg:mainSep 1, 2026
26 checks passed
henrychu04 pushed a commit to henrychu04/t3code-coder that referenced this pull request Sep 1, 2026
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
henrychu04 pushed a commit to henrychu04/t3code-coder that referenced this pull request Sep 1, 2026
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Sep 1, 2026
## 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
henrychu04 pushed a commit to henrychu04/t3code-coder that referenced this pull request Sep 1, 2026
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
henrychu04 pushed a commit to henrychu04/t3code-coder that referenced this pull request Sep 1, 2026
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
sheehanmunim added a commit to munimtechnologies/mtcode that referenced this pull request Sep 2, 2026
…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
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL500-999 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@maria-rcks
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(web): add pull request list filters - #8809

Merged
maria-rcks merged 27 commits into
pingdotgg:mainfrom
maria-rcks:t3code/improve-pull-request-filters
Sep 1, 2026
Merged

feat(web): add pull request list filters#8809
maria-rcks merged 27 commits into
pingdotgg:mainfrom
maria-rcks:t3code/improve-pull-request-filters

Conversation

@maria-rcks

@maria-rcksmaria-rcks commented Aug 30, 2026

Copy link
Copy Markdown
Collaborator

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 + Sort control; 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.

beforefeature layout
beforefeature layout

this capture predates the final narrower icon + Sort trigger, 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 +N suffix. Label hex colors go through shared pullRequestLabelColor (also used in the detail summary). Project options can show favicons via PullRequestFilterOptionIcon. Tests adjust findLabeledGroup for 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

  • Adds author and label filter submenus to PullRequestFiltersMenu, with searchable author list ranked by merged count and multi-select label checkboxes
  • Adds sort options (updated, newest, oldest, largest, smallest) to URL search state and a sort control in the list header
  • Introduces collectPullRequestListFacets in pullRequestList.logic.ts to compute author and label facet lists on demand when the filters menu opens
  • Extracts pullRequestLabelColor as a shared color validator and adds PullRequestRowLabels to show the first label with a colored dot and +N indicator on each row
  • Converts existing filter groups (State, Involvement, Draft, Review, Checks, Host, Server, Project) into submenu entries with a numeric active-filter count badge on the trigger
  • Behavioral Change: typed query qualifiers now override menu filter state for author and labels; scopeKey extended to include author and labels for cache separation

Macroscope summarized 275bd19.

@coderabbitai

coderabbitaiBot commented Aug 30, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Team

Run ID: 03825c79-bbde-4b8f-960a-71ae47b71ac1

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. labels Aug 30, 2026
Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 new outlined mode of CompactFilterMenu reconstructs Button's outline variant on a bare MenuTrigger, next to a Filters trigger that is a real Button 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.tsxInputGroup className="h-8" overrides the wrapper height instead of using the Input size contract, leaving the inner input taller than its border box.
  • apps/web/src/components/pullRequest/PullRequestRow.tsxlabelDotColor plus the label-dot chip markup is now a third divergent copy of the same treatment.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx
Comment threadapps/web/src/routes/_chat.pull-requests.tsx
Comment threadapps/web/src/routes/_chat.pull-requests.tsx
Comment threadapps/web/src/routes/_chat.pull-requests.tsx
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One layout finding on the new filter submenu triggers.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated
@macroscopeapp

macroscopeappBot commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: 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.

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/pullRequestList.logic.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ 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.

Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated
@maria-rcks
maria-rcks merged commit d35c71d into pingdotgg:mainSep 1, 2026
26 checks passed
henrychu04 pushed a commit to henrychu04/t3code-coder that referenced this pull request Sep 1, 2026
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
henrychu04 pushed a commit to henrychu04/t3code-coder that referenced this pull request Sep 1, 2026
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Sep 1, 2026
## 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
henrychu04 pushed a commit to henrychu04/t3code-coder that referenced this pull request Sep 1, 2026
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
henrychu04 pushed a commit to henrychu04/t3code-coder that referenced this pull request Sep 1, 2026
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
sheehanmunim added a commit to munimtechnologies/mtcode that referenced this pull request Sep 2, 2026
…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
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL500-999 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@maria-rcks
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(web): add pull request list filters - #8809

Merged
maria-rcks merged 27 commits into
pingdotgg:mainfrom
maria-rcks:t3code/improve-pull-request-filters
Sep 1, 2026
Merged

feat(web): add pull request list filters#8809
maria-rcks merged 27 commits into
pingdotgg:mainfrom
maria-rcks:t3code/improve-pull-request-filters

Conversation

@maria-rcks

@maria-rcksmaria-rcks commented Aug 30, 2026

Copy link
Copy Markdown
Collaborator

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 + Sort control; 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.

beforefeature layout
beforefeature layout

this capture predates the final narrower icon + Sort trigger, 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 +N suffix. Label hex colors go through shared pullRequestLabelColor (also used in the detail summary). Project options can show favicons via PullRequestFilterOptionIcon. Tests adjust findLabeledGroup for 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

  • Adds author and label filter submenus to PullRequestFiltersMenu, with searchable author list ranked by merged count and multi-select label checkboxes
  • Adds sort options (updated, newest, oldest, largest, smallest) to URL search state and a sort control in the list header
  • Introduces collectPullRequestListFacets in pullRequestList.logic.ts to compute author and label facet lists on demand when the filters menu opens
  • Extracts pullRequestLabelColor as a shared color validator and adds PullRequestRowLabels to show the first label with a colored dot and +N indicator on each row
  • Converts existing filter groups (State, Involvement, Draft, Review, Checks, Host, Server, Project) into submenu entries with a numeric active-filter count badge on the trigger
  • Behavioral Change: typed query qualifiers now override menu filter state for author and labels; scopeKey extended to include author and labels for cache separation

Macroscope summarized 275bd19.

@coderabbitai

coderabbitaiBot commented Aug 30, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Team

Run ID: 03825c79-bbde-4b8f-960a-71ae47b71ac1

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. labels Aug 30, 2026
Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 new outlined mode of CompactFilterMenu reconstructs Button's outline variant on a bare MenuTrigger, next to a Filters trigger that is a real Button 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.tsxInputGroup className="h-8" overrides the wrapper height instead of using the Input size contract, leaving the inner input taller than its border box.
  • apps/web/src/components/pullRequest/PullRequestRow.tsxlabelDotColor plus the label-dot chip markup is now a third divergent copy of the same treatment.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx
Comment threadapps/web/src/routes/_chat.pull-requests.tsx
Comment threadapps/web/src/routes/_chat.pull-requests.tsx
Comment threadapps/web/src/routes/_chat.pull-requests.tsx
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One layout finding on the new filter submenu triggers.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated
@macroscopeapp

macroscopeappBot commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: 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.

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/pullRequestList.logic.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ 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.

Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated
@maria-rcks
maria-rcks merged commit d35c71d into pingdotgg:mainSep 1, 2026
26 checks passed
henrychu04 pushed a commit to henrychu04/t3code-coder that referenced this pull request Sep 1, 2026
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
henrychu04 pushed a commit to henrychu04/t3code-coder that referenced this pull request Sep 1, 2026
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Sep 1, 2026
## 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
henrychu04 pushed a commit to henrychu04/t3code-coder that referenced this pull request Sep 1, 2026
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
henrychu04 pushed a commit to henrychu04/t3code-coder that referenced this pull request Sep 1, 2026
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
sheehanmunim added a commit to munimtechnologies/mtcode that referenced this pull request Sep 2, 2026
…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
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL500-999 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@maria-rcks
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat(web): add pull request list filters - #8809

Merged
maria-rcks merged 27 commits into
pingdotgg:mainfrom
maria-rcks:t3code/improve-pull-request-filters
Sep 1, 2026
Merged

feat(web): add pull request list filters#8809
maria-rcks merged 27 commits into
pingdotgg:mainfrom
maria-rcks:t3code/improve-pull-request-filters

Conversation

@maria-rcks

@maria-rcksmaria-rcks commented Aug 30, 2026

Copy link
Copy Markdown
Collaborator

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 + Sort control; 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.

beforefeature layout
beforefeature layout

this capture predates the final narrower icon + Sort trigger, 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 +N suffix. Label hex colors go through shared pullRequestLabelColor (also used in the detail summary). Project options can show favicons via PullRequestFilterOptionIcon. Tests adjust findLabeledGroup for 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

  • Adds author and label filter submenus to PullRequestFiltersMenu, with searchable author list ranked by merged count and multi-select label checkboxes
  • Adds sort options (updated, newest, oldest, largest, smallest) to URL search state and a sort control in the list header
  • Introduces collectPullRequestListFacets in pullRequestList.logic.ts to compute author and label facet lists on demand when the filters menu opens
  • Extracts pullRequestLabelColor as a shared color validator and adds PullRequestRowLabels to show the first label with a colored dot and +N indicator on each row
  • Converts existing filter groups (State, Involvement, Draft, Review, Checks, Host, Server, Project) into submenu entries with a numeric active-filter count badge on the trigger
  • Behavioral Change: typed query qualifiers now override menu filter state for author and labels; scopeKey extended to include author and labels for cache separation

Macroscope summarized 275bd19.

@coderabbitai

coderabbitaiBot commented Aug 30, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Team

Run ID: 03825c79-bbde-4b8f-960a-71ae47b71ac1

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. labels Aug 30, 2026
Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 new outlined mode of CompactFilterMenu reconstructs Button's outline variant on a bare MenuTrigger, next to a Filters trigger that is a real Button 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.tsxInputGroup className="h-8" overrides the wrapper height instead of using the Input size contract, leaving the inner input taller than its border box.
  • apps/web/src/components/pullRequest/PullRequestRow.tsxlabelDotColor plus the label-dot chip markup is now a third divergent copy of the same treatment.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx
Comment threadapps/web/src/routes/_chat.pull-requests.tsx
Comment threadapps/web/src/routes/_chat.pull-requests.tsx
Comment threadapps/web/src/routes/_chat.pull-requests.tsx
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One layout finding on the new filter submenu triggers.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated
@macroscopeapp

macroscopeappBot commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: 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.

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/pullRequestList.logic.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ 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.

Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated
@maria-rcks
maria-rcks merged commit d35c71d into pingdotgg:mainSep 1, 2026
26 checks passed
henrychu04 pushed a commit to henrychu04/t3code-coder that referenced this pull request Sep 1, 2026
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
henrychu04 pushed a commit to henrychu04/t3code-coder that referenced this pull request Sep 1, 2026
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Sep 1, 2026
## 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
henrychu04 pushed a commit to henrychu04/t3code-coder that referenced this pull request Sep 1, 2026
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
henrychu04 pushed a commit to henrychu04/t3code-coder that referenced this pull request Sep 1, 2026
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
sheehanmunim added a commit to munimtechnologies/mtcode that referenced this pull request Sep 2, 2026
…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
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL500-999 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@maria-rcks
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(web): add pull request list filters - #8809

Merged
maria-rcks merged 27 commits into
pingdotgg:mainfrom
maria-rcks:t3code/improve-pull-request-filters
Sep 1, 2026
Merged

feat(web): add pull request list filters#8809
maria-rcks merged 27 commits into
pingdotgg:mainfrom
maria-rcks:t3code/improve-pull-request-filters

Conversation

@maria-rcks

@maria-rcksmaria-rcks commented Aug 30, 2026

Copy link
Copy Markdown
Collaborator

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 + Sort control; 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.

beforefeature layout
beforefeature layout

this capture predates the final narrower icon + Sort trigger, 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 +N suffix. Label hex colors go through shared pullRequestLabelColor (also used in the detail summary). Project options can show favicons via PullRequestFilterOptionIcon. Tests adjust findLabeledGroup for 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

  • Adds author and label filter submenus to PullRequestFiltersMenu, with searchable author list ranked by merged count and multi-select label checkboxes
  • Adds sort options (updated, newest, oldest, largest, smallest) to URL search state and a sort control in the list header
  • Introduces collectPullRequestListFacets in pullRequestList.logic.ts to compute author and label facet lists on demand when the filters menu opens
  • Extracts pullRequestLabelColor as a shared color validator and adds PullRequestRowLabels to show the first label with a colored dot and +N indicator on each row
  • Converts existing filter groups (State, Involvement, Draft, Review, Checks, Host, Server, Project) into submenu entries with a numeric active-filter count badge on the trigger
  • Behavioral Change: typed query qualifiers now override menu filter state for author and labels; scopeKey extended to include author and labels for cache separation

Macroscope summarized 275bd19.

@coderabbitai

coderabbitaiBot commented Aug 30, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Team

Run ID: 03825c79-bbde-4b8f-960a-71ae47b71ac1

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. labels Aug 30, 2026
Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 new outlined mode of CompactFilterMenu reconstructs Button's outline variant on a bare MenuTrigger, next to a Filters trigger that is a real Button 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.tsxInputGroup className="h-8" overrides the wrapper height instead of using the Input size contract, leaving the inner input taller than its border box.
  • apps/web/src/components/pullRequest/PullRequestRow.tsxlabelDotColor plus the label-dot chip markup is now a third divergent copy of the same treatment.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx
Comment threadapps/web/src/routes/_chat.pull-requests.tsx
Comment threadapps/web/src/routes/_chat.pull-requests.tsx
Comment threadapps/web/src/routes/_chat.pull-requests.tsx
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One layout finding on the new filter submenu triggers.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated
@macroscopeapp

macroscopeappBot commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: 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.

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/pullRequestList.logic.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ 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.

Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated
@maria-rcks
maria-rcks merged commit d35c71d into pingdotgg:mainSep 1, 2026
26 checks passed
henrychu04 pushed a commit to henrychu04/t3code-coder that referenced this pull request Sep 1, 2026
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
henrychu04 pushed a commit to henrychu04/t3code-coder that referenced this pull request Sep 1, 2026
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Sep 1, 2026
## 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
henrychu04 pushed a commit to henrychu04/t3code-coder that referenced this pull request Sep 1, 2026
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
henrychu04 pushed a commit to henrychu04/t3code-coder that referenced this pull request Sep 1, 2026
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
sheehanmunim added a commit to munimtechnologies/mtcode that referenced this pull request Sep 2, 2026
…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
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL500-999 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@maria-rcks
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(web): add pull request list filters - #8809

Merged
maria-rcks merged 27 commits into
pingdotgg:mainfrom
maria-rcks:t3code/improve-pull-request-filters
Sep 1, 2026
Merged

feat(web): add pull request list filters#8809
maria-rcks merged 27 commits into
pingdotgg:mainfrom
maria-rcks:t3code/improve-pull-request-filters

Conversation

@maria-rcks

@maria-rcksmaria-rcks commented Aug 30, 2026

Copy link
Copy Markdown
Collaborator

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 + Sort control; 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.

beforefeature layout
beforefeature layout

this capture predates the final narrower icon + Sort trigger, 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 +N suffix. Label hex colors go through shared pullRequestLabelColor (also used in the detail summary). Project options can show favicons via PullRequestFilterOptionIcon. Tests adjust findLabeledGroup for 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

  • Adds author and label filter submenus to PullRequestFiltersMenu, with searchable author list ranked by merged count and multi-select label checkboxes
  • Adds sort options (updated, newest, oldest, largest, smallest) to URL search state and a sort control in the list header
  • Introduces collectPullRequestListFacets in pullRequestList.logic.ts to compute author and label facet lists on demand when the filters menu opens
  • Extracts pullRequestLabelColor as a shared color validator and adds PullRequestRowLabels to show the first label with a colored dot and +N indicator on each row
  • Converts existing filter groups (State, Involvement, Draft, Review, Checks, Host, Server, Project) into submenu entries with a numeric active-filter count badge on the trigger
  • Behavioral Change: typed query qualifiers now override menu filter state for author and labels; scopeKey extended to include author and labels for cache separation

Macroscope summarized 275bd19.

@coderabbitai

coderabbitaiBot commented Aug 30, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Team

Run ID: 03825c79-bbde-4b8f-960a-71ae47b71ac1

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. labels Aug 30, 2026
Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 new outlined mode of CompactFilterMenu reconstructs Button's outline variant on a bare MenuTrigger, next to a Filters trigger that is a real Button 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.tsxInputGroup className="h-8" overrides the wrapper height instead of using the Input size contract, leaving the inner input taller than its border box.
  • apps/web/src/components/pullRequest/PullRequestRow.tsxlabelDotColor plus the label-dot chip markup is now a third divergent copy of the same treatment.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx
Comment threadapps/web/src/routes/_chat.pull-requests.tsx
Comment threadapps/web/src/routes/_chat.pull-requests.tsx
Comment threadapps/web/src/routes/_chat.pull-requests.tsx
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One layout finding on the new filter submenu triggers.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated
@macroscopeapp

macroscopeappBot commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: 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.

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/pullRequestList.logic.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ 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.

Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated
@maria-rcks
maria-rcks merged commit d35c71d into pingdotgg:mainSep 1, 2026
26 checks passed
henrychu04 pushed a commit to henrychu04/t3code-coder that referenced this pull request Sep 1, 2026
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
henrychu04 pushed a commit to henrychu04/t3code-coder that referenced this pull request Sep 1, 2026
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Sep 1, 2026
## 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
henrychu04 pushed a commit to henrychu04/t3code-coder that referenced this pull request Sep 1, 2026
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
henrychu04 pushed a commit to henrychu04/t3code-coder that referenced this pull request Sep 1, 2026
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
sheehanmunim added a commit to munimtechnologies/mtcode that referenced this pull request Sep 2, 2026
…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
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL500-999 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@maria-rcks
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat(web): add pull request list filters - #8809

Merged
maria-rcks merged 27 commits into
pingdotgg:mainfrom
maria-rcks:t3code/improve-pull-request-filters
Sep 1, 2026
Merged

feat(web): add pull request list filters#8809
maria-rcks merged 27 commits into
pingdotgg:mainfrom
maria-rcks:t3code/improve-pull-request-filters

Conversation

@maria-rcks

@maria-rcksmaria-rcks commented Aug 30, 2026

Copy link
Copy Markdown
Collaborator

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 + Sort control; 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.

beforefeature layout
beforefeature layout

this capture predates the final narrower icon + Sort trigger, 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 +N suffix. Label hex colors go through shared pullRequestLabelColor (also used in the detail summary). Project options can show favicons via PullRequestFilterOptionIcon. Tests adjust findLabeledGroup for 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

  • Adds author and label filter submenus to PullRequestFiltersMenu, with searchable author list ranked by merged count and multi-select label checkboxes
  • Adds sort options (updated, newest, oldest, largest, smallest) to URL search state and a sort control in the list header
  • Introduces collectPullRequestListFacets in pullRequestList.logic.ts to compute author and label facet lists on demand when the filters menu opens
  • Extracts pullRequestLabelColor as a shared color validator and adds PullRequestRowLabels to show the first label with a colored dot and +N indicator on each row
  • Converts existing filter groups (State, Involvement, Draft, Review, Checks, Host, Server, Project) into submenu entries with a numeric active-filter count badge on the trigger
  • Behavioral Change: typed query qualifiers now override menu filter state for author and labels; scopeKey extended to include author and labels for cache separation

Macroscope summarized 275bd19.

@coderabbitai

coderabbitaiBot commented Aug 30, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Team

Run ID: 03825c79-bbde-4b8f-960a-71ae47b71ac1

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Warning

Your free Security trial is over. An organization admin can activate Security or dismiss this notice.


Comment @coderabbitai help to get the list of available commands.

@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. labels Aug 30, 2026
Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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 new outlined mode of CompactFilterMenu reconstructs Button's outline variant on a bare MenuTrigger, next to a Filters trigger that is a real Button 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.tsxInputGroup className="h-8" overrides the wrapper height instead of using the Input size contract, leaving the inner input taller than its border box.
  • apps/web/src/components/pullRequest/PullRequestRow.tsxlabelDotColor plus the label-dot chip markup is now a third divergent copy of the same treatment.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx
Comment threadapps/web/src/routes/_chat.pull-requests.tsx
Comment threadapps/web/src/routes/_chat.pull-requests.tsx
Comment threadapps/web/src/routes/_chat.pull-requests.tsx
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One layout finding on the new filter submenu triggers.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated
@macroscopeapp

macroscopeappBot commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: 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.

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestRow.tsx Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/pullRequestList.logic.ts

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/components/pullRequest/PullRequestListFilters.tsx Outdated
Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ 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.

Comment threadapps/web/src/routes/_chat.pull-requests.tsx Outdated
@maria-rcks
maria-rcks merged commit d35c71d into pingdotgg:mainSep 1, 2026
26 checks passed
henrychu04 pushed a commit to henrychu04/t3code-coder that referenced this pull request Sep 1, 2026
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
henrychu04 pushed a commit to henrychu04/t3code-coder that referenced this pull request Sep 1, 2026
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
github-actionsBot added a commit to omarcresp/t3code-flake that referenced this pull request Sep 1, 2026
## 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
henrychu04 pushed a commit to henrychu04/t3code-coder that referenced this pull request Sep 1, 2026
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
henrychu04 pushed a commit to henrychu04/t3code-coder that referenced this pull request Sep 1, 2026
Co-authored-by: maria-rcks <254055478+maria-rcks@users.noreply.github.com>
sheehanmunim added a commit to munimtechnologies/mtcode that referenced this pull request Sep 2, 2026
…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
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL500-999 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@maria-rcks