Releases: cmpadden/linear
Releases · cmpadden/linear
Release list
v0.0.17
v0.0.16
Changed
- Issue assignee filtering:
linear issues list --no-assigneenow correctly filters to unassigned issues (2026-04-09)- Added
--all-assigneesto disable the default "my issues" filter and show issues regardless of assignee --no-assigneenow maps to Linear's null assignee filter instead of showing assigned issues- Added validation for conflicting assignee flags
- Added
Added
- Issue duplication: Added
linear issues duplicatecommand to clone existing issues (2026-01-16)- Creates a new issue with copied fields from source issue: title, description, priority, labels, project, state, estimate, due date, parent, and cycle
- Title is automatically prefixed with "Copy of " to distinguish the duplicate
- New issue is unassigned by default (assignee is not copied)
- Comments, attachments, and subscribers are not copied (these remain unique to the original issue)
- Supports
--yes/-yflag to skip confirmation prompt - Supports
--linkflag to create a duplicate relation between source and new issue - Supports
--formatflag for detail or JSON output - Examples:
linear issues duplicate ENG-123- Duplicate issue with confirmationlinear issues duplicate ENG-123 --yes- Skip confirmation promptlinear issues duplicate ENG-123 --link --yes- Create duplicate and link with relationlinear issues duplicate abc123-uuid --format json- Output as JSON
Fixed
- Type checking: Fixed type errors in
duplicate_issueimplementation (2026-01-16)- Fixed labels access to use direct list instead of connection nodes
- Added datetime to ISO string conversion for due_date field
- Added team_id null check to satisfy type system requirements
v0.0.15
v0.0.14
v0.0.13
Added
- Documentation generation command: Added
linear docscommand to generate CLI documentation programmatically- Replaces shell script approach with native Python implementation using Typer's API
- Prints Markdown documentation to stdout for easy piping and redirection
- Can be used via
make docs(saves to DOCUMENTATION.md) or directly vialinear docs(prints to stdout) - Uses
typer.cli.get_docs_for_clickto generate Markdown documentation from CLI structure
v0.0.12
Added
- Comprehensive CLI documentation: Added auto-generated documentation in DOCUMENTATION.md
- Complete command reference with all available commands, options, and examples
- Generated from Typer app structure using built-in
typer utils docscommand - Documentation generation script available at
scripts/generate_documentation.sh - Includes all command groups: issues, projects, teams, cycles, users, labels, roadmaps, comments, attachments
- Shows command aliases (e.g.,
iforissues,pforprojects) - All examples from command docstrings preserved in generated documentation
- Accessible via
make docscommand for easy regeneration
- Roadmaps management: Added full support for managing Linear roadmaps
linear roadmaps list- List roadmaps with table and JSON output formatslinear roadmaps view <roadmap-id>- View roadmap details by ID or sluglinear roadmaps create- Create new roadmap with--name,--description, and--owner-idflags (supports--editorfor description editing)linear roadmaps update <roadmap-id>- Update roadmap name, description, or owner (supports--editorfor description editing)- Supports pagination via
--per-page,--page, and--allflags - Supports both table/detail and JSON output formats via
--formatflag - Roadmap alias:
linear rfor quick access
- Attachments management: Added full support for managing issue attachments
linear attachments list <issue-id>- List all attachments for an issue with title, URL, and creation datelinear attachments upload <issue-id> <file-path>- Upload file attachment to an issue (supports--titleflag for custom title, defaults to filename)linear attachments delete <attachment-id>- Delete attachment (with confirmation prompt, use--yesto skip)- Supports both table and JSON output formats via
--formatflag - Automatically handles file upload to Linear's storage and creates attachment record
- Resolves issue identifiers (e.g., ENG-123) to UUIDs for all operations
- Issue relations management: Added full support for managing relationships between issues
linear issues relations list <issue-id>- List all relations for an issue with type, related issue details, status, and teamlinear issues relations add <issue-id> <related-issue-id>- Create relation between two issues with--typeflag (blocks, blocked, related, duplicate)linear issues relations remove <issue-id> <relation-id>- Remove relation from issue (with confirmation prompt, use--yesto skip)- Supports both table and JSON output formats via
--formatflag - Relations table shows relation type, related issue identifier, title, status, and team
- Automatically resolves issue identifiers (e.g., ENG-123) to UUIDs for all operations
- Extended pagination support: Added cursor-based pagination to projects, teams, and users list commands
linear projects list- Full pagination support with--per-page,--page, and--allflagslinear teams list- Full pagination support with--per-page,--page, and--allflagslinear users list- Full pagination support with--per-page,--page, and--allflags- Pagination info displayed in table footer showing current range and availability of more results
- Examples:
linear users list --page 2 --per-page 10,linear projects list --all - Note: Cycles and labels pagination API updated, command layer updates in progress
- Teams admin operations: Added team creation, update, deletion, and archival operations
linear teams create- Create new team with--name,--key,--description, and--privateflagslinear teams update <team-id>- Update team name, key, description, or privacy settingslinear teams delete <team-id>- Delete team (with confirmation prompt, use--yesto skip)linear teams archive <team-id>- Archive team (with confirmation prompt, use--yesto skip)- Supports both detail and JSON output formats via
--formatflag - Team lookup by ID or key for all operations
- Cycles management: Added cycle creation, update, deletion, and archival operations
linear cycles create- Create new cycle with--name,--team,--starts-at,--ends-at, and--descriptionflagslinear cycles update <cycle-id>- Update cycle name, dates, or descriptionlinear cycles delete <cycle-id>- Delete cycle (with confirmation prompt, use--yesto skip)linear cycles archive <cycle-id>- Archive cycle (with confirmation prompt, use--yesto skip)- Supports both detail and JSON output formats via
--formatflag - Team lookup by ID or key for cycle creation
Changed
- Simplified README: Removed detailed command reference from README.md, replaced with link to comprehensive DOCUMENTATION.md
- README now focuses on getting started and quick reference
- All detailed command documentation moved to auto-generated DOCUMENTATION.md
- Avoids duplication and keeps documentation in sync with code
- Enhanced issue search:
linear issues searchnow searches both title and description fields (previously title only) using OR logic for more comprehensive results (2025-12-19) - Enforce absolute imports: Enabled TID252 rule to ban all relative imports in favor of absolute imports (e.g.,
from linear.models import Issue)
v0.0.11
Added
- Comments management: Added full CRUD operations for issue comments
linear comments list <issue-id>- List all comments on an issuelinear comments create <issue-id>- Add comment to issue (supports--bodyflag or opens$EDITOR)linear comments update <comment-id>- Update comment body (supports--bodyflag or opens$EDITOR)linear comments delete <comment-id>- Delete comment (with confirmation prompt, use--yesto skip)- Supports both table and JSON output formats via
--formatflag - Comments display author name, timestamp, and body (truncated in table view, full in detail view)
- Pagination support: Added cursor-based pagination for issue list and search commands
--per-pageflag to control number of results per page (max 250, default 50)--pageflag to fetch a specific page number (starts at 1)--allflag to automatically fetch all results across multiple pages- Pagination info displayed in table footer (e.g., "Showing 1-50 of 247 (more available, use --page to see more)")
- Supports both grouped and ungrouped table views
- Works with
linear issues listandlinear issues searchcommands - Note:
--limitflag is deprecated in favor of--per-page
- Verbose mode: Added
--verbose/-vglobal flag to display GraphQL queries, variables, and response times for debugging- GraphQL queries are syntax-highlighted using Rich
- Variables displayed in formatted JSON
- Response times measured in milliseconds
- All verbose output sent to stderr to keep stdout clean for piping and automation
- Works with all commands across issues, projects, teams, cycles, users, and labels
- Issue deletion: Added
linear issues delete <issue-id>command to trash/delete issues- Shows issue details before deletion for confirmation
- Supports
--yes/-yflag to skip confirmation prompt - Accepts both issue identifiers (e.g.,
ENG-123) and UUIDs
- Issue archiving: Added
linear issues archive <issue-id>command to archive issues- Shows issue details before archiving for confirmation
- Supports
--yes/-yflag to skip confirmation prompt - Accepts both issue identifiers (e.g.,
ENG-123) and UUIDs
- Issue unarchiving: Added
linear issues unarchive <issue-id>command to unarchive issues- Shows issue details before unarchiving for confirmation
- Supports
--yes/-yflag to skip confirmation prompt - Accepts both issue identifiers (e.g.,
ENG-123) and UUIDs
- State management: Fixed and improved workflow state handling
- Added
linear issues move-state <issue-id> <state>command to change issue states by name - Fixed state lookup by name in
linear issues create(now supports--state "In Progress") - Fixed state lookup by name in
linear issues update(now supports--state "In Progress") - Shows available states when an invalid state name is provided
- Confirmation prompt with before/after state comparison
- Added
- Label management: Added full CRUD operations for labels
linear labels create- Create new label with--name,--description,--color, and optional--teamlinear labels update <label-id>- Update label name, description, or colorlinear labels delete <label-id>- Permanently delete label (with confirmation prompt, use--yesto skip)linear labels archive <label-id>- Archive label
Changed
- Version flag: Changed version flag shorthand from
-vto-Vto avoid conflict with the new--verboseflag--version(long form) remains unchanged- New shorthand:
linear -Vorlinear --version
- Release script: GitHub releases now use CHANGELOG.md sections instead of auto-generated notes
- Automatically extracts the relevant version section from CHANGELOG.md
- Falls back to auto-generated notes if no changelog section is found
Deprecated
--limitflag: Deprecated in favor of--per-pagefor consistency with pagination terminology- Still works but shows a warning message
- Will be removed in a future version
Previous Releases
Version history prior to 0.0.11 not tracked in changelog.