Skip to content

chore(sync): record two upstream infrastructure commits as not applicable - #598

Merged
IgorShevchik merged 1 commit into
mainfrom
sync/nuxt-68cc4eb4
Sep 17, 2026
Merged

IgorShevchik merged 1 commit into
mainfrom
sync/nuxt-68cc4eb4

Conversation

@IgorShevchik

Copy link
Copy Markdown
Collaborator

Records nuxt/ui@68cc4eb4 and nuxt/ui@b2cb53f8 as n/a. They are contiguous in upstream's history, so they share a PR per .sync/PORTING.md §6 step 4b.

Journals: 68cc4eb4…md · b2cb53f8…md


68cc4eb4 — cancel vercel previews of other release branches

Rewrites scripts/vercel.sh, Vercel's ignored build step hook:

-if [[ "$VERCEL_GIT_COMMIT_REF" == "v2" || "$VERCEL_GIT_COMMIT_REF" == "v3"  ]] ; then
+if [[ "$VERCEL_ENV" != "production" && "$VERCEL_GIT_COMMIT_REF" =~ ^v[0-9]+$ ]] ; then

Each release branch is the production branch of its own Vercel project, so it
should not also build as a preview of another. Same v5 groundwork as 2aa1702a
(#596).

Why it does not apply

  • scripts/vercel.sh does not exist. scripts/ holds
    indistinguishable-snapshots.mjs, lib, regen-indistinguishable-baseline.mjs,
    sync-skill-manifest.mjs.
  • There is no Vercel deployment. The docs ship through deploy.yml —
    Deploy to Pages 📰 — to GitHub Pages, which has no per-branch preview projects
    and no ignored-build-step hook.
  • There are no v<N> branches for the new pattern to match.

The three vercel mentions in the tree, and why none is this — a grep does
hit, so worth naming them: docs/modules/md-rewrite.ts is guarded by
!nitro.options.preset.includes('vercel') and dormant under the Pages preset;
docs/app/composables/useAnalytics.ts:1 is a commented-out @vercel/analytics
import; docs/content/templates.yml:19 is a "Deploy to Vercel" button URL in the
templates listing. None reads VERCEL_ENV or VERCEL_GIT_COMMIT_REF, none is
invoked by a build.


b2cb53f8 — replace playground job in module workflow

Swaps the playground job in .github/workflows/module.yml for a consumer job.
The old one installed the pkg.pr.new build into playgrounds/nuxt and typechecked;
the new one copies test/fixtures/consumer/{full,minimal} to $RUNNER_TEMP —
outside the checkout, so the root node_modules and workspace cannot leak into
resolution — installs with no lockfile, then prepares, typechecks and builds,
with fail-fast: false. Ten new files carry the fixtures, and the playground's
typescript.tsConfig.paths workaround goes with them.

Why it does not apply

  • No .github/workflows/module.yml. The workflows here are ci, deploy,
    npm-publish, pr-title, release-please, release-watchdog, smoke.
  • No test/fixtures/, so none of the ten added files has a counterpart.
  • The module is tested differently. test:module runs
    vitest run --config vitest.module.config.ts over test/module/
    (fixture/ + module-setup.spec.ts) as an ordinary ci.yml gate step, not as a
    separate workflow against a published preview. There is no pkg.pr.new publish
    here for such a job to consume.
  • The removal half does not apply either — playgrounds/nuxt/nuxt.config.ts
    has no typescript.tsConfig.paths block, because the CI install that workaround
    existed for never happens here.

Worth noting

The idea behind the new job — resolve the published package from outside the
workspace, with no lockfile, to catch a missing optional peer — is a real gap
test:module does not cover: it runs against the source tree inside the
workspace. That is a possible improvement to this fork's own testing rather than a
port of this commit, and it is written into the journal so the thought is not lost
with the n/a.


Gate

dev:prepare · lint · typecheck · build · test:coverage (353 files, 8067
passed) · test:module — green, first full run on main under pnpm 12.4.2.

.sync/dep-parity.json refreshed; the diff is the cursor line alone.

Cursor advances 61b6d53f → 68cc4eb4 → b2cb53f8, and the 61b6d53f entry is
reconciled with #597 / 3ef9979b.

Still queued: 7c4c6e35 — fix(DashboardNavbar): render title only when defined. That one is a real bug this fork shares (DashboardNavbar.vue:109
renders an unguarded <h1 data-slot="title">), and it ports next.

🤖 Generated with Claude Code

https://claude.ai/code/session_01JS8ypVfQSFzYVZzkTHhURb


Generated by Claude Code

…able

Both are contiguous in upstream's history, so they share a PR per §6 step 4b.

nuxt/ui@68cc4eb — `chore(scripts): cancel vercel previews of other release
branches`. Rewrites `scripts/vercel.sh`, Vercel's ignored-build-step hook, so the
hard-coded `v2`/`v3` list becomes `^v[0-9]+$` and the check also requires a
preview build: each release branch is the production branch of its own Vercel
project. `scripts/vercel.sh` does not exist here — `scripts/` holds
`indistinguishable-snapshots.mjs`, `lib`, `regen-indistinguishable-baseline.mjs`
and `sync-skill-manifest.mjs` — there is no Vercel deployment (the docs ship to
GitHub Pages through `deploy.yml`), and there are no `v<N>` branches for the new
pattern to match. The three `vercel` mentions in the tree are a dormant
`md-rewrite.ts` guarded on the Vercel nitro preset, a commented-out
`@vercel/analytics` import, and a "Deploy to Vercel" button URL in the templates
listing; none reads `VERCEL_ENV` or `VERCEL_GIT_COMMIT_REF`.

nuxt/ui@b2cb53f — `chore(github): replace playground job in module workflow`.
Swaps the `playground` job in `.github/workflows/module.yml` for a `consumer` job
that copies `test/fixtures/consumer/{full,minimal}` to `$RUNNER_TEMP`, installs
the pkg.pr.new build with no lockfile, then prepares, typechecks and builds.
There is no `module.yml` here and no `test/fixtures/`; this fork tests the module
with `test:module` (`vitest run --config vitest.module.config.ts` over
`test/module/`) as an ordinary `ci.yml` gate step, and publishes no preview build
for such a job to consume. The removal half does not apply either:
`playgrounds/nuxt/nuxt.config.ts` has no `typescript.tsConfig.paths` block,
because the CI install that workaround existed for never happens here.

The idea behind that new job — resolve the published package from outside the
workspace, with no lockfile, to catch a missing optional peer — is a real gap
`test:module` does not cover, since it runs against the source tree inside the
workspace. Recorded in the journal as a possible improvement to this fork's own
testing rather than as a port.

Also reconciles the `61b6d53f` entry with #597 / 3ef9979.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JS8ypVfQSFzYVZzkTHhURb
@IgorShevchik
IgorShevchik merged commit 66a94cb into main Sep 17, 2026
2 checks passed
@IgorShevchik
IgorShevchik deleted the sync/nuxt-68cc4eb4 branch September 17, 2026 10:46
IgorShevchik added a commit that referenced this pull request Sep 17, 2026
#599)

`DashboardNavbar` rendered its `<h1 data-slot="title">` unconditionally, so with
no `title` prop and no `title` slot the markup still carried an empty heading —
dead markup, and a heading with no accessible name in the document outline.

Ours at `DashboardNavbar.vue:109` was line-for-line upstream's pre-image modulo
the `ui` → `b24ui` rename, so the guard transfers directly. Three things were
checked rather than assumed: `slots` is already in scope (`defineSlots` at line
69, and `!!slots.default` is used ten lines below, so the idiom is not new);
`title` has no default, since `withDefaults` sets only `toggle` and `toggleSide`;
and the guard reads `props.title` rather than the raw `defineProps` result,
because `useComponentProps` is what resolves a `title` supplied through
`<B24Theme :props>` or `app.config` — which is also what
`bitrix24-ui/no-bare-prop-refs` requires.

24 snapshots updated. Every changed line was classified before accepting them,
because `test:update` rewrites the whole suite and could absorb unrelated drift:
20 are an empty `<h1>` becoming `<!--v-if-->`, 2 the same next to a trailing
slot, 2 the same next to a leading slot. Nothing else moved. Of the 15 cases,
exactly two still render the heading — `with title` and `with title slot`.

Both halves of `props.title || !!slots.title` are independently covered:
replacing it with `!!slots.title` fails `renders with title`, replacing it with
`props.title` fails `renders with title slot`, and removing it fails the new test
plus 24 snapshots.

Also reconciles the `68cc4eb4` and `b2cb53f8` entries with #598 / 66a94cb.


Claude-Session: https://claude.ai/code/session_01JS8ypVfQSFzYVZzkTHhURb

Co-authored-by: Shevchik Igor <noreply@anthropic.com>
IgorShevchik added a commit that referenced this pull request Sep 18, 2026
A follow-up to b2cb53f8 that fixes the consumer job added two commits earlier:
`@nuxt/ui: "latest"` is dropped from both fixtures, because with the package
declared pnpm resolves the published release first and satisfies the optional
peers from its dependency tree — so the pkg.pr.new build the job exists to test
was never the one whose peers were checked. Two `@tiptap/*` entries go for the
same reason.

`.github/workflows/module.yml` and `test/fixtures/` do not exist here; both were
recorded as absent when b2cb53f8 was processed (#598). This fork tests the module
through `test:module` as an ordinary `ci.yml` step, against the source tree inside
the workspace rather than a published preview build.

The finding from that journal still stands and is sharper now. It recorded the
idea behind the job — resolve the published package from outside the workspace,
with no lockfile, to catch a missing optional peer — as a real gap `test:module`
does not cover. This commit is the evidence that the gap is easy to leave open by
accident even after building the job for it: upstream wrote the fixture, wired the
workflow, and still had it silently testing the wrong package. If that gap is ever
closed here, the fixture must not name the package under test.

Also reconciles the `b6cb8972` entry with #606 / 72c9605.


Claude-Session: https://claude.ai/code/session_01JS8ypVfQSFzYVZzkTHhURb

Co-authored-by: Shevchik Igor <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants