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 a macOS Finder-selection extension that converts presentations, documents, spreadsheets, images, and text files to PDF using installed applications or a bundled text renderer.
Confidence Score: 3/5The PR does not appear safe to merge because previously reported document-identity cleanup and no-overwrite failures remain reachable. Timeout cleanup can still close unrelated same-named documents, while publication on a filesystem without hard-link support can still replace a destination created during the check-to-rename window. Files Needing Attention: extensions/slides2pdf/src/utils/backends.ts Important Files Changed
Reviews (6): Last reviewed commit: "fix: harden edge cases from store review" | 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.
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