Linear — butter docs Skip to content
Widgets / Your work

Linear

Open issues assigned to you, ordered by recency and tagged with state and priority. Connect once, see your queue ten times a day.

Linear issues assigned to you (or created by you), one row each, with the state colour-coded and the priority surfaced inline. Filters get sharp: scope to a team, raise the priority floor, or pick exactly which status types you want to see.

Free Requires Linear OAuth 5-minute cache
Linear
  • Onboarding tour skips empty workspaces
    ENG-218 · In Progress
  • Webhook retries on 5xx
    ENG-211 · Todo
  • Reply previews on Slack notifications
    ENG-209 · In Progress
  • Avatar caching pass
    ENG-204 · In Review
  • Sticky filter bar on long lists
    ENG-198 · Todo
  • Keyboard nav for the command menu
    ENG-192 · In Progress

Connect Linear

Drop the widget in and click Connect Linear. We send you to Linear's OAuth flow in a new tab; you approve the read scope; you come back signed in. As with GitHub, a butter-operated worker brokers the handshake so you don't have to register your own Linear OAuth app.

Where the token lives: the worker hands the access token to your browser after exchange and keeps no record of it. From there it sits in chrome.storage.local on your device, and every GraphQL call goes directly from your browser to api.linear.app.

To disconnect, revoke from Linear's security settings. The widget will catch the next 401 and surface a Reconnect pill in the card header.

Add it to your dashboard

Press E , then A , and pick Linear. Default size is eight wide, four tall — comfortable for six or seven issues before scrolling. Drop it next to the GitHub widget for the standard "what's on my plate" pair.

How priorities and statuses render

  • State dot. The coloured circle to the left of each issue is the state colour Linear configures for that workflow state. So a green dot is your team's Done green, a blue dot is your team's In review blue, etc. Hover for the state name.
  • Priority chips. Urgent renders red with the alert octagon, High renders orange with an up-arrow, Medium is muted, Low is fainter still. Priority None is silent — no chip, no noise.
  • Identifier prefix. Every row shows the issue identifier (ENG-1234) before the title, in subtle text — easy to copy-paste into a PR description or a Slack message.

Settings

Setting Type Default
Filter

Assigned to me shows open issues that have you as the assignee. Created by me shows the issues you opened, regardless of who they're on now.

Assigned · Created Assigned to me
Issues to show

Cap on the number of issues fetched per refresh, between 3 and 30. Set low for a focused queue, high for a sweeping overview.

integer 10
Priority

Linear priorities are 0 None, 1 Urgent, 2 High, 3 Medium, 4 Low. The dropdown lets you raise the floor — pick "Urgent + High" when you only want to see the urgent stuff today.

Any · Urgent · Urgent+High · Urgent/High/Medium · All except None Any priority
Status types

Triage, Backlog, Todo, In progress — toggle on the status buckets you want. None checked means show all of them. Completed and Canceled are always excluded server-side.

multi-toggle none (= all)
Teams

A whitelist of team prefixes like ENG, DES. Empty means any team you belong to. Useful when you live across a few teams but only want one widget for each in your dashboard.

comma-separated team keys empty

Small things you might miss

  • Completed and canceled never appear. Even if you don't filter status types, Linear's Completed and Canceled states are excluded server-side. The widget only shows things still worth your attention.
  • Empty queue celebrates the right thing. If your filtered list comes back empty, the widget says All caught up with a green check — even if "caught up" only means "no Urgents at this exact moment."
  • Team keys are uppercased automatically. Type eng, des and the widget normalises to ENG, DES. No need to remember Linear's convention.
  • Two widgets, two views. Drop a second Linear and set different filters — one for Urgent across all teams, one for everything-in-progress in ENG. They share the same cache by parameters, so it's the same data, just two windows.

Heads up

  • Linear OAuth needs an actor scope. butter requests the scopes it needs to read issues assigned to your user; nothing that can write or comment. If you ever see a scope you don't expect on the consent screen, don't approve — open an issue.
  • GraphQL responses are cached for five minutes. The widget will read from chrome.storage.local within that window. Click the refresh icon on the card to force a fresh fetch any time.
  • Rate limits show as themselves. If Linear rate-limits the request, the widget shows an amber banner with the retry interval — distinct from a generic failure or a token problem.