Add encryption documentation and world features manifest#1432
Conversation
- Add encryption.mdx under How it Works explaining end-to-end encryption - Add features array to worlds-manifest.json (encryption for Vercel World) - Display encryption support in WorldDetailHero and WorldCardSimple - Add cross-references from Vercel World and Observability pages
🦋 Changeset detectedLatest commit: 3c9f691 The changes in this PR will be included in the next version bump. This PR includes changesets to release 0 packagesWhen changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
🧪 E2E Test Results❌ Some tests failed Summary
❌ Failed Tests🌍 Community Worlds (56 failed)mongodb (3 failed):
redis (2 failed):
turso (51 failed):
Details by Category✅ ▲ Vercel Production
✅ 💻 Local Development
✅ 📦 Local Production
✅ 🐘 Local Postgres
✅ 🪟 Windows
❌ 🌍 Community Worlds
✅ 📋 Other
|
📊 Benchmark Results
workflow with no steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Next.js (Turbopack) | Express | Nitro workflow with 1 step💻 Local Development
▲ Production (Vercel)
🔍 Observability: Next.js (Turbopack) | Nitro | Express workflow with 10 sequential steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express | Nitro | Next.js (Turbopack) workflow with 25 sequential steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express | Nitro | Next.js (Turbopack) workflow with 50 sequential steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Next.js (Turbopack) | Nitro | Express Promise.all with 10 concurrent steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Nitro | Express | Next.js (Turbopack) Promise.all with 25 concurrent steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Nitro | Express | Next.js (Turbopack) Promise.all with 50 concurrent steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Nitro | Express | Next.js (Turbopack) Promise.race with 10 concurrent steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express | Nitro | Next.js (Turbopack) Promise.race with 25 concurrent steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Next.js (Turbopack) | Express | Nitro Promise.race with 50 concurrent steps💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express | Nitro | Next.js (Turbopack) Stream Benchmarks (includes TTFB metrics)workflow with stream💻 Local Development
▲ Production (Vercel)
🔍 Observability: Express | Next.js (Turbopack) | Nitro SummaryFastest Framework by WorldWinner determined by most benchmark wins
Fastest World by FrameworkWinner determined by most benchmark wins
Column Definitions
Worlds:
|
There was a problem hiding this comment.
Pull request overview
Adds end-to-end encryption documentation and exposes “encryption support” as a first-class capability on the Worlds manifest, then surfaces that capability in the docs Worlds UI.
Changes:
- Adds new “Encryption” conceptual docs page and cross-links it from Observability + Vercel World docs.
- Extends
worlds-manifest.jsonwith afeaturesarray per world and threads that into the docs Worlds data/types. - Updates Worlds UI components to display an encryption indicator/badge for worlds that declare the feature.
Reviewed changes
Copilot reviewed 10 out of 10 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
worlds-manifest.json |
Adds features per world; Vercel declares ["encryption"]. |
docs/lib/worlds-data.ts |
Maps manifest features into the server-fetched Worlds model. |
docs/content/docs/observability/index.mdx |
Adds related link + note about decrypting encrypted fields. |
docs/content/docs/how-it-works/meta.json |
Adds encryption to How It Works sidebar nav. |
docs/content/docs/how-it-works/encryption.mdx |
New encryption conceptual documentation page. |
docs/content/docs/deploying/world/vercel-world.mdx |
Cross-references encryption docs from Vercel World page. |
docs/components/worlds/types.ts |
Introduces WorldFeature and adds features to World. |
docs/components/worlds/WorldDetailHero.tsx |
Shows “E2E Encrypted” indicator linking to docs when supported. |
docs/components/worlds/WorldCardSimple.tsx |
Adds “Encrypted” footer column for world cards. |
.changeset/metal-ghosts-cut.md |
Adds a new changeset file (currently empty). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
You can also share your feedback on Copilot code review. Take the survey.
| features: ((world as { features?: string[] }).features ?? | ||
| []) as WorldFeature[], | ||
| e2e: null, |
| The core runtime encrypts data automatically when the `World` implementation provides a `getEncryptionKeyForRun()` method. This method receives the run ID and returns the raw encryption key bytes. | ||
|
|
||
| To add encryption support to a custom `World`: | ||
|
|
||
| 1. Implement `getEncryptionKeyForRun(runId: string)` on your `World` class | ||
| 2. Return the raw 32-byte key as a `Uint8Array` — the core runtime uses it for AES-256-GCM operations | ||
| 3. Ensure the same key is returned for the same run ID across invocations (for decryption during replay) |
pranaygp
left a comment
There was a problem hiding this comment.
I left some preview comments in vercel toolbar but apart from those, this looks great to me!
…ing encryption, fix tooltip
Summary
featuresarray toworlds-manifest.jsonso worlds can declare supported capabilities (e.g.encryption)Encryption docs cover:
--decryptflag)getEncryptionKeyForRun())Worlds manifest:
featuresfield on each world entry — only Vercel World declares["encryption"]WorldFeaturetype andfeaturesfield added to theWorldinterfaceWorldDetailHeroshows a linked "E2E Encrypted" indicator with shield iconWorldCardSimpleshows an "Encrypted" column in the footer grid