v2.5.0 - Complete GitHub Issues API
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 numberIndex- List user issues across all repositoriesRepoIndex- List issues for specific repositoriesCreate- Create new issues with full metadataUpdate- Update existing issues (title, body, state, etc.)Comments- List issue commentsCreateComment- Add comments to issues
Data Transfer Objects:
IssueDTO- Complete issue data representationIssueCommentDTO- Issue comment data structureLabelDTO- 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
- feat: Add comprehensive GitHub Issues API support by @jordanpartridge in #69
Full Changelog: v2.4.0...v2.5.0