Skip to content

Add ray-tools extension - #30450

Open
buhaistrikalo wants to merge 5 commits into
raycast:mainfrom
buhaistrikalo:ext/ray-tools
Open

Add ray-tools extension#30450
buhaistrikalo wants to merge 5 commits into
raycast:mainfrom
buhaistrikalo:ext/ray-tools

Conversation

@buhaistrikalo

@buhaistrikalo buhaistrikalo commented Aug 23, 2026

Copy link
Copy Markdown

Description

Adds the ray-tools extension with focused macOS/Raycast utilities:

  • Translate Text — translates selected text, clipboard contents, or typed text between Russian and English.
  • Proofread Russian Text — checks Russian spelling and punctuation and provides a corrected copyable result.
  • Clean Markdown — locally removes common Markdown formatting such as **bold**, *italic*, headings, quotes, lists, task markers, links, inline code, and fenced code blocks while keeping readable text and URLs.
  • Ping — provides menu-bar network diagnostics for the gateway, internet, remote endpoint, VPN, and optional download speed.

The new Clean Markdown command accepts selected text, typed input, or clipboard contents and supports both copy and paste actions. Markdown cleaning is deterministic and works offline.

Screencast

The Clean Markdown command was tested in Raycast with copied chat text containing bold and italic markers. It produced readable plain text and showed the Markdown cleaned confirmation.

Privacy

  • Markdown cleaning runs locally; no input text is sent to a provider.
  • Translation and proofreading use their documented public HTTPS providers.
  • Ping sends only connectivity probes; no user text or credentials are sent.

Verification

  • npm run check — 53 tests passed, plus TypeScript, lint, and build checks.
  • npm run build completed successfully.
  • Tested Clean Markdown in local Raycast dev mode.
  • I read the extension guidelines
  • I read the documentation about publishing
  • I checked that files in the assets folder are used by the extension itself
  • I checked that assets used by the README are placed outside of the metadata folder

- feat: add markdown cleaner command (raycast#11)
- feat: improve ping diagnostics (raycast#10)
- feat: add network status menu bar command (raycast#9)
- feat: add Russian proofreading command (raycast#8)
- Bump eslint from 8.57.1 to 10.8.0 (raycast#5)
- Bump @types/node from 22.20.1 to 26.1.2 (raycast#4)
- Bump actions/setup-node from 4.4.0 to 7.0.0 (raycast#2)
- Bump actions/checkout from 4.2.2 to 7.0.1 (raycast#1)
- fix: harden translation handling (raycast#7)
- Keep Raycast\'s supported npm workflow
- Use pnpm with Raycast lint compatibility
- Prepare Ray Tools for GitHub
@raycastbot raycastbot added new extension Label for PRs with new extensions platform: macOS labels Aug 23, 2026
@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 15 business days.

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

@buhaistrikalo
buhaistrikalo marked this pull request as ready for review August 23, 2026 10:42
@greptile-apps

greptile-apps Bot commented Aug 23, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

The PR adds the Ray Tools extension with translation, Russian proofreading, Markdown cleanup, and menu-bar network diagnostics.

  • Adds four Raycast commands and their domain, provider, service, and UI layers.
  • Adds unit tests, Store metadata, extension documentation, and build/lint configuration.
  • Updates the previously flagged changelog, metadata, ESLint configuration, translation direction, and ping request coordination.

Confidence Score: 4/5

The PR is not yet safe to merge because a completed speed measurement can still disappear when a concurrent refresh finishes afterward.

The refresh callback replaces the whole ping result, while every regular check supplies a not-measured speed placeholder, so the previously reported overlapping-operation ordering still discards the latest measured speed.

Files Needing Attention: extensions/ray-tools/src/commands/ping.tsx and extensions/ray-tools/src/tools/ping/provider.ts

Important Files Changed

Filename Overview
extensions/ray-tools/src/commands/ping.tsx Separates refresh and speed request identities, but regular refresh completion still overwrites a completed speed measurement.
extensions/ray-tools/src/tools/ping/provider.ts Implements macOS connectivity and speed probes; regular checks intentionally return a not-measured speed placeholder.
extensions/ray-tools/src/tools/translate/provider.ts Forces the locally detected source language to prevent source/target conflicts from automatic provider detection.
extensions/ray-tools/package.json Declares four valid macOS commands, Store categorization, dependencies, and development scripts.
extensions/ray-tools/CHANGELOG.md The initial release now uses the required merge-date placeholder.
extensions/ray-tools/eslint.config.js The ESLint configuration now uses defineConfig from the supported eslint/config entry point.

Reviews (3): Last reviewed commit: "fix metadata image padding" | Re-trigger Greptile

Comment thread extensions/ray-tools/src/tools/translate/provider.ts
Comment thread extensions/ray-tools/src/commands/ping.tsx Outdated
Comment thread extensions/ray-tools/CHANGELOG.md Outdated
"title": "Translate Text",
"subtitle": "RU ↔ EN",
"description": "Translate selected or typed text between Russian and English",
"mode": "view"

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 View Commands Lack Store Metadata

The extension declares three view commands without adding the required metadata/ screenshots, leaving the new extension without the presentation assets required for normal Store review.

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

Knowledge Base Used: Extension Authoring Conventions

Prompt To Fix With AI
This is a comment left during a code review.
Path: extensions/ray-tools/package.json
Line: 24

Comment:
**View Commands Lack Store Metadata**

The extension declares three view commands without adding the required `metadata/` screenshots, leaving the new extension without the presentation assets required for normal Store review.

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

**Knowledge Base Used:** [Extension Authoring Conventions](https://app.greptile.com/raycast/-/custom-context/knowledge-base/raycast/extensions/-/docs/extension-authoring-conventions.md)

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

Comment thread extensions/ray-tools/eslint.config.js Outdated
return;
}

setResult(nextResult);

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 Refresh Discards Measured Speed

If a user runs a speed measurement and a network refresh concurrently, and the refresh finishes last, setResult(nextResult) replaces the completed speed probe with the regular check's not-detected placeholder, causing the requested speed result to disappear.

Prompt To Fix With AI
This is a comment left during a code review.
Path: extensions/ray-tools/src/commands/ping.tsx
Line: 155

Comment:
**Refresh Discards Measured Speed**

If a user runs a speed measurement and a network refresh concurrently, and the refresh finishes last, `setResult(nextResult)` replaces the completed speed probe with the regular check's `not-detected` placeholder, causing the requested speed result to disappear.

---

For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.

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 platform: macOS

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants