chore(deps): resolve major Renovate updates, fix Vercel deploys & enable safe auto-merge - #166
Merged
Merged
Conversation
…x Vercel typegen Addresses the backlog of open Renovate major-version PRs and unblocks the failing Vercel deployments that were preventing Renovate auto-merge. Dependency majors: - tailwindcss 3 -> 4 (CSS-first: @import "tailwindcss" + @config in globals.css, @tailwindcss/postcss plugin; existing theme, custom border-3 and class-based dark mode preserved via the retained tailwind.config.ts) - @sanity/image-url 1 -> 2 (SanityImageSource now a root named export) - @vercel/analytics 1 -> 2, @vercel/speed-insights 1 -> 2 - import-in-the-middle 1 -> 3, react-cookie 7 -> 8 Tooling: - pnpm 9 -> 11; move pnpm settings out of package.json (no longer read by pnpm 11) into pnpm-workspace.yaml, approving build scripts via allowBuilds Vercel deploy fix: - Add --force to `sanity schema extract`. The committed src/sanity/schema.json made the prebuild typegen step fail ("already exists, pass --force"), which broke every Vercel `pnpm build` while CI stayed green (CI runs `next build` directly, skipping prebuild). Held back (require a Next 15 -> 16 upgrade, out of scope here): next-sanity v13 (peers: next ^16, sanity ^5||^6) and eslint v10 (needs eslint-config-next 16). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AmhussXpt1fFqT9jEkD5NN
- platformAutomerge so GitHub-native auto-merge lands PRs the moment required checks pass (more reliable than Renovate polling) - auto-merge lockFileMaintenance and pin/digest updates - keep the grouped minor/patch auto-merge; explicitly keep majors manual - enable the dependency dashboard Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AmhussXpt1fFqT9jEkD5NN
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Vercel builds without Corepack, so it ignores the `packageManager` field and runs pnpm 9. pnpm 9 treats pnpm-workspace.yaml as a workspace definition and aborts with "packages field missing or empty" on the settings-only file the pnpm 11 migration added, breaking every deploy. Revert the pnpm 11 bump (restore packageManager pnpm@9.15.9 and the package.json pnpm config, remove pnpm-workspace.yaml). All other dependency migrations and the sanity typegen --force deploy fix remain. pnpm v11 (#154) is held alongside next-sanity v13 and eslint v10; adopt it later by enabling Corepack on Vercel. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AmhussXpt1fFqT9jEkD5NN
A build dependency now requires Node >=22.12, but Vercel was building on Node 20. Vercel doesn't read .nvmrc; declaring engines.node lets it (and other tooling) pick a supported Node major. Matches .nvmrc (24.16.0) and CI (Node 24). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AmhussXpt1fFqT9jEkD5NN
Tailwind v4 reimplemented `divide-x` to put the divider on each child's inline-end (right) except the last, whereas v3 put it on the left of each child except the first. ProjectLink paired the divider with `pl-2 first:pl-0` (left padding), so under v4 the divider hugged the left link with an uneven gap to the right one. Move the padding to the right side (`pr-2 last:pr-0`) so it pairs with v4's divider, restoring the original symmetric spacing. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AmhussXpt1fFqT9jEkD5NN
Tailwind v4 puts utilities in a native `@layer utilities`, and unlayered CSS
beats any layer. The leftover create-next-app `body { background: var(--background) }`
rule in globals.css was unlayered, so under v4 it overrode the body's
`bg-white dark:bg-zinc-900` / `text-zinc-800 dark:text-gray-200` utilities —
making the page follow `prefers-color-scheme` (system) only and ignore the
`.dark` class toggled by ThemeSelector. In v3 the utilities won by specificity.
Move the `body` rule into `@layer base` so the theme utilities win again,
restoring Light/Dark/System switching. Vars and font-family are unchanged.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AmhussXpt1fFqT9jEkD5NN
universal-cookie v8 no longer defaults the cookie path to "/", so the
client-written theme cookie was scoped to the current document path and
was not read back on refresh (and "System" could not clear the "/"-scoped
cookie the middleware sets). Pass { path: "/" } explicitly to setCookie
and removeCookie to restore v4 behavior.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AmhussXpt1fFqT9jEkD5NN
The client CookiesProvider wrote the theme cookie with SameSite=Strict, while the middleware re-stamps it with Next's default SameSite=Lax. Strict cookies are withheld on top-level navigations that don't originate same-site, so the value set on switch could be dropped on the next full page load, and the two writers disagreed on cookie attributes. A theme cookie must be sent for SSR on every top-level navigation, so use Lax to match the middleware. Reverts the earlier redundant explicit path args: defaultSetOptions already supplies path: '/'. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AmhussXpt1fFqT9jEkD5NN
The middleware re-set the theme (and anonymous_id/override) cookies with only maxAge, while the client CookiesProvider writes path/sameSite/secure. Since a cookie's identity is name+path+domain, the two writers overwrote each other's cookie with drifting attributes, contributing to the theme value flaking across a refresh. Stamp the same attributes on both sides (path: '/', sameSite: 'lax', secure). Also fix the maxAge unit: it was 1000x too large (maxAge is seconds, not milliseconds), so "1 year" is 365*60*60*24. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AmhussXpt1fFqT9jEkD5NN
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Clears the backlog of open Renovate PRs, fixes the Vercel deploy failures that were blocking Renovate auto-merge, and hardens
renovate.jsonso safe updates auto-merge going forward.Major dependency updates
@import "tailwindcss"+@configinglobals.css,@tailwindcss/postcssplugin); theme, customborder-3, and class-based dark mode preserved via the retainedtailwind.config.tsSanityImageSourceis now a root named exportDeploy fixes
--forcetosanity schema extract. The committedsrc/sanity/schema.jsonmade theprebuildtypegen step fail (“already exists, pass --force”), breaking every Vercelpnpm buildwhile CI stayed green (CI runsnext builddirectly, skippingprebuild). This was the actual cause of the red checks blocking auto-merge.engines.node: "24.x"(matches.nvmrcand CI). A build dependency now requires Node ≥ 22.12; Vercel was building on Node 20. (Also set Node 24 in Vercel Project Settings.)Renovate auto-merge (
renovate.json)platformAutomergeso GitHub-native auto-merge lands PRs the moment required checks passHeld back
pnpm v11 (chore(deps): update pnpm to v11 #154) — Vercel builds without Corepack, so it runs pnpm 9 and rejects the pnpm-11
pnpm-workspace.yaml. Deferred; restoredpackageManagerpnpm@9.15.9. Adopt later by enabling Corepack on Vercel.next-sanity v13 (fix(deps): update dependency next-sanity to v13 #163) — peers require
next ^16,sanity ^5 || ^6eslint v10 (chore(deps): update dependency eslint to v10 #149) — needs
eslint-config-next16 → Next 16next-sanity v13 and eslint v10 both require a separate Next 15 → 16 upgrade.
Verification
pnpm install --frozen-lockfile,pnpm build,pnpm run lint— all green under pnpm 9 (matching Vercel/CI)Renovate PRs
Auto-close on merge: #151, #157, #159, #160, #161, #164. #165 (grouped minor/patch) rebases onto the deploy fixes and auto-merges. Held: #149, #154, #163.
🤖 Generated with Claude Code