Skip to content

v2.5.0 - Complete GitHub Issues API

Choose a tag to compare

@jordanpartridge jordanpartridge released this 19 Jul 20:05
· 21 commits to master since this release

v2.5.0 - Complete GitHub Issues API

πŸš€ Major New Features

Complete GitHub Issues API Implementation

This release brings comprehensive GitHub Issues functionality to the package, including full CRUD operations, comment management, and advanced filtering capabilities.

🎯 Core Features

  • Full CRUD Operations: Create, read, update, and close issues
  • Issue Comments: Add, list, and manage issue comments
  • Auto-Pagination: Seamlessly paginate through large issue lists
  • Advanced Filtering: Filter by state, labels, assignee, creator, and more
  • Defensive Programming: Robust error handling and null-safe operations

πŸ“¦ New Components

Request Classes:

  • Get - Retrieve individual issues by number
  • Index - List user issues across all repositories
  • RepoIndex - List issues for specific repositories
  • Create - Create new issues with full metadata
  • Update - Update existing issues (title, body, state, etc.)
  • Comments - List issue comments
  • CreateComment - Add comments to issues

Data Transfer Objects:

  • IssueDTO - Complete issue data representation
  • IssueCommentDTO - Issue comment data structure
  • LabelDTO - Issue label information

Enums:

  • Issues\State - Issue states (open, closed, all)
  • Issues\Sort - Sort options (created, updated, comments)

Utilities:

  • HandlesIssueResponses - Trait for consistent response processing

πŸ’‘ Usage Examples

// List user issues
$issues = GitHub::issues()->index(
    state: State::OPEN,
    labels: 'bug,enhancement',
    sort: Sort::CREATED,
    direction: Direction::DESC
);

// Get specific issue
$issue = GitHub::issues()->get('owner', 'repo', 42);

// Create new issue
$newIssue = GitHub::issues()->create('owner', 'repo', 'Bug Report', 
    bodyText: 'Detailed description...',
    labels: ['bug', 'priority-high'],
    assignees: ['username']
);

// Add comment
$comment = GitHub::issues()->createComment('owner', 'repo', 42, 'Thanks for reporting\!');

// Auto-pagination support
$allIssues = GitHub::issues()->index()->collect();

πŸ›‘οΈ Quality Improvements

  • Comprehensive Testing: 17 new test cases covering all functionality
  • Parameter Validation: Client-side validation for issue numbers and content
  • Pull Request Filtering: Automatically filters out PRs from issue listings
  • Error Handling: Graceful handling of incomplete API responses
  • Documentation: Full PHPDoc coverage for all public methods

πŸ› Bug Fixes

  • PullRequestDTO Defensive Programming: Fixed missing null coalescing operators for optional fields
  • Issue/PR Separation: Proper filtering since GitHub's Issues API returns both
  • Empty Response Handling: Robust handling of malformed or incomplete API data

πŸ“Š Technical Details

  • 92 Test Cases with 256 assertions - all passing
  • 100% Backward Compatibility maintained
  • Defensive Programming patterns throughout
  • Type Safety with comprehensive DTOs and enums

Full Changelog: v2.4.0...v2.5.0

What's Changed

Full Changelog: v2.4.0...v2.5.0