Repository navigation
Add apple-ouyang/office-preview - #1183
Merged
paseo-bot[bot] merged 2 commits intoOct 25, 2026
Merged
Conversation
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.
Contributor
There was a problem hiding this comment.
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.mdblob8da1286fd8870c87ff53767e8644858627b7371f. - Reviewed PR head:
7795c8405faa7a2ae4a39a523d78977f3fa2c2cb, including my date-only registry edit. Artifact: apple-ouyang/paseo-office-preview, repository root atce667e7e8931c40d9117f33ab2468128968d834a; treed40f8ebaf0c649d3721a6e19da9c58ec3ffd0b12. 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 foundat 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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this adds
A new registry record,
apple-ouyang/office-preview, for a plugin that renders PDF, Word, Excel andPowerPoint 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:
DocumentFramewith the file's ownblob:URL, so the platform PDF viewer draws it..docx,.docm) —docx-previewrenders the document to HTML..xlsx,.xlsm) — a built-in OOXML reader; each sheet becomes a table, with dates andpercentages from the cell number format.
.pptx,.pptm) —pptx-previewrenders slides to HTML.Converted documents are self-contained HTML pages loaded in
DocumentFrame, which sandboxes themwithout script tokens, so a preview never executes code inside Paseo.
Artifact
Pinned to
ce667e7e8931c40d9117f33ab2468128968d834aonapple-ouyang/paseo-office-preview. Theplugin root is the repository root. It ships
paseo-plugin.json,OVERVIEW.md, and a hand-writtenREADME.md.client/bundled/office.esm.jsis a self-contained ES module built from the packages pinned inpackage.json(docx-preview,jszip,pptx-preview);scripts/build-vendor.mjsregenerates itbyte-identically. It exists because
jszip's Node entry pullsreadable-stream, and the plugincompiler rejects Node builtins in client bundles. The plugin itself needs no
npm installat installtime: its imports are the host SDK,
react/react-native, and that bundle. Licenses of the bundledpackages 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/...): statusrunning,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.mediacome from that install, opened in a browser client against theproduction
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 fromnumFmtId.assets/word.png— release-notes document with headings, bold runs, bullets and a table.npm run typecheckpasses in the plugin repository. Rendering was also checked against a 4101-rowChinese spreadsheet, a 55 KB Chinese
.docx, and a PDF bank statement.Dates
submittedAt,publishedAtandreviewedAtare placeholders written by hand so the recordvalidates; please rewrite them at approval. I did not go through the submission issue form because it
needs the
submissionlabel, which I cannot apply; the README states hand-edited pull requests areaccepted. Happy to redo this as an intake issue if you prefer.