Skip to content

feat(issue): add IssueRelation resource and lc issue relation list command (EXT-40) - #239

Merged
ruby-automation merged 2 commits into
mainfrom
EXT-40-issue-relation-domain-and-list-command
Sep 5, 2026
Merged

feat(issue): add IssueRelation resource and lc issue relation list command (EXT-40)#239
ruby-automation merged 2 commits into
mainfrom
EXT-40-issue-relation-domain-and-list-command

Conversation

@ruby-automation

Copy link
Copy Markdown
Contributor

Summary

  • New LinearCli.Linear.IssueRelation Ash resource (no data layer, ManualRead) that fetches both outbound (relations) and inbound (inverseRelations) relations concurrently, paginating each direction up to 100 records
  • lc issue relation list ISSUE command added (alias: ls) via 3-level Optimus nesting; normalize_subcommand_aliases/1 extended to handle this depth
  • lc issue view now renders relations in directional sections: Blocks, Blocked by, Related to, Duplicate of, Similar to
  • Issue.full_fields/0 and Issue.from_map/1 updated to include nested relations/inverseRelations edges in full-fragment responses
  • documents/ash-domain-erd.adoc updated: new IssueRelation entity, associations, resource count, and code-interface matrix row

Test plan

  • mix precommit passes (format, credo, usage_rules, all 417 tests)
  • Unit tests in test/linear_cli/linear/issue_relation_test.exs: outbound/inbound direction tagging, concurrent fetch, empty list, not-found, API error, pagination, from_map/2 decoding
  • lc issue relation list EXT-N resolves to the new command
  • lc issue relation ls EXT-N alias resolves correctly
  • lc issue view EXT-N shows relations block when relations exist, omits section when none

🤖 Generated with Claude Code

ruby-automation and others added 2 commits September 5, 2026 09:12
…command (EXT-40)

- New `LinearCli.Linear.IssueRelation` Ash resource (no data layer, ManualRead)
  fetches both `relations` (outbound) and `inverseRelations` (inbound) concurrently,
  paginating each direction independently up to 100 records
- Domain code interface `issue_relations/1` added to `LinearCli.Linear`
- `lc issue relation list ISSUE` command (alias: `ls`) added via 3-level Optimus nesting;
  `normalize_subcommand_aliases/1` extended to handle the new depth
- `lc issue view` now renders relations in directional sections (Blocks / Blocked by /
  Related to / Duplicate of / Similar to) via `Display.relations_block/1`
- `Issue.full_fields/0` and `Issue.from_map/1` updated to include nested
  `relations` and `inverseRelations` edges in full-fragment responses
- `documents/ash-domain-erd.adoc` updated: IssueRelation entity, new associations,
  updated resource count and code-interface matrix row
…-40)

- 7 new display tests covering Blocks/Blocked-by/Related-to sections,
  full-issue view integration, all sections in order, and JSON output
- 4 new issue_commands_test tests covering text and JSON output for
  issue_relation_list, and empty-relations edge case

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@ruby-automation
ruby-automation force-pushed the EXT-40-issue-relation-domain-and-list-command branch from 05276fd to b1b7f7f Compare September 5, 2026 13:12
@ruby-automation
ruby-automation merged commit d2f278c into main Sep 5, 2026
3 checks passed
@ruby-automation
ruby-automation deleted the EXT-40-issue-relation-domain-and-list-command branch September 5, 2026 13:13
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.

1 participant