Skip to content

[Feature]: Add global thread filters to the Projects sidebar #1043

@jjjjjjjjjjjjjjjjacob

Description

@jjjjjjjjjjjjjjjjacob

Before submitting

  • I searched existing issues and did not find a duplicate.
  • I am describing a concrete problem or use case, not just a vague idea.

Area

apps/web

Problem or use case

The Projects sidebar already shows useful thread state visually, but once there are many threads across multiple projects it becomes hard to narrow the list to the ones I actually need to act on.

Today I can see statuses like working, pending approval, awaiting input, completed, and terminal state indicators, but I cannot filter the thread list by those states. That makes it slower to find active work, blocked threads, threads with terminal activity, or threads where I have unsent draft content.

Proposed solution

Add one global filter control to the Projects sidebar that filters thread lists client-side across all projects.

Initial filter groups:

  • Status: Working, Connecting, Pending Approval, Awaiting Input, Plan Ready, Completed
  • Terminal: Terminal open, Terminal running
  • Message: Unsent draft

Filter semantics:

  • OR within Status
  • OR within Terminal
  • AND across sections

The filter control should live in the Projects header next to the existing add-project action. Each multi-option section should have an inline All control that selects the whole section and restores the previous subset when toggled back off.

This should stay client-only and reuse existing sidebar state rather than adding backend APIs or contracts work.

Why this matters

This makes the sidebar much more usable once a workspace has many threads.

It helps people quickly find:

  • threads that need attention now
  • threads that are still running
  • threads waiting on approvals or input
  • threads with terminal activity
  • threads where there is unsent draft content

The immediate benefit is less scanning, less context switching, and faster recovery when returning to an already busy workspace.

Smallest useful scope

The smallest useful version is a single global filter menu in the Projects sidebar for client-side filtering only.

That first pass should include:

  • status filters
  • terminal filters
  • unsent draft filtering
  • OR semantics within status and terminal groups
  • AND semantics across groups

Out of scope for the first pass:

  • per-project filters
  • sidebar search
  • sort controls
  • settings integration
  • route/search-param persistence
  • server-side filtering

Alternatives considered

The current workaround is manual scanning of the sidebar and using thread titles or visual indicators to hunt for the right thread.

A separate sidebar search feature can help with text lookup, but it does not replace state-based filtering. Search and filtering solve different problems and should be able to coexist.

Risks or tradeoffs

This adds some UI and state complexity to the sidebar, so the implementation should stay narrowly scoped.

Main tradeoffs:

  • more controls in an already dense sidebar
  • filter semantics need to stay predictable
  • the UI should coexist cleanly with separate search work
  • section-level All behavior needs to be intuitive

Keeping it client-only and limiting it to one global menu helps contain that complexity.

Examples or references

Comparable pattern:

  • project/thread sidebars that combine visual state indicators with lightweight faceted filtering

Relevant context for this request:

  • the sidebar already exposes status and terminal state visually
  • there is separate work around sidebar search, so this should be designed to coexist with that rather than replace it

Contribution

  • I would be open to helping implement this.

Working Demo

https://github.com/jjjjjjjjjjjjjjjjacob/t3code/tree/feat/sidebar-filters

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementRequested improvement or new capability.needs-triageIssue needs maintainer review and initial categorization.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions