feat(github): add List Releases component#2933
feat(github): add List Releases component#2933zekebawt wants to merge 3 commits intosuperplanehq:mainfrom
Conversation
Adds a new GitHub integration component to list releases for a repository. ## Features - Lists releases from a GitHub repository - Optional pagination support (per_page, page parameters) - Returns comprehensive release data including: - Release ID, tag name, name, body - Draft and prerelease flags - Published/created timestamps - Author information - Assets with download URLs and counts - Tarball and zipball URLs ## Configuration - Repository (required): GitHub repo to list releases from - Per Page (optional): Number of releases per page (default: 30, max: 100) - Page (optional): Page number for pagination (default: 1) ## Use Cases - Changelog generation and reporting - Fetching latest releases for notifications/status pages - Syncing release lists to external systems (Jira, Slack) Closes superplanehq#2818 Signed-off-by: Zeke Bawt <zekebawt@gmail.com>
| "has_more": resp.NextPage != 0, | ||
| "next_page": resp.NextPage, | ||
| "last_page": resp.LastPage, | ||
| "total_count": len(releaseData), // Approximate since GitHub doesn't return total |
There was a problem hiding this comment.
Misleading total_count duplicates count field value
Medium Severity
The total_count output field is set to len(releaseData), which is identical to the count field. The name total_count strongly implies the total number of releases across all pages, but it actually only reflects the count on the current page. Consumers relying on total_count for pagination display or logic (e.g., "showing 10 of 250 releases") would get incorrect results. The resp.LastPage value is already available and could help approximate a true total, or this redundant field could simply be removed.
Additional Locations (1)
The CreateIssueComment component was removed, but example.go still had embed directives and variables referencing the non-existent example_output_create_issue_comment.json file, causing build failures.
- Add list_releases.ts mapper with metadata and execution details - Update index.ts with listReleases mapper and state registry - Add List Releases documentation to GitHub.mdx
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.
| const details: Record<string, string> = {}; | ||
|
|
||
| if (outputs && outputs.default && outputs.default.length > 0) { | ||
| const releases = outputs.default[0].data as ReleaseOutput[]; |
There was a problem hiding this comment.
Frontend accesses nested release data at wrong level
High Severity
The backend emits an object with keys like releases, count, page, etc., but getExecutionDetails casts outputs.default[0].data directly as ReleaseOutput[]. The actual release array is nested under the releases key of that object. Because Array.isArray() returns false for a plain object, the entire release details block is silently skipped, and only "Retrieved At" is ever shown in execution details.


Summary
Adds a new GitHub integration component to list releases for a repository with optional pagination support.
Closes #2818
Features
per_pageandpageparametersConfiguration
Use Cases
Output
Emits a single payload containing:
releases: Array of release objects with full detailscount: Number of releases in current pagepage: Current page numberper_page: Releases per page settinghas_more: Whether more pages existnext_page: Next page number (0 if no more pages)last_page: Last page numberrepository: Repository nameowner: Repository ownerTesting
Demo Video
[To be added after PR creation]
Bounty: #2818 ($50)