Skip to content

feat(desktop): filter the Issues page by priority and creator, and hide settled issues gone quiet - #3667

Merged
luke-agent[bot] merged 5 commits into
mainfrom
luke/issues-filter
Oct 18, 2026
Merged

luke-agent[bot] merged 5 commits into
mainfrom
luke/issues-filter

Conversation

@dastratakos

@dastratakos dastratakos commented Oct 18, 2026 •

Copy link
Copy Markdown
Contributor

Plan item "Filter and group" of Improve Issues board: filter the Issues page by priority and by creator, and hide Done/Canceled issues that went quiet over a week ago.

What changed

  • View options (issues-page.tsx's ViewOptions) gains three groups under Board / List, following the sidebar's tasks View options:
    • Priority submenu: Any priority (default), or any set of priorities. Picking a priority from "any" narrows to it, picking another adds it, and picking a checked one removes it. Removing the last one, or picking all five, goes back to Any priority.
    • Created by submenu: Anyone, Me, or a member by face. It reuses the sidebar's createdByEntries (now exported and no longer tied to the task view) and @luke/ui/actor-model. As in the sidebar, it shows only in a shared workspace, or while it is filtering.
    • Show completed switch ("Done or canceled over a week ago"). It is off by default, as on Linear's board, so Done and Canceled issues last updated over 7 days ago are left off the board and the List until it is switched on. Recent settled issues always show.
  • While the filter differs from the default, View options gets the sidebar's dot and aria-description="Filtered". A fresh reader sees no dot.
  • When a filter leaves no issue in a workspace that has some, either layout shows "No issues match" with Clear filters, not feat(desktop): show the empty state on an empty workspace's Issues board #3659's "No issues yet" + New issue. Clear filters goes back to the default filter. If the default itself shows nothing (every issue is settled and quiet), it turns Show completed on instead, so the press always brings something back.
  • Model: filteredIssues, issueFilterChanged, clearedIssueFilter, issueFilterToggledPriority, issueFilterAnyPriority, issueFilterCreatedBy and DEFAULT_ISSUE_FILTER live in @luke/features' issue-list-model.ts. The model has no DOM code and takes "now" from its caller, so its tests use a fixed time.
  • Kept like the layout: the filter is stored per reader and per workspace with readKept / writeKept, under luke.issuesFilters (issue-filter-view.ts), the way the sidebar keeps its task views. Keying by the reader's account means a Me chosen by one account never filters another account on the same Mac. It is not a synced setting and has no Settings row.
  • No @luke/ui change is left. My earlier CollectionPage/EmptyState spacing fix was dropped in the rebase because feat(desktop): show the empty state on an empty workspace's Issues board #3659 fixed the same clipping.

Tests

  • issue-list-model.test.ts:
    • The default filter hides only quiet settled issues and counts as no change.
    • Clear filters falls back to showing everything when the default would show nothing.
    • Priority narrow, add and remove; picking all priorities equals none.
    • Creator filter, including a creator who is gone.
    • Quiet settled issues as of a fixed time (8, 7 and 6 days, and old open work).
    • Combined filters; the helpers leave the other fields alone.
  • issues-page.test.ts (each fails without this change):
    • A priority filter hides the others on the board and in the List, the page says it is filtered, and the filter survives a remount.
    • Created by → Me shows only the reader's issues; Ada shows Ada's; Anyone shows everyone's again.
    • An old Done or Canceled issue is hidden at first while a recent one stays, on the board and in the List; Show completed brings it back and turns the dot on.
    • With every issue settled and quiet, the page says no issue matches, and Clear filters shows them.
    • A filter that matches nothing shows "No issues match", and Clear filters restores every issue and removes the dot.
    • One account's filter doesn't apply to another account.
  • Most tests in the file now pin the clock at a day past the epoch, so the synthetic issues (stamped in its first seconds) count as recent and the existing board and list tests are unaffected by the new default.

Screenshots

Drawn from the real components in a browser harness over synthetic issues (dark theme).

View options, Priority submenu menu
Default board: settled issues quiet over a week hidden, no dot default
Filtered board (Urgent + High), with the dot filtered
No issue matches, board nomatch board
No issue matches, List nomatch list
Empty workspace, board (#3659) empty board
Empty workspace, List (#3659) empty list
Factory, empty factory empty
Factory, failed factory failed

Out of scope / notes

  • Grouping beyond status comes next as its own PR ("Group by: Status / Priority" for the List only).
  • No server-side filtering: the page filters the at most 500 issues the list already reads.
  • No run.sh --preview Mac run is needed: this is renderer-only, with no new act, setting or main-process code.

@vercel

vercel Bot commented Oct 18, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
luke-web Ready Ready Preview Oct 18, 2026 7:54pm UTC

Request Review

devin-ai-integration[bot]

This comment was marked as resolved.

luke-agent Bot added a commit that referenced this pull request Oct 18, 2026
Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
luke-agent Bot added a commit that referenced this pull request Oct 18, 2026
Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
@luke-agent
luke-agent Bot force-pushed the luke/issues-filter branch from 8ec3011 to 51f16dc Compare October 18, 2026 19:29
devin-ai-integration[bot]

This comment was marked as resolved.

dastratakos and others added 5 commits October 18, 2026 19:47
…de settled issues gone quiet

View options gains Priority (any set, all by default), Created by (Anyone,
Me, or a member, as the sidebar's tasks view draws them), and Show
completed, which leaves out Done and Canceled issues last changed over a
week ago. The filter lives in issue-list-model.ts, takes its now from the
caller, and is kept per workspace in the renderer's storage. View options
wears the sidebar's dot while a filter is on, and a filter that keeps no
issue says so with Clear filters.

Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
…ount's on this Mac

Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
… at first

Show completed starts off, as Linear's board does, so a Done or Canceled
issue last changed over a week ago is hidden until it is switched on, and
View options' dot says the filter differs from that first one. Where the
first filter keeps no issue, Clear filters shows every issue instead.

Co-authored-by: luke-agent[bot] <339870089+luke-agent[bot]@users.noreply.github.com>
@luke-agent
luke-agent Bot removed this pull request from the merge queue due to a manual request Oct 18, 2026
@luke-agent
luke-agent Bot force-pushed the luke/issues-filter branch from 51f16dc to 5526e67 Compare October 18, 2026 19:51
@luke-agent
luke-agent Bot enabled auto-merge October 18, 2026 19:51
@luke-agent
luke-agent Bot added this pull request to the merge queue Oct 18, 2026
Merged via the queue into main with commit 8c0fab7 Oct 18, 2026
12 checks passed
@luke-agent
luke-agent Bot deleted the luke/issues-filter branch October 18, 2026 20:14

This branch was successfully deployed

1 active deployment
Preview — 5526e673 Deployed Oct 18, 2026 by vercel[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant