Skip to content

Add slides2pdf extension - #30126

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

Add slides2pdf extension#30126
Root-Bert wants to merge 6 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 a macOS Finder-selection extension that converts presentations, documents, spreadsheets, images, and text files to PDF using installed applications or a bundled text renderer.

  • Adds backend detection, capability ranking, fallback conversion, staged output publication, and AppleScript-driven native-app conversions.
  • Adds a setup view for engine discovery and category preferences.
  • Adds extension metadata, documentation, screenshots, packaging, and build configuration.

Confidence Score: 3/5

The 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

Filename Overview
extensions/slides2pdf/src/utils/backends.ts Implements backend selection and conversion lifecycle, but the previously reported document-cleanup identity and output-publication races remain reachable.
extensions/slides2pdf/src/convert-to-pdf.ts Implements per-file batch handling, collision-resistant output naming, fallback execution, progress reporting, and optional opening of generated PDFs.
extensions/slides2pdf/src/utils/textpdf.ts Adds bounded, paginated plain-text rendering through pdf-lib with binary detection and WinAnsi sanitization.
extensions/slides2pdf/src/setup.tsx Adds engine-status sections and persisted per-category preferred-engine controls.
extensions/slides2pdf/package.json Declares the two commands, macOS platform, preferences, metadata, dependencies, and standard Raycast scripts.

Reviews (6): Last reviewed commit: "fix: harden edge cases from store review" | 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
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
@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
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.

3 participants