Skip to content

prettier-plugin-tailwindcss 0.5.14 -> 0.7.4, plus two patch bumps - #241

Merged
Jan0707 merged 2 commits into
mainfrom
prettier-plugin-and-patch-updates
Aug 4, 2026
Merged

prettier-plugin-tailwindcss 0.5.14 -> 0.7.4, plus two patch bumps#241
Jan0707 merged 2 commits into
mainfrom
prettier-plugin-and-patch-updates

Conversation

@Jan0707

@Jan0707 Jan0707 commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Closes the last of the routine dependency drift in nuxt-app. After this, stripe is the only outstanding upgrade — and it is blocked on a colleague's review of the payment path.

Why this exists at all

I answered "is anything besides stripe out of date?" against the npm registry rather than against the plan, and found prettier-plugin-tailwindcss three minors behind, tracked by no phase. A plan that enumerates scopes is not a plan that enumerates packages.

package before after latest
prettier-plugin-tailwindcss 0.5.14 0.7.4 0.8.1 (deliberately skipped)
nodemailer 9.0.3 9.0.4 9.0.4
@types/google.maps 3.65.3 3.65.4 3.65.4

The other 27 declared packages were already at latest.

Why 0.7.4 and not 0.8.1

0.8.0 silently stops @ianvs/prettier-plugin-sort-imports from running on .vue files. The result is not "unsorted" — it is scrambled, with blank lines inserted mid-block:

-import { computed, ref, watch } from 'vue'
+import { computed, watch, ref } from 'vue'
+

Measured by formatting the whole tree under each version and diffing:

version published import order
0.5.14 2024-04-15
0.6.14 2025-07-09
0.7.4 2026-04-27 13:55
0.8.0 2026-04-27 13:57
0.8.1 2026-07-15

Upstream has it: tailwindlabs/prettier-plugin-tailwindcss#465, open since 2026-07-07. The vue parser sits under the plugin's html transform, whose compatible list omits the sort-imports plugin; the js transform already lists it, which is why .ts files are unaffected.

Note the two minutes between 0.7.4 and 0.8.0 — 0.7.4 is not a maintained branch, just the last release before the break. This is a hold, not a home, with the re-attempt condition recorded.

The Renovate rule is load-bearing

The existing "linting and formatting" group matches prettier-** on minors, so without allowedVersions: "<0.8.0" Renovate would arrive with 0.8.1 as a routine bump and undo this.

No source file changes

0.7.4's entire effect on this repo is three cosmetic lines in two files — a stray trailing space, and a deduplicated grid grid. Both are no-ops in the browser, so reformatting them would add review surface for nothing.

The grid grid is worth a look, though. TalkItem.vue puts HTML comments inside a class attribute, so the browser receives <!--, Mobile, order, Reset, for, grid and --> as class names — the duplicate comes from the word "grid" appearing in two comments. Deliberately not fixed here: neither <div> has an intentional grid class, so removing the comments also removes display: grid from both, which needs checking in a browser. Logged in the backlog.

Verification

npm test 91 passing / 10 files · npm run lint 0 errors, 128 warnings (unchanged) · typecheck ratchet steady at 263 · SKIP_PRERENDER_ROUTE_DISCOVERY=true npm run build exit 0 · npm ci reproduces all three intended versions.

None of those gates can see a formatter change. What verified this upgrade was the tree-diff comparison above; the gate run covers the two patch bumps. Saying "all gates green" on a formatting PR would sound like evidence without being any.

Also disclosed in the plan: my first version comparison was discarded. Run on a file copied outside the project with --no-config, it let the plugin resolve a different Tailwind config, so its class-order output described nothing real — including one "byte-identical" claim that was wrong. The import-order finding survived because plugin chaining is config-independent.

Three things go to the backlog, not into this PR

  1. ⚠️ nuxt-app is 89 files from Prettier-clean on main, and no CI step checks formatting. Measured as Prettier-core drift, not plugin drift — the count is identical with the Tailwind plugin removed — dating to Phase 2's prettier 3.2.5 → 3.9.6. Wants its own PR plus a --check gate, after stripe, or an 89-file reformat will collide with that diff.
  2. ⚠️ TalkItem.vue's class-attribute comments, per above.
  3. prettier-plugin-tailwindcss 0.8.x, once upstream #465 lands.

🤖 Generated with Claude Code

https://claude.ai/code/session_01JkKMceYAzAYLrSyC42FWTf

Jan0707 and others added 2 commits August 4, 2026 14:01
A registry sweep found this plugin three minors behind, tracked by no phase
of the upgrade plan. It goes to 0.7.4 rather than the latest 0.8.1 because
0.8.0 stops @ianvs/prettier-plugin-sort-imports from running on .vue files
and leaves import blocks scrambled — upstream issue #465, still open. The
js transform lists the sort plugin as compatible; the html transform, which
owns the vue parser, does not.

