-
Notifications
You must be signed in to change notification settings - Fork 766
Description
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
Allbehavior 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