Skip to content

feat(github): add List Releases component#2933

Open
zekebawt wants to merge 3 commits intosuperplanehq:mainfrom
zekebawt:feat/github-list-releases
Open

feat(github): add List Releases component#2933
zekebawt wants to merge 3 commits intosuperplanehq:mainfrom
zekebawt:feat/github-list-releases

Conversation

@zekebawt
Copy link

@zekebawt zekebawt commented Feb 7, 2026

Summary

Adds a new GitHub integration component to list releases for a repository with optional pagination support.

Closes #2818

Features

  • Lists releases from a GitHub repository via GitHub API
  • Optional pagination support with per_page and page parameters
  • Returns comprehensive release data including:
    • Release ID, node_id, tag name, name, body
    • Draft and prerelease flags
    • Published/created timestamps
    • Author information (login, id, avatar_url, html_url)
    • Assets with download URLs and counts
    • Tarball and zipball URLs

Configuration

Field Type Required Default Description
Repository integration-resource Yes - GitHub repo to list releases from
Per Page string No 30 Number of releases per page (max 100)
Page string No 1 Page number for pagination

Use Cases

  • Changelog generation: List releases for reporting or changelog generation from SuperPlane
  • Notifications: Fetch the latest N releases for notifications or status pages
  • Sync to external systems: Sync release list to external systems like Jira or Slack
  • Release management: Monitor releases across repositories

Output

Emits a single payload containing:

  • releases: Array of release objects with full details
  • count: Number of releases in current page
  • page: Current page number
  • per_page: Releases per page setting
  • has_more: Whether more pages exist
  • next_page: Next page number (0 if no more pages)
  • last_page: Last page number
  • repository: Repository name
  • owner: Repository owner

Testing

  • Added comprehensive unit tests for Setup and Configuration
  • All existing GitHub integration tests pass

Demo Video

[To be added after PR creation]


Bounty: #2818 ($50)

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
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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)

Fix in Cursor Fix in Web

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
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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[];
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

Additional Locations (1)

Fix in Cursor Fix in Web

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[GitHub] List Releases

1 participant