-
Notifications
You must be signed in to change notification settings - Fork 6.7k
Add blume-search extension #30493
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add blume-search extension #30493
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,2 @@ | ||
| raycast-env.d.ts | ||
| dist/ |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| { | ||
| "bracketSpacing": true, | ||
| "printWidth": 120, | ||
| "tabWidth": 2, | ||
| "semi": true, | ||
| "singleQuote": false, | ||
| "useTabs": false | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| ## [Initial Release] - 2026-08-14 | ||
|
|
||
| - Search local Blume projects, conversations, messages, setup artifacts, and suggestions. | ||
| - Filter results using Blume's entity icons and colors. | ||
| - Open results in stable Blume or Blume Canary. | ||
| - Keep all search data local through Blume's bundled read-only search helper. | ||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,50 @@ | ||
| # Blume Search for Raycast | ||
|
|
||
| Search the same projects, conversations, messages, setup artifacts, and suggestions as Blume's | ||
| in-app search. The extension starts the local search helper shipped inside Blume; the helper uses | ||
| Blume's shared search use case and a read-only SQLite adapter. Nothing is sent over the network. | ||
|
|
||
| ## Develop locally | ||
|
|
||
| 1. Install a Blume build that includes the Raycast search helper and open it once so its database exists. | ||
| 2. Run `cd apps/raycast && npm ci`. The extension is intentionally excluded from the pnpm | ||
| workspace because Raycast Store CI consumes its standalone `package-lock.json`. | ||
| 3. Run `npm run dev` and open **Search Blume** in Raycast. | ||
|
|
||
| Stable Blume is used by default. To search Blume Canary, choose it under **Blume Application** in | ||
| Raycast's extension preferences. One helper process stays alive only while the command is open, | ||
| and its database is protected by SQLite read-only and `query_only` enforcement. | ||
|
|
||
| ## Store releases | ||
|
|
||
| Raycast Store publishing is review-based: `ray publish` submits or updates a pull request in | ||
| `raycast/extensions`, and Raycast deploys the extension after that pull request is merged. | ||
|
|
||
| The repository's **Raycast Extension** workflow validates every extension change using npm, the | ||
| same package manager used by Raycast's Store CI. To enable automatic update submissions after a | ||
| compatible Blume desktop release is stable: | ||
|
|
||
| 1. Sign in with `ray login` and confirm that `ray profile` reports the manifest's registered | ||
| Raycast Store handle (`olav_ljosland`). | ||
| 2. Create a protected `raycast-store` GitHub environment. | ||
| 3. Add `RAYCAST_TOKEN` and `RAYCAST_GITHUB_TOKEN` secrets to that environment. The GitHub token | ||
| must be able to create or update the Raycast extensions pull request. | ||
| 4. Run the workflow manually with **submit** enabled for the initial Store submission. Optionally | ||
| provide the stable desktop tag; otherwise the workflow reads the live Blume stable update feed. | ||
| Public Store publication intentionally runs without Raycast's unsupported `--non-interactive` | ||
| flag; the environment secrets provide Raycast and GitHub authentication without a login prompt. | ||
| 5. After the desktop helper has reached stable Blume, set the repository variable | ||
| `RAYCAST_AUTO_SUBMIT` to `true`. Later merges that change `apps/raycast`, and later successful | ||
| stable desktop promotions, will automatically submit an update for Raycast review. | ||
|
|
||
| Leave `RAYCAST_AUTO_SUBMIT` disabled before the compatible desktop helper is available to stable | ||
| users. Both manual and automatic submissions verify that the chosen stable release is on main, | ||
| matches the immutable stable-promotion marker and live update feed, contains the helper source, | ||
| ready-frame support, and build entry, and publishes the expected macOS updater ZIP. Current helpers | ||
| advertise their supported protocol versions before accepting searches. | ||
| During the additive rollout, the extension waits briefly for that frame and then falls back to the | ||
| previous request-first protocol v1 used by older helper builds; unsupported advertised versions fail | ||
| with an update prompt. This compatibility window can be removed in a later extension release after | ||
| the ready-frame desktop release is stable, and rolling back the extension remains safe while helpers | ||
| continue to accept v1 requests. The workflow never publishes from pull requests or non-default | ||
| branches. |
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,8 @@ | ||||||||||||||||||||||||||||||||||||
| const raycastConfig = require("@raycast/eslint-config"); | ||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||
| module.exports = [ | ||||||||||||||||||||||||||||||||||||
| { | ||||||||||||||||||||||||||||||||||||
| files: ["src/**/*.{js,jsx,ts,tsx}"], | ||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||
| ...raycastConfig.flat(), | ||||||||||||||||||||||||||||||||||||
| ]; | ||||||||||||||||||||||||||||||||||||
|
Comment on lines
+1
to
+8
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
This ESLint v9 flat configuration exports its array directly instead of using
Suggested change
Rule Used: What: In ESLint v9+, Prompt To Fix With AIThis is a comment left during a code review.
Path: extensions/blume-search/eslint.config.cjs
Line: 1-8
Comment:
**ESLint config skips defineConfig**
This ESLint v9 flat configuration exports its array directly instead of using `defineConfig` from `eslint/config`, bypassing the repository’s supported normalization pattern for nested preset arrays.
```suggestion
const { defineConfig } = require("eslint/config");
const raycastConfig = require("@raycast/eslint-config");
module.exports = defineConfig([
{
files: ["src/**/*.{js,jsx,ts,tsx}"],
},
...raycastConfig.flat(),
]);
```
**Rule Used:** What: In ESLint v9+, `defineConfig` is exported fr... ([source](https://app.greptile.com/raycast/github/raycast/extensions/-/custom-context?memory=ded2e079-95d0-44a7-80b5-83bbe04916f5))
---
For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.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! |
||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The Initial Release heading hardcodes
2026-08-14instead of{PR_MERGE_DATE}, preventing release automation from inserting the actual merge date.Rule Used: What: Changelog entries must use
{PR_MERGE_DATE}... (source)Prompt To Fix With AI