Skip to content

Add subflow extension#27478

Merged
raycastbot merged 3 commits into
raycast:mainfrom
ridemountainpig:subflow
Apr 28, 2026
Merged

Add subflow extension#27478
raycastbot merged 3 commits into
raycast:mainfrom
ridemountainpig:subflow

Conversation

@ridemountainpig
Copy link
Copy Markdown
Contributor

Description

Add subflow extension to manage your subscriptions with Subflow directly from Raycast.

Screencast

Dia 2026-04-28 10 50 37 Dia 2026-04-28 10 50 38

Checklist

@raycastbot
Copy link
Copy Markdown
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.

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Apr 28, 2026

Greptile Summary

This PR adds a new Subflow extension with two commands — a menu bar item showing upcoming subscription payments and a view command for browsing subscriptions by month. The implementation is clean overall, with proper async cancellation patterns, a 24 h disk-cached SVG icon service, and good error handling throughout.

Confidence Score: 5/5

Safe to merge after addressing the one P2 style suggestion; no logic or security issues found.

Only P2 findings are present (deprecated unescape in icons.ts). No P0 or P1 issues were identified.

extensions/subflow/src/utils/icons.ts — deprecated unescape on line 66

Important Files Changed

Filename Overview
extensions/subflow/src/utils/icons.ts Custom SVG icon fetching from svgl.app with 24 h disk cache + session memory cache; uses deprecated unescape on line 66
extensions/subflow/src/utils/graphql.ts GraphQL fetch with proper error handling, uses auto-generated Preferences type; deduplicates own + co-subscriptions via Set
extensions/subflow/src/menu-bar.tsx Menu bar command showing tomorrow's due count and this-month list; clean cancellation pattern for async icon loading
extensions/subflow/src/view-subscription.tsx View command with month navigation, sort dropdown, and Today/Paid tags; well-structured with proper cancellation of inflight icon loads
extensions/subflow/package.json Correctly includes $schema, two categories ("Applications" + "Finance"), macOS + Windows platforms, and a password preference for the API key
Prompt To Fix All With AI
This is a comment left during a code review.
Path: extensions/subflow/src/utils/icons.ts
Line: 66

Comment:
**`unescape` is deprecated — use `Buffer.from` instead**

`unescape` is deprecated in modern JS engines. Since Raycast extensions run in a Node.js environment, use `Buffer` for UTF-8-safe base64 encoding instead of the `btoa(unescape(encodeURIComponent(...)))` browser workaround.

```suggestion
    const base64 = Buffer.from(svg, "utf-8").toString("base64");
```

How can I resolve this? If you propose a fix, please make it concise.

Reviews (2): Last reviewed commit: "Update review comment" | Re-trigger Greptile

Comment thread extensions/subflow/src/utils/graphql.ts Outdated
Comment thread extensions/subflow/package.json
Comment thread extensions/subflow/src/utils/constants.ts
@0xdhrv 0xdhrv self-assigned this Apr 28, 2026
Copy link
Copy Markdown
Contributor

@0xdhrv 0xdhrv left a comment

Choose a reason for hiding this comment

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

Looks good to me, approved ✅

@raycastbot raycastbot merged commit e44da9c into raycast:main Apr 28, 2026
2 checks passed
@github-actions
Copy link
Copy Markdown
Contributor

Published to the Raycast Store:
https://raycast.com/ridemountainpig/subflow

@raycastbot
Copy link
Copy Markdown
Collaborator

🎉 🎉 🎉

We've rewarded your Raycast account with some credits. You will soon be able to exchange them for some swag.

@ridemountainpig ridemountainpig deleted the subflow branch April 28, 2026 06:08
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants