theseus/extensions/docx-editor/README.md

61 lines
2.5 KiB
Markdown
Raw Normal View History

# Word editor — a Theseus community extension
Opens, edits and saves Word documents (`.docx`) in a full Theseus tab.
This is **not** a bundled add-on. It isn't in `bundled-addons/`, it isn't in
the installer's `extraResources`, and a fresh Theseus profile doesn't have it.
Users get it the same way they'd get anyone else's extension: from
**Settings › Extensions › Community**, which lists whatever is in the
catalogue at theseus.x/extensions.
Living outside the browser build is the point. A .docx editor is a big
dependency — a megabyte of vendored library — and nobody should carry it
because they wanted a browser.
## Building
The vendored libraries (mammoth, ProseMirror, docx, JSZip) are bundled by a
build step that lives outside this folder, because mammoth needs local patches
before it can carry everything the editor edits:
cd ../../addon-build/docx-editor
npm install
npm run build # writes vendor/docx-vendor.js here
npm run pack # writes out/docx-editor-<version>.tar.gz
`vendor/docx-vendor.js` is committed, so the extension is installable straight
from a checkout; re-run `npm run build` after touching anything under
`addon-build/`.
## Publishing
`npm run pack` produces the tarball and its sha256. Uploading it is a separate
step, and this repo can't do it: a community extension is signed by the
**owner of a BNS name**, using that name's wallet.
The straightforward route is the publish page at
**theseus.x/extensions/publish** — it unlocks a wallet in the browser, checks
that the name is yours, then signs and `PUT`s the tarball to
`/api/ext/<publisher-name>/docx-editor/<version>`. The gateway verifies both
signatures against the name's current owner, stores the tarball on Sia and
updates `catalog.json`, which is what Settings and the site both read.
Version numbers must increase, and the id `docx-editor` belongs to whichever
name publishes it first.
## Testing
Three levels, all re-runnable, all from `../../addon-build/docx-editor`:
node test/roundtrip.mjs # the built-in fixture
node test/corpus.mjs <folder of .docx> # real documents
node ../../../scratchpad/verify-docx-editor/drive.mjs # a real Theseus, over CDP
The last one installs this folder into a throwaway profile the way the
community channel would, and is the only one that catches browser-only
breakage.
What survives a round trip, and what doesn't, is written up in
[ROUND-TRIP.md](ROUND-TRIP.md). Read that before promising anyone a Word
feature.