Skip to content

feat: add nuxt-content-tags - #1574

Open
poliha wants to merge 3 commits into
nuxt:mainfrom
poliha:module/nuxt-content-tags
Open

feat: add nuxt-content-tags#1574
poliha wants to merge 3 commits into
nuxt:mainfrom
poliha:module/nuxt-content-tags

Conversation

@poliha

@poliha poliha commented Aug 9, 2026

Copy link
Copy Markdown

Adds nuxt-content-tags to the modules listing.

WordPress-like tagging for Nuxt Content: tag pages, related tags via co-occurrence, and article counts, all server-rendered. Ships headless components and a Nuxt UI variant, auto-detecting which to use, plus a useTags composable for sites that render tags themselves.

Generated with pnpm sync nuxt-content-tags poliha/nuxt-content-tags, then adjusted:

  • category: Devtools to CMS, matching @nuxt/content and other content modules
  • type: 3rd-party to community (individually maintained, not a company integration)
  • maintainers[0].name: GitHub login to display name
  • learn_more: filled in, and the empty icon key dropped

Tested against Nuxt 3 and Nuxt 4 in CI.

@coderabbitai

coderabbitai Bot commented Aug 9, 2026

Copy link
Copy Markdown

Review Change Stack

📝 Walkthrough

Walkthrough

Added a catalog entry for nuxt-content-tags with module links, maintainer, classification, and Nuxt compatibility metadata. Added Bluesky profile metadata to nuxt-auto-form and nuxt-open-fetch. Updated vitalizer to require Nuxt 4.0.0 or later.

Estimated code review effort: 1 (Trivial) | ~3 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the primary change: adding nuxt-content-tags to the Nuxt modules listing.
Description check ✅ Passed The description directly explains the nuxt-content-tags addition and its metadata updates.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai 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.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@modules/vitalizer.yml`:
- Line 17: Update the Nuxt version constraint in the modules/vitalizer.yml entry
from Nuxt 4-only compatibility back to >=3.0.0, preserving nuxt-vitalizer
support for Nuxt 3.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: d71a1f46-e386-4bcc-b188-2cb7de347af4

📥 Commits

Reviewing files that changed from the base of the PR and between 002e450 and 1deb8ac.

📒 Files selected for processing (4)
  • modules/nuxt-auto-form.yml
  • modules/nuxt-content-tags.yml
  • modules/nuxt-open-fetch.yml
  • modules/vitalizer.yml
🚧 Files skipped from review as they are similar to previous changes (1)
  • modules/nuxt-content-tags.yml

Comment thread modules/vitalizer.yml
avatar: https://avatars.githubusercontent.com/johannschopplich?v=4
compatibility:
nuxt: '>=3.0.0'
nuxt: '>=4.0.0'

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

rg -n -C 6 'fetchModuleJson|compatibility\.nuxt|mergeCompatibilityRanges|mod\.compatibility\.nuxt' lib/modules.ts

rg -n -C 5 '^(npm|compatibility):|nuxt:|vitalizer' modules/vitalizer.yml

npm_name="$(sed -nE 's/^[[:space:]]*npm:[[:space:]]*["'\'']?([^"'\'']+)["'\'']?[[:space:]]*$/\1/p' modules/vitalizer.yml | head -n1)"
test -n "$npm_name"

curl -fsSL "https://registry.npmjs.org/${npm_name}/latest" \
  | jq '{name, version, engines, peerDependencies, compatibility}'

Repository: nuxt/modules

Length of output: 3197


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "## Git diff stat and relevant lines"
git diff --stat || true
git diff -- modules/vitalizer.yml | sed -n '1,120p' || true
sed -n '1,80p' modules/vitalizer.yml

echo "## Search vitalizer occurrences"
rg -n -C 3 'vitalizer|nuxt-vitalizer|Nuxt 3|Nuxt 4|'nuxt'|\*compatibility' .

echo "## Package metadata candidates"
npm_name="$(sed -nE 's/^[[:space:]]*npm:[[:space:]]*["'"'"']?([^"'"'"']+)["'"'"']?[[:space:]]*$/\1/p' modules/vitalizer.yml | head -n1)"
echo "npm_name=$npm_name"
printf '\n--- npm latest ---\n' || true
curl -fsSL "https://registry.npmjs.org/${npm_name}/latest" | jq '{name, version, description, engines, peerDependencies, compatibility}' || true
printf '\n--- npm compatibility metadata for recent versions ---\n' || true
node - <<'JS'
const fetch = (...args) => import('node:de').then((m)=>m.default.fetch(...args));
(async () => {
  const metaUrl = `https://registry.npmjs.org/${"nuxt-vitalizer"}`;
  const res = await fetch(metaUrl);
  const body = await res.json();
  console.log('versions:', Object.keys(body.versions || {}).slice(-20));
  const versions = body.versions || {};
  for (const [v, p] of Object.entries(versions).slice(-30)) {
    if (p.compatibility || p.engines || p.peerDependencies || p.dependencies?.nuxt || p.devDependencies?.nuxt) {
      console.log(`${v}: compat=${JSON.stringify(p.compatibility)}, engine=${JSON.stringify(p.engines)}, peer=${JSON.stringify(p.peerDependencies)}, deps=${JSON.stringify({'nuxt': p.dependencies?.nuxt, '`@nuxt/core`': p.dependencies?.['`@nuxt/core`']})}`);
    }
  }
})().catch(e => { console.error(e); process.exit(1); });
JS

