ci: release - #2833
Open
emdashbot[bot] wants to merge 1 commit into
Open
Conversation
Contributor
Scope checkThis PR touches 36 files. PRs with a broad scope are harder to review. Please confirm the scope hasn't drifted beyond the intended change. If this scope is intentional, no action needed. A maintainer will review it. If not, please consider splitting this into smaller PRs. See CONTRIBUTING.md for contribution guidelines. |
@emdash-cms/admin
@emdash-cms/auth
@emdash-cms/auth-atproto
@emdash-cms/blocks
@emdash-cms/cloudflare
@emdash-cms/contentful-to-portable-text
emdash
create-emdash
@emdash-cms/gutenberg-to-portable-text
@emdash-cms/plugin-cli
@emdash-cms/plugin-types
@emdash-cms/registry-client
@emdash-cms/registry-lexicons
@emdash-cms/registry-moderation
@emdash-cms/registry-verification
@emdash-cms/sandbox-workerd
@emdash-cms/x402
@emdash-cms/plugin-ai-moderation
@emdash-cms/plugin-atproto
@emdash-cms/plugin-audit-log
@emdash-cms/plugin-color
@emdash-cms/plugin-embeds
@emdash-cms/plugin-field-kit
@emdash-cms/plugin-forms
@emdash-cms/plugin-webhook-notifier
commit: |
Contributor
Overlapping PRsThis PR modifies files that are also changed by other open PRs:
This may cause merge conflicts or duplicated work. A maintainer will coordinate. |
emdashbot
Bot
force-pushed
the
changeset-release/main
branch
2 times, most recently
from
September 2, 2026 07:33
b6946a5 to
51b5aee
Compare
emdashbot
Bot
force-pushed
the
changeset-release/main
branch
9 times, most recently
from
September 2, 2026 13:10
2d85bcf to
5fd9805
Compare
emdashbot
Bot
force-pushed
the
changeset-release/main
branch
2 times, most recently
from
September 2, 2026 13:26
ad2b118 to
d278922
Compare
emdashbot
Bot
force-pushed
the
changeset-release/main
branch
3 times, most recently
from
September 2, 2026 16:26
9962b8d to
94dcf26
Compare
emdashbot
Bot
force-pushed
the
changeset-release/main
branch
from
September 2, 2026 17:27
94dcf26 to
bfae9a8
Compare
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.
This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.
Releases
@emdash-cms/admin@0.37.0
Minor Changes
#2746
c7b6fdfThanks @ascorbic! - AddsDirectPdsClientfor reading package profiles and releases with AT Protocol repository proofs, and updates experimental decentralized registry installs and updates to verify current signed records directly from the publisher's PDS.Aggregator record integrity
Install and update reject aggregator-supplied profile or release metadata whose URI or CID does not match the publisher's signed records. The server returns
AGGREGATOR_RECORD_MISMATCHbefore fetching the artifact or requesting consent.Publisher identity display
The admin treats handle resolution as an advisory identity signal. It keeps the install button disabled while attempting to resolve the package DID back to a handle, then blocks installation when
resolveDidToHandle()conclusively returns"invalid". An indeterminate result caused by a network failure, unsupported DID method, or missing handle displays the publisher DID and does not block installation.Install and update trust the publisher DID and the signed repository proofs for the profile and release records. A handle is display metadata and is not an authorization or record-integrity input.
Provenance and release policy
The installer applies the signed profile's release policy, independently fetches and verifies supplied Sigstore/SLSA provenance, and binds moderation labels to the exact profile or release CID. Missing required provenance and any supplied provenance that is unavailable, malformed, mismatched, or unsupported block installation and updates. Artifact checksums, archive paths, bundle limits, manifest identity, and version use the same verification rules as the registry release tooling.
The verification package also exports
inspectPackageReleaseRecordsfor validating signed records and policy before artifact and provenance evidence is available.Registry install and update consent now show the exact verified profile and release CIDs, signed publisher policy, and provenance status. Install consent uses permissions and MCP tools read from the verified bundle rather than the aggregator's record copy.
Install, update, and delegated-release verification require lowercase base32 multibase
sha2-256multihashes for package artifacts and provenance documents. The plugin CLI already produces this format. The authenticated image-artifact proxy still accepts legacy bare hexadecimal SHA-256 checksums for display-only images.Patch Changes
#2761
8fb13cfThanks @khoinguyenpham04! - Adds a dedicated Used in tab to media details, keeping file information and focal-point controls separate from usage references.#2126
7887577Thanks @swissky! - Fixes a silent draft-overwrite in the page editor. The editor now echoes the entry's_revtoken on save and autosave, so the server rejects a save that is based on a stale read with a 409 conflict instead of silently replacing a newer draft revision. Editors who hit a conflict now see a clear error and can reload instead of losing work.#2761
8fb13cfThanks @khoinguyenpham04! - Updates Media Library grid cards to show filenames and file formats below larger previews.#2830
965bf33Thanks @khoinguyenpham04! - Fixes image fields and Portable Text editors so they preserve direct image URLs and external provider identities, allowing selected images to continue rendering after saving or replacement.#2860
afa81c5Thanks @ascorbic! - Fixes Publish saving and awaiting the editor's latest changes before making content live. Validation errors, failed saves, and revision conflicts now stop publishing instead of promoting stale draft data.#2858
bb8b087Thanks @ascorbic! - Fixes sandboxedcontent:beforeSavehooks being unable to reject content creation or updates.Return a version 1 sandbox hook result with a
SAVE_REJECTEDerror to stop the save and show the reason to the editor:The reason must contain 1–500 characters of plain text. Invalid error results and unexpected sandbox exceptions stop the save with a generic hook error instead of exposing internal details.
#2761
8fb13cfThanks @khoinguyenpham04! - Updates image previews to show a theme-aware checkerboard behind transparent areas.Updated dependencies [
52fffdc,3b124f2,920e1f3,e0e60ba,c7b6fdf]:@emdash-cms/auth@0.37.0
Minor Changes
#2745
b8873c7Thanks @ascorbic! - AddsPasskeyConfig.userVerificationso sites can require, prefer, or discourage passkey user verification. Existing callers keep thepreferredbehavior.Adds typed, versioned challenge contexts for registration and authentication. Declare a codec with
defineChallengeContext(), bind data withbindChallengeContext()when generating options, and pass the codec with anAtomicChallengeStoretoverifyAuthenticationResponse()orverifyRegistrationResponse()to recover the typed value after verification.Atomic challenge stores declare
readonly atomic: true, so an unrelatedconsume()method on an existing challenge store cannot silently change its behavior. EmDash retains optional challenge context data in its database-backed challenge store.Authentication rejects assertions whose signature counter drops from a nonzero value to zero because the counter change can indicate a cloned authenticator.
emdash@0.37.0
Minor Changes
#2746
c7b6fdfThanks @ascorbic! - AddsDirectPdsClientfor reading package profiles and releases with AT Protocol repository proofs, and updates experimental decentralized registry installs and updates to verify current signed records directly from the publisher's PDS.Aggregator record integrity
Install and update reject aggregator-supplied profile or release metadata whose URI or CID does not match the publisher's signed records. The server returns
AGGREGATOR_RECORD_MISMATCHbefore fetching the artifact or requesting consent.Publisher identity display
The admin treats handle resolution as an advisory identity signal. It keeps the install button disabled while attempting to resolve the package DID back to a handle, then blocks installation when
resolveDidToHandle()conclusively returns"invalid". An indeterminate result caused by a network failure, unsupported DID method, or missing handle displays the publisher DID and does not block installation.Install and update trust the publisher DID and the signed repository proofs for the profile and release records. A handle is display metadata and is not an authorization or record-integrity input.
Provenance and release policy
The installer applies the signed profile's release policy, independently fetches and verifies supplied Sigstore/SLSA provenance, and binds moderation labels to the exact profile or release CID. Missing required provenance and any supplied provenance that is unavailable, malformed, mismatched, or unsupported block installation and updates. Artifact checksums, archive paths, bundle limits, manifest identity, and version use the same verification rules as the registry release tooling.
The verification package also exports
inspectPackageReleaseRecordsfor validating signed records and policy before artifact and provenance evidence is available.Registry install and update consent now show the exact verified profile and release CIDs, signed publisher policy, and provenance status. Install consent uses permissions and MCP tools read from the verified bundle rather than the aggregator's record copy.
Install, update, and delegated-release verification require lowercase base32 multibase
sha2-256multihashes for package artifacts and provenance documents. The plugin CLI already produces this format. The authenticated image-artifact proxy still accepts legacy bare hexadecimal SHA-256 checksums for display-only images.Patch Changes
#2783
cd294dcThanks @yumam0815! - Fixes publication workflows so callers can pass the approved_revto publish, unpublish, or discard a draft and receive aCONFLICTresponse when the entry changed. Calls that omit_revkeep the existing behavior.#2745
b8873c7Thanks @ascorbic! - AddsPasskeyConfig.userVerificationso sites can require, prefer, or discourage passkey user verification. Existing callers keep thepreferredbehavior.Adds typed, versioned challenge contexts for registration and authentication. Declare a codec with
defineChallengeContext(), bind data withbindChallengeContext()when generating options, and pass the codec with anAtomicChallengeStoretoverifyAuthenticationResponse()orverifyRegistrationResponse()to recover the typed value after verification.Atomic challenge stores declare
readonly atomic: true, so an unrelatedconsume()method on an existing challenge store cannot silently change its behavior. EmDash retains optional challenge context data in its database-backed challenge store.Authentication rejects assertions whose signature counter drops from a nonzero value to zero because the counter change can indicate a cloned authenticator.
#2830
965bf33Thanks @khoinguyenpham04! - Fixes image fields and Portable Text editors so they preserve direct image URLs and external provider identities, allowing selected images to continue rendering after saving or replacement.#2858
bb8b087Thanks @ascorbic! - Fixes sandboxedcontent:beforeSavehooks being unable to reject content creation or updates.Return a version 1 sandbox hook result with a
SAVE_REJECTEDerror to stop the save and show the reason to the editor:The reason must contain 1–500 characters of plain text. Invalid error results and unexpected sandbox exceptions stop the save with a generic hook error instead of exposing internal details.
Updated dependencies [
529b28b,52fffdc,8fb13cf,3b124f2,7887577,920e1f3,8fb13cf,b8873c7,965bf33,afa81c5,bb8b087,e0e60ba,8fb13cf,c7b6fdf,c7b6fdf]:@emdash-cms/plugin-cli@0.10.0
Minor Changes
#2747
3b124f2Thanks @ascorbic! - Adds typed clients for the experimental delegated release service.ReleaseServiceClientsubmits, polls, and cancels GitHub OpenID Connect release intents; manages publisher workload policies and retained delegation; and lets publishers check whether profile-listed approvers have an active passkey and inspect publisher-scoped audit events through a publisher session.ReleaseServiceOperatorClientexposes the Cloudflare Access status and sanitized audit, sharded publisher and approver inventory, pause, suspension, revocation, cancellation, reconciliation, resumable encryption-key rotation, Workflow-backed fleet verification, audited key retirement, encrypted R2 archive, and fail-safe publisher restore and abort operations.ReleaseServiceClientcan request, poll, list, and confirm GitHub workflow connections. The first permanent release run records GitHub's signed repository, workflow, ref, and environment as a pending request and returns a browser approval URL. The publisher must confirm those details before the service creates a workload policy. Tag-based connections can cover the current tag or all version tags while keeping the repository and workflow path exact.Both clients validate response envelopes and return stable
ReleaseServiceErrorcodes with retry metadata. Mutation helpers require idempotency keys, and workload polling requests a fresh token from the configured provider for each call.The plugin CLI adds
emdash-plugin release dry-run,release submit,release status, andrelease cancelfor GitHub Actions jobs. The firstrelease submitrequests browser approval for the permanent workflow and waits for confirmation before creating an intent. Dry-run verifies existing workload admission without creating a connection request, intent, consuming rate budget, or reserving a version. The commands request audience-bound OIDC tokens from the runner, support JSON output, and use the GitHub run identity as the default idempotency key where a mutation occurs.Delegated submissions use a URL-source release record: each package or listing-image artifact supplies a checksum-bound HTTPS URL and no blob. The service stages and uploads those bytes through the publisher's delegation, then creates a blob-only release record. Submit and dry-run reject mixed or blob-backed source inputs before requesting GitHub OIDC.
Interactive
release delegate,revoke,workload,enrol,approve, andrejectcommands print validated browser handoffs. Publisher application sessions, OAuth credentials, and passkey assertions remain at the release-service origin instead of entering the terminal process.#2749
920e1f3Thanks @ascorbic! - Addsemdash-plugin release setupto create the permanent GitHub Actions workflow for delegated plugin releases. The generated workflow builds and attests the plugin, waits for first-run browser authorization, and uploads its exact bundle and provenance through GitHub OIDC before publishing.ReleaseServiceClient.uploadReleaseArtifact()supports custom workflows that need to stage checksum-bound bundle, image, or provenance bytes. Existing URL-sourcerelease submitworkflows remain supported.Patch Changes
#2743
d99a0e8Thanks @ascorbic! - Fixes saved OAuth sessions failing to refresh or revoke after the original loopback callback server closes. New logins retain the loopback client registration needed to recreate the same OAuth client.Sessions created before this fix do not contain that registration metadata and cannot be resumed. Sign in again after upgrading.
#2848
e0e60baThanks @ascorbic! - Adds publisher-created workflow connection invitations to delegated releases. First-time or unmatched GitHub workflows must use a package-bound, single-use invitation before they can request publisher approval; connected workflows continue without one.Create the invitation in the publisher dashboard or with
createWorkflowConnectionInvitation(), then save its value as the repository'sEMDASH_CONNECTION_INVITATIONGitHub Actions secret. The generated release workflow passes this secret to the release Action automatically. Custom workflows can passinvitationTokentorequestWorkflowConnection(), and publishers can reject pending requests withrejectWorkflowConnection().Updated dependencies [
52fffdc,3b124f2,920e1f3,e0e60ba,c7b6fdf]:@emdash-cms/registry-client@0.5.0
Minor Changes
#2849
52fffdcThanks @ascorbic! - AddsDirectPdsClient.getPackageRepository()for reading a package profile and every package release from one proof-verified AT Protocol repository export.Use the method when authorization or version selection requires a complete signed package snapshot:
The client verifies the repository commit signature, record blocks, and complete Merkle search tree before returning records. Unsigned
repo.getRecordandrepo.listRecordsenvelopes cannot substitute or omit package data. Repository exports use the client'smaxResponseByteslimit, which defaults to 5 MiB, and a missing export reportsREPOSITORY_NOT_FOUND.#2747
3b124f2Thanks @ascorbic! - Adds typed clients for the experimental delegated release service.ReleaseServiceClientsubmits, polls, and cancels GitHub OpenID Connect release intents; manages publisher workload policies and retained delegation; and lets publishers check whether profile-listed approvers have an active passkey and inspect publisher-scoped audit events through a publisher session.ReleaseServiceOperatorClientexposes the Cloudflare Access status and sanitized audit, sharded publisher and approver inventory, pause, suspension, revocation, cancellation, reconciliation, resumable encryption-key rotation, Workflow-backed fleet verification, audited key retirement, encrypted R2 archive, and fail-safe publisher restore and abort operations.ReleaseServiceClientcan request, poll, list, and confirm GitHub workflow connections. The first permanent release run records GitHub's signed repository, workflow, ref, and environment as a pending request and returns a browser approval URL. The publisher must confirm those details before the service creates a workload policy. Tag-based connections can cover the current tag or all version tags while keeping the repository and workflow path exact.Both clients validate response envelopes and return stable
ReleaseServiceErrorcodes with retry metadata. Mutation helpers require idempotency keys, and workload polling requests a fresh token from the configured provider for each call.The plugin CLI adds
emdash-plugin release dry-run,release submit,release status, andrelease cancelfor GitHub Actions jobs. The firstrelease submitrequests browser approval for the permanent workflow and waits for confirmation before creating an intent. Dry-run verifies existing workload admission without creating a connection request, intent, consuming rate budget, or reserving a version. The commands request audience-bound OIDC tokens from the runner, support JSON output, and use the GitHub run identity as the default idempotency key where a mutation occurs.Delegated submissions use a URL-source release record: each package or listing-image artifact supplies a checksum-bound HTTPS URL and no blob. The service stages and uploads those bytes through the publisher's delegation, then creates a blob-only release record. Submit and dry-run reject mixed or blob-backed source inputs before requesting GitHub OIDC.
Interactive
release delegate,revoke,workload,enrol,approve, andrejectcommands print validated browser handoffs. Publisher application sessions, OAuth credentials, and passkey assertions remain at the release-service origin instead of entering the terminal process.#2749
920e1f3Thanks @ascorbic! - Addsemdash-plugin release setupto create the permanent GitHub Actions workflow for delegated plugin releases. The generated workflow builds and attests the plugin, waits for first-run browser authorization, and uploads its exact bundle and provenance through GitHub OIDC before publishing.ReleaseServiceClient.uploadReleaseArtifact()supports custom workflows that need to stage checksum-bound bundle, image, or provenance bytes. Existing URL-sourcerelease submitworkflows remain supported.#2848
e0e60baThanks @ascorbic! - Adds publisher-created workflow connection invitations to delegated releases. First-time or unmatched GitHub workflows must use a package-bound, single-use invitation before they can request publisher approval; connected workflows continue without one.Create the invitation in the publisher dashboard or with
createWorkflowConnectionInvitation(), then save its value as the repository'sEMDASH_CONNECTION_INVITATIONGitHub Actions secret. The generated release workflow passes this secret to the release Action automatically. Custom workflows can passinvitationTokentorequestWorkflowConnection(), and publishers can reject pending requests withrejectWorkflowConnection().#2746
c7b6fdfThanks @ascorbic! - AddsDirectPdsClientfor reading package profiles and releases with AT Protocol repository proofs, and updates experimental decentralized registry installs and updates to verify current signed records directly from the publisher's PDS.Aggregator record integrity
Install and update reject aggregator-supplied profile or release metadata whose URI or CID does not match the publisher's signed records. The server returns
AGGREGATOR_RECORD_MISMATCHbefore fetching the artifact or requesting consent.Publisher identity display
The admin treats handle resolution as an advisory identity signal. It keeps the install button disabled while attempting to resolve the package DID back to a handle, then blocks installation when
resolveDidToHandle()conclusively returns"invalid". An indeterminate result caused by a network failure, unsupported DID method, or missing handle displays the publisher DID and does not block installation.Install and update trust the publisher DID and the signed repository proofs for the profile and release records. A handle is display metadata and is not an authorization or record-integrity input.
Provenance and release policy
The installer applies the signed profile's release policy, independently fetches and verifies supplied Sigstore/SLSA provenance, and binds moderation labels to the exact profile or release CID. Missing required provenance and any supplied provenance that is unavailable, malformed, mismatched, or unsupported block installation and updates. Artifact checksums, archive paths, bundle limits, manifest identity, and version use the same verification rules as the registry release tooling.
The verification package also exports
inspectPackageReleaseRecordsfor validating signed records and policy before artifact and provenance evidence is available.Registry install and update consent now show the exact verified profile and release CIDs, signed publisher policy, and provenance status. Install consent uses permissions and MCP tools read from the verified bundle rather than the aggregator's record copy.
Install, update, and delegated-release verification require lowercase base32 multibase
sha2-256multihashes for package artifacts and provenance documents. The plugin CLI already produces this format. The authenticated image-artifact proxy still accepts legacy bare hexadecimal SHA-256 checksums for display-only images.@emdash-cms/registry-verification@0.3.0
Minor Changes
#2746
c7b6fdfThanks @ascorbic! - Adds optional artifact digest candidates toGitHubProvenanceVerifier, allowing callers that compute several supported digest algorithms in one isolated artifact fetch to verify the digest selected by a signed SLSA provenance subject.Existing callers can continue passing only
artifactDigest. Successful results return the candidate that matched the signed subject.Fixes
@emdash-cms/registry-verificationwhen it is rebundled into an Astro Cloudflare application, preventing requests from failing during Worker startup.Adds
@emdash-cms/registry-verification/recordsfor Worker callers that supply an explicitProvenanceVerifier. The runtime-neutral entry does not load the Node-oriented default Sigstore verifier, while the package root keeps the existing default-verifier behavior.Fixes
@emdash-cms/registry-verificationwhen it is rebundled into an Astro Cloudflare application, preventing requests from failing during Worker startup.#2746
c7b6fdfThanks @ascorbic! - AddsDirectPdsClientfor reading package profiles and releases with AT Protocol repository proofs, and updates experimental decentralized registry installs and updates to verify current signed records directly from the publisher's PDS.Aggregator record integrity
Install and update reject aggregator-supplied profile or release metadata whose URI or CID does not match the publisher's signed records. The server returns
AGGREGATOR_RECORD_MISMATCHbefore fetching the artifact or requesting consent.Publisher identity display
The admin treats handle resolution as an advisory identity signal. It keeps the install button disabled while attempting to resolve the package DID back to a handle, then blocks installation when
resolveDidToHandle()conclusively returns"invalid". An indeterminate result caused by a network failure, unsupported DID method, or missing handle displays the publisher DID and does not block installation.Install and update trust the publisher DID and the signed repository proofs for the profile and release records. A handle is display metadata and is not an authorization or record-integrity input.
Provenance and release policy
The installer applies the signed profile's release policy, independently fetches and verifies supplied Sigstore/SLSA provenance, and binds moderation labels to the exact profile or release CID. Missing required provenance and any supplied provenance that is unavailable, malformed, mismatched, or unsupported block installation and updates. Artifact checksums, archive paths, bundle limits, manifest identity, and version use the same verification rules as the registry release tooling.
The verification package also exports
inspectPackageReleaseRecordsfor validating signed records and policy before artifact and provenance evidence is available.Registry install and update consent now show the exact verified profile and release CIDs, signed publisher policy, and provenance status. Install consent uses permissions and MCP tools read from the verified bundle rather than the aggregator's record copy.
Install, update, and delegated-release verification require lowercase base32 multibase
sha2-256multihashes for package artifacts and provenance documents. The plugin CLI already produces this format. The authenticated image-artifact proxy still accepts legacy bare hexadecimal SHA-256 checksums for display-only images.Patch Changes
529b28bThanks @ascorbic! - Fixes delegated-release provenance verification so verified GitHub attestations include the repository, workflow, commit, and run identity needed to enforce an exact authorized workload.@emdash-cms/auth-atproto@0.2.37
Patch Changes
b8873c7]:@emdash-cms/cloudflare@0.37.0
Patch Changes
cd294dc,b8873c7,965bf33,bb8b087,c7b6fdf]:@emdash-cms/plugin-embeds@0.1.45
Patch Changes
@emdash-cms/sandbox-workerd@0.5.3
Patch Changes
cd294dc,b8873c7,965bf33,bb8b087,c7b6fdf]:@emdash-cms/blocks@0.37.0
create-emdash@0.37.0
@emdash-cms/gutenberg-to-portable-text@0.37.0
@emdash-cms/x402@0.37.0
@emdash-cms/labeler@0.0.2
Patch Changes
529b28b,c7b6fdf,c7b6fdf]:@emdash-cms/release-action@0.0.1
Patch Changes
529b28b,52fffdc,3b124f2,920e1f3,e0e60ba,c7b6fdf,c7b6fdf]:@emdash-cms/release-service@0.0.1
Patch Changes
529b28b,52fffdc,3b124f2,920e1f3,b8873c7,e0e60ba,c7b6fdf,c7b6fdf]:@emdash-cms/release-verifier@0.0.1
Patch Changes
529b28b,c7b6fdf,c7b6fdf]:@emdash-cms/fixture-perf-site@0.0.40
Patch Changes
cd294dc,b8873c7,965bf33,bb8b087,c7b6fdf]:@emdash-cms/perf-demo-site@0.0.40
Patch Changes
cd294dc,3b124f2,920e1f3,d99a0e8,b8873c7,965bf33,bb8b087,e0e60ba,c7b6fdf]:@emdash-cms/cache-demo-site@0.0.40
Patch Changes
cd294dc,3b124f2,920e1f3,d99a0e8,b8873c7,965bf33,bb8b087,e0e60ba,c7b6fdf]:@emdash-cms/do-demo-site@0.0.40
Patch Changes
cd294dc,3b124f2,920e1f3,d99a0e8,b8873c7,965bf33,bb8b087,e0e60ba,c7b6fdf]:@emdash-cms/do-solo-demo-site@0.0.40
Patch Changes
cd294dc,3b124f2,920e1f3,d99a0e8,b8873c7,965bf33,bb8b087,e0e60ba,c7b6fdf]: