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);