Conversation
The domain layer already had everything needed - Issue's :list action declares `argument :project_id`, and build_filter/1 already had a working maybe_put_project_filter/2 clause - but issue list's Optimus spec never got a --project/-p option, so nothing ever populated it. Resolves it the same way Ruby's CLI::Projects#project_for does: against every project in the workspace (Linear.projects/0, not team-scoped), prompting interactively when the search is ambiguous or omitted-but- requested (-p -). Only resolved at all when --project was actually given - a bare issue list applies no filter and never queries projects. Closes #11. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
There was a problem hiding this comment.
Pull request overview
Adds top-level project documentation/licensing and completes the CLI wiring for lc issue list --project by resolving a workspace project and passing its id into the issue list query.
Changes:
- Added root
Readme.adocandLICENSE(WTFPL). - Added
--project/-poption toissue list, resolving via workspace-wideLinear.projects/0+CLI.Projects.project_for/2. - Added tests ensuring
--projectfilters issues and that a bareissue listdoes not query projects.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| Readme.adoc | New user-facing documentation for install/usage/dev workflows. |
| LICENSE | Adds the project license text (WTFPL). |
| app/test/linear_cli/cli/issue_commands_test.exs | Adds coverage for issue list --project resolution/filtering and the “no projects query unless requested” behavior. |
| app/lib/linear_cli/cli/commands.ex | Implements issue list project resolution and passes project_id into Linear.issues/1. |
| app/lib/linear_cli/cli.ex | Adds --project/-p to the Optimus spec for issue list. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Comment on lines
+80
to
87
| defp resolve_project_id(search) do | ||
| with {:ok, projects} <- Linear.projects() do | ||
| case Projects.project_for(projects, search) do | ||
| nil -> {:ok, nil} | ||
| project -> {:ok, project.id} | ||
| end | ||
| end | ||
| end |
bougyman
pushed a commit
that referenced
this pull request
Aug 9, 2026
🤖 I have created a release *beep* *boop* --- ## [0.2.0](v0.1.2...v0.2.0) (2026-08-09) ### ⚠ BREAKING CHANGES * add Readme/LICENSE, feat: wire up the issue list --project picker ([#12](#12)) ### Documentation * add Readme/LICENSE, feat: wire up the issue list --project picker ([#12](#12)) ([eb42c69](eb42c69)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
bougyman
pushed a commit
that referenced
this pull request
Aug 9, 2026
🤖 I have created a release *beep* *boop* --- ## [0.3.0](v0.2.1...v0.3.0) (2026-08-09) ### ⚠ BREAKING CHANGES * add Readme/LICENSE, feat: wire up the issue list --project picker ([#12](#12)) ### Features * **api:** add LinearCli.Api GraphQL client (Phase 1) ([723f3f6](723f3f6)) * **cli:** add issue create/develop/pr/take/update write commands (Phase 6) ([1649618](1649618)) * **cli:** support Ruby's short subcommand aliases ([#15](#15)) ([9fca6b5](9fca6b5)) * initial commit with ash submodule ([c2ceafb](c2ceafb)) * **linear:** add Ash domain resources for Issue/Project/Team/User/Label/WorkflowState/Comment (Phase 2) ([e2a27f3](e2a27f3)) * **oban:** add scheduled monthly project rollover (Phase 7) ([11afb43](11afb43)) * phase 4 from initial plan -> complete ([012866e](012866e)) * phase 8 - packaging, releasing, and CI ([#1](#1)) ([905c238](905c238)) * scaffold Elixir port and enforce conventional commits ([a4d03a0](a4d03a0)) ### Bug Fixes * **ci:** create releases as drafts so assets survive Immutable Releases ([#19](#19)) ([8572623](8572623)) * **cli:** reject unrecognized flags instead of treating them as issue ids ([#2](#2)) ([#4](#4)) ([e697ff6](e697ff6)) ### Performance Improvements * **linear:** fan out find-by-ids and per-team project fetches (Phase 5) ([fb00153](fb00153)) ### Documentation * add Readme/LICENSE, feat: wire up the issue list --project picker ([#12](#12)) ([eb42c69](eb42c69)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
This was referenced Aug 9, 2026
bougyman
pushed a commit
that referenced
this pull request
Aug 9, 2026
🤖 I have created a release *beep* *boop* --- ## [0.4.0](v0.3.1...v0.4.0) (2026-08-09) ### ⚠ BREAKING CHANGES * add Readme/LICENSE, feat: wire up the issue list --project picker ([#12](#12)) ### Features * **api:** add LinearCli.Api GraphQL client (Phase 1) ([723f3f6](723f3f6)) * **cli:** add issue create/develop/pr/take/update write commands (Phase 6) ([1649618](1649618)) * **cli:** support Ruby's short subcommand aliases ([#15](#15)) ([9fca6b5](9fca6b5)) * initial commit with ash submodule ([c2ceafb](c2ceafb)) * **linear:** add Ash domain resources for Issue/Project/Team/User/Label/WorkflowState/Comment (Phase 2) ([e2a27f3](e2a27f3)) * **oban:** add scheduled monthly project rollover (Phase 7) ([11afb43](11afb43)) * phase 4 from initial plan -> complete ([012866e](012866e)) * phase 8 - packaging, releasing, and CI ([#1](#1)) ([905c238](905c238)) * scaffold Elixir port and enforce conventional commits ([a4d03a0](a4d03a0)) ### Bug Fixes * **ci:** create releases as drafts so assets survive Immutable Releases ([#19](#19)) ([8572623](8572623)) * **ci:** package release binaries with the wrapper scripts ([#24](#24)) ([5fb24a4](5fb24a4)) * **cli:** reject unrecognized flags instead of treating them as issue ids ([#2](#2)) ([#4](#4)) ([e697ff6](e697ff6)) ### Performance Improvements * **linear:** fan out find-by-ids and per-team project fetches (Phase 5) ([fb00153](fb00153)) ### Documentation * add Readme/LICENSE, feat: wire up the issue list --project picker ([#12](#12)) ([eb42c69](eb42c69)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
bougyman
pushed a commit
that referenced
this pull request
Aug 9, 2026
🤖 I have created a release *beep* *boop* --- ## [0.5.0](v0.4.0...v0.5.0) (2026-08-09) ### ⚠ BREAKING CHANGES * add Readme/LICENSE, feat: wire up the issue list --project picker ([#12](#12)) ### Features * **api:** add LinearCli.Api GraphQL client (Phase 1) ([723f3f6](723f3f6)) * **cli:** add issue create/develop/pr/take/update write commands (Phase 6) ([1649618](1649618)) * **cli:** support Ruby's short subcommand aliases ([#15](#15)) ([9fca6b5](9fca6b5)) * initial commit with ash submodule ([c2ceafb](c2ceafb)) * **linear:** add Ash domain resources for Issue/Project/Team/User/Label/WorkflowState/Comment (Phase 2) ([e2a27f3](e2a27f3)) * **oban:** add scheduled monthly project rollover (Phase 7) ([11afb43](11afb43)) * phase 4 from initial plan -> complete ([012866e](012866e)) * phase 8 - packaging, releasing, and CI ([#1](#1)) ([905c238](905c238)) * scaffold Elixir port and enforce conventional commits ([a4d03a0](a4d03a0)) ### Bug Fixes * **ci:** create releases as drafts so assets survive Immutable Releases ([#19](#19)) ([8572623](8572623)) * **ci:** package release binaries with the wrapper scripts ([#24](#24)) ([5fb24a4](5fb24a4)) * **cli:** reject unrecognized flags instead of treating them as issue ids ([#2](#2)) ([#4](#4)) ([e697ff6](e697ff6)) ### Performance Improvements * **linear:** fan out find-by-ids and per-team project fetches (Phase 5) ([fb00153](fb00153)) ### Documentation * add Readme/LICENSE, feat: wire up the issue list --project picker ([#12](#12)) ([eb42c69](eb42c69)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
bougyman
pushed a commit
that referenced
this pull request
Aug 9, 2026
🤖 I have created a release *beep* *boop* --- ## [0.6.0](v0.5.0...v0.6.0) (2026-08-09) ### ⚠ BREAKING CHANGES * add Readme/LICENSE, feat: wire up the issue list --project picker ([#12](#12)) ### Features * **api:** add LinearCli.Api GraphQL client (Phase 1) ([723f3f6](723f3f6)) * **cli:** add issue create/develop/pr/take/update write commands (Phase 6) ([1649618](1649618)) * **cli:** support Ruby's short subcommand aliases ([#15](#15)) ([9fca6b5](9fca6b5)) * initial commit with ash submodule ([c2ceafb](c2ceafb)) * **linear:** add Ash domain resources for Issue/Project/Team/User/Label/WorkflowState/Comment (Phase 2) ([e2a27f3](e2a27f3)) * **oban:** add scheduled monthly project rollover (Phase 7) ([11afb43](11afb43)) * phase 4 from initial plan -> complete ([012866e](012866e)) * phase 8 - packaging, releasing, and CI ([#1](#1)) ([905c238](905c238)) * scaffold Elixir port and enforce conventional commits ([a4d03a0](a4d03a0)) ### Bug Fixes * **ci:** create releases as drafts so assets survive Immutable Releases ([#19](#19)) ([8572623](8572623)) * **ci:** package release binaries with the wrapper scripts ([#24](#24)) ([5fb24a4](5fb24a4)) * **cli:** reject unrecognized flags instead of treating them as issue ids ([#2](#2)) ([#4](#4)) ([e697ff6](e697ff6)) ### Performance Improvements * **linear:** fan out find-by-ids and per-team project fetches (Phase 5) ([fb00153](fb00153)) ### Documentation * add Readme/LICENSE, feat: wire up the issue list --project picker ([#12](#12)) ([eb42c69](eb42c69)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
bougyman
pushed a commit
that referenced
this pull request
Aug 9, 2026
🤖 I have created a release *beep* *boop* --- ## [0.7.0](v0.6.0...v0.7.0) (2026-08-09) ### ⚠ BREAKING CHANGES * add Readme/LICENSE, feat: wire up the issue list --project picker ([#12](#12)) ### Features * **api:** add LinearCli.Api GraphQL client (Phase 1) ([723f3f6](723f3f6)) * **cli:** add issue create/develop/pr/take/update write commands (Phase 6) ([1649618](1649618)) * **cli:** support Ruby's short subcommand aliases ([#15](#15)) ([9fca6b5](9fca6b5)) * initial commit with ash submodule ([c2ceafb](c2ceafb)) * **linear:** add Ash domain resources for Issue/Project/Team/User/Label/WorkflowState/Comment (Phase 2) ([e2a27f3](e2a27f3)) * **oban:** add scheduled monthly project rollover (Phase 7) ([11afb43](11afb43)) * phase 4 from initial plan -> complete ([012866e](012866e)) * phase 8 - packaging, releasing, and CI ([#1](#1)) ([905c238](905c238)) * scaffold Elixir port and enforce conventional commits ([a4d03a0](a4d03a0)) ### Bug Fixes * **ci:** create releases as drafts so assets survive Immutable Releases ([#19](#19)) ([8572623](8572623)) * **ci:** package release binaries with the wrapper scripts ([#24](#24)) ([5fb24a4](5fb24a4)) * **cli:** reject unrecognized flags instead of treating them as issue ids ([#2](#2)) ([#4](#4)) ([e697ff6](e697ff6)) ### Performance Improvements * **linear:** fan out find-by-ids and per-team project fetches (Phase 5) ([fb00153](fb00153)) ### Documentation * add Readme/LICENSE, feat: wire up the issue list --project picker ([#12](#12)) ([eb42c69](eb42c69)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes #11.
docs!: adds Readme and LICENSE- adds a rootReadme.adoc(adapted fromlinear-cli's own, corrected to only document commands/flags this port actually implements - no shell completion, no short subcommand aliases, since Optimus doesn't support either) and aLICENSE(WTFPL). Marked!since adding a license is a real, user-facing legal change.feat(cli): wire up the --project picker for issue list-issue listnever got a--project/-poption, even though the domain layer already had everything needed (Issue's:listaction already declaredargument :project_id, andbuild_filter/1already had a workingmaybe_put_project_filter/2clause). Resolves it the same way Ruby'sCLI::Projects#project_fordoes: against every project in the workspace (Linear.projects/0, not team-scoped), prompting interactively when the search is ambiguous or omitted-but-requested (-p -). Only resolved at all when--projectwas actually given - a bareissue listapplies no filter and never queries projects.Test plan
mix test- 177 passed (2 new tests:--projectresolves and filters the issue query by the resolved id; bareissue listnever queries projects at all)mix format --check-formatted- clean-p -reliably falls through to the interactive picker rather than accidentally exact-matching a project via its hyphenated URL slug (walked throughProject.match_score?/2's scoring - "-" scores 75 against nearly every multi-word project via substring match, never 100, so it always prompts)🤖 Generated with Claude Code