Skip to content

Bump react-resizable-panels to v4 and zod to v4#781

Open
Doezer wants to merge 1 commit into
release/1.4.0from
deps/react-resizable-panels-zod-v4
Open

Bump react-resizable-panels to v4 and zod to v4#781
Doezer wants to merge 1 commit into
release/1.4.0from
deps/react-resizable-panels-zod-v4

Conversation

@Doezer

@Doezer Doezer commented Jul 7, 2026

Copy link
Copy Markdown
Owner

Description

Combines the Dependabot bumps for react-resizable-panels (2.x → 4.x, #778) and zod (v3 → v4, #777) into a single PR, since the zod v4 migration required touching @hookform/resolvers as well and the two changes overlap in the same form-handling code paths.

  • react-resizable-panels v4: migrated PanelGroup/PanelResizeHandle to Group/Separator, direction prop to orientation, and updated the corresponding data-panel-group-direction/data-panel-resize-handle-* attribute selectors in client/src/components/ui/resizable.tsx.
  • zod v4: renamed ZodError.errors to .issues across server/routes.ts, server/routes/import.ts, server/config.ts, server/config-loader.ts.
  • @hookform/resolvers bumped from v3 to v5.4.0 (not v4): v4.1.3 satisfies the type surface but silently fails to detect zod v4 validation errors at runtime (its internal duck-typing check assumes ZodError.errors, which no longer exists), causing form validation to break silently. v5.4.0 was verified to fix the actual runtime behavior, confirmed via the previously-failing SetupPage test.
  • Added a fully parameterized asZodType<T>(schema): z.ZodType<T, T> cast in client/src/lib/utils.ts so drizzle-zod-generated schemas satisfy the resolver's FieldValues type constraint (the single-type-param version left Input as unknown, which v5's stricter resolver typing rejects).

Fixes #778
Fixes #777

Type of change

  • Bug fix (non-breaking change which fixes an issue)

Checklist

  • My code follows the style guidelines of this project
  • I have performed a self-review of my own code
  • New and existing unit tests pass locally with my changes (1764 passed, 0 errors)
  • npm run check and npm run build pass locally

Migrates PanelGroup/PanelResizeHandle to Group/Separator with the
orientation prop, updates ZodError.errors references to .issues, and
bumps @hookform/resolvers to v5.4.0 (v4.1.3 typechecks but silently
fails to detect zod v4 validation errors at runtime). Adds a fully
parameterized asZodType<T> cast so drizzle-zod schemas satisfy the
resolver's FieldValues constraint.

Fixes #778, Fixes #777
@codecov

codecov Bot commented Jul 7, 2026

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 43.47826% with 13 lines in your changes missing coverage. Please review.
✅ All tests successful. No failed tests found.

Files with missing lines Patch % Lines
server/routes.ts 21.42% 11 Missing ⚠️
server/routes/import.ts 66.66% 2 Missing ⚠️

📢 Thoughts on this report? Let us know!

@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: ea33e2aff6

ℹ️ 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 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 address that feedback".

<ResizablePrimitive.Separator
className={cn(
"relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 data-[panel-group-direction=vertical]:h-px data-[panel-group-direction=vertical]:w-full data-[panel-group-direction=vertical]:after:left-0 data-[panel-group-direction=vertical]:after:h-1 data-[panel-group-direction=vertical]:after:w-full data-[panel-group-direction=vertical]:after:-translate-y-1/2 data-[panel-group-direction=vertical]:after:translate-x-0 [&[data-panel-group-direction=vertical]>div]:rotate-90",
"relative flex w-px items-center justify-center bg-border after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring focus-visible:ring-offset-1 aria-[orientation=vertical]:h-px aria-[orientation=vertical]:w-full aria-[orientation=vertical]:after:left-0 aria-[orientation=vertical]:after:h-1 aria-[orientation=vertical]:after:w-full aria-[orientation=vertical]:after:-translate-y-1/2 aria-[orientation=vertical]:after:translate-x-0 [&[aria-orientation=vertical]>div]:rotate-90",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Style the vertical separator as a vertical handle

When ResizablePanelGroup is used with the default/horizontal orientation, react-resizable-panels v4 renders the splitter itself with aria-orientation="vertical". This selector now applies the horizontal-line styles (h-px w-full and rotated grip) to that state, so normal side-by-side split panes get a full-width horizontal handle instead of the previous 1px vertical divider; the horizontal-line styles should target aria-orientation="horizontal" instead.

Useful? React with 👍 / 👎.

@sonarqubecloud

sonarqubecloud Bot commented Jul 7, 2026

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
11.8% Duplication on New Code (required ≤ 3%)

See analysis details on SonarQube Cloud

@gemini-code-assist

Copy link
Copy Markdown
Contributor

Warning

Gemini encountered an error creating the review. You can try again by commenting /gemini review.

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