From 6ae22c5a34d02bd96adcf75763be87d01d3fbd0f Mon Sep 17 00:00:00 2001 From: "dobby-yivi-agent[bot]" <275734547+dobby-yivi-agent[bot]@users.noreply.github.com> Date: Sat, 1 Aug 2026 23:12:59 +0000 Subject: [PATCH 1/2] docs: correct the notify-shape claim in the pg-js upload options (from encryption4all/postguard-js#151) The SDK never shipped a notify-shape validator; the pg-js test suite pins its removal. `{ notify: true }` sends no mail and suppresses the silent-upload notice instead of throwing. --- docs/sdk/js-encryption.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/sdk/js-encryption.md b/docs/sdk/js-encryption.md index 8ca772d..50a45dc 100644 --- a/docs/sdk/js-encryption.md +++ b/docs/sdk/js-encryption.md @@ -239,9 +239,9 @@ The upload is silent by default. Both recipient and sender mails are opt-in. Pas | `message` | `string` | `undefined` | Optional unencrypted text included in any mail sent | | `language` | `'EN' \| 'NL'` | `'EN'` | Notification email template language | -The SDK validates the `notify` shape and throws `TypeError` for common misuse like `{ notify: true }`, a top-level `recipients`, or non-boolean values such as `{ recipients: 'yes' }`. Catch this in tests rather than at runtime. +There is no runtime validator on the `notify` shape, so a wrong shape fails quietly. `{ notify: true }` is the one to watch: `delivery?.recipients` on a boolean is `undefined`, the wire field `notifyRecipients` falls back to `false`, and no mail is sent. It is worse than omitting `notify`, because it also counts as an explicit choice and so suppresses the notice below. Write `{ notify: { recipients: true } }`. -If `notify` is omitted on the first `sealed.upload()` for a given `PostGuard` instance, the SDK logs a one-time `console.info` reminding you that the upload is silent and how to opt in. Pass `{ recipients: false }` to acknowledge the silent intent and suppress the notice — the validator counts both as explicit shapes. +If `notify` is omitted on the first `sealed.upload()` for a given `PostGuard` instance, the SDK logs a one-time `console.info` reminding you that the upload is silent and how to opt in. Passing `notify` at all suppresses that notice, so use `{ recipients: false }` when you mean silence. ## Encrypt raw data From 80b1cf6b3689b637e311f138bdda75011271fe9b Mon Sep 17 00:00:00 2001 From: "dobby-yivi-agent[bot]" <275734547+dobby-yivi-agent[bot]@users.noreply.github.com> Date: Sat, 1 Aug 2026 23:14:22 +0000 Subject: [PATCH 2/2] docs: point the repo pages at the postguard-js and postguard workspaces postguard-website, postguard-tb-addon, postguard-outlook-addon and postguard-examples were folded into the postguard-js pnpm workspace and archived (encryption4all/postguard-js#132, #134, #137, #141, #145). Cryptify's source moved into the postguard Cargo workspace, with image publishing left behind in its own repository (encryption4all/postguard#277). --- CLAUDE.md | 8 +++-- docs/repos/cryptify.md | 4 ++- docs/repos/overview.md | 42 +++++++++++++++++---------- docs/repos/pg-dotnet.md | 4 +-- docs/repos/pg-manual.md | 4 +-- docs/repos/pg-node.md | 4 +-- docs/repos/pg-sveltekit.md | 4 +-- docs/repos/postguard-outlook-addon.md | 4 ++- docs/repos/postguard-tb-addon.md | 4 ++- docs/repos/postguard-website.md | 4 ++- 10 files changed, 52 insertions(+), 30 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 11e90d8..1f19c41 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -10,9 +10,11 @@ Snippets are pasted inline as fenced code blocks with a `` source link un Source repositories: -- `encryption4all/postguard-examples` (SvelteKit web app example) -- `encryption4all/postguard-tb-addon` (Thunderbird addon) -- `encryption4all/postguard-outlook-addon` (Outlook addon) +- `encryption4all/postguard-js` (pnpm workspace): `packages/pg-js` (SDK), `apps/website`, `apps/tb-addon`, `apps/outlook-addon`, `examples/*` +- `encryption4all/postguard` (Cargo workspace): `pg-core`, `pg-pkg`, `pg-cli`, `pg-ffi`, `cryptify` +- `encryption4all/postguard-dotnet` (.NET SDK) + +The old `postguard-examples`, `postguard-website`, `postguard-tb-addon` and `postguard-outlook-addon` repositories are archived. Pinned-commit links already in the docs still resolve, but new snippets must come from the workspace paths above. When adding or updating a snippet: diff --git a/docs/repos/cryptify.md b/docs/repos/cryptify.md index 2a0173d..2a68a3a 100644 --- a/docs/repos/cryptify.md +++ b/docs/repos/cryptify.md @@ -1,6 +1,8 @@ # cryptify -[GitHub](https://github.com/encryption4all/cryptify) · Rust · File Sharing Service +[GitHub](https://github.com/encryption4all/postguard/tree/main/cryptify) · Rust · File Sharing Service + +The source lives at `cryptify/` in the [postguard](https://github.com/encryption4all/postguard) Cargo workspace, compiled against the in-tree `pg-core`. The [cryptify](https://github.com/encryption4all/cryptify) repository still builds and publishes the `ghcr.io/encryption4all/cryptify` image; moving that is a separate ops change. Cryptify is the file encryption and sharing service that PostGuard uses for delivering encrypted files. It allows encrypting any file with an identity attribute. Only people who can prove they have that attribute can decrypt and view the contents. diff --git a/docs/repos/overview.md b/docs/repos/overview.md index aaf466e..3859f0e 100644 --- a/docs/repos/overview.md +++ b/docs/repos/overview.md @@ -1,6 +1,8 @@ # Repository Overview -The PostGuard project is split across multiple repositories in the [encryption4all](https://github.com/encryption4all) GitHub organization. This page gives an overview of each repository and how they fit together. +The PostGuard project is split across several repositories in the [encryption4all](https://github.com/encryption4all) GitHub organization. This page gives an overview of each one and how they fit together. + +Two of them are workspaces that hold more than one project. [postguard](/repos/postguard) is a Cargo workspace, and since [postguard#277](https://github.com/encryption4all/postguard/pull/277) the Cryptify backend is a member of it. [postguard-js](/repos/postguard-js) is a pnpm workspace holding the SDK, the three end-user apps and the examples. The `postguard-website`, `postguard-tb-addon`, `postguard-outlook-addon` and `postguard-examples` repositories were folded into it and are now archived, so read-only. ## Cryptographic Libraries @@ -15,16 +17,23 @@ These are the low-level building blocks that implement the cryptographic primiti ## Core -The main PostGuard codebase and applications. +The main PostGuard codebase. | Repository | Language | Description | |---|---|---| -| [postguard](/repos/postguard) | Rust | Core library, PKG server, WASM bindings, CLI, FFI bindings | -| [postguard-website](/repos/postguard-website) | SvelteKit | Web frontend for encrypting and sending files | +| [postguard](/repos/postguard) | Rust | Core library, PKG server, WASM bindings, CLI, FFI bindings, and the Cryptify backend | +| [cryptify](/repos/cryptify) | Rust | File encryption and sharing service. The source now lives in `cryptify/` inside the postguard workspace; this repository still builds and publishes the container image | | [postguard-business](/repos/postguard-business) | SvelteKit | Business portal for organization and API key management | -| [cryptify](/repos/cryptify) | Rust + TypeScript | File encryption and sharing service (backend + frontend) | -| [postguard-tb-addon](/repos/postguard-tb-addon) | TypeScript | Thunderbird email encryption extension | -| [postguard-outlook-addon](/repos/postguard-outlook-addon) | TypeScript | Outlook email encryption add-in | + +## Applications + +End-user applications, all in the [postguard-js](https://github.com/encryption4all/postguard-js) workspace under `apps/`. + +| Application | Path | Language | Description | +|---|---|---|---| +| [postguard-website](/repos/postguard-website) | `apps/website` | SvelteKit | Web frontend for encrypting and sending files | +| [postguard-tb-addon](/repos/postguard-tb-addon) | `apps/tb-addon` | TypeScript | Thunderbird email encryption extension | +| [postguard-outlook-addon](/repos/postguard-outlook-addon) | `apps/outlook-addon` | TypeScript | Outlook email encryption add-in | ## SDKs @@ -32,12 +41,12 @@ Client libraries for integrating PostGuard into applications. | Repository | Language | Description | |---|---|---| -| [postguard-js](/repos/postguard-js) | TypeScript | Browser and Node.js SDK (`@e4a/pg-js`) | +| [postguard-js](/repos/postguard-js) | TypeScript | Browser and Node.js SDK (`@e4a/pg-js`), at `packages/pg-js` in the workspace | | [postguard-dotnet](/repos/postguard-dotnet) | C# | .NET SDK for sending-side encryption (`E4A.PostGuard`) | ## Examples -From the [postguard-examples](https://github.com/encryption4all/postguard-examples) repository: +In the [postguard-js](https://github.com/encryption4all/postguard-js) workspace under `examples/`, built against the in-tree SDK: | Project | Language | Description | |---|---|---| @@ -48,22 +57,25 @@ From the [postguard-examples](https://github.com/encryption4all/postguard-exampl ## Dependency Graph -The repositories depend on each other roughly as follows: +The projects depend on each other roughly as follows. Names in parentheses are workspace members rather than separate repositories. ``` pg-curve └── ibe └── postguard (pg-core) - ├── pg-wasm ──────────────── postguard-js (@e4a/pg-js) - │ ├── postguard-website - │ ├── postguard-tb-addon - │ └── postguard-outlook-addon + ├── pg-wasm ──────────────── postguard-js (packages/pg-js) + │ ├── apps/website + │ ├── apps/tb-addon + │ └── apps/outlook-addon ├── pg-ffi ───────────────── postguard-dotnet ├── pg-pkg (PKG server) + ├── cryptify (file storage) └── pg-cli └── ibs (used by pg-core for sender signatures) irmars (Yivi client) ──── postguard (pg-core, pg-pkg, pg-cli) -cryptify (backend) ─────── postguard-website (file storage) +cryptify (backend) ─────── apps/website (file storage) ``` + +Because `cryptify` and `pg-core` are now members of one Cargo workspace, they resolve a single `Cargo.lock`. Before the merge each repository resolved its own, so the two services could serialize container headers with different versions of the same serializer. diff --git a/docs/repos/pg-dotnet.md b/docs/repos/pg-dotnet.md index 3559a2a..6a197de 100644 --- a/docs/repos/pg-dotnet.md +++ b/docs/repos/pg-dotnet.md @@ -1,8 +1,8 @@ # pg-dotnet -[GitHub](https://github.com/encryption4all/postguard-examples/tree/main/pg-dotnet) · C# · .NET Example +[GitHub](https://github.com/encryption4all/postguard-js/tree/main/examples/pg-dotnet) · C# · .NET Example -A .NET console application demonstrating the [postguard-dotnet](/repos/postguard-dotnet) SDK for the "Informatierijk notificeren" use case. Part of the [postguard-examples](https://github.com/encryption4all/postguard-examples) repository. +A .NET console application demonstrating the [postguard-dotnet](/repos/postguard-dotnet) SDK for the "Informatierijk notificeren" use case. Lives at `examples/pg-dotnet` in the [postguard-js](https://github.com/encryption4all/postguard-js) workspace. The `postguard-examples` repository is archived. It shows two patterns: diff --git a/docs/repos/pg-manual.md b/docs/repos/pg-manual.md index fe0a3a1..108890d 100644 --- a/docs/repos/pg-manual.md +++ b/docs/repos/pg-manual.md @@ -1,8 +1,8 @@ # pg-manual -[GitHub](https://github.com/encryption4all/postguard-examples/tree/main/pg-manual) · JavaScript · WASM Example +[GitHub](https://github.com/encryption4all/postguard-js/tree/main/examples/pg-manual) · JavaScript · WASM Example -A webpack-bundled browser example that uses the low-level `@e4a/pg-wasm` module directly, without the `@e4a/pg-js` SDK. Part of the [postguard-examples](https://github.com/encryption4all/postguard-examples) repository. +A webpack-bundled browser example that uses the low-level `@e4a/pg-wasm` module directly, without the `@e4a/pg-js` SDK. Lives at `examples/pg-manual` in the [postguard-js](https://github.com/encryption4all/postguard-js) workspace. The `postguard-examples` repository is archived. Use this example when you want to see what `@e4a/pg-js` wraps. It calls the WASM bindings, the PKG HTTP API, and a Yivi popup directly. For application code, prefer the SDK shown in [pg-sveltekit](/repos/pg-sveltekit); the manual flow is here for reference and for projects that cannot use the SDK. diff --git a/docs/repos/pg-node.md b/docs/repos/pg-node.md index 33fa7ed..32143fe 100644 --- a/docs/repos/pg-node.md +++ b/docs/repos/pg-node.md @@ -1,8 +1,8 @@ # pg-node -[GitHub](https://github.com/encryption4all/postguard-examples/tree/main/pg-node) · JavaScript · Node.js Example +[GitHub](https://github.com/encryption4all/postguard-js/tree/main/examples/pg-node) · JavaScript · Node.js Example -A plain Node.js CLI example showing how to use [`@e4a/pg-js`](/repos/postguard-js) from a server runtime. Part of the [postguard-examples](https://github.com/encryption4all/postguard-examples) repository. +A plain Node.js CLI example showing how to use [`@e4a/pg-js`](/repos/postguard-js) from a server runtime. Lives at `examples/pg-node` in the [postguard-js](https://github.com/encryption4all/postguard-js) workspace and builds against the in-tree SDK. The `postguard-examples` repository is archived. Mirrors the [pg-sveltekit](/repos/pg-sveltekit) "Informatierijk notificeren" flow (citizen exact-email recipient + organisation email-domain recipient) as a CLI script. diff --git a/docs/repos/pg-sveltekit.md b/docs/repos/pg-sveltekit.md index 7fa2f40..8595234 100644 --- a/docs/repos/pg-sveltekit.md +++ b/docs/repos/pg-sveltekit.md @@ -1,8 +1,8 @@ # pg-sveltekit -[GitHub](https://github.com/encryption4all/postguard-examples/tree/main/pg-sveltekit) · TypeScript · SvelteKit Example +[GitHub](https://github.com/encryption4all/postguard-js/tree/main/examples/pg-sveltekit) · TypeScript · SvelteKit Example -A SvelteKit application demonstrating PostGuard file encryption and decryption in a web browser using `@e4a/pg-js`. Part of the [postguard-examples](https://github.com/encryption4all/postguard-examples) repository. +A SvelteKit application demonstrating PostGuard file encryption and decryption in a web browser using `@e4a/pg-js`. Lives at `examples/pg-sveltekit` in the [postguard-js](https://github.com/encryption4all/postguard-js) workspace and builds against the in-tree SDK. The `postguard-examples` repository is archived. ## Running diff --git a/docs/repos/postguard-outlook-addon.md b/docs/repos/postguard-outlook-addon.md index 2581d8a..d76c24e 100644 --- a/docs/repos/postguard-outlook-addon.md +++ b/docs/repos/postguard-outlook-addon.md @@ -1,6 +1,8 @@ # postguard-outlook-addon -[GitHub](https://github.com/encryption4all/postguard-outlook-addon) · TypeScript · Outlook Add-in +[GitHub](https://github.com/encryption4all/postguard-js/tree/main/apps/outlook-addon) · TypeScript · Outlook Add-in + +Lives at `apps/outlook-addon` in the [postguard-js](https://github.com/encryption4all/postguard-js) workspace, which also builds and publishes its images. The standalone `postguard-outlook-addon` repository is archived. Identity-based email encryption add-in for Microsoft Outlook. Built as an Office Web Add-in using Office.js, PostGuard WASM, and Yivi authentication. Targets new Outlook on Windows (WebView2), Outlook on the web, and Outlook on macOS (taskpane flow only), Mailbox 1.12+. The one-click OnSend flow runs on Windows and the web; Outlook for Mac native uses the taskpane "Encrypt & Send" button instead. See the per-platform matrix below. diff --git a/docs/repos/postguard-tb-addon.md b/docs/repos/postguard-tb-addon.md index 5636989..1e0efc3 100644 --- a/docs/repos/postguard-tb-addon.md +++ b/docs/repos/postguard-tb-addon.md @@ -1,6 +1,8 @@ # postguard-tb-addon -[GitHub](https://github.com/encryption4all/postguard-tb-addon) · TypeScript · Thunderbird Extension +[GitHub](https://github.com/encryption4all/postguard-js/tree/main/apps/tb-addon) · TypeScript · Thunderbird Extension + +Lives at `apps/tb-addon` in the [postguard-js](https://github.com/encryption4all/postguard-js) workspace. The standalone `postguard-tb-addon` repository is archived. End-to-end email encryption extension for Mozilla Thunderbird. Uses identity-based encryption via [Yivi](https://yivi.app) so users can send and receive encrypted emails without managing keys. diff --git a/docs/repos/postguard-website.md b/docs/repos/postguard-website.md index 2c7e408..d2be2ce 100644 --- a/docs/repos/postguard-website.md +++ b/docs/repos/postguard-website.md @@ -1,6 +1,8 @@ # postguard-website -[GitHub](https://github.com/encryption4all/postguard-website) · SvelteKit · Web Application +[GitHub](https://github.com/encryption4all/postguard-js/tree/main/apps/website) · SvelteKit · Web Application + +Lives at `apps/website` in the [postguard-js](https://github.com/encryption4all/postguard-js) workspace. The standalone `postguard-website` repository is archived. The PostGuard web frontend for encrypting and sending files. Users pick files, choose recipients by email address, authenticate with [Yivi](https://yivi.app), and the files are encrypted and uploaded to [Cryptify](/repos/cryptify) for delivery. Built with SvelteKit using the static adapter.