Skip to content

Community release checklist

This page summarizes the validation procedure before publishing @vevedh/qform-builder-layer on npm.

Quick local test cycle

The public typecheck script first regenerates .playground/.nuxt with nuxi prepare, then runs vue-tsc with tsconfig.nuxt.json.

PowerShell:

powershell
bun run clean && bun i && bun run typecheck && bun dev

PowerShell 7 uses && so bun dev is not started when type checking fails. Using ; would continue even after a non-zero exit code.

Bash/Zsh:

bash
bun run clean && bun install && bun run typecheck && bun dev

The previous typecheck:nuxt script remains available as a backward-compatible alias.

1. Clean generated files

bash
bun run clean

On Windows, the project also provides:

bash
bun run clean:win

2. Install dependencies

bash
bun install

3. Full validation

bash
bun run layer:assets:check
bun run catalog:check
bun run nested:check
bun run column:check
bun run viewport:check
bun run columns-layout:check
bun run phase1:check
bun run schema-transfer:check
bun run steps:check
bun run validation:check
bun run validation:runtime:check
bun run quasar-advanced:check
bun run quasar-advanced:runtime:check
bun run drop-indicator:check
bun run e2e:static:check
bun run formkit:check
bun run ui:i18n:check
bun run docs:i18n:check
bun run docs:build
bun run typecheck
bun run pack:dry-run

or:

bash
bun run release:doctor

4. Check published content

bash
npm pack --dry-run

Verify that the package does not contain:

txt
.playground
.nuxt
.output
node_modules
PROMPT_CONTEXT.md
patch-memory/PATCH_*.md
*.zip

5. Publication dry-run

bash
bun run npm:publish:dry-run

6. Real publication

bash
npm login
bun run npm:publish

7. Consumer test

Create a temporary Nuxt 4 app and install the package:

bash
bunx nuxi init qform-consumer-test
cd qform-consumer-test
bun add @vevedh/qform-builder-layer

Then add the layer to nuxt.config.ts and test FormBuilder inside <ClientOnly>.

Advanced validation test

  1. open /validation;
  2. select native rules with and without arguments;
  3. enter a valid regex and a pattern rejected as unsafe;
  4. override a field message and verify preview rendering;
  5. compare two fields with the numeric operators;
  6. verify the public multiple_of rule in builder and viewer;
  7. export/import the schema and confirm that no validationRules function is serialized.
bash
bun run validation:check
bun run validation:runtime:check

Advanced Quasar options and visual E2E

  • [ ] Open /quasar-advanced and verify the QEditor, QSelect and QRating panels.
  • [ ] Switch a select from single to multiple and confirm model normalization.
  • [ ] Confirm local select filtering never renders HTML supplied by the schema.
  • [ ] Drag an element between two fields and confirm only one Drop here line is visible.
  • [ ] Run visual scenarios and inspect every difference before updating references.
bash
bun run quasar-advanced:check
bun run quasar-advanced:runtime:check
bun run drop-indicator:check
bun run e2e:static:check
bun run e2e:visual

Accessibility 0.1.16

bash
bun run accessibility:check
bun run release:browser:check

The release is blocked when keyboard workflows, focus restoration, readonly/disabled modes or the WCAG A/AA axe audit fail. Complement automation with keyboard-only, 200% zoom and NVDA review.

0.1.17 industrialization

The release candidate must now pass these boundaries:

bash
bun run industrialization:check
bun run ci:quality
bun run e2e:ci:functional
bun run release:browser:check
bun run pack:artifact

ci:quality builds both the playground and the separate SSR Nuxt host application, checks bundle budgets and inspects the npm manifest. The GitHub Actions matrix repeats these checks on Ubuntu and Windows. Visual comparisons remain on Windows; Linux runs functional workflows and axe auditing.

Before publishing, review:

  • .artifacts/bundle-budget.json;
  • .artifacts/package-manifest.json;
  • the .tgz SHA-256 digest;
  • all twelve Playwright baselines;
  • reports from both GitHub Actions runners.

Playwright isolation 0.1.18

  • [ ] bun run e2e:server:check passes.
  • [ ] bun run ci:quality passes without depending on screenshots.
  • [ ] Missing screenshots are initialized with bun run e2e:visual:bootstrap.
  • [ ] All 12 PNG files are manually reviewed and committed.
  • [ ] bun run release:browser:check passes without automatic updates.

Repository completeness

  • [ ] bun run workspace:check passes before any other gate.
  • [ ] The directory was initialized from a full archive, not from an overlay alone.
  • [ ] Scripts, tests/e2e, .playground, and tests/host-app are present.

API freeze before the RC

bash
bun run api:contract:check
bun run typecheck:contract
bun run release:candidate:check

Review public-api.manifest.json in the diff. CI must never run api:contract:update. Removing or renaming a prop, event, method, type or subpath blocks the RC.

Automated illustrated guide

bash
bun run docs:screenshots
bun run docs:screenshots:strict
bun run docs:build

Verify that the manifest reports source: playwright, all twelve FR/EN PNG files have been reviewed and no personal data appears in the fixture or images.

QForm Builder — Nuxt 4, Quasar and FormKit layer for dynamic forms.