Skip to content

Add slides2pdf extension - #30126

Open
Root-Bert wants to merge 13 commits into
raycast:mainfrom
Root-Bert:ext/slides2pdf
Open

Add slides2pdf extension#30126
Root-Bert wants to merge 13 commits into
raycast:mainfrom
Root-Bert:ext/slides2pdf

Conversation

@Root-Bert

@Root-Bert Root-Bert commented Aug 10, 2026

Copy link
Copy Markdown

Description

Slides2PDF converts files selected in Finder to PDF using apps the user already has — no cloud services, no bundled binaries.

  • Convert to PDF (no-view): converts the current Finder selection. For each file the format-native engine is tried first (PowerPoint for .pptx, Keynote for .key, Word for .docx, …) with automatic fallback to the next capable engine if one fails. Live progress toast with an x/y counter for batches.
  • Setup Conversion Engines (view): checklist of detected engines (Keynote, PowerPoint, Pages, Word, Numbers, Excel, LibreOffice, sips), per-category preferred-engine picker, and install help.

Supported inputs: presentations (.pptx .ppt .pps .ppsx .key .odp), documents (.docx .doc .pages .odt .rtf .txt), spreadsheets (.xlsx .xls .numbers .ods .csv), images (via macOS sips), and any plain-text/code file (.json, .md, .log, source files, …) via a bundled pdf-lib text renderer that works with no apps installed.

Safety details: existing files are never overwritten (collisions get an extension tag or numeric suffix), engines are detected via the filesystem only (no app launches as a side effect), MS Office sandbox restrictions are handled by exporting into the app container and moving the PDF into place, and LibreOffice runs with an isolated profile so conversions work while the GUI is open.

macOS only. The only npm runtime dependency added is pdf-lib (pure JS, MIT).

Screencast

See the screenshots in the metadata folder (setup checklist and conversion flow).

Checklist

- chore: ignore bun lockfiles
- feat: bundled text renderer converts any plain-text file to PDF
- feat: live batch progress counter in toast
- refactor: collapse per-app AppleScript tables into one spec
- fix: address store review feedback
- style: format backends.ts
- fix(backends): escape AppleScript strings without JSON.stringify
- fix: harden conversions, prep Raycast Store publish
- fix(convert): make native-app conversions reliable
- owner
- your changes
- build
- works for images and excel files too now
- vibe coding
- Refactor code structure for improved readability and maintainability
- Meta Screenshot Update
- Add Homebrew SVG asset, screenshots, and installation script
- Add installation guide for LibreOffice and update command list
- Update dependencies and remove check-soffice command
- Add check for soffice installation and version reporting
- Initial commit
@raycastbot raycastbot added new extension Label for PRs with new extensions platform: macOS labels Aug 10, 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.

@greptile-apps

greptile-apps Bot commented Aug 10, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

The PR adds the macOS-only Slides2PDF extension for converting Finder-selected presentations, documents, spreadsheets, images, and text files locally.

  • Adds native application, LibreOffice, sips, and bundled text-rendering conversion engines with ordered fallback.
  • Adds collision-safe staging and publication, batch progress and cancellation, engine setup preferences, Store metadata, and documentation.

Confidence Score: 5/5

The PR appears safe to merge.

No blocking failure remains.

Important Files Changed

Filename Overview
extensions/slides2pdf/src/utils/backends.ts Implements engine discovery, capability ranking, AppleScript document identity handling, staged conversion, output validation, and collision-safe publication; the previously reported identity and output-safety defects are addressed.
extensions/slides2pdf/src/convert-to-pdf.ts Coordinates Finder selection, per-file validation, backend fallback, progress reporting, cancellation, and result opening; stale paths now fail only their individual batch item.
extensions/slides2pdf/src/utils/textpdf.ts Adds the bundled plain-text PDF renderer; no follow-up-eligible blocking issue was identified.
extensions/slides2pdf/src/setup.tsx Adds engine availability and preference configuration UI without a follow-up-eligible blocking issue.
extensions/slides2pdf/package.json Defines the extension manifest, commands, preferences, platform, dependencies, and Store metadata.

Reviews (13): Last reviewed commit: "Update slides2pdf extension" | Re-trigger Greptile

Comment thread extensions/slides2pdf/src/utils/backends.ts Outdated
Comment thread extensions/slides2pdf/src/utils/backends.ts Outdated
Comment thread extensions/slides2pdf/src/convert-to-pdf.ts Outdated
Comment thread extensions/slides2pdf/src/convert-to-pdf.ts Outdated
Comment thread extensions/slides2pdf/src/utils/backends.ts Outdated
Comment thread extensions/slides2pdf/src/utils/backends.ts Outdated
@Root-Bert
Root-Bert marked this pull request as ready for review August 10, 2026 21:29
Copilot AI lite review requested due to automatic review settings August 10, 2026 21:29

Copilot AI left a comment

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.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Adds a new Raycast extension, Slides2PDF, to convert Finder-selected files to PDF using locally installed apps (iWork, Microsoft Office, LibreOffice, sips) with a bundled text-to-PDF fallback.

