From b43ec0a2d31b064ae3d834e13b7b3c448e0a2324 Mon Sep 17 00:00:00 2001 From: Rand McKinney Date: Thu, 30 Jul 2026 14:06:37 -0700 Subject: [PATCH] Move release policies out of doc site, except for main release process doc, fix broken links --- docs/signing/local-signing.mdx | 2 +- docs/tasks/js/_js-build-local.md | 2 +- docs/tasks/js/_js-settings.md | 2 +- docs/tasks/node/_node-settings.md | 2 +- docs/tasks/settings.mdx | 16 +++---- remote-docs.json | 75 +++++++------------------------ sidebars.js | 27 ++++++++++- 7 files changed, 54 insertions(+), 72 deletions(-) diff --git a/docs/signing/local-signing.mdx b/docs/signing/local-signing.mdx index 671cda3f..18eda1c4 100644 --- a/docs/signing/local-signing.mdx +++ b/docs/signing/local-signing.mdx @@ -15,7 +15,7 @@ Trust lists connect the end-entity certificate that signed a manifest back to th The simplest way to add a C2PA manifest to an asset file and sign it is by using C2PA Tool (`c2patool`). You can run C2PA Tool manually from the command line (for example, during development) and more generally from any executable program that can call out to the shell. -Similarly, using the Rust SDK, you can [add a manifest to an asset file](https://docs.rs/c2pa/latest/c2pa/#adding-a-signed-manifest-to-a-file), referencing the certificate and private key file. The [Node.js](../c2pa-node), [Python](../c2pa-python), and [C++](../c2pa-cpp) libraries can also add and sign a manifest. +Similarly, using the Rust SDK, you can [add a manifest to an asset file](https://docs.rs/c2pa/latest/c2pa/#adding-a-signed-manifest-to-a-file), referencing the certificate and private key file. The [Node.js](../c2pa-js/packages/c2pa-node/), [Python](../c2pa-python), and [C++](../c2pa-cpp) libraries can also add and sign a manifest. diff --git a/docs/tasks/js/_js-build-local.md b/docs/tasks/js/_js-build-local.md index 56ba007a..adabdd53 100644 --- a/docs/tasks/js/_js-build-local.md +++ b/docs/tasks/js/_js-build-local.md @@ -23,7 +23,7 @@ You implement the [`Signer`](https://contentauth.github.io/c2pa-js/interfaces/_c Browser pages are exposed to XSS: any script on the page can try to use keys that JavaScript can reach. Prefer **non-extractable** Web Crypto keys, user-gated imports (file input, `navigator.credentials`, or hardware where supported), and hardening such as CSP. Do not ship production private keys as PEM strings or other recoverable secrets in frontend bundles. If you use a **remote** signer instead, treat it like an API that must authorize exactly what is being signed (for example bind requests to a content hash and tight scopes), not as a generic “sign this blob” endpoint for an authenticated session. ::: -For obtaining and packaging certificates and keys outside the browser, see [Signing with local credentials](../../signing/local-signing). +For obtaining and packaging certificates and keys outside the browser, see [Signing with local credentials](../../docs/signing/local-signing). Embedding signed manifests into binary formats is handled here for supported web formats; for server-side embedding across all formats, use Node, Python, Rust, or C++. diff --git a/docs/tasks/js/_js-settings.md b/docs/tasks/js/_js-settings.md index 0a355cec..da74b24d 100644 --- a/docs/tasks/js/_js-settings.md +++ b/docs/tasks/js/_js-settings.md @@ -1,7 +1,7 @@ In the browser, there is no `Context` class. You pass a **camelCase** [`Settings`](https://contentauth.github.io/c2pa-js/interfaces/_contentauth_c2pa-web.Settings.html) object to [`createC2pa`](https://contentauth.github.io/c2pa-js/modules/_contentauth_c2pa-web.html#createc2pa); that becomes the default for new readers and builders. You can still pass a `Settings` object as the last argument to [`reader.fromBlob`](https://contentauth.github.io/c2pa-js/interfaces/_contentauth_c2pa-web.ReaderFactory.html#fromblob) or [`builder.new`](https://contentauth.github.io/c2pa-js/interfaces/_contentauth_c2pa-web.BuilderFactory.html#new) / [`fromDefinition`](https://contentauth.github.io/c2pa-js/interfaces/_contentauth_c2pa-web.BuilderFactory.html#fromdefinition) / [`fromArchive`](https://contentauth.github.io/c2pa-js/interfaces/_contentauth_c2pa-web.BuilderFactory.html#fromarchive) to override those defaults for a single instance. -For the full JSON schema (including `version` and snake_case fields used by Rust tooling), see [SDK object reference — Settings](../../manifest/json-ref/settings-schema). The web SDK maps the camelCase `Settings` shape to what the Wasm layer expects. +For the full JSON schema (including `version` and snake_case fields used by Rust tooling), see [SDK object reference — Settings](../../docs/manifest/json-ref/settings-schema). The web SDK maps the camelCase `Settings` shape to what the Wasm layer expects. ### Default `createC2pa` settings diff --git a/docs/tasks/node/_node-settings.md b/docs/tasks/node/_node-settings.md index a715aee6..9c8fcd64 100644 --- a/docs/tasks/node/_node-settings.md +++ b/docs/tasks/node/_node-settings.md @@ -1,6 +1,6 @@ The Node.js library does not expose a `Context` type. Instead, you pass **per-instance** settings: a JavaScript object, a JSON string, or file contents (JSON or TOML) from `loadSettingsFromFile`, as the second argument to `Reader.fromAsset`, `Reader.fromManifestDataAndAsset`, `Builder.new`, `Builder.withJson`, or `Builder.fromArchive`. -For the full settings schema, see [SDK object reference — Settings](../../manifest/json-ref/settings-schema). +For the full settings schema, see [SDK object reference — Settings](../../manifest/json-ref/settings-ref.mdx). ### Inline settings diff --git a/docs/tasks/settings.mdx b/docs/tasks/settings.mdx index 4f7ca32a..55925acb 100644 --- a/docs/tasks/settings.mdx +++ b/docs/tasks/settings.mdx @@ -22,7 +22,7 @@ Regardless of which language you're working in, you use the `Context` and `Setti ## Overview of Settings > [!TIP] -> For the complete reference to the Settings object, see [SDK object reference - Settings](https://opensource.contentauthenticity.org/docs/manifest/json-ref/settings-schema). +> For the complete reference to the Settings object, see [SDK object reference - Settings](../manifest/json-ref/settings-ref.mdx). Settings JSON has this top-level structure: @@ -42,13 +42,13 @@ Settings JSON has this top-level structure: | Property | Description | |---------- | ----------- | | `version` | Settings format version (must be 1) | -| [`trust`](../manifest/json-ref/settings-schema/#trust)| Certificate trust configuration for C2PA validation | -| [`cawg_trust`](../manifest/json-ref/settings-schema/#trust) | Certificate trust configuration for CAWG identity assertions | -| [`core`](../manifest/json-ref/settings-schema/#core) | Core SDK behavior and performance tuning | -| [`verify`](../manifest/json-ref/settings-schema/#verify) | Validation and verification behavior | -| [`builder`](../manifest/json-ref/settings-schema/#builder) | Manifest creation and embedding behavior | -| [`signer`](../manifest/json-ref/settings-schema/#signer-settings) | C2PA signer configuration | -| [`cawg_x509_signer`](../manifest/json-ref/settings-schema/#signer-settings) | CAWG identity assertion signer configuration | +| [`trust`](../manifest/json-ref/settings-ref.mdx#trust)| Certificate trust configuration for C2PA validation | +| [`cawg_trust`](../manifest/json-ref/settings-ref.mdx#trust) | Certificate trust configuration for CAWG identity assertions | +| [`core`](../manifest/json-ref/settings-ref.mdx#core) | Core SDK behavior and performance tuning | +| [`verify`](../manifest/json-ref/settings-ref.mdx#verify) | Validation and verification behavior | +| [`builder`](../manifest/json-ref/settings-ref.mdx#builder) | Manifest creation and embedding behavior | +| [`signer`](../manifest/json-ref/settings-ref.mdx#signer-settings) | C2PA signer configuration | +| [`cawg_x509_signer`](../manifest/json-ref/settings-ref.mdx#signer-settings) | CAWG identity assertion signer configuration | The `version` property must be `1`. All other properties are optional. diff --git a/remote-docs.json b/remote-docs.json index 6e9d256e..3157c150 100644 --- a/remote-docs.json +++ b/remote-docs.json @@ -3,13 +3,11 @@ { "_comment": "C2PA Tool" }, { "repo": "contentauth/c2pa-rs", - "branch": "docs/github-only-class", "path": "cli/README.md", "dest": "docs/c2patool/readme.md" }, { "repo": "contentauth/c2pa-rs", - "branch": "docs/github-only-class", "path": "cli/docs/usage.md", "dest": "docs/c2patool/docs/usage.md", "sidebar": { @@ -20,7 +18,6 @@ }, { "repo": "contentauth/c2pa-rs", - "branch": "docs/github-only-class", "path": "docs/supported-formats.md", "dest": "docs/c2patool/docs/supported-formats.md", "sidebar": { @@ -31,7 +28,6 @@ }, { "repo": "contentauth/c2pa-rs", - "branch": "docs/github-only-class", "path": "cli/docs/manifest.md", "dest": "docs/c2patool/docs/manifest.md", "sidebar": { @@ -42,7 +38,6 @@ }, { "repo": "contentauth/c2pa-rs", - "branch": "docs/github-only-class", "path": "cli/docs/signing.md", "dest": "docs/c2patool/docs/signing.md", "sidebar": { @@ -53,7 +48,6 @@ }, { "repo": "contentauth/c2pa-rs", - "branch": "docs/github-only-class", "path": "cli/docs/x_509.md", "dest": "docs/c2patool/docs/x_509.md", "sidebar": { @@ -64,7 +58,6 @@ }, { "repo": "contentauth/c2pa-rs", - "branch": "docs/github-only-class", "path": "cli/docs/cawg_x509_signing.md", "dest": "docs/c2patool/docs/cawg_x509_signing.md", "sidebar": { @@ -75,7 +68,6 @@ }, { "repo": "contentauth/c2pa-rs", - "branch": "docs/github-only-class", "path": "cli/CHANGELOG.md", "dest": "docs/c2patool/docs/changelog.md", "sidebar": { "category": "c2patool", "label": "Change log", "order": 7 } @@ -84,14 +76,12 @@ { "_comment": "Rust library" }, { "repo": "contentauth/c2pa-rs", - "branch": "docs/github-only-class", "path": "README.md", "dest": "docs/rust-sdk/readme.md", "sidebar": { "category": "rust-sdk", "label": "Overview", "order": 0 } }, { "repo": "contentauth/c2pa-rs", - "branch": "docs/github-only-class", "path": "docs/usage.md", "dest": "docs/rust-sdk/docs/usage.md", "sidebar": { @@ -102,7 +92,6 @@ }, { "repo": "contentauth/c2pa-rs", - "branch": "docs/github-only-class", "path": "docs/supported-formats.md", "dest": "docs/rust-sdk/docs/supported-formats.md", "sidebar": { @@ -114,7 +103,6 @@ { "repo": "contentauth/c2pa-rs", - "branch": "docs/github-only-class", "path": "docs/context-settings.md", "dest": "docs/rust-sdk/docs/context-settings.md", "sidebar": { @@ -125,7 +113,6 @@ }, { "repo": "contentauth/c2pa-rs", - "branch": "docs/github-only-class", "path": "docs/working-stores.md", "dest": "docs/rust-sdk/docs/working-stores.md", "sidebar": { @@ -136,7 +123,6 @@ }, { "repo": "contentauth/c2pa-rs", - "branch": "docs/github-only-class", "path": "docs/intents.md", "dest": "docs/rust-sdk/docs/intents.md", "sidebar": { @@ -147,7 +133,6 @@ }, { "repo": "contentauth/c2pa-rs", - "branch": "docs/github-only-class", "path": "docs/progress_callbacks.md", "dest": "docs/rust-sdk/docs/progress_callbacks.md", "sidebar": { @@ -158,9 +143,8 @@ }, { "repo": "contentauth/c2pa-rs", - "branch": "docs/github-only-class", "path": "docs/cawg-identity.md", - "dest": "docs/rust-sdk/docs/cawg-id.md", + "dest": "docs/rust-sdk/docs/cawg-identity.md", "sidebar": { "category": "rust-sdk", "label": "Using CAWG identity assertions", @@ -169,7 +153,6 @@ }, { "repo": "contentauth/c2pa-rs", - "branch": "docs/github-only-class", "path": "docs/redaction.md", "dest": "docs/rust-sdk/docs/redaction.md", "sidebar": { @@ -180,61 +163,54 @@ }, { "repo": "contentauth/c2pa-rs", - "branch": "docs/github-only-class", - "path": "docs/embeddable-api.md", - "dest": "docs/rust-sdk/docs/embeddable-api.md", + "path": "docs/instanceid_behavior.md", + "dest": "docs/rust-sdk/docs/instanceid-behavior.md", "sidebar": { "category": "rust-sdk", - "label": "Embeddable signing API", + "label": "InstanceID behavior", "order": 9 } }, { "repo": "contentauth/c2pa-rs", - "branch": "docs/github-only-class", - "path": "docs/release-notes.md", - "dest": "docs/rust-sdk/docs/release-notes.md", + "path": "docs/embeddable-api.md", + "dest": "docs/rust-sdk/docs/embeddable-api.md", "sidebar": { "category": "rust-sdk", - "label": "Release notes (Rust)", + "label": "Embeddable signing API", "order": 10 } }, { "repo": "contentauth/c2pa-rs", - "branch": "docs/github-only-class", - "path": "docs/instanceid_behavior.md", - "dest": "docs/rust-sdk/docs/instanceid-behavior.md", + "path": "docs/release-notes.md", + "dest": "docs/rust-sdk/docs/release-notes.md", "sidebar": { "category": "rust-sdk", - "label": "InstanceID behavior", + "label": "Release notes (Rust)", "order": 11 } }, - { "_comment": "Working with the SDK" }, + { "repo": "contentauth/c2pa-rs", - "branch": "docs/github-only-class", - "path": "docs/deprecation-policy.md", - "dest": "docs/rust-sdk/deprecation-policy.md", + "path": "docs/release-process.md", + "dest": "docs/rust-sdk/docs/release-process.md", "sidebar": { - "category": "tasks", - "label": "Deprecation policy", - "order": 10 + "category": "rust-sdk", + "label": "Release process", + "order": 12 } }, - { "_comment": "Python library" }, { "repo": "contentauth/c2pa-python", - "branch": "docs/github-only-class", "path": "README.md", "dest": "docs/c2pa-python/readme.md", "sidebar": { "category": "c2pa-python", "label": "Overview", "order": 0 } }, { "repo": "contentauth/c2pa-python", - "branch": "docs/github-only-class", "path": "docs/usage.md", "dest": "docs/c2pa-python/docs/usage.md", "sidebar": { @@ -245,7 +221,6 @@ }, { "repo": "contentauth/c2pa-rs", - "branch": "docs/github-only-class", "path": "docs/supported-formats.md", "dest": "docs/c2pa-python/docs/supported-formats.md", "sidebar": { @@ -257,7 +232,6 @@ { "repo": "contentauth/c2pa-python", - "branch": "docs/github-only-class", "path": "docs/class-diagram.md", "dest": "docs/c2pa-python/docs/class-diagram.md", "sidebar": { @@ -268,7 +242,6 @@ }, { "repo": "contentauth/c2pa-python", - "branch": "docs/github-only-class", "path": "docs/context-settings.md", "dest": "docs/c2pa-python/docs/context-settings.md", "sidebar": { @@ -279,7 +252,6 @@ }, { "repo": "contentauth/c2pa-python", - "branch": "docs/github-only-class", "path": "docs/intents.md", "dest": "docs/c2pa-python/docs/intents.md", "sidebar": { @@ -290,7 +262,6 @@ }, { "repo": "contentauth/c2pa-python", - "branch": "docs/github-only-class", "path": "docs/working-stores.md", "dest": "docs/c2pa-python/docs/working-stores.md", "sidebar": { @@ -301,7 +272,6 @@ }, { "repo": "contentauth/c2pa-python", - "branch": "docs/github-only-class", "path": "docs/selective-manifests.md", "dest": "docs/c2pa-python/docs/selective-manifests.md", "sidebar": { @@ -312,7 +282,6 @@ }, { "repo": "contentauth/c2pa-python", - "branch": "docs/github-only-class", "path": "examples/README.md", "dest": "docs/c2pa-python/docs/examples.md", "sidebar": { @@ -323,7 +292,6 @@ }, { "repo": "contentauth/c2pa-python", - "branch": "docs/github-only-class", "path": "docs/release-notes.md", "dest": "docs/c2pa-python/docs/release-notes.md", "sidebar": { @@ -346,14 +314,12 @@ { "_comment": "C++ library" }, { "repo": "contentauth/c2pa-cpp", - "branch": "docs/github-only-class", "path": "README.md", "dest": "docs/c2pa-cpp/readme.md", "sidebar": { "category": "c2pa-cpp", "label": "Overview", "order": 0 } }, { "repo": "contentauth/c2pa-cpp", - "branch": "docs/github-only-class", "path": "docs/usage.md", "dest": "docs/c2pa-cpp/docs/usage.md", "sidebar": { @@ -364,7 +330,6 @@ }, { "repo": "contentauth/c2pa-rs", - "branch": "docs/github-only-class", "path": "docs/supported-formats.md", "dest": "docs/c2pa-cpp/docs/supported-formats.md", "sidebar": { @@ -375,7 +340,6 @@ }, { "repo": "contentauth/c2pa-cpp", - "branch": "docs/github-only-class", "path": "docs/context-settings.md", "dest": "docs/c2pa-cpp/docs/context-settings.md", "sidebar": { @@ -386,7 +350,6 @@ }, { "repo": "contentauth/c2pa-cpp", - "branch": "docs/github-only-class", "path": "docs/intents.md", "dest": "docs/c2pa-cpp/docs/intents.md", "sidebar": { @@ -397,7 +360,6 @@ }, { "repo": "contentauth/c2pa-cpp", - "branch": "docs/github-only-class", "path": "docs/working-stores.md", "dest": "docs/c2pa-cpp/docs/working-stores.md", "sidebar": { @@ -408,7 +370,6 @@ }, { "repo": "contentauth/c2pa-cpp", - "branch": "docs/github-only-class", "path": "docs/selective-manifests.md", "dest": "docs/c2pa-cpp/docs/selective-manifests.md", "sidebar": { @@ -419,7 +380,6 @@ }, { "repo": "contentauth/c2pa-cpp", - "branch": "docs/github-only-class", "path": "docs/embeddable-api.md", "dest": "docs/c2pa-cpp/docs/embeddable-api.md", "sidebar": { @@ -430,7 +390,6 @@ }, { "repo": "contentauth/c2pa-cpp", - "branch": "docs/github-only-class", "path": "docs/release-notes.md", "dest": "docs/c2pa-cpp/docs/release-notes.md", "sidebar": { @@ -441,7 +400,6 @@ }, { "repo": "contentauth/c2pa-cpp", - "branch": "docs/github-only-class", "path": "docs/faqs.md", "dest": "docs/c2pa-cpp/docs/faqs.md", "sidebar": { @@ -485,7 +443,6 @@ }, { "repo": "contentauth/c2pa-rs", - "branch": "docs/github-only-class", "path": "docs/supported-formats.md", "dest": "docs/c2pa-js/supported-formats.md" }, diff --git a/sidebars.js b/sidebars.js index db58db58..729d250d 100644 --- a/sidebars.js +++ b/sidebars.js @@ -186,7 +186,32 @@ const sidebars = { link: { type: 'doc', id: 'rust-sdk/readme' }, collapsed: true, items: [ - ...getRemoteSidebarItems('rust-sdk', ['rust-sdk/readme']), + ...getRemoteSidebarItems('rust-sdk', [ + 'rust-sdk/readme', + 'rust-sdk/docs/release-process', + ]), + { + type: 'category', + label: 'Release process', + link: { type: 'doc', id: 'rust-sdk/docs/release-process' }, + items: [ + { + type: 'link', + label: 'Deprecation policy', + href: 'https://github.com/contentauth/c2pa-rs/blob/main/docs/deprecation-policy.md', + }, + { + type: 'link', + label: 'Experimental features', + href: 'https://github.com/contentauth/c2pa-rs/blob/main/docs/experimental-features.md', + }, + { + type: 'link', + label: 'Support tiers', + href: 'https://github.com/contentauth/c2pa-rs/blob/main/docs/support-tiers.md', + }, + ], + }, { type: 'link', label: 'API documentation',