Skip to content

Conversation

@keito4
Copy link

@keito4 keito4 commented Jan 31, 2026

Description

Browse and manage your Supabase projects and database branches directly from Raycast.

Features

  • View all projects grouped by organization
  • Browse database branches for each project
  • Quick access to Supabase Dashboard
  • Copy project references and URLs
  • Refresh data with Cmd+R

Screencast

Screenshots are included in the metadata folder showing:

  1. Project list grouped by organization
  2. Project actions panel
  3. Branch list for a project
  4. Branch actions panel

Checklist

- chore: fix ESLint config and resize screenshots
- chore: update author to keito4 for Store submission
- chore: add MIT LICENSE file
- chore: disable mock mode for production
- feat: add screenshots and mock data for Store submission
- chore: update icon from Dashboard Icons
- fix: branch opens project dashboard instead of branches page
- feat: add empty state, refresh action, and Store requirements
- feat: initial release of Supabase Raycast extension
@raycastbot raycastbot added the new extension Label for PRs with new extensions label Jan 31, 2026
@raycastbot
Copy link
Collaborator

Congratulations on your new Raycast extension! 🚀

We're currently experiencing a high volume of incoming requests. As a result, the initial review may take up to 10-15 business days.

Once the PR is approved and merged, the extension will be available on our Store.

@keito4 keito4 marked this pull request as ready for review January 31, 2026 02:22
@greptile-apps
Copy link
Contributor

greptile-apps bot commented Jan 31, 2026

Greptile Overview

Greptile Summary

This PR adds a new Supabase extension that allows users to browse and manage Supabase projects and database branches directly from Raycast. The implementation follows Raycast extension guidelines correctly.

Key Changes:

  • Added main command to list projects grouped by organization
  • Implemented branch listing for individual projects
  • Proper API client with error handling using native fetch
  • Correct configuration files (.prettierrc, eslint.config.js, package.json)
  • Uses auto-generated ExtensionPreferences type instead of manual definitions
  • All keyboard shortcuts are properly configured without conflicts
  • Changelog uses {PR_MERGE_DATE} placeholder as required

Previous Feedback Addressed:
All issues from previous review threads have been resolved, including Prettier configuration, changelog format, shortcut conflicts, and the manual Preferences type definition.

Confidence Score: 5/5

  • This PR is safe to merge with no issues found
  • All Raycast extension standards are met, previous feedback has been addressed, code follows best practices, and no bugs or violations were found
  • No files require special attention

Important Files Changed

Filename Overview
extensions/supabase/package.json Standard Raycast extension configuration with correct dependencies and preferences
extensions/supabase/src/list-projects.tsx Main command with proper preference usage, no conflicts, uses auto-generated ExtensionPreferences type
extensions/supabase/src/components/BranchList.tsx Branch listing component with proper action shortcuts, no shortcut conflicts
extensions/supabase/src/lib/api.ts API client using native globalThis.fetch with proper error handling

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

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

5 files reviewed, 6 comments

Edit Code Review Agent Settings | Greptile

@@ -0,0 +1,7 @@
{
"printWidth": 100,
Copy link
Contributor

Choose a reason for hiding this comment

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

printWidth must be 120 per Raycast standards, not 100

Suggested change
"printWidth": 100,
"printWidth": 120,

Context Used: Rule from dashboard - What: All extensions must use the standard Raycast Prettier configuration with printWidth: 120 and... (source)

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

@@ -0,0 +1,12 @@
# Changelog

## [1.0.0] - 2025-01-31
Copy link
Contributor

Choose a reason for hiding this comment

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

use {PR_MERGE_DATE} placeholder instead of hardcoded date

Suggested change
## [1.0.0] - 2025-01-31
## [1.0.0] - {PR_MERGE_DATE}

Context Used: Rule from dashboard - What: Changelog entries must use {PR_MERGE_DATE} placeholder in titles, be placed at the top of th... (source)

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Comment on lines 1 to 3
export type Preferences = {
accessToken: string;
};
Copy link
Contributor

Choose a reason for hiding this comment

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

don't manually define Preferences type - it's auto-generated in raycast-env.d.ts

Suggested change
export type Preferences = {
accessToken: string;
};

Context Used: Rule from dashboard - What: Don't manually define Preferences for getPreferenceValues() or commends Argument interfa... (source)

Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

} from "@raycast/api";
import { useState, useEffect, useCallback } from "react";
import { supabaseFetch } from "./lib/api";
import type { Preferences, Project, Organization } from "./lib/types";
Copy link
Contributor

Choose a reason for hiding this comment

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

remove Preferences import since it's auto-generated

Suggested change
import type { Preferences, Project, Organization } from "./lib/types";
import type { Project, Organization } from "./lib/types";

Context Used: Rule from dashboard - What: Don't manually define Preferences for getPreferenceValues() or commends Argument interfa... (source)

Comment on lines 120 to 124
<Action.CopyToClipboard
title="Copy Project URL"
content={getProjectUrl(project.id)}
shortcut={{ modifiers: ["cmd"], key: "c" }}
/>
Copy link
Contributor

Choose a reason for hiding this comment

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

both actions have the same shortcut (cmd+c) - this will cause conflicts

Suggested change
<Action.CopyToClipboard
title="Copy Project URL"
content={getProjectUrl(project.id)}
shortcut={{ modifiers: ["cmd"], key: "c" }}
/>
<Action.CopyToClipboard
title="Copy Project Ref"
content={project.id}
shortcut={{ modifiers: ["cmd"], key: "c" }}
/>
<Action.CopyToClipboard
title="Copy Project URL"
content={getProjectUrl(project.id)}
shortcut={{ modifiers: ["cmd", "shift"], key: "c" }}
/>

Comment on lines 91 to 100
<Action.CopyToClipboard
title="Copy Branch ID"
content={branch.id}
shortcut={{ modifiers: ["cmd"], key: "c" }}
/>
<Action.CopyToClipboard
title="Copy Project Ref"
content={branch.project_ref}
shortcut={{ modifiers: ["cmd"], key: "c" }}
/>
Copy link
Contributor

Choose a reason for hiding this comment

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

both actions have the same shortcut (cmd+c)

Suggested change
<Action.CopyToClipboard
title="Copy Branch ID"
content={branch.id}
shortcut={{ modifiers: ["cmd"], key: "c" }}
/>
<Action.CopyToClipboard
title="Copy Project Ref"
content={branch.project_ref}
shortcut={{ modifiers: ["cmd"], key: "c" }}
/>
<ActionPanel.Section title="Copy">
<Action.CopyToClipboard
title="Copy Branch ID"
content={branch.id}
shortcut={{ modifiers: ["cmd"], key: "c" }}
/>
<Action.CopyToClipboard
title="Copy Project Ref"
content={branch.project_ref}
shortcut={{ modifiers: ["cmd", "shift"], key: "c" }}
/>
</ActionPanel.Section>

@0xdhrv 0xdhrv self-assigned this Jan 31, 2026
@0xdhrv
Copy link
Contributor

0xdhrv commented Jan 31, 2026

Hi @keito4 👋

Thanks for your contribution 💪

Could you look into the suggestions from Greptile

I'm looking forward to reviwing this extension again 🔥

I converted this PR into a draft until it's ready for the review, please press the button Ready for review when it's ready and we'll have a look 😊

Feel free to contact me here or at Slack if you have any questions.

@0xdhrv 0xdhrv marked this pull request as draft January 31, 2026 03:58
- style: format code with Prettier (printWidth: 120)
- fix: address review feedback
@keito4 keito4 marked this pull request as ready for review January 31, 2026 04:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

new extension Label for PRs with new extensions

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants