Skip to content

ci: scaffold with the theme layer and build it - #79

Merged
joris-sevenlab merged 3 commits into
mainfrom
ci/scaffold-with-theme
Oct 15, 2026
Merged

joris-sevenlab merged 3 commits into
mainfrom
ci/scaffold-with-theme

Conversation

@joris-sevenlab

@joris-sevenlab joris-sevenlab commented Oct 15, 2026 •

Copy link
Copy Markdown
Collaborator

Why

The CI scaffold job uses template defaults, and nuxt4:battlestack-theme is off by default, so no CI job ever loads the theme layer. Turning it on wouldn't help either: the project would install the published @battlestack/theme from npm, not the PR's version. Dependency bumps to the theme went green without being tested. #76 (@nuxt/kit) is the latest example; I tested it by hand in #77.

What

A new scaffold-theme job:

  1. scaffolds nuxt4-minimal with --features nuxt4:battlestack-theme --skip-install
  2. points @battlestack/theme at the checkout (link:) and installs
  3. runs eslint --fix, which --skip-install otherwise skips
  4. runs nuxi prepare, lint, typecheck and a production nuxt build

No Postgres or Docker: the goal is to prove the layer loads and builds.

Verified locally

  • Every step passes on main. The theme's font shows up in the built CSS, so the layer actually loaded.
  • Negative check: with the theme's @nuxt/kit import broken, both nuxi prepare and the build fail.

Keep this job even if the theme becomes default-on. The main scaffold job would still install the published theme, so only the link: tests the theme in the PR.

To make it blocking, add Scaffold with the theme layer and build it to the required checks in branch protection.

The scaffold job runs on template defaults, where nuxt4:battlestack-theme
is off because the theme is not on npm yet, so no CI job ever loaded the
layer: dependency bumps to @battlestack/theme (e.g. @nuxt/kit in #76) went
green untested. The new job scaffolds nuxt4-minimal with the theme enabled,
links the theme to the checkout, and runs prepare, lint, typecheck and a
production build. Verified locally that it fails when the theme's
nuxt.config.ts is broken.
--skip-install leaves the starter's pnpm-lock.yaml behind, which no longer
matches the manifest the features wrote, and pnpm installs frozen under CI=true.
The CLI's own install passes --no-frozen-lockfile for the same reason.
@battlestack/theme is on npm (1.3.0); the scaffold job skips the layer because
the feature is default-off, and enabling it would test the published package.
@joris-sevenlab
joris-sevenlab merged commit 3172d18 into main Oct 15, 2026
7 checks passed
@joris-sevenlab
joris-sevenlab deleted the ci/scaffold-with-theme branch October 15, 2026 08:58
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