Skip to content

feat!: open-source ready — configurable, design system opt-in (0.5.0) - #1

Merged
Gabriel (gabrielstuff) merged 1 commit into
mainfrom
feat/open-source-ready
Oct 6, 2026
Merged

Gabriel (gabrielstuff) merged 1 commit into
mainfrom
feat/open-source-ready

Conversation

@gabrielstuff

@gabrielstuff Gabriel (gabrielstuff) commented Oct 6, 2026 •

Copy link
Copy Markdown
Member

Makes the harness usable on any Nuxt 4 app and removes everything specific to our own codebase.

What changes for users

  • Works with no configuration. A plain Nuxt 4.6 app (default Tailwind colors, no i18n, no Nuxt UI) passes fast and full. Verified on a fresh nuxt@4.6.0 install with @nuxt/eslint: nuxt typecheck, type-aware ESLint and the layer rules all report correctly.
  • Design system is opt-in and ships no tokens. no-hardcoded-color, no-off-palette-color-class and no-nested-border-box only run with designSystem in nuxt-harness.config.mjs. The allowed palettes come from the app (designSystem.palettes), and a tokens package can export the preset.
  • Config file read by every command and passed to harness(options): srcDir, i18n (auto-detected from @nuxtjs/i18n), authComposables (defaults cover nuxt-auth-utils, sidebase, supabase), dataComposables, allowServerImportsInApp.
  • Nuxt layouts: layers/<name>/…, and srcDir: '.' for apps that kept the Nuxt 3 layout. Pages accept <LazyOrcX>, <ShopOrcCart> and kebab-case names.
  • full runs scripts with the app's package manager (bun/pnpm/yarn/npm) and finds vitest.config.{ts,mts,js,mjs}. Fixed a silent "0 files" run when git ls-files overflowed its buffer (unignored node_modules).

Open-source cleanup

  • All messages and docs are in English, with neutral examples (products, users). Removed in-house helpers (useApiQuery, readJsonBody, useEmojiUrl, evlog, CDN), the French doc links, and Worker/Cloudflare wording.
  • test/docs.test.ts lints every example in gold-standards.md and architecture.md, so the docs can't teach code that breaks the rules. The old Presenter example used text-gray-900, which the palette rule banned.
  • Added examples/basic (CI runs the packed tarball on it), CONTRIBUTING, CHANGELOG, SECURITY (GitHub private reporting), issue and PR templates, .editorconfig, a Node 22/24 matrix, SHA-pinned actions, and npm metadata.

Breaking (0.5.0)

  • Design-system rules are off unless configured.
  • navigateTo('/…') string paths are only reported when i18n is on.

After merge

Tag v0.5.0: the README install commands point to it.

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.

- nuxt-harness.config.{mjs,js,json} + harness(options): srcDir, i18n,
  authComposables, dataComposables, allowServerImportsInApp, designSystem.
  Defaults pass any plain Nuxt 4 app.
- Design-system rules ship no tokens and only run with `designSystem`;
  allowed Tailwind palettes come from `designSystem.palettes`.
- Nuxt layers and the Nuxt 3 layout (srcDir: '.') are covered;
  no-presenter-in-page understands Lazy/directory-prefixed/kebab names.
- `full` uses the app's package manager and any vitest.config.* extension.
- English messages and docs, neutral examples; docs examples are linted.
- examples/basic, CONTRIBUTING, CHANGELOG, SECURITY, issue/PR templates,
  Node 22/24 CI matrix, pinned actions.

BREAKING CHANGE: design-system rules are off unless configured, and
navigateTo('/…') string paths are only reported when i18n is on.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-06T14:34:54.407410Z d7121f2 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@kora-operator

kora-operator Bot commented Oct 6, 2026

Copy link
Copy Markdown

PR #1 sur nuxt-harness est ouverte — voici l'état de l'assessment :

Statut : à ne pas merger pour l'instant (risque élevé)

  • 🔴 CI : 1 check en échec / 2 en cours — test (22) et test (24) sont encore en cours ; vérifier le résultat des runs Node 22/24, et [code]smith a été skipped (à confirmer si volontaire).
  • ✅ GitGuardian : OK
  • ✅ Mergeable : pas de conflit avec main
  • ⚠️ 0 review d'approuvée — vu l'ampleur (breaking 0.5.0, rules désactivées par défaut, suppression de helpers in-house), ça mérite une review humaine.
  • ⚠️ Chemins sensibles touchés : .github/workflows/ci.yml, package.json, examples/basic/package.json (matrice Node, actions SHA-pinned, dépendances du pack) — à relire avec attention.

Pistes de relecture suggérées :

  1. Attendre que test (22) / test (24) finissent avant tout verdict.
  2. Relire ci.yml (le run du tarball packé sur examples/basic est le cœur de la garantie "no config needed").
  3. Vérifier que la doc d'après-merge (tag v0.5.0) est bien notée quelque part — le README pointe vers le tag, donc merge sans tag = install cassée.

Je ne merge pas sans demande explicite. Tu veux que je plonge dans le diff d'un fichier en particulier (ci.yml, config loader…) ?

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d7121f2055

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "Codex (@codex) review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "Codex (@codex) address that feedback".

},
create(context) {
const composables = new Set(context.options[0]?.composables ?? DEFAULT_COMPOSABLES)
const composables = new Set(context.options[0]?.composables ?? DEFAULT_AUTH_COMPOSABLES)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Track destructured auth state before redirects

When the newly supported useUserSession or useAuth composables are used in their common destructured form—such as const { loggedIn } = useUserSession(); if (!loggedIn.value) await navigateTo('/login')—the rule does not report the gate because VariableDeclarator only records identifier bindings, not properties from an ObjectPattern. This leaves auth redirects in pages and components undetected despite these composables now being enabled by default; record destructured bindings originating from configured auth calls as auth variables too.

Useful? React with 👍 / 👎.

@gabrielstuff
Gabriel (gabrielstuff) merged commit 6d55fe8 into main Oct 6, 2026
6 checks passed
@gabrielstuff
Gabriel (gabrielstuff) deleted the feat/open-source-ready branch October 6, 2026 14:43
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.

1 participant