Repository navigation
Conversation
…tep with blocks, and take blocks as a caret peer - .releaserc.json: the publish allowlist is blocks, tanstack, nextjs and the seven apps-*; every release publishes all ten at one version. - apps-*: @decocms/blocks moves from dependencies (workspace:*, published as an exact pin) to peerDependencies "^8.3.0", with the workspace copy in devDependencies, as the bindings already have it. - scripts/sync-versions.mjs rewrites only devDependencies' workspace: ranges and refuses an in-repo dependency or a peer floor above the release. - tests/release.test.ts: allowlist = packages/, ranges, and the sync on a copy of the manifests. - CLAUDE.md, README and the release workflow's comments name the ten packages and the dist + source format. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WNwbSEePYNcY5YCgqZURig
This was referenced Oct 14, 2026
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WNwbSEePYNcY5YCgqZURig
Brings in the PO review down the stack: blocks without the draft names or Studio's origins (#693), the platform-neutral @decocms/blocks/image with the @decocms/apps-vtex/image and @decocms/apps-shopify/image helper subpaths (#694), StudioBridge's required trustedOrigins (#695), and each binding's own copy of the draft names and Studio's origins (#696, #697). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WNwbSEePYNcY5YCgqZURig
tests/release.test.ts now also checks, for each of the ten published packages, every export target through its conditional branches: types + source + default under dist/ and src/ (or plain JS shipped from src, as @decocms/nextjs/config), and that `npm pack` would ship each of those files and no test or fixture. This covers the clients' new helper subpaths (@decocms/apps-vtex/image, @decocms/apps-shopify/image). CI's build job runs the file after the plain-Node import of every built export, which already walks every subpath. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WNwbSEePYNcY5YCgqZURig
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WNwbSEePYNcY5YCgqZURig
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WNwbSEePYNcY5YCgqZURig
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WNwbSEePYNcY5YCgqZURig
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01WNwbSEePYNcY5YCgqZURig
Brings P1-P5's PO decisions (NODE_ENV dev mode and isNextDev removed, first-match multivariate, deco schema --check, decoCdn leading strip, edit shortcut on by default). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016ZsmzpZ2zahRBoATBb2tBu
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016ZsmzpZ2zahRBoATBb2tBu
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016ZsmzpZ2zahRBoATBb2tBu
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016ZsmzpZ2zahRBoATBb2tBu
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016ZsmzpZ2zahRBoATBb2tBu
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016ZsmzpZ2zahRBoATBb2tBu
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016ZsmzpZ2zahRBoATBb2tBu
tlgimenes
added a commit
that referenced
this pull request
Oct 17, 2026
#698) ## Why From 8.3.0, `main` publishes `@decocms/tanstack` and `@decocms/nextjs` v8 on npm's `latest` (#699's release mechanics). Today this branch publishes both with `--tag latest`, so the first 7.x release after 8.3.0 would take `latest` back to a 7.x version and new sites would install v7. ## What changes - `.releaserc.json`: `tanstack` and `nextjs` join `blocks` and the shared apps in `V7_CHANNEL_PKGS`, so 7.x releases publish them on `latest-7`. The other v7-only packages (`blocks-admin`, `blocks-cli`, `eitri`, the v7-only apps) keep `latest`. - `release.yml`'s comment and the install docs (`README.md`, `packages/nextjs/README.md`) say `@decocms/tanstack@latest-7` / `@decocms/nextjs@latest-7`. Rendered publish step in dry-run mode (`DRY_RUN=true`): `@decocms/tanstack@7.79.7 --tag latest-7`, `@decocms/nextjs@7.79.7 --tag latest-7`, `@decocms/blocks-admin@7.79.7 --tag latest`, and the rest as before. ## Order Merge this before the v8 stack lands on `main`, or at the latest before any other 7.x release after 8.3.0. Merging it releases 7.79.7 of the 7.x packages (a `fix:`), which puts `latest-7` on 7.79.7 for both bindings; the `npm dist-tag add … latest-7` commands in the v8 release PR are then already done (don't move `latest-7` back to 7.79.6). Claude-Session: https://claude.ai/code/session_01WNwbSEePYNcY5YCgqZURig 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- This is an auto-generated description by cubic. --> --- ## Summary by cubic Stops the 7.x line from republishing `@decocms/tanstack` and `@decocms/nextjs` on npm's `latest`, which has carried 8.x since 8.3.0. Both bindings now publish on the `latest-7` dist-tag alongside `@decocms/blocks` and the apps v8 also ships, so the first 7.x release won't pull `latest` back to a 7.x version. **Rollout** - Merge before any other 7.x release after 8.3.0; the publish itself moves `latest-7` to 7.79.7 for both bindings, which covers the `npm dist-tag add` steps in the v8 release. **Documentation** - Install commands in `README.md` and `packages/nextjs/README.md` now use `@latest-7` for both bindings. <sup>Written for commit ccc4f72. Summary will update on new commits.</sup> <a href="https://cubic.dev/pr/decocms/blocks/pull/698?utm_source=github" target="_blank" rel="noopener noreferrer" data-no-image-dialog="true"><picture><source media="(prefers-color-scheme: dark)" srcset="https://www.cubic.dev/buttons/review-in-cubic-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://www.cubic.dev/buttons/review-in-cubic-light.svg"><img alt="View guided diff" src="https://www.cubic.dev/buttons/review-in-cubic-light.svg"></picture></a> <a href="https://www.cubic.dev/action/auto-fix/pr/decocms/blocks/698?returnTo=https%3A%2F%2Fgithub.com%2Fdecocms%2Fblocks%2Fpull%2F698&source=description" target="_blank" rel="noopener noreferrer" data-no-image-dialog="true"><picture><source media="(prefers-color-scheme: dark)" srcset="https://www.cubic.dev/buttons/turn-on-auto-fix-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://www.cubic.dev/buttons/turn-on-auto-fix-light.svg"><img alt="Turn on auto-fix" src="https://www.cubic.dev/buttons/turn-on-auto-fix-light.svg"></picture></a> <!-- End of auto-generated description by cubic. --> Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_016ZsmzpZ2zahRBoATBb2tBu
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.
Stacked on #697 (P5). Part 6 of the v8 framework packages stack: #693 → #694 → #695 → #696 → #697 → this.
What changes
.releaserc.json's publish allowlist isblocks tanstack nextjsplus the sevenapps-*. Every release publishes all ten at one version, even a package with no change.@decocms/tanstackand@decocms/nextjspublish frommainonlatest.apps-*took@decocms/blocksasworkspace:*independencies, which publishes as an exact pin, so a blocks patch release put a second blocks next to an app. They now take it as a peer,^8.3.0, withworkspace:*indevDependencies, as the bindings already do.scripts/sync-versions.mjswrites the release version, rewritesworkspace:ranges only indevDependencies, and refuses to release when an in-repo package is a plain dependency or a peer floor is above the release version.tests/release.test.ts(38 tests): allowlist =packages/, blocks then the bindings first; every dependent takes blocks as^8.3.0peer; the sync on a copy of the manifests (8.3.0, a later 8.4.1, refusing 8.2.4 and a plain dependency). New since the PO review: for each of the ten packages, every export target (through conditional branches) has thetypes+source+defaultshape (or is plain JS shipped fromsrc, as@decocms/nextjs/config), andnpm packwould ship each of those files and no test or fixture. That covers the clients' new helper subpaths,@decocms/apps-vtex/imageand@decocms/apps-shopify/image(feat: @decocms/blocks/image (platform-neutral) with VTEX and Shopify image providers in their packages #694); a mutation that dropssrc/image.tsfromapps-vtex'sfilesfails it./imagesubpaths; the job now also runstests/release.test.tsagainst the dist it built.tscoutput indist/plus asourcecondition, not plain.ts), release workflow comment (ten packages).Dry run (repeated after the PO review)
In a throwaway clone (deleted afterwards),
origin/mainplus this stack squashed into onefeat:commit, with the real config (GitHub plugin included; dry run only):semantic-release --dry-run --no-ci: "The next release version is 8.3.0" (last tagblocks-v8.2.3).VERSION=8.3.0 node scripts/sync-versions.mjs && bun run build): all ten manifests at 8.3.0, noworkspace:left; tanstack, nextjs and everyapps-*havepeerDependencies["@decocms/blocks"] = "^8.3.0".npm publish --dry-run:+ @decocms/blocks@8.3.0,+ @decocms/tanstack@8.3.0,+ @decocms/nextjs@8.3.0and the seven apps, all "with tag latest". No test files in the binding tarballs.apps-vtexandapps-shopifytarballs holddist/image.{js,d.ts}(+ maps) andsrc/image.ts; the blocks tarball has nostudiomodule; the nextjs tarball has its owndraft,studioandStudioBridgemodules.npm ls @decocms/blocksshows one copy, every other packagededuped(one@decocms/blocks/package.jsonon disk). Plain Node imported all 38 exports of the installed packages,/imagesubpaths included, with no failure;@decocms/blocksexports neitherSTUDIO_ORIGINSnorDRAFT_PARAM, and@decocms/nextjs' and@decocms/tanstack's copies are equal. No package was published.Dry run after the PO decisions of 2026-10-15
Re-run after merging #697 (with #693–#696's decisions:
NODE_ENVdev mode,isNextDevremoved, first-match multivariate,deco schema --check, leading asset-host strip, edit shortcut on by default). Throwaway local repos, deleted afterwards; nothing was pushed or published:semantic-release --dry-run --no-ci(commit analyzer and release notes, against a local bare mirror of the repo with its tags): last tagblocks-v8.2.3, "The next release version is 8.3.0".workspace:left; build passes.npm publish --dry-run --tag latestfor all ten: each exits 0. The nextjs tarball (54 files) has nodevmodule.@decocms/blocks(the othersdeduped); plain Node imported all 31 of their exports, and@decocms/nextjsexports noisNextDev.tests/release.test.ts: 38/38.Tests
bun run check,bun run build,skills:check,skills:readme:check: pass.bun run test: 2,396 passed, 5 failed, all known or load timeouts: DS-2 indelivery.cli.test.ts, and timeouts under full-suite load indelivery.cli.test.tsDS-5,guides.cli.test.tstr-13,protocol/storage/fs/git.test.tsandschema.test.ts. Rerun on their own: the first three files pass apart from DS-2, andschema.test.tspasses 58/58 alone.For the PO: landing and npm commands (not run)
Landing as 8.3.0. semantic-release releases on every push to
main. To ship all three at 8.3.0 together, land the stack as one commit onmain: merge this PR into #697, #697 into #696, and so on down to #693, then squash #693 intomainwith afeat:title. If the PRs land onmainone by one, P1 alone becomes 8.3.0 and the bindings first publish at a later minor (their^8.3.0peer would then also need raising to that version). If anotherfeat:reachesmainfirst, the release is 8.4.0: raise the peer floors in this PR to^8.4.0before landing.Before landing (7.x). Merge #698 first (7.x branch). Today 7.x publishes both bindings with
--tag latest, so the next 7.x release would takelatestback from 8.3.0. #698 moves them tolatest-7.npm commands, run by the PO with an npm owner login, before the stack lands:
latestmoves to 8.3.0 by itself when the release publishes; no command is needed for it. Check afterwards:npm view @decocms/tanstack dist-tags # { latest: '8.3.0', 'latest-7': '7.79.x' } npm view @decocms/nextjs dist-tagsOther things to know:
release.yml), not a branch, somainshould be accepted. If either package's trusted publisher is tied to a GitHub environment, add it formainbefore landing, or its publish fails while the other nine succeed.sync-versions.mjsrefuses a floor above the release.npm publishprints "repository.url was normalized" for every package, as it already does today. It's harmless.https://claude.ai/code/session_01WNwbSEePYNcY5YCgqZURig
Main refresh (2026-10-17,
6ce49dcf)73b9b98dinto this branch (normal merge, no conflicts), then merged up the stack to M2 feat(migrator): invoke as server functions, app blocks as client code, the page setup, and stubs for v7 runtime #707.5131a3c1):bun run check,bun run build,skills:check,skills:readme:checkpass.bun run test(2 GB memory cap): 122 files pass, 1 skipped; 2,745 tests pass, 95 skipped, 0 fail. DS-2 now passes (fixed on main by test(conformance): DS-2 allows the discard's unstage, still bans commits and remote git #709); no timeouts this run.🤖 Generated with Claude Code
https://claude.ai/code/session_016ZsmzpZ2zahRBoATBb2tBu