From 27f2e27ec6d5ba9bb95cfcbf676aeff3001bdbc8 Mon Sep 17 00:00:00 2001 From: Prateek Date: Sat, 14 Feb 2026 03:38:23 +0530 Subject: [PATCH] fix: default listIssues to open state in tracker-linear When no state filter is specified, tracker-github defaults to "open" but tracker-linear was returning all issues. Now defaults to excluding completed/canceled issues, matching tracker-github behavior. Co-Authored-By: Claude Opus 4.6 --- packages/plugins/tracker-linear/src/index.ts | 7 ++++--- packages/plugins/tracker-linear/test/index.test.ts | 11 +++++++++++ 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/packages/plugins/tracker-linear/src/index.ts b/packages/plugins/tracker-linear/src/index.ts index cfc2940d2..5bf2ed008 100644 --- a/packages/plugins/tracker-linear/src/index.ts +++ b/packages/plugins/tracker-linear/src/index.ts @@ -282,10 +282,11 @@ function createLinearTracker(): Tracker { const filter: Record = {}; const variables: Record = {}; - if (filters.state === "open") { - filter["state"] = { type: { nin: ["completed", "canceled"] } }; - } else if (filters.state === "closed") { + if (filters.state === "closed") { filter["state"] = { type: { in: ["completed", "canceled"] } }; + } else if (filters.state !== "all") { + // Default to open (exclude completed/canceled) to match tracker-github + filter["state"] = { type: { nin: ["completed", "canceled"] } }; } if (filters.assignee) { diff --git a/packages/plugins/tracker-linear/test/index.test.ts b/packages/plugins/tracker-linear/test/index.test.ts index 111cfb0dc..9a96ea573 100644 --- a/packages/plugins/tracker-linear/test/index.test.ts +++ b/packages/plugins/tracker-linear/test/index.test.ts @@ -421,6 +421,17 @@ describe("tracker-linear plugin", () => { }); }); + it("defaults to open state when no state specified", async () => { + mockLinearAPI({ issues: { nodes: [] } }); + await tracker.listIssues!({}, project); + + const writeCall = requestMock.mock.results[0].value.write.mock.calls[0][0]; + const body = JSON.parse(writeCall); + expect(body.variables.filter.state).toEqual({ + type: { nin: ["completed", "canceled"] }, + }); + }); + it("passes assignee filter", async () => { mockLinearAPI({ issues: { nodes: [] } }); await tracker.listIssues!({ assignee: "Alice" }, project);