feat(issue): add lc issue status command - #123
Conversation
Adds `lc issue status ISSUE_ID` to change an issue's workflow state. - --status/-s sets the state by name (case-insensitive, prefix match); prompts interactively when omitted - --comment/-m adds a comment alongside the status change - "s" subcommand alias mirrors the other single-letter issue aliases - Resolves ISSUE_ID via the existing expand_issue_id/1 convention - Errors clearly on unknown or ambiguous status names (exit 22) - JSON output mode emits the updated issue struct; text mode adds a confirmation line - Backed by a new :set_status Ash action on LinearCli.Linear.Issue (LinearCli.Linear.Issue.Update.SetStatus manual update module) and a set_issue_status/2 domain code interface - 9 new tests covering: exact match, -s short flag, prefix match, unknown name, ambiguous name, --comment, interactive selection, --output json, and alias routing Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…eline steps Replace nested case statements with use_prefix_matches_if_empty/3 and resolve_state_matches/3 helpers, eliminating duplicate ambiguous-match branches and reducing cyclomatic complexity. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
Addressed the review comment: replaced the nested |
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
Fixed the CI failure: ran |
Code Review (Run 4)Branch: SummaryThe implementation adds Issues FoundNone critical. None major. Minor:
What Looks Good
Pre-existing Observation (not introduced by this PR)The Overall AssessmentApprove. The three minor items are cleanup nits, not blockers. The feature is correct, well-tested, and follows project conventions. |
Drop dead stub_responses call in first status test (immediately overridden by the manual Req.Test.stub below it). Strip temporal "New command." opener from @doc — it stops being accurate on day 2. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Rework (Run 5)Addressed the two minor cleanup items from code review:
Commit: |
🤖 I have created a release *beep* *boop* --- ## [1.10.0](v1.9.1...v1.10.0) (2026-08-16) ### Features * **issue:** add lc issue status command ([#123](#123)) ([20d0158](20d0158)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please).
Summary
lc issue status ISSUE_IDto change an issue's workflow state--status/-ssets the state by name (case-insensitive exact match, then unique prefix); prompts interactively when omitted--comment/-madds a comment alongside the status change"s"subcommand alias mirrors other single-letter issue aliases (c,d,l,u)expand_issue_id/1convention{:smells_bad, …})Implementation
:set_statusAsh action onLinearCli.Linear.Issuewith a dedicatedLinearCli.Linear.Issue.Update.SetStatusmanual update module (mirrors the pattern of:close,:assign,:attach_to_project)set_issue_status/2domain code interface inLinearCli.Linearstatussubcommand entry in the Optimus spec withISSUE_IDpositional arg and--status/--commentoptionsCommands.issue_status/1orchestrates the full flow: expand id → fetch issue → fetch team states → resolve target state → optional comment → transition → displayTest plan
--status done)-sflag--status in→ "In Progress")--comment/-madds comment before transitioning--status): prompts sorted by position--output jsonemits parseable JSON only"s"alias routes correctlyCloses https://linear.app/cryptokairos/issue/CRY-47/add-lc-issue-status-command
🤖 Generated with Claude Code