Skip to content

docs!: add Readme/LICENSE, feat: wire up the issue list --project picker - #12

Merged
bougyman merged 2 commits into
mainfrom
issue-11
Aug 9, 2026
Merged

docs!: add Readme/LICENSE, feat: wire up the issue list --project picker#12
bougyman merged 2 commits into
mainfrom
issue-11

Conversation

@bougyman

@bougyman bougyman commented Aug 9, 2026

Copy link
Copy Markdown
Member

Summary

Closes #11.

  • docs!: adds Readme and LICENSE - adds a root Readme.adoc (adapted from linear-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 a LICENSE (WTFPL). Marked ! since adding a license is a real, user-facing legal change.
  • feat(cli): wire up the --project picker for issue list - issue list never got a --project/-p option, even though the domain layer already had everything needed (Issue's :list action already declared argument :project_id, and build_filter/1 already had a working maybe_put_project_filter/2 clause). 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.

Test plan

  • mix test - 177 passed (2 new tests: --project resolves and filters the issue query by the resolved id; bare issue list never queries projects at all)
  • mix format --check-formatted - clean
  • Manually verified -p - reliably falls through to the interactive picker rather than accidentally exact-matching a project via its hyphenated URL slug (walked through Project.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

bougyman and others added 2 commits August 9, 2026 16:18
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>
Copilot AI lite review requested due to automatic review settings August 9, 2026 20:25
@bougyman
bougyman merged commit eb42c69 into main Aug 9, 2026
3 checks passed
@bougyman
bougyman deleted the issue-11 branch August 9, 2026 20:28

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.adoc and LICENSE (WTFPL).
  • Added --project/-p option to issue list, resolving via workspace-wide Linear.projects/0 + CLI.Projects.project_for/2.
  • Added tests ensuring --project filters issues and that a bare issue list does 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 -&gt; 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 -&gt; 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 -&gt; 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 -&gt; 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 -&gt; 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).
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.

issue list is missing the --project picker

2 participants