Changes:

  • Implemented backend detection + per-file backend ranking with AppleScript/CLI conversion runners and safe output handling.
  • Added a setup UI to show detected engines and persist per-category preferred engines.
  • Added a bundled plain-text renderer (pdf-lib) plus extension metadata/config (package.json, tsconfig, lint/prettier, docs).

Reviewed changes

Copilot reviewed 14 out of 19 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
extensions/slides2pdf/tsconfig.json TypeScript config for the new extension.
extensions/slides2pdf/src/utils/textpdf.ts Adds bundled text/code → PDF renderer using pdf-lib.
extensions/slides2pdf/src/utils/preferences.ts Adds LocalStorage-backed per-category preferred engine storage.
extensions/slides2pdf/src/utils/backends.ts Implements engine detection, ranking, and conversion execution (AppleScript/LibreOffice/sips/builtin).
extensions/slides2pdf/src/setup.tsx Setup command UI for engine availability and preference selection.
extensions/slides2pdf/src/convert-to-pdf.ts No-view command to convert Finder selection with fallback and progress toasts.
extensions/slides2pdf/package.json Defines commands, preferences, and dependencies for the extension.
extensions/slides2pdf/eslint.config.js Adds ESLint config for the extension.
extensions/slides2pdf/README.md Adds user documentation and supported formats.
extensions/slides2pdf/LICENSE Adds MIT license file.
extensions/slides2pdf/CHANGELOG.md Adds initial changelog entry (currently with placeholder date).
extensions/slides2pdf/.prettierrc Adds Prettier config.
extensions/slides2pdf/.prettierignore Adds Prettier ignore rules.
extensions/slides2pdf/.gitignore Adds gitignore for the extension workspace.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread extensions/slides2pdf/src/utils/textpdf.ts Outdated
Comment thread extensions/slides2pdf/src/convert-to-pdf.ts Outdated
Comment thread extensions/slides2pdf/CHANGELOG.md
Comment thread extensions/slides2pdf/README.md Outdated
@Root-Bert
Root-Bert marked this pull request as draft August 10, 2026 21:35
Comment thread extensions/slides2pdf/src/utils/backends.ts Outdated
@Root-Bert
Root-Bert marked this pull request as ready for review August 10, 2026 21:53
@pernielsentikaer

Copy link
Copy Markdown
Collaborator

Similar extensions already in the Store

Automated first pass. Overlap is not a blocker on its own, but the README should make the difference clear.

  • Office2PDF (office2pdf, 1,132 installs by @ARui-tw) — Raycast extension to convert office files to pdf using CloudConvert api
    similarity 0.59

@Root-Bert

Copy link
Copy Markdown
Author

Similar extensions already in the Store

Automated first pass. Overlap is not a blocker on its own, but the README should make the difference clear.

  • Office2PDF (office2pdf, 1,132 installs by @ARui-tw) — Raycast extension to convert office files to pdf using CloudConvert api
    similarity 0.59

Okay, im gonna adjust the readme. Main difference is, that everything is happening on device no cloud whatsoever. I think when it comes to this its the only extension which offers this for "every" file

- docs: add \'and more\' to description
- docs: simplify description to one sentence
- docs: lead description with on-device
- docs: remove dash from description
- docs: shorten extension description
- docs: emphasize on-device conversion to distinguish from cloud-based converters
- fix: harden edge cases from store review
- fix: bind documents by on-disk path, stage engine output
- chore: recompose Screen-5 to satisfy metadata padding check
- chore: replace store screenshots
- fix: address Greptile review on store submission
- chore: ignore bun lockfiles
- feat: bundled text renderer converts any plain-text file to PDF
- feat: live batch progress counter in toast
Comment thread extensions/slides2pdf/src/utils/backends.ts
Comment thread extensions/slides2pdf/src/utils/backends.ts Outdated
Comment thread extensions/slides2pdf/src/utils/backends.ts Outdated
Comment thread extensions/slides2pdf/src/utils/backends.ts Outdated
Comment thread extensions/slides2pdf/src/utils/backends.ts Outdated
- fix: address documents by index in the generated AppleScript
- fix: reject truncated PDFs, make no-hardlink publish race-free
Comment thread extensions/slides2pdf/src/utils/backends.ts Outdated
- fix: stop routing .txt files through Microsoft Word
- fix: remove the staging file left in the Office container on failure
- fix: validate a salvaged PDF by parsing it
- docs: list .txt under Text & Code
- fix: prefer the Creator Studio editions when detecting Apple and Office apps
Comment thread extensions/slides2pdf/src/utils/backends.ts Outdated
- fix: never write a Finder-hidden output file
- chore: stop exporting supportsExtension
- fix: identify Office documents by full path, drop the toast stop action
- feat: add a Stop Conversion command
- fix: show the stop shortcut in the toast title
- fix: spell out the stop shortcut in the toast
- feat: let a batch conversion be stopped
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.

4 participants