Established by formatting the whole tree under 0.5.14, 0.6.14, 0.7.4, 0.8.0
and 0.8.1 and diffing the results. 0.7.4's only effect here is three
cosmetic lines in two files, so no source file changes.

The Renovate rule is load-bearing: the existing "linting and formatting"
group matches prettier-** on minors, so without it 0.8.1 would arrive as a
routine bump and undo this.

nodemailer 9.0.4 and @types/google.maps 3.65.4 ride along. Both were
already inside their declared ^ ranges, so this is lockfile-only.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JkKMceYAzAYLrSyC42FWTf
Adds the package-by-package sweep, the version comparison that ruled out
0.8.x, and the re-attempt condition.

Three findings go to the backlog rather than into the change:

- nuxt-app is 89 files from Prettier-clean on main, all of it from
  Prettier itself (the count is identical with the Tailwind plugin
  removed), dating to Phase 2's 3.2.5 -> 3.9.6. No CI step checks
  formatting, which is why it went unnoticed. Wants its own PR plus a
  --check gate, after stripe.
- TalkItem.vue puts HTML comments inside a class attribute, so their words
  are served as class names. Not fixed here: removing them also removes an
  accidental display:grid from two divs, which needs visual verification.
- prettier-plugin-tailwindcss 0.8.x, once upstream #465 lands.

Also records that the first version comparison was discarded — run on a
copy outside the project, it let the plugin resolve a different Tailwind
config, so its class-order output described nothing real.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JkKMceYAzAYLrSyC42FWTf
Copilot AI lite review requested due to automatic review settings August 4, 2026 12:03
@vercel

vercel Bot commented Aug 4, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
programmierbar-website Ready Ready Preview Aug 4, 2026 12:03pm

Request Review

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Pull request overview

This PR updates Nuxt app tooling dependencies (primarily prettier-plugin-tailwindcss) while documenting the rationale and adding a Renovate guardrail to prevent accidental upgrades into a known-bad 0.8.x series that breaks .vue import sorting.

Changes:

  • Bump prettier-plugin-tailwindcss to ^0.7.4 (avoiding 0.8.x due to the documented upstream compatibility issue).
  • Patch-bump nodemailer and @types/google.maps via lockfile updates.
  • Document the registry sweep findings in the dependency upgrade plan and add a Renovate allowedVersions: "<0.8.0" rule for prettier-plugin-tailwindcss.

Reviewed changes

Copilot reviewed 3 out of 4 changed files in this pull request and generated 1 comment.

File Description
nuxt-app/package.json Updates the Tailwind Prettier plugin version range to ^0.7.4.
nuxt-app/package-lock.json Locks prettier-plugin-tailwindcss to 0.7.4 and applies patch bumps for nodemailer and @types/google.maps.
docs/dependency-upgrade-plan.md Adds a new write-up section documenting the registry sweep and the formatter version hold rationale.
.github/renovate.json Adds an allowedVersions rule to prevent Renovate from proposing prettier-plugin-tailwindcss 0.8.x.
Files not reviewed (1)
  • nuxt-app/package-lock.json: Generated file

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +1434 to +1435
Asked whether anything besides `stripe` was still behind, and answered against the npm registry
rather than against this document. **Four things were, and one of them appeared in no phase at all.**

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

You were right, and it was my error. Fixed in #242 (58214ec), since that PR already touches this file.

The sentence meant the four packages that needed a decisionstripe, isomorphic-dompurify, typescript, prettier-plugin-tailwindcss — while the table also lists @types/google.maps and nodemailer, which were pure lockfile drift already inside their declared ^ ranges. That distinction was in my head and not on the page. Now reads:

Six were: four needing a decision, and two that were only lockfile drift. One of the four appeared in no phase at all.

@Jan0707
Jan0707 merged commit 859a749 into main Aug 4, 2026
6 checks passed
@Jan0707
Jan0707 deleted the prettier-plugin-and-patch-updates branch August 4, 2026 12:22
Jan0707 added a commit that referenced this pull request Aug 4, 2026
Copilot caught a real inconsistency on #241: the sentence said four
packages were behind while the table below it listed six. Four needed a
decision; two were lockfile drift already inside their declared ranges.
Reworded so the text and the table agree.

Also logs a reviewer finding from #242 that is out of scope there:
types/items.ts types Deepgram's utterances, words and speakers as
single-element tuples rather than arrays. Pre-existing and untouched by the
reformat, and harmless today because the only consumer calls .forEach.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JkKMceYAzAYLrSyC42FWTf
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