Skip to content

Add apple-ouyang/office-preview - #1183

Merged
paseo-bot[bot] merged 2 commits into
getpaseo:mainfrom
apple-ouyang:add/apple-ouyang-office-preview
Oct 25, 2026
Merged

paseo-bot[bot] merged 2 commits into
getpaseo:mainfrom
apple-ouyang:add/apple-ouyang-office-preview

Conversation

@apple-ouyang

Copy link
Copy Markdown
Contributor

What this adds

A new registry record, apple-ouyang/office-preview, for a plugin that renders PDF, Word, Excel and
PowerPoint files in Paseo file tabs. Source: https://github.com/apple-ouyang/paseo-office-preview

Paseo 0.13.0's file panels are what make this possible; the plugin claims four extension groups and
renders each format:

  • PDF — DocumentFrame with the file's own blob: URL, so the platform PDF viewer draws it.
  • Word (.docx, .docm) — docx-preview renders the document to HTML.
  • Excel (.xlsx, .xlsm) — a built-in OOXML reader; each sheet becomes a table, with dates and
    percentages from the cell number format.
  • PowerPoint (.pptx, .pptm) — pptx-preview renders slides to HTML.

Converted documents are self-contained HTML pages loaded in DocumentFrame, which sandboxes them
without script tokens, so a preview never executes code inside Paseo.

Artifact

Pinned to ce667e7e8931c40d9117f33ab2468128968d834a on apple-ouyang/paseo-office-preview. The
plugin root is the repository root. It ships paseo-plugin.json, OVERVIEW.md, and a hand-written
README.md.

client/bundled/office.esm.js is a self-contained ES module built from the packages pinned in
package.json (docx-preview, jszip, pptx-preview); scripts/build-vendor.mjs regenerates it
byte-identically. It exists because jszip's Node entry pulls readable-stream, and the plugin
compiler rejects Node builtins in client bundles. The plugin itself needs no npm install at install
time: its imports are the host SDK, react/react-native, and that bundle. Licenses of the bundled
packages are listed in THIRD-PARTY-NOTICES.md.

QA evidence

Installed from the pinned commit into an isolated daemon (paseo plugin install git:apple-ouyang/paseo-office-preview --id office-preview-public --home /tmp/...): status running,
no dependency install step. The plugin loads and converts on the daemon host; the client bundle runs in
the app and compiles under the same compiler the registry installs use.

The screenshots in listing.media come from that install, opened in a browser client against the
production app-dist:

  • assets/powerpoint.png — three-slide deck authored with python-pptx (title slide, bullets, table).
  • assets/excel.png — two-sheet workbook (orders, regions), dates formatted from numFmtId.
  • assets/word.png — release-notes document with headings, bold runs, bullets and a table.

npm run typecheck passes in the plugin repository. Rendering was also checked against a 4101-row
Chinese spreadsheet, a 55 KB Chinese .docx, and a PDF bank statement.

Dates

submittedAt, publishedAt and reviewedAt are placeholders written by hand so the record
validates; please rewrite them at approval. I did not go through the submission issue form because it
needs the submission label, which I cannot apply; the README states hand-edited pull requests are
accepted. Happy to redo this as an intake issue if you prefer.

apple-ouyang and others added 2 commits October 25, 2026 22:05
File panels for PDF, Word, Excel and PowerPoint (Paseo >= 0.13.0):

- PDF through DocumentFrame and the platform viewer
- docx/docm via docx-preview
- xlsx/xlsm via a built-in OOXML reader (dates and percentages from numFmtId)
- pptx/pptm via pptx-preview, repairing [Content_Types].xml overrides that point
  at parts the package does not contain

Pinned to ce667e7 on apple-ouyang/paseo-office-preview.

@paseo-bot paseo-bot Bot 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.

Office Preview is approved and merged, @apple-ouyang. I replaced the placeholder dates; your overview, description and screenshots are ready. Publication has deployed, but the listing is not yet available through the public registry; no action is needed from you.

For your next version, remove the install command from OVERVIEW.md, since the listing already provides installation, and describe support as Paseo 0.13.x to match your manifest. See the listing-page guidance.

Review data
  • Policy: main REVIEW.md blob 8da1286fd8870c87ff53767e8644858627b7371f.
  • Reviewed PR head: 7795c8405faa7a2ae4a39a523d78977f3fa2c2cb, including my date-only registry edit. Artifact: apple-ouyang/paseo-office-preview, repository root at ce667e7e8931c40d9117f33ab2468128968d834a; tree d40f8ebaf0c649d3721a6e19da9c58ec3ffd0b12. Git archive SHA-256: 57b19f8ff3e91f5cada5df7769762eb5e1a84c2ac4fac7d6b840469df206181f.
  • Inspected the manifest, package metadata and lock, all custom production modules, vendor build inputs, documentation, and bundled renderer access/execution and HTML-generation paths. Reformatted the bundle for static inspection. No plugin code or dependencies were installed, built, imported or executed; no live rendering or vendor rebuild was performed.
  • Preparation: no manifest build command or runtime software installation. Shipped renderers are bundled; lockfile v3 records exact dependency versions, HTTPS package-mirror sources and SHA-512 integrity for all dependency entries. No root lifecycle script; development-only install-script flags are outside the requested installation path.
  • Access: panels read selected document bytes through Paseo. Conversion runs in the app document before serialization to a Blob URL for the host preview frame; the server entry is empty. No credential reads, filesystem writes, subprocesses or configured document-upload service were found. The custom fetch reads only blob image URLs; DOCX external hyperlinks remain links. No concrete malicious execution path was established. Large-file conversion remains subject to browser memory/main-thread limits; the output-size check runs after conversion.
  • Listing: retained the author overview, manifest description, Workspaces category and three pinned images. Each image URL returned image/png and matched the pinned file; all three were visually inspected. Only record timestamps changed.
  • Delivery: publication deployment succeeded and the deployed origin serves the reviewed record; the public registry endpoint still returns Plugin not found at this recheck. No publication availability is claimed there yet.
  • Validation: trusted main registry validator passed (384 well-formed records, 1 matching pinned artifact), and final-head CI passed. Static review is not a correctness audit of every third-party rendering routine.

@paseo-bot
paseo-bot Bot merged commit aec697a into getpaseo:main Oct 25, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant