Skip to content

Add Linear and Todoist extensions - #13

Merged
stevenpersia merged 2 commits into
mainfrom
feat/linear-todoist
Oct 27, 2026
Merged

stevenpersia merged 2 commits into
mainfrom
feat/linear-todoist

Conversation

@stevenpersia

Copy link
Copy Markdown
Contributor

Linear (api.linear.app)

  • My Linear Issues: open issues assigned to you, grouped by status (in progress first), with priority tags. Ctrl+S opens Change Status…, which lists the team's workflow states; the list reloads after a change. You can also open the issue, or copy its identifier, its URL or a Markdown link.
  • Search Linear Issues: searchIssues as you type.
  • Create Linear Issue: a form with title, description (Markdown), team, priority and an "Assign to me" checkbox.

Todoist (api.todoist.com, API v1)

  • Todoist Today: overdue and today's tasks. Each shows its P1/P2/P3 priority, labels, time and a recurring icon. Enter completes the task and the list refreshes.
  • Search Todoist Tasks: all tasks, grouped by project.
  • Add Todoist Task: quick add in natural language ("Call Bob tomorrow 5pm #Work p1").

Both extensions use a personal API key, stored in the keyring as a secret preference. They don't depend on the OAuth helper (backslash-app/backslash, feat/oauth), so this PR can merge on its own. OAuth sign-in can come later, once OAuth apps are registered with Linear and Todoist.

Tests

  • lib_test.ts for each extension: sorting, sections and item mapping.
  • Every command tested in the launcher (Xvfb) and through backslash run, against a mock of both APIs: the status change and the reload, creating an issue, completing a task, quick add.
  • scripts/validate.ts passes for both entries.

Not tested against the real services: their APIs can't be reached from this environment.


Generated by Claude Code

Linear: your issues by status with a status picker, search, and an issue
form. Todoist: today's and overdue tasks to complete with Enter, all tasks
by project, and quick add in natural language. Both use a personal API
key stored in the keyring.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WzDMDJteorsmKRm6FVPX94
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01WzDMDJteorsmKRm6FVPX94
@stevenpersia
stevenpersia merged commit 0a21f12 into main Oct 27, 2026
1 check passed
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.

2 participants