Skip to content

issues list: expose completedAt (+ --completed-after/--completed-before filters) #53

Description

@jzillmann

Problem

linear issues list --output json exposes only createdAt / updatedAt. There is no completedAt field in the output (any format) and no --completed-after / --completed-before filter.

Any consumer that needs "issues closed in a time window" (e.g. a daily/weekly engineering digest) has to approximate with a proxy: Done issues whose updatedAt falls in the window. That overcounts — a Done issue touched after completion (label edit, comment, backlink) is counted as "closed today" again.

Verified at HEAD (e814332): rg CompletedAt internal/format/issue.go is empty, and rg "completed-after" internal/ has no hits. The Linear GraphQL API exposes completedAt on Issue, so this is plumbing, not an API limitation.

Proposal

  1. Include completedAt (and ideally startedAt, canceledAt) in the JSON output of issues list — compact and full formats.
  2. Add --completed-after / --completed-before ISO-8601 filters, mirroring the existing --created-after / --created-before.

Related nit: in compact JSON, labels is also absent (only --format full carries it), which forces a much heavier fetch just to bucket issues by label.

Context

Hit while building a daily dev digest: the report has to carry a permanent "closed = Done issues updated in window (updatedAt proxy)" caveat until this lands.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions