Conversation
|
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 15 business days. Once the PR is approved and merged, the extension will be available on our Store. |
|
| "fix-lint": "ray lint --fix" | ||
| }, | ||
| "dependencies": { | ||
| "@raycast/api": "^2.4.1" |
There was a problem hiding this comment.
@raycast/api 2.4.1 is newer than released Raycast clients can run. The same version recently made another extension uninstallable, and this code only uses APIs available in 2.2.1. Pin the manifest and lockfile to a released-compatible version.
Knowledge Base Used: Roll Back Secret Browser Commands API Version
Prompt To Fix With AI
This is a comment left during a code review.
Path: extensions/loop-window-control/package.json
Line: 158
Comment:
`@raycast/api` 2.4.1 is newer than released Raycast clients can run. The same version recently made another extension uninstallable, and this code only uses APIs available in 2.2.1. Pin the manifest and lockfile to a released-compatible version.
**Knowledge Base Used:** [Roll Back Secret Browser Commands API Version](https://app.greptile.com/raycast/-/custom-context/knowledge-base/raycast/extensions/-/reverts/rollback_31151-20260915-api-version-too-new-4b15289.md)
---
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!
| "name": "window-actions", | ||
| "title": "Window Actions", | ||
| "description": "Search and run Loop window actions", | ||
| "mode": "view", |
There was a problem hiding this comment.
The repository requires every extension with a view command to add a
metadata/ folder with Raycast-styled screenshots. This manifest adds two view commands, but this extension has no screenshots. Add the required Store images before merging.
Rule Used: What: Extensions with view-type commands must include a metadata/ folder containing Raycast-styled screenshots. Why: Professional metadata images ensure extensions appear polished and consistent in the Raycast store. Good: ``` my-extension/ ├── m... (source)
Knowledge Base Used: Extension metadata and visual assets
Prompt To Fix With AI
This is a comment left during a code review.
Path: extensions/loop-window-control/package.json
Line: 21
Comment:
The repository requires every extension with a view command to add a `metadata/` folder with Raycast-styled screenshots. This manifest adds two view commands, but this extension has no screenshots. Add the required Store images before merging.
**Rule Used:** What: Extensions with view-type commands must include a `metadata/` folder containing Raycast-styled screenshots. Why: Professional metadata images ensure extensions appear polished and consistent in the Raycast store. Good: ``` my-extension/ ├── m... ([source](https://app.greptile.com/raycast/-/custom-context?memory=87059ac1-c601-487f-9f1c-bce8a3cb6209))
**Knowledge Base Used:** [Extension metadata and visual assets](https://app.greptile.com/raycast/-/custom-context/knowledge-base/raycast/extensions/-/docs/extension-metadata-and-assets.md)
---
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!
| export interface LoopPreferences { | ||
| appPath?: string; | ||
| focusDelay?: string; | ||
| } |
There was a problem hiding this comment.
The repository says not to copy preference or command argument types by hand because Raycast generates them from the manifest.
LoopPreferences duplicates both preferences, and run-keybind.ts also copies the name argument shape. Use the generated types so manifest changes cannot leave source types stale.
Rule Used: What: Don't manually define Preferences for getPreferenceValues() or commends Argument interfaces; they're auto-generated in raycast-env.d.ts when the extension runs. Why: Manual definitions can become out of sync with your actual configurat... (source)
Prompt To Fix With AI
This is a comment left during a code review.
Path: extensions/loop-window-control/src/lib/loop.ts
Line: 13-16
Comment:
The repository says not to copy preference or command argument types by hand because Raycast generates them from the manifest. `LoopPreferences` duplicates both preferences, and `run-keybind.ts` also copies the `name` argument shape. Use the generated types so manifest changes cannot leave source types stale.
**Rule Used:** What: Don't manually define `Preferences` for `getPreferenceValues()` or commends `Argument` interfaces; they're auto-generated in `raycast-env.d.ts` when the extension runs. Why: Manual definitions can become out of sync with your actual configurat... ([source](https://app.greptile.com/raycast/-/custom-context?memory=d93fc9fb-a45d-4479-a6a4-b1b4af98ebc8))
---
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!
| if (info.CFBundleIdentifier?.toLowerCase() !== BUNDLE_ID.toLowerCase()) | ||
| throw new Error("The selected application is not Loop. Check the application path."); | ||
| if (!info.CFBundleURLTypes?.some((type) => type.CFBundleURLSchemes?.includes("loop"))) | ||
| throw new Error("This version does not declare the loop:// URL scheme. Update Loop."); | ||
| return { appPath, version: info.CFBundleShortVersionString || "Unknown" }; |
There was a problem hiding this comment.
inspectInstallation reads CFBundleShortVersionString but never checks the documented 1.4.2 minimum. An older Loop build that declares the URL scheme passes setup and receives catalog actions it may not support. Compare the version and show the update error before closing Raycast.
Knowledge Base Used: Extension command implementation patterns
Prompt To Fix With AI
This is a comment left during a code review.
Path: extensions/loop-window-control/src/lib/transport.ts
Line: 59-63
Comment:
`inspectInstallation` reads `CFBundleShortVersionString` but never checks the documented 1.4.2 minimum. An older Loop build that declares the URL scheme passes setup and receives catalog actions it may not support. Compare the version and show the update error before closing Raycast.
**Knowledge Base Used:** [Extension command implementation patterns](https://app.greptile.com/raycast/-/custom-context/knowledge-base/raycast/extensions/-/docs/extension-command-implementation.md)
---
For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.
Description
Integrates the Loop macOS window manager with Raycast through its native URL scheme. Search 71 window actions, assign Raycast hotkeys to nine common actions, and run named Loop layouts, cycles, and stashes using existing Loop configuration.
Requires Loop 1.4.2 or later and Accessibility permission for Loop. No additional CLI, server, API key, or account is needed. The extension validates the application bundle, closes Raycast to restore focus, and delivers URLs using argument-based execFile calls. The HUD says 'Sent to Loop' because the upstream interface does not acknowledge execution.
Includes installation diagnostics, configurable app path and focus delay, English setup/troubleshooting documentation, an original icon, and an npm lockfile. Raycast author: zwjacl. No upstream implementation or artwork is copied.
The earlier Loop submission #26751 was closed, and its author stated they had stopped working on it. This is an independent implementation.
Validation
Full manual verification of distribution-build window resizing, multi-display behavior, and named keybind execution remains outstanding. No screencast is attached yet.
Checklist