Skip to content

Add checkbox to hide Merged/Done issues in Open Items - #506

Merged
bkraeling merged 3 commits into
mainfrom
claude/open-items-merged-filter-80179b
Aug 27, 2026
Merged

Add checkbox to hide Merged/Done issues in Open Items#506
bkraeling merged 3 commits into
mainfrom
claude/open-items-merged-filter-80179b

Conversation

@bkraeling

@bkraeling bkraeling commented Aug 25, 2026

Copy link
Copy Markdown
Contributor

Summary

  • The Open Items list can show Linear issues with a "Merged" workflow state (it's a started-type state, so it still passes the open-issue query filter) even though the PR has already landed, plus occasionally "Done" issues that haven't fully synced out of the query yet.
  • Adds a "Hide Merged/Done" checkbox above the list that filters those cards out client-side.
  • Fetches state { name } on each Linear issue so the card can carry its status, then hides matching cards via a pure-CSS sibling-selector toggle — no <script>, since this partial is injected via fetch + innerHTML on the index page, which wouldn't execute a script tag anyway.

Test plan

  • pytest full suite passes (194 passed)
  • Rendered the partial with sample Merged/Done/In-Progress issues and verified in browser: unchecked shows all issues, checking "Hide Merged/Done" hides Merged and Done cards in both the Priority and Non-priority sections, unchecking restores them

📸 Screenshots (demo data)

This sandbox has no LINEAR_API_KEY/GITHUB_TOKEN, so these are captured against the
real Flask app / real Jinja templates / real CSS, with get_open_issues stubbed to
return a handful of synthetic Linear issues (including Merged/Done ones) so the new
checkbox has something to filter. Everything downstream of that data — routing,
rendering, the checkbox and CSS filter under test — is untouched. Headless Playwright
run, assertions in-line (all passed).

Filter off — Merged/Done issues show:

Desktop Mobile

Filter on — Merged/Done issues hidden:

Desktop Mobile

🤖 Generated with Claude Code

The Open Items list can surface Linear issues with a "Merged" workflow
state (a started-type state, so they still match the open-issue query)
even though their PR has landed. A CSS-only checkbox toggle lets users
filter those out without waiting on a JS-executed partial.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
@redreceipt
redreceipt temporarily deployed to bug-board-claude-open-i-a9jkxh August 25, 2026 19:29 Inactive
The checkbox and its label were inline elements, so vertical margin had
no effect and the Priority heading sat flush against the filter row.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
@bkraeling
bkraeling temporarily deployed to bug-board-claude-open-i-a9jkxh August 26, 2026 15:09 Inactive
@bkraeling
bkraeling marked this pull request as ready for review August 26, 2026 23:06
@bkraeling
bkraeling requested a review from redreceipt as a code owner August 26, 2026 23:06
@bkraeling
bkraeling requested review from mary-pr-poppins and a lite review from Copilot August 26, 2026 23:06

Copilot AI 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.

Pull request overview

Adds a client-side “Hide Merged/Done” toggle to the Open Items partial so that Linear issues lingering in “Merged” (started-type) or occasionally “Done” can be hidden without changing the server-side open-issue query behavior.

Changes:

  • Added a checkbox + CSS sibling-selector rule to hide cards with data-status of Merged/Done in the Open Items partial.
  • Annotated each rendered issue card with the Linear workflow state name (data-status=...).
  • Extended the Linear get_open_issues GraphQL selection set to fetch state { name }.

Reviewed changes

Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.

File Description
templates/partials/index_open_items.html Adds the checkbox UI, sets per-card data-status, and applies CSS-only filtering for Merged/Done cards.
linear/issues.py Fetches Linear issue state name so the template can render status-driven filtering.
Suppressed comments (1)

templates/partials/index_open_items.html:28

  • Same as above: prefer default('', true) for data-status to avoid relying on the truthiness of issue.state and to keep the attribute empty when state.name is missing.
    <div class="card" data-status="{{ issue.state.name if issue.state else '' }}">

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

{% if priority_issues %}
{% for issue in priority_issues %}
<div class="card">
<div class="card" data-status="{{ issue.state.name if issue.state else '' }}">
Comment thread linear/issues.py
Comment on lines +45 to +47
state {
name
}

@mary-pr-poppins mary-pr-poppins left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💬 Mary PR Poppins — Comment

2 notes

Client-side Hide Merged/Done toggle on Open Items, with state { name } on the Linear query and a CSS sibling-selector filter. I'd approve on the merits, but automated approval is blocked by no Linear issue and no test coverage for the new filter — suggest a Bug Board maintainer attach a Linear issue and sign off.

Worth your attention

  1. [Completeness & Correctness] [linear] ApollosProject PR has no Linear issue referencetemplates/partials/index_open_items.html:2
  2. [Completeness & Correctness] [tests] Hide Merged/Done has no automated coveragetemplates/partials/index_open_items.html:2
Notes · 2

⚪ [Completeness & Correctness] [linear] ApollosProject PR has no Linear issue referencetemplates/partials/index_open_items.html:2
Title, body, and commits have no ENG-/APO-/CS- key or linear.app URL, so acceptance criteria cannot be checked. Link a Linear issue if this is tracked work.


⚪ [Completeness & Correctness] [tests] Hide Merged/Done has no automated coveragetemplates/partials/index_open_items.html:2
The checkbox, data-status, CSS hide rules, and state { name } on linear/issues.py:46 are untested; tests/test_linear_issue_state_filters.py:103 still passes if this feature is reverted. A render_template test plus an assert that the open-issues query selects state { name } would lock it in.

Mary would approve this on the merits, but can't approve it automatically — test coverage isn't complete at the levels this change needs; no Linear issue is referenced. A second set of eyes should review and approve.

@bkraeling
bkraeling enabled auto-merge (squash) August 27, 2026 15:51
The previous push landed during an apparent Actions outage/pause and
never got a CI run, leaving the PR's merge state blocked on missing
required checks. No functional change.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
@bkraeling
bkraeling temporarily deployed to bug-board-claude-open-i-a9jkxh August 27, 2026 20:54 Inactive
@bkraeling
bkraeling merged commit adcb372 into main Aug 27, 2026
5 checks passed
@bkraeling
bkraeling deleted the claude/open-items-merged-filter-80179b branch August 27, 2026 20:54
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.

4 participants