Skip to content

Add focusmate extension#27454

Draft
alexi-build wants to merge 2 commits intoraycast:mainfrom
alexi-build:ext/focusmate
Draft

Add focusmate extension#27454
alexi-build wants to merge 2 commits intoraycast:mainfrom
alexi-build:ext/focusmate

Conversation

@alexi-build
Copy link
Copy Markdown
Contributor

@alexi-build alexi-build commented Apr 27, 2026

Description

Add Commands

  • View your Focusmate profile, including user ID, total session count, timezone, and favorite status
  • View your Focusmate sessions from the last 30 days
  • Open the Focusmate dashboard in your browser

Screencast

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.

@alexi-build alexi-build marked this pull request as ready for review April 27, 2026 00:51
@alexi-build alexi-build marked this pull request as draft April 27, 2026 00:56
@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps Bot commented Apr 27, 2026

Greptile Summary

This PR adds a new Focusmate extension with three commands: view profile, view recent sessions, and open the dashboard. The implementation is straightforward and follows most Raycast conventions, but one blocker needs to be resolved before the extension can be published.

  • Missing metadata/ folder: The extension has two view-mode commands but no Raycast-styled screenshots, which are required for store submission.
  • Manual Preferences interface in src/api.ts: Should be removed in favor of the auto-generated raycast-env.d.ts types.
  • Partner name display in sessions.tsx: s.users?.[0] may resolve to the authenticated user's own name rather than the session partner's.

Confidence Score: 3/5

Not ready to merge — the missing metadata/ folder is a hard publishing requirement, and the partner-name logic needs verification.

One P1 (missing required metadata screenshots) pulls the ceiling to 4/5, and the additional partner-name logic concern in sessions.tsx lowers it further to 3/5.

extensions/focusmate/package.json (missing metadata/ folder), extensions/focusmate/src/sessions.tsx (partner name logic), extensions/focusmate/src/api.ts (manual Preferences interface)

Important Files Changed

Filename Overview
extensions/focusmate/package.json Extension manifest is well-formed; missing metadata/ folder with required screenshots for view-type commands
extensions/focusmate/src/api.ts Core API layer with auth and typed fetch helpers; manually defines a Preferences interface that should be auto-generated via raycast-env.d.ts
extensions/focusmate/src/sessions.tsx Sessions list rendered as markdown Detail; partner name is picked as users[0] which may resolve to the current user rather than the partner
extensions/focusmate/src/profile.tsx Profile command renders user details via useCachedPromise; clean implementation with proper error handling
extensions/focusmate/src/open-dashboard.ts Simple no-view command that opens the Focusmate dashboard and closes the main window
extensions/focusmate/.prettierrc Correctly uses printWidth: 120 and singleQuote: false per Raycast standards
extensions/focusmate/eslint.config.js Correctly uses defineConfig from eslint/config with the Raycast ESLint preset
extensions/focusmate/CHANGELOG.md Uses the correct {PR_MERGE_DATE} placeholder for the initial release entry
Prompt To Fix All With AI
This is a comment left during a code review.
Path: extensions/focusmate/src/api.ts
Line: 5-7

Comment:
**Manual `Preferences` interface defined**

The `Preferences` interface should not be manually defined for `getPreferenceValues()`. The types are auto-generated in `raycast-env.d.ts` when the extension runs, so a hand-written interface can silently drift from the actual `package.json` preference schema and cause type mismatches.

**Rule Used:** What: Don't manually define `Preferences` for `get... ([source](https://app.greptile.com/review/custom-context?memory=d93fc9fb-a45d-4479-a6a4-b1b4af98ebc8))

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

---

This is a comment left during a code review.
Path: extensions/focusmate/src/sessions.tsx
Line: 42-43

Comment:
**Partner name may show self instead of partner**

`s.users?.[0]?.name` unconditionally picks the first element, which can be the authenticated user themselves rather than their session partner. For solo or partially-joined sessions the array may only contain one entry (the current user), so this would display the user's own name as the partner label.

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

---

This is a comment left during a code review.
Path: extensions/focusmate/package.json
Line: 1-4

Comment:
**Missing `metadata/` folder with screenshots**

This extension defines two `view`-mode commands (`sessions` and `profile`), but the PR does not include a `metadata/` folder with Raycast-styled screenshots. The Raycast store requires screenshots for all extensions that have view-type commands before they can be published.

**Rule Used:** What: Extensions with view-type commands must incl... ([source](https://app.greptile.com/review/custom-context?memory=87059ac1-c601-487f-9f1c-bce8a3cb6209))

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

Reviews (1): Last reviewed commit: "init" | Re-trigger Greptile

Comment thread extensions/focusmate/src/api.ts Outdated
Comment thread extensions/focusmate/src/sessions.tsx Outdated
Comment on lines +1 to +4
{
"$schema": "https://www.raycast.com/schemas/extension.json",
"name": "focusmate",
"title": "Focusmate",
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

P1 Missing metadata/ folder with screenshots

This extension defines two view-mode commands (sessions and profile), but the PR does not include a metadata/ folder with Raycast-styled screenshots. The Raycast store requires screenshots for all extensions that have view-type commands before they can be published.

Rule Used: What: Extensions with view-type commands must incl... (source)

Prompt To Fix With AI
This is a comment left during a code review.
Path: extensions/focusmate/package.json
Line: 1-4

Comment:
**Missing `metadata/` folder with screenshots**

This extension defines two `view`-mode commands (`sessions` and `profile`), but the PR does not include a `metadata/` folder with Raycast-styled screenshots. The Raycast store requires screenshots for all extensions that have view-type commands before they can be published.

**Rule Used:** What: Extensions with view-type commands must incl... ([source](https://app.greptile.com/review/custom-context?memory=87059ac1-c601-487f-9f1c-bce8a3cb6209))

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

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.

2 participants