Skip to content
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
569 changes: 390 additions & 179 deletions bun.lock

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion eslint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,8 @@ export default tseslint.config(
'react-refresh': reactRefresh,
},
rules: {
...reactHooks.configs.recommended.rules,
'react-hooks/rules-of-hooks': 'error',
'react-hooks/exhaustive-deps': 'warn',
'react-refresh/only-export-components': [
'warn',
{ allowConstantExport: true },
Expand Down
10 changes: 5 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@
"clsx": "^2.1.1",
"cmdk": "^1.1.1",
"d3": "^7.9.0",
"date-fns": "^3.6.0",
"date-fns": "^4.1.0",
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.

high

The pull request title and description are misleading. While they only mention bumping date-fns, this PR also includes major version upgrades for several other critical dependencies: recharts (v2 to v3), react-resizable-panels (v2 to v4), eslint-plugin-react-hooks (v5 to v7), and wrangler (v3 to v4).

Mixing multiple major upgrades in a single PR makes it difficult to track breaking changes and increases the risk of regressions. It is recommended to update the PR title and description to reflect all major changes, or ideally, split these into separate pull requests to ensure each upgrade is properly validated.

"embla-carousel-react": "^8.5.2",
"framer-motion": "^12.6.2",
"hono": "^4.0.0",
Expand All @@ -129,8 +129,8 @@
"react-error-boundary": "^6.0.0",
"react-hook-form": "^7.54.2",
"react-i18next": "^16.5.0",
"react-resizable-panels": "^2.1.7",
"recharts": "^2.15.1",
"react-resizable-panels": "^4.0.15",
"recharts": "^3.6.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.

P2 Badge Set CartesianGrid axis ids before upgrading Recharts

With this Recharts 3 upgrade, the stats charts that define YAxis yAxisId="left"/"right" but leave CartesianGrid without a matching yAxisId (src/components/StatsScreen.tsx lines 504/508 and 892/899) lose their horizontal grid lines: Recharts 3 now matches grid lines to the explicit x/yAxisId instead of implicitly choosing the first axis, and grids with a non-default axis id no longer render unless the id is provided. Please update those grids (for example yAxisId="left") as part of the dependency bump.

Useful? React with 👍 / 👎.

"sonner": "^2.0.1",
"tailwind-merge": "^3.0.2",
"three": "^0.175.0",
Expand All @@ -157,7 +157,7 @@
"bun-types": "latest",
"eslint": "^9.28.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-react-hooks": "^5.2.0",
"eslint-plugin-react-hooks": "^7.0.1",
"eslint-plugin-react-refresh": "^0.4.19",
"globals": "^16.0.0",
"husky": "^9.0.11",
Expand All @@ -170,7 +170,7 @@
"typescript-eslint": "^8.38.0",
"vite": "^7.2.6",
"vitest": "^2.0.5",
"wrangler": "^3.0.0"
"wrangler": "^4.54.0"
},
"workspaces": {
"packages": [
Expand Down
8 changes: 4 additions & 4 deletions src/components/ui/chart.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -117,7 +117,7 @@ function ChartTooltipContent({
color,
nameKey,
labelKey,
}: ComponentProps<typeof RechartsPrimitive.Tooltip> &
}: Partial<RechartsPrimitive.TooltipContentProps<number, string>> &
ComponentProps<'div'> & {
hideLabel?: boolean
hideIndicator?: boolean
Expand Down Expand Up @@ -175,14 +175,14 @@ function ChartTooltipContent({

return (
<div
key={item.dataKey}
key={String(item.dataKey ?? index)}
className={cn(
'[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5',
indicator === 'dot' && 'items-center'
)}
>
{formatter && item?.value !== undefined && item.name ? (
formatter(item.value, item.name, item, index, item.payload)
formatter(item.value as number, String(item.name), item, index, item.payload)
) : (
<>
{itemConfig?.icon ? (
Expand Down Expand Up @@ -246,7 +246,7 @@ function ChartLegendContent({
verticalAlign = 'bottom',
nameKey,
}: ComponentProps<'div'> &
Pick<RechartsPrimitive.LegendProps, 'payload' | 'verticalAlign'> & {
Pick<RechartsPrimitive.DefaultLegendContentProps, 'payload' | 'verticalAlign'> & {
hideIcon?: boolean
nameKey?: string
}) {
Expand Down
10 changes: 5 additions & 5 deletions src/components/ui/resizable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,9 @@ import { cn } from '@/lib/utils'
function ResizablePanelGroup({
className,
...props
}: ComponentProps<typeof ResizablePrimitive.PanelGroup>) {
}: ComponentProps<typeof ResizablePrimitive.Group>) {
return (
<ResizablePrimitive.PanelGroup
<ResizablePrimitive.Group
data-slot="resizable-panel-group"
className={cn('flex h-full w-full data-[panel-group-direction=vertical]:flex-col', className)}
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.

high

The upgrade to react-resizable-panels v4 introduced breaking changes to data attributes. The data-panel-group-direction attribute has been renamed to data-group-direction. The current Tailwind selector will fail to apply the flex-col class when the direction is vertical.

Suggested change
className={cn('flex h-full w-full data-[panel-group-direction=vertical]:flex-col', className)}
className={cn('flex h-full w-full data-[group-direction=vertical]:flex-col', className)}

{...props}
Expand All @@ -25,11 +25,11 @@ function ResizableHandle({
withHandle,
className,
...props
}: ComponentProps<typeof ResizablePrimitive.PanelResizeHandle> & {
}: ComponentProps<typeof ResizablePrimitive.Separator> & {
withHandle?: boolean
}) {
return (
<ResizablePrimitive.PanelResizeHandle
<ResizablePrimitive.Separator
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 Preserve vertical separator styling after v4 rename

When this wrapper is used with a vertical group, the v4 Separator/Group components no longer emit the old data-panel-group-direction=vertical attribute; v4 exposes orientation via ARIA/data attributes instead. The class list immediately below still keys all vertical sizing/rotation off that old attribute, so vertical separators keep the horizontal w-px sizing and the grip does not rotate. Please migrate these selectors to the v4 attributes (or otherwise pass your own orientation state) along with the component rename.

Useful? React with 👍 / 👎.

data-slot="resizable-handle"
className={cn(
'bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden 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',
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.

high

Similar to the ResizablePanelGroup, the Separator (formerly PanelResizeHandle) now uses data-group-direction instead of data-panel-group-direction in version 4. All occurrences in the className string need to be updated to ensure the handle is styled correctly in vertical layouts.

Suggested change
'bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden 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',
'bg-border focus-visible:ring-ring relative flex w-px items-center justify-center after:absolute after:inset-y-0 after:left-1/2 after:w-1 after:-translate-x-1/2 focus-visible:ring-1 focus-visible:ring-offset-1 focus-visible:outline-hidden data-[group-direction=vertical]:h-px data-[group-direction=vertical]:w-full data-[group-direction=vertical]:after:left-0 data-[group-direction=vertical]:after:h-1 data-[group-direction=vertical]:after:w-full data-[group-direction=vertical]:after:-translate-y-1/2 data-[group-direction=vertical]:after:translate-x-0 [&[data-group-direction=vertical]>div]:rotate-90',

Expand All @@ -42,7 +42,7 @@ function ResizableHandle({
<GripVerticalIcon className="size-2.5" />
</div>
)}
</ResizablePrimitive.PanelResizeHandle>
</ResizablePrimitive.Separator>
)
}

Expand Down
71 changes: 0 additions & 71 deletions src/lib/tauri.ts

This file was deleted.

Loading