All notable changes to Linear CLI will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Milestone Management System: Complete project milestone management with CRUD operations
- Project-Scoped Milestones: Milestone commands integrated under
linear projectfor better organization - Issue-Milestone Assignment: Seamless milestone assignment during issue creation and updates
- Milestone Test Data Generator: Automated creation of projects, milestones, and linked issues for testing
- BREAKING: Milestone commands moved from
linear milestonetolinear projectsubcommands for better UX - Command Structure: Milestone operations now require project context for improved organization
- Issue Creation: Enhanced with
--projectand--milestoneoptions for comprehensive workflow integration
linear project milestones <project>- List milestones for a projectlinear project milestone <project> <milestone>- Show milestone details with issueslinear project create-milestone <project> <name>- Create new project milestonelinear project update-milestone <project> <milestone>- Update milestone propertieslinear project delete-milestone <project> <milestone>- Delete milestone with confirmationlinear project milestone-issues <project> <milestone>- List issues assigned to milestonelinear project create-test-data --team <team>- Generate comprehensive test datasets
- GraphQL Integration: Complete milestone fragment and query implementation
- Name Resolution: Smart milestone name-to-ID resolution with project scoping
- Error Handling: Enhanced validation for milestone-issue assignment constraints
- Test Coverage: Comprehensive unit test suite for all milestone functionality
- Complete CLI Framework: Full-featured command-line interface for Linear issue management
- Authentication System: OAuth and API key authentication with secure credential storage
- Issue Management: Full CRUD operations with advanced filtering and status management
- Search Capabilities: Powerful full-text search with query syntax and saved searches
- Bulk Operations: Efficient batch updates, assignments, and label management
- Team Management: Team switching, member listing, and workload analysis
- Label System: Create, apply, and manage labels for issue organization
- User Management: User workload analysis, assignment suggestions, and collaboration tools
- Interactive Mode: Guided workflows for complex operations
- Multiple Output Formats: Table, JSON, and plain text formatting options
- Configuration System: Flexible configuration via files, environment variables, and CLI options
- Shell Integration: Command completion for Bash, Zsh, and Fish shells
- Professional Documentation: Complete user guide, API reference, and tutorials
- Performance Optimizations: Response caching, async operations, and connection pooling
- Comprehensive Testing: >90% test coverage with unit and integration tests
- GraphQL Client: Efficient Linear API communication with query optimization
- Error Handling: Robust error handling with informative messages
- Progress Indicators: Visual feedback for long-running operations
- Rate Limiting: Automatic rate limit handling and retry logic
- Cross-Platform: Support for Linux, macOS, and Windows
- Type Safety: Full type annotations with mypy validation
- Code Quality: Automated linting, formatting, and security scanning
- User Guide: Complete documentation with examples and tutorials
- API Reference: Auto-generated API documentation
- Configuration Guide: Comprehensive configuration options and examples
- Advanced Features: Detailed guides for power users and automation
- Development Guide: Setup instructions for contributors
- CI/CD Pipeline: Automated testing, linting, and release processes
- PyPI Distribution: Professional package distribution with proper metadata
- Development Tools: Make targets, pre-commit hooks, and development environment
- Quality Assurance: Comprehensive test suite with coverage reporting
- Authentication: Fixed automatic API key detection from
LINEAR_API_KEYenvironment variable - GraphQL Issues: Resolved orderBy parameter format for issue listing and search operations
- Search Functionality: Fixed search results parsing and display formatting
- Team Management: Corrected member count display using proper GraphQL field structure
- Test Suite: Completely overhauled test suite for reliability and speed
- Fixed package name references throughout test files
- Resolved formatter edge cases and null value handling
- Eliminated hanging tests that caused timeouts
- Achieved 100% passing test rate (277 tests pass in ~1.4 seconds)
- CI/CD Pipeline: Updated GitHub Actions to latest versions
- Upgraded deprecated
actions/upload-artifactfrom v3 to v4 - Updated all core actions to latest stable versions
- Fixed codecov integration with proper token handling
- Upgraded deprecated
- Error Handling: Enhanced error messages and graceful failure modes
- Performance: Significantly improved test execution time (4000% faster)
- Code Quality: Fixed formatting issues and improved type safety
- Development Experience: Streamlined
make testcommand for reliable testing
- Bearer Token Fix: Corrected Linear API authentication format (removed invalid Bearer prefix)
- UTC Time Handling: Fixed timezone conversion in datetime formatting
- Label Processing: Enhanced label formatting to handle both GraphQL and list formats
- Package Structure: Resolved import path issues from project rename
- Package Name: Renamed PyPI package from
linear-clitolinearatorto avoid naming conflicts - Publishing: Added automated PyPI publishing workflow with GitHub trusted publishing
- Release Process: Implemented automatic package building, testing, and publishing on release
- Automated Publishing: Complete CI/CD pipeline for PyPI package distribution
- Multi-Python Testing: Automated testing on Python 3.12 and 3.13 during publishing
- Security: GitHub trusted publishing integration (no API tokens required)
- Release Artifacts: Automatic upload of wheel and source distributions to GitHub releases
- Workflow: Added
.github/workflows/publish-pypi.ymlfor automated publishing - Environment: Optional PyPI environment configuration for additional security
- Testing: Pre-publish testing ensures package integrity before distribution
- Vulnerability Fixes: Resolved all security issues identified by Bandit security scanner
- Safe Serialization: Replaced pickle with JSON for cache files to prevent deserialization attacks
- Input Validation: Added validation for subprocess calls in config editor functionality
- Authentication: Fixed test authentication state to prevent environment variable interference
- Test Suite: All tests now pass reliably (277/277 passing)
- Version Display: Fixed CLI version command to show correct version number
- Environment Variables: Improved handling of LINEAR_API_KEY environment variable in tests
- Cache Security: Enhanced performance cache with safer JSON-based persistence
- Bandit Compliance: Addressed all medium and high severity security warnings
- Test Isolation: Improved test fixtures to prevent environment variable conflicts
- Code Quality: Enhanced error handling with proper logging instead of silent failures
- Editor Validation: Added whitelist validation for safe text editors in config command
- Keyring Warnings: Eliminated annoying keyring backend warnings that appeared on every CLI command
- Credential Storage: Improved error handling for systems without keyring backends
- User Experience: Clean CLI startup without unnecessary warning messages
- Logging Levels: Reduced keyring-related messages from ERROR/WARNING to DEBUG level
- Fallback Behavior: More graceful fallback to PBKDF2 encryption when keyring unavailable
- Proactive Detection: Added keyring availability check before attempting operations
- Silent Fallback: Automatic fallback to secure PBKDF2 without user-visible warnings
- Improved Error Handling: Better separation of expected vs unexpected credential storage errors
- AUR Package Dependencies: Fixed PKGBUILD to properly install Python dependencies from PyPI
- Dependency Resolution: Updated package installation to use
pip installfor complete dependency management - Import Errors: Resolved "No module named 'gql'" and similar import errors in AUR package
- Release Script: Updated to handle PKGBUILD and .SRCINFO files in project root
- AUR Workflow: Simplified file structure for easier AUR package maintenance
- Package Installation: Changed from
python-installertopip installfor better dependency handling
- PKGBUILD: Now installs directly from PyPI with full dependency resolution
- File Paths: Moved AUR packaging files to project root for easier access
- Release Automation: Enhanced release script to automatically update AUR package metadata
- Project Management: Complete project management functionality
linear project list- List all projects with state, health, progress, and lead informationlinear project show <name-or-id>- Show detailed project information (supports both names and IDs)linear project update <name-or-id> <message> [--health <status>]- Create project status updateslinear project updates <name-or-id>- List project update history with user attribution
- Enhanced Issue Display: Issues now show associated project names in detailed views
- Smart Project Lookup: Projects can be referenced by both ID and name for better usability
- Project Health Tracking: Support for onTrack, atRisk, offTrack, and complete health statuses
- Project Updates: Full project status update system with health indicators and timeline
- Rich Formatting: Project information displayed with tables, colors, and markdown support
- GraphQL API Coverage: Added comprehensive project queries and mutations
- Client Methods: New project-related API client methods with error handling
- Output Formatters: Dynamic project formatting methods with multiple output formats (table, JSON, YAML)
- Command Structure: Integrated project commands into main CLI application
- Code Formatting: Fixed all ruff and black formatting issues for consistent code style
- Exception Handling: Improved exception handling with proper
raise ... from errpatterns - Import Optimization: Removed unused imports and variables identified by linting tools
- Try/Except Pattern: Enhanced exception handling with proper logging instead of silent pass
- Security Compliance: Complete bandit security scan compliance
- Fixed try/except/pass patterns with proper logging
- Added
.banditconfiguration file to manage security exceptions - Updated subprocess usage with documented security justifications
- Enhanced exception handling throughout codebase
- CI/CD Security: Updated GitHub workflows and Makefile to use bandit configuration
- Pipeline Ready: All security checks now pass in CI/CD pipeline
- Project API Integration: Full GraphQL schema coverage for Linear project operations
- Smart Name Resolution: Project lookup works with both UUIDs and human-readable names
- Error Recovery: Graceful fallback from ID lookup to name-based search
- Test Markers: Added
@pytest.mark.keyringfor CI test filtering - CI Reliability: Excluded keyring-dependent tests from GitHub Actions (7 tests) while maintaining local development testing
- Configuration Management: Centralized bandit security configuration with documented exceptions
- Project Assignment to Issues: Issues can now be assigned to projects during creation and updates
linear issue create "Bug fix" --project "Q4 Sprint"- Assign project by name during creationlinear issue update ENG-123 --project "Backend Refactor"- Update existing issue with project assignment- Supports both project names and IDs with comprehensive validation
- Smart project lookup with user-friendly error messages
- Enhanced Label Management: Multi-team label discovery and filtering capabilities
linear label list --team ENG --team QA- Check labels across multiple specific teamslinear label list --all-teams- View labels from all accessible teams at once- Backward compatibility maintained with existing single-team filtering
- Team context displayed for better label organization
- Project Creation: Complete project lifecycle management functionality
linear project create "New Project" --description "Project desc" --team ENG- Create projects with full configuration- Team assignment, lead assignment, and state management support
- Comprehensive validation and user-friendly error handling
- Integration with existing project management commands
- GraphQL API Coverage: Extended with new project creation mutations and enhanced label queries
- CLI Consistency: All new functionality follows existing command patterns and output formatting
- Error Handling: Robust validation with graceful degradation and helpful user feedback
- Type Safety: Complete mypy compliance with proper type annotations throughout
- Code Quality: Resolved 17 mypy type safety errors in formatters module
- Fixed missing generic type parameters and return type annotations
- Restructured dynamic method assignment patterns for better maintainability
- Achieved 100% mypy compliance across all modified files
- Style Issues: Applied comprehensive code formatting with ruff
- Eliminated all trailing whitespace and formatting inconsistencies
- Consistent code style across the entire codebase
- Comprehensive WHY Comments: Added business logic explanations for complex operations
- Explained team info enrichment logic for multi-team label context
- Documented project lookup strategy reasoning and performance optimizations
- Added clear documentation for GraphQL query purposes and efficiency considerations
- Complete Docstring Coverage: 100% docstring coverage for all new functionality
- CLI Help Integration: All new commands properly documented with examples and usage patterns
- Enhanced CLI Help Text: Improved clarity and examples for all new functionality
- Clarified that
--projectparameter supports both project names and IDs - Enhanced multi-team label filtering help text with better descriptions
- Added comprehensive usage examples showcasing project assignment features
- Improved project creation help with clearer team association descriptions
- Added examples demonstrating combined parameter usage
- Clarified that
- CLI Help Integration: All new commands now have comprehensive help text with practical examples
- User Experience: Better guidance for users discovering new project assignment and label management features
- Numeric State Enum System: Revolutionary state management with intuitive numeric codes
--state 0for Canceled,--state 1for Backlog,--state 2for Todo,--state 3for In Progress, etc.- Added
--stateoption tolinear issue createcommand for setting initial state - Dual input support: both numeric (recommended) and text states accepted
- Clear error messages with valid state range (0-6) and helpful usage tips
- Cross-team consistency regardless of custom state names
- Enhanced State Management: Complete state operation overhaul
- Added STATE_MAPPINGS constants following priority system patterns
- Comprehensive state validation and resolution utilities
- Intuitive numeric progression: Backlog(1) → Todo(2) → In Progress(3) → In Review(4) → Done(5)
- Critical State Update Bug: Fixed complete failure of all state update operations
- Root cause: GraphQL
get_teams()query missing essentialstatesfield - Impact: All
linear issue update --statecommands were silently failing - Solution: Enhanced GraphQL query with complete state structure (id, name, type, color)
- Result: All state transitions now work reliably across all teams
- Root cause: GraphQL
- Function Complexity: Significantly improved code maintainability
- Reduced
create()function complexity from 38 to <10 - Reduced
update()function complexity from 34 to <10 - Extracted focused helper functions for state resolution and validation
- Enhanced error handling while maintaining user experience
- Reduced
- Type Safety: Achieved 100% mypy compliance
- Fixed 10 type safety errors across multiple files
- Added proper return type annotations for helper functions
- Corrected
JSONEncodeErrortoJSONDecodeErrorin performance utilities - Enhanced type consistency throughout codebase
- User Experience: Dramatically improved state management workflow
- Faster typing:
--state 3vs--state "In Progress" - Consistent interface across teams with different state naming conventions
- Backward compatibility: existing text-based commands continue to work
- Graceful degradation with helpful suggestions for better usage patterns
- Faster typing:
- Code Quality: Professional-grade documentation and architecture
- Comprehensive documentation for critical GraphQL bug fixes
- Clear architectural decision documentation for dual input strategy
- Enhanced STATE_MAPPINGS documentation with backward compatibility notes
- WHY-focused comments explaining complex business logic and design decisions
- Architecture Improvements: Robust and maintainable codebase foundation
- Refactored complex state resolution logic into focused, reusable helper functions
- Enhanced GraphQL integration with proper error handling and validation
- Improved code organization following established patterns from priority system
- Zero security vulnerabilities and complete style compliance
- Backward Compatibility: Seamless transition strategy
- All existing text-based state commands continue to work unchanged
- No breaking changes to existing CLI parameters or behavior
- Users can gradually migrate to numeric system at their own pace
- Clear migration path with helpful tips and suggestions