Add slides2pdf extension - #30126
Conversation
- 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
|
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 SummaryThe PR adds the macOS-only Slides2PDF extension for converting Finder-selected presentations, documents, spreadsheets, images, and text files locally.
Confidence Score: 5/5The PR appears safe to merge. No blocking failure remains. Important Files Changed
Reviews (13): Last reviewed commit: "Update slides2pdf extension" | Re-trigger Greptile |
There was a problem hiding this comment.
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.
Similar extensions already in the StoreAutomated first pass. Overlap is not a blocker on its own, but the README should make the difference clear.
|
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
- fix: address documents by index in the generated AppleScript - fix: reject truncated PDFs, make no-hardlink publish race-free
- 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
- 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
Description
Slides2PDF converts files selected in Finder to PDF using apps the user already has — no cloud services, no bundled binaries.
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.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 macOSsips), and any plain-text/code file (.json,.md,.log, source files, …) via a bundledpdf-libtext 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
metadatafolder (setup checklist and conversion flow).Checklist
npm run buildand tested this distribution build in Raycastassetsfolder are used by the extension itselfREADMEare placed outside of themetadatafolder