echo "## Module metadata parsing for vitrifier"
sed -n '1,340p' lib/modules.ts
sed -n '1,260p' lib/utils.ts

Repository: nuxt/modules

Length of output: 50369


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo "## Repository files around modules"
git ls-files | rg '(^modules/|lib/modules|README|package')

Repository: nuxt/modules

Length of output: 238


🌐 Web query:

johannschopplich nuxt-vitalizer README Nuxt 4 support compatibility Nuxt 3

💡 Result:

The nuxt-vitalizer module by Johann Schopplich is compatible with Nuxt 4, having been explicitly upgraded to support the version in August 2025 [1]. It remains fully compatible with Nuxt 3 as well [2][3]. However, users migrating from Nuxt 3 to Nuxt 4 have reported a regression regarding Flash of Unstyled Content (FOUC) [4]. This issue arises because Nuxt 4 handles CSS loading and render-blocking differently than Nuxt 3, which can cause styles to be applied later than expected [4]. In response to this, a new option, enforceRenderBlockingCSS, was introduced to the module to help prevent FOUC in Nuxt 4 environments [4]. If you are experiencing FOUC issues after upgrading to Nuxt 4, you may need to enable this configuration option [4].

Citations:


Revert the Nuxt 4-only compatibility change.

nuxt-vitalizer still supports Nuxt 3 and does not drop Nuxt 3 compatibility. The modules/vitalizer.yml entry should remain compatible with Nuxt >=3.0.0, or this should be coordinated with an actual breaking upstream release and package metadata update.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@modules/vitalizer.yml` at line 17, Update the Nuxt version constraint in the
modules/vitalizer.yml entry from Nuxt 4-only compatibility back to >=3.0.0,
preserving nuxt-vitalizer support for Nuxt 3.

@poliha

poliha commented Aug 10, 2026

Copy link
Copy Markdown
Author

Correcting my own PR description: I wrote that type should be community because the module is individually maintained rather than a company integration. That was wrong. lib/modules.ts derives type from the repo owner (nuxt-community/, nuxt-modules/, nuxt-content/ give community; nuxt/ gives official; everything else 3rd-party), so 3rd-party is correct here and autofix was right to restore it. Same for icon: '', which I should not have removed.

The autofix commit also refreshed three unrelated entries (nuxt-auto-form, nuxt-open-fetch, vitalizer) from upstream drift. Happy to drop those from the branch if you would rather keep this PR to a single module.

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