Chore/20251218#382
Conversation
|
|
Warning Rate limit exceeded@SvenVw has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 17 minutes and 46 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (1)
WalkthroughUpdates pnpm from 10.23.0 to 10.26.0 across CI workflows and package manifests; replaces LocalFileStorage with createFsFileStorage in three upload routes; adjusts email component styling/content using Tailwind utilities; and bumps many dependencies in fdm-app and workspace manifests. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes
Possibly related PRs
Suggested reviewers
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning, 1 inconclusive)
✅ Passed checks (1 passed)
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. Comment |
There was a problem hiding this comment.
Actionable comments posted: 0
♻️ Duplicate comments (1)
fdm-app/app/components/blocks/email/welcome.tsx (1)
54-73: Same non-standard Tailwind utilities pattern as invitation.tsx.This file uses the same non-standard fractional values (
w-116.25,my-7.5,my-6.5). Ensure these are validated alongside the invitation.tsx review.
🧹 Nitpick comments (1)
fdm-app/package.json (1)
31-32: Inconsistent version pinning for @react-email/tailwind.
@react-email/tailwindis pinned to exact version2.0.2without a caret (^), while@react-email/componentsuses^1.0.2. If this is intentional (e.g., due to known compatibility issues), consider adding a comment. Otherwise, align the version specifier style.🔎 Suggested change for consistency:
- "@react-email/tailwind": "2.0.2", + "@react-email/tailwind": "^2.0.2",
📜 Review details
Configuration used: Repository UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (1)
pnpm-lock.yamlis excluded by!**/pnpm-lock.yaml
📒 Files selected for processing (18)
.github/workflows/deploy-docs-test.yml(1 hunks).github/workflows/deploy-docs.yml(1 hunks).github/workflows/release.yml(1 hunks).github/workflows/tests.yml(3 hunks).github/workflows/typecheck.yml(1 hunks)fdm-app/app/components/blocks/email/invitation.tsx(1 hunks)fdm-app/app/components/blocks/email/magic-link.tsx(2 hunks)fdm-app/app/components/blocks/email/welcome.tsx(3 hunks)fdm-app/app/routes/farm.$b_id_farm.$calendar.field.$b_id.soil.analysis.new.upload.tsx(2 hunks)fdm-app/app/routes/farm.create.$b_id_farm.$calendar.fields.$b_id.soil.analysis.upload.tsx(2 hunks)fdm-app/app/routes/farm.create.$b_id_farm.$calendar.upload.tsx(2 hunks)fdm-app/package.json(4 hunks)fdm-calculator/package.json(1 hunks)fdm-core/package.json(1 hunks)fdm-data/package.json(1 hunks)fdm-docs/package.json(1 hunks)package.json(1 hunks)pnpm-workspace.yaml(1 hunks)
🧰 Additional context used
🧠 Learnings (18)
📓 Common learnings
Learnt from: SvenVw
Repo: SvenVw/fdm PR: 6
File: fdm-app/vite.config.ts:5-9
Timestamp: 2024-11-25T12:42:32.783Z
Learning: In the `fdm-app` project, SvenVw is preparing for migration to Remix v3 and may include type declarations or configurations for v3 features in advance, such as in `vite.config.ts`.
Learnt from: SvenVw
Repo: SvenVw/fdm PR: 279
File: fdm-app/app/routes/farm.$b_id_farm.$calendar.norms.tsx:277-283
Timestamp: 2025-09-26T08:34:50.413Z
Learning: In the fdm project, fdm-core and fdm-app are updated together as part of a monorepo structure, which eliminates legacy data concerns when new fields like b_isproductive are introduced. Both packages are synchronized, so there's no need for defensive coding against undefined values for newly introduced database fields.
📚 Learning: 2025-09-26T08:34:50.413Z
Learnt from: SvenVw
Repo: SvenVw/fdm PR: 279
File: fdm-app/app/routes/farm.$b_id_farm.$calendar.norms.tsx:277-283
Timestamp: 2025-09-26T08:34:50.413Z
Learning: In the fdm project, fdm-core and fdm-app are updated together as part of a monorepo structure, which eliminates legacy data concerns when new fields like b_isproductive are introduced. Both packages are synchronized, so there's no need for defensive coding against undefined values for newly introduced database fields.
Applied to files:
fdm-core/package.jsonfdm-data/package.jsonfdm-calculator/package.jsonfdm-app/app/routes/farm.create.$b_id_farm.$calendar.upload.tsxfdm-app/app/routes/farm.create.$b_id_farm.$calendar.fields.$b_id.soil.analysis.upload.tsxfdm-app/app/routes/farm.$b_id_farm.$calendar.field.$b_id.soil.analysis.new.upload.tsxfdm-docs/package.jsonfdm-app/package.json
📚 Learning: 2025-08-13T10:33:05.313Z
Learnt from: SvenVw
Repo: SvenVw/fdm PR: 0
File: :0-0
Timestamp: 2025-08-13T10:33:05.313Z
Learning: In the fdm project, fdm-calculator integration for new features like b_lu_variety is handled in separate updates from the core data model changes. When fdm-core functions are updated to support new fields, fdm-calculator can consume these enhanced APIs without requiring changes in the same PR that introduces the core functionality.
Applied to files:
fdm-core/package.jsonfdm-data/package.jsonfdm-calculator/package.jsonfdm-docs/package.json
📚 Learning: 2025-01-31T15:05:14.310Z
Learnt from: SvenVw
Repo: SvenVw/fdm PR: 67
File: fdm-app/app/routes/farm.create.$b_id_farm.fields.$b_id.tsx:601-610
Timestamp: 2025-01-31T15:05:14.310Z
Learning: The `updateField` function in fdm-core has optional parameters after `fdm` and `b_id`. The TypeScript definitions might show 8 required parameters due to a potential version mismatch.
Applied to files:
fdm-core/package.json
📚 Learning: 2025-05-28T07:57:19.217Z
Learnt from: SvenVw
Repo: SvenVw/fdm PR: 147
File: fdm-docs/package.json:39-39
Timestamp: 2025-05-28T07:57:19.217Z
Learning: In pnpm workspaces, the syntax `"typescript": "catalog:"` is valid and correct. It references the version defined in the workspace's catalog section in pnpm-workspace.yaml, allowing consistent dependency versions across packages in a monorepo.
Applied to files:
fdm-data/package.jsonfdm-calculator/package.jsonpnpm-workspace.yamlfdm-app/package.json
📚 Learning: 2025-05-28T07:57:19.217Z
Learnt from: SvenVw
Repo: SvenVw/fdm PR: 147
File: fdm-docs/package.json:39-39
Timestamp: 2025-05-28T07:57:19.217Z
Learning: In pnpm workspaces, the syntax `"typescript": "catalog:"` is valid and correct. It references the version defined in the workspace's catalog section in pnpm-workspace.yaml, allowing consistent dependency versions across packages in a monorepo. The catalog: syntax without a package name is the shorthand for referencing the default catalog.
Applied to files:
fdm-data/package.jsonfdm-calculator/package.jsonpnpm-workspace.yamlfdm-app/package.json
📚 Learning: 2025-01-09T16:03:37.764Z
Learnt from: SvenVw
Repo: SvenVw/fdm PR: 42
File: fdm-app/app/routes/farm/_b_id_farm/layout.tsx:46-95
Timestamp: 2025-01-09T16:03:37.764Z
Learning: A shared layout component `FarmLayoutBase` has been created in `components/custom/farm-layout-base.tsx` to maintain consistency across farm-related pages. The component handles farm selection dropdown, breadcrumb navigation, and provides a common layout structure.
Applied to files:
fdm-app/app/routes/farm.create.$b_id_farm.$calendar.upload.tsxfdm-app/app/routes/farm.create.$b_id_farm.$calendar.fields.$b_id.soil.analysis.upload.tsxfdm-app/app/routes/farm.$b_id_farm.$calendar.field.$b_id.soil.analysis.new.upload.tsx
📚 Learning: 2025-09-25T15:10:59.708Z
Learnt from: SvenVw
Repo: SvenVw/fdm PR: 272
File: fdm-app/app/store/field-fertilizer-form.tsx:45-47
Timestamp: 2025-09-25T15:10:59.708Z
Learning: In the FDM application, Zustand stores with persist middleware using sessionStorage/localStorage don't require SSR hardening guards. The existing store patterns in fdm-app work without typeof window checks or memory storage fallbacks, as evidenced by the changelog store using createJSONStorage(() => localStorage) directly.
Applied to files:
fdm-app/app/routes/farm.create.$b_id_farm.$calendar.upload.tsxfdm-app/app/routes/farm.create.$b_id_farm.$calendar.fields.$b_id.soil.analysis.upload.tsxfdm-app/app/routes/farm.$b_id_farm.$calendar.field.$b_id.soil.analysis.new.upload.tsx
📚 Learning: 2025-12-15T12:19:47.858Z
Learnt from: SvenVw
Repo: SvenVw/fdm PR: 376
File: fdm-app/app/routes/farm.$b_id_farm.$calendar.atlas.elevation.tsx:187-213
Timestamp: 2025-12-15T12:19:47.858Z
Learning: When reviewing code, prefer storing only non-sensitive UI/state data in sessionStorage. For map viewState (e.g., longitude/latitude), ensure it represents non-personal business data and that persistence across sessions is justified, documented, and respects user privacy. If persisting, use a clearly scoped, namespaced key, guard access with try/catch, and avoid syncing with servers or exposing data to third-party scripts. Apply this guideline to all TSX files that manage client-side UI state.
Applied to files:
fdm-app/app/routes/farm.create.$b_id_farm.$calendar.upload.tsxfdm-app/app/components/blocks/email/welcome.tsxfdm-app/app/components/blocks/email/magic-link.tsxfdm-app/app/components/blocks/email/invitation.tsxfdm-app/app/routes/farm.create.$b_id_farm.$calendar.fields.$b_id.soil.analysis.upload.tsxfdm-app/app/routes/farm.$b_id_farm.$calendar.field.$b_id.soil.analysis.new.upload.tsx
📚 Learning: 2024-11-25T12:42:32.783Z
Learnt from: SvenVw
Repo: SvenVw/fdm PR: 6
File: fdm-app/vite.config.ts:5-9
Timestamp: 2024-11-25T12:42:32.783Z
Learning: In the `fdm-app` project, SvenVw is preparing for migration to Remix v3 and may include type declarations or configurations for v3 features in advance, such as in `vite.config.ts`.
Applied to files:
pnpm-workspace.yamlfdm-app/app/routes/farm.create.$b_id_farm.$calendar.fields.$b_id.soil.analysis.upload.tsxfdm-app/package.json
📚 Learning: 2025-11-04T13:46:46.432Z
Learnt from: BoraIneviNMI
Repo: SvenVw/fdm PR: 0
File: :0-0
Timestamp: 2025-11-04T13:46:46.432Z
Learning: In the FDM app, file upload validation uses a two-layer approach: client-side Zod schemas (e.g., in fdm-app/app/components/blocks/soil/form-upload.tsx) provide early user-facing error feedback before upload, while server-side upload handlers enforce the same limits for security.
Applied to files:
fdm-app/app/routes/farm.create.$b_id_farm.$calendar.fields.$b_id.soil.analysis.upload.tsx
📚 Learning: 2024-12-11T12:09:35.540Z
Learnt from: SvenVw
Repo: SvenVw/fdm PR: 20
File: fdm-app/tsconfig.json:8-9
Timestamp: 2024-12-11T12:09:35.540Z
Learning: In the `fdm-app/tsconfig.json` file, the include path `.react-router/types/**/*` refers to a build-time generated directory which is intentionally not included in the repository.
Applied to files:
fdm-app/package.json
📚 Learning: 2025-01-14T16:06:21.832Z
Learnt from: SvenVw
Repo: SvenVw/fdm PR: 45
File: fdm-app/app/routes/farm.$b_id_farm.settings._index.tsx:1-1
Timestamp: 2025-01-14T16:06:21.832Z
Learning: In the fdm project, `redirect` and other routing utilities should be imported from `react-router` instead of `react-router-dom`.
Applied to files:
fdm-app/package.json
📚 Learning: 2025-01-14T16:06:24.294Z
Learnt from: SvenVw
Repo: SvenVw/fdm PR: 45
File: fdm-app/app/routes/farm.$b_id_farm._index.tsx:1-1
Timestamp: 2025-01-14T16:06:24.294Z
Learning: In the fdm-app codebase, the `redirect` function should be imported from `react-router`, not `react-router-dom`.
Applied to files:
fdm-app/package.json
📚 Learning: 2025-04-18T13:49:17.029Z
Learnt from: SvenVw
Repo: SvenVw/fdm PR: 124
File: fdm-app/app/components/custom/farm/farm-title.tsx:3-3
Timestamp: 2025-04-18T13:49:17.029Z
Learning: In the fdm project, NavLink and other routing components can be imported from either "react-router" or "react-router-dom" as react-router-dom is included in react-router.
Applied to files:
fdm-app/package.json
📚 Learning: 2025-10-15T08:11:10.649Z
Learnt from: SvenVw
Repo: SvenVw/fdm PR: 299
File: fdm-docs/package.json:22-35
Timestamp: 2025-10-15T08:11:10.649Z
Learning: Docusaurus versions 3.7 and later support both React 18 and React 19. The peerDependencies are specified as "react": "^18.0.0 || ^19.0.0" and "react-dom": "^18.0.0 || ^19.0.0".
Applied to files:
fdm-app/package.json
📚 Learning: 2025-05-09T14:41:43.484Z
Learnt from: SvenVw
Repo: SvenVw/fdm PR: 138
File: fdm-app/app/components/custom/fertilizer-applications/form.tsx:6-6
Timestamp: 2025-05-09T14:41:43.484Z
Learning: The project uses React Router v7 which exports a Form component directly from the "react-router" package, making importing from "remix-run/react" unnecessary.
Applied to files:
fdm-app/package.json
📚 Learning: 2025-05-09T14:41:43.484Z
Learnt from: SvenVw
Repo: SvenVw/fdm PR: 138
File: fdm-app/app/components/custom/fertilizer-applications/form.tsx:6-6
Timestamp: 2025-05-09T14:41:43.484Z
Learning: The project uses React Router v7 which exports a Form component directly from the "react-router" package, not from "remix-run/react".
Applied to files:
fdm-app/package.json
🔇 Additional comments (27)
fdm-docs/package.json (1)
58-58: LGTM!The pnpm version bump to 10.26.0 is consistent with the monorepo-wide upgrade across all workspace packages and CI workflows.
package.json (1)
27-32: LGTM!Standard maintenance updates for dev tooling (biome, changesets, turbo) and the pnpm version bump are appropriate. These are minor/patch version bumps with no expected breaking changes.
fdm-calculator/package.json (1)
64-64: LGTM!The pnpm version bump is consistent with the monorepo-wide upgrade.
fdm-core/package.json (1)
77-77: LGTM!The pnpm version bump is consistent with the monorepo-wide upgrade.
fdm-data/package.json (1)
59-59: LGTM!The pnpm version bump is consistent with the monorepo-wide upgrade.
pnpm-workspace.yaml (3)
14-14: Verify @types/node major version bump.The @types/node version has been bumped from v24 to v25, which is a major version change. While typically type definition updates are backward-compatible, major versions can introduce breaking changes to type signatures.
Ensure TypeScript compilation passes across all packages. The CI typecheck workflow should catch any incompatibilities.
18-18: Note the drizzle-orm minor version bump.The drizzle-orm update from ^0.44.7 to ^0.45.1 is a minor version bump. Drizzle ORM occasionally introduces API changes in minor versions given it's pre-1.0.
Verify that existing database queries and schema definitions work correctly with this version. The test suite should cover this.
8-27: Catalog dependency updates look reasonable.The remaining version bumps are minor/patch updates for tooling and dependencies. These align with the broader maintenance effort in this PR.
fdm-app/app/components/blocks/email/magic-link.tsx (5)
14-14: Good addition of @react-email/tailwind.The Tailwind wrapper enables proper Tailwind CSS processing for email components.
47-48: Verify custom spacing values work with @react-email/tailwind.Classes like
w-116.25,mt-7.5,my-7.5, andmt-1.25use non-standard Tailwind spacing values. Standard Tailwind uses integer or half-step values (e.g.,mt-7,mt-8), not arbitrary decimals like7.5or116.25.These may either:
- Be interpreted as arbitrary values (though syntax would typically be
w-[465px])- Require a custom Tailwind config within
@react-email/tailwind- Be silently ignored, resulting in no styling
Please verify these classes render correctly in the email output. Consider using standard Tailwind spacing or explicit arbitrary value syntax:
-<Container className="border border-solid border-[#eaeaea] rounded my-10 mx-auto p-5 w-116.25"> - <Section className="mt-7.5 text-center"> +<Container className="border border-solid border-[#eaeaea] rounded my-10 mx-auto p-5 w-[465px]"> + <Section className="mt-[30px] text-center">
56-56: Same concern withmy-7.5.This non-standard spacing class may not render as expected without custom Tailwind configuration.
85-85: Same concern withmt-1.25.The
mt-1.25class uses a non-standard spacing value. Standard Tailwind would bemt-1(4px) ormt-1.5(6px), butmt-1.25(5px) is not a default utility.
66-73: Button styling looks good.The button has appropriate padding, color contrast, and includes an
aria-labelfor accessibility.fdm-app/app/components/blocks/email/invitation.tsx (2)
66-112: Styling updates look consistent and well-structured.The migration from pixel-based arbitrary values (e.g.,
leading-[24px]) to Tailwind scale utilities (e.g.,leading-6) improves maintainability. The button styling with proper padding, borders, and colors is clean.
57-58: Replace non-standard Tailwind utility classes with arbitrary values.The classes
w-116.25,my-7.5, andmt-7.5are not valid Tailwind utilities. Standard width and spacing utilities use the spacing scale (likew-64) or fractions/percentages with arbitrary values (likew-[465px]). @react-email/tailwind uses Tailwind CSS 4.1.12, which does not support bare fractional class names like these without explicit theme configuration.Use square brackets to generate properties on the fly using arbitrary values:
w-[465px],my-[30px],mt-[30px].fdm-app/app/components/blocks/email/welcome.tsx (2)
75-131: Content expansion and layout improvements look good.The expanded feature lists under "Wat kun je nu doen?" and "De Atlas verkennen" provide helpful onboarding information. The new list item about microreliëf (Line 120-122) complements the existing Atlas features.
134-152: Footer section styling is consistent.The button and closing text styling align with the invitation email component, maintaining design consistency across email templates.
fdm-app/package.json (4)
70-77: React 19 and react-router 7.11.0 updates look good.These versions align with the latest stable releases. React 19.2.3 is current, and react-router 7.11.0 is compatible. Based on learnings, this project uses React Router v7 with imports from "react-router" package.
107-116: Tailwind CSS v4.1.18 and pnpm 10.26.0 updates are consistent.The Tailwind version aligns with the v4 utility syntax used in the email components. The pnpm version matches the updates in the workflow files.
61-61: maplibre-gl v5.15.0 includes built-in TypeScript declarations—removing @types/maplibre-gl is correct.MapLibre-gl provides its own type definitions, making @types/maplibre-gl a stub package that is not needed. Type safety is maintained with this change.
35-36: @remix-run/file-storage v0.13.0 migration is complete.All usages of
LocalFileStoragehave been successfully updated tocreateFsFileStorageacross the file upload routes. The new API is properly implemented in three route handlers with correct import paths..github/workflows/typecheck.yml (1)
27-30: pnpm version update is consistent with package.json.The version bump to 10.26.0 aligns with the
packageManagerfield in fdm-app/package.json, ensuring CI uses the same pnpm version as local development..github/workflows/release.yml (1)
29-32: pnpm version update maintains consistency across workflows.The update to 10.26.0 aligns with typecheck.yml and the package.json
packageManagerfield, ensuring consistent tooling across all CI pipelines.fdm-app/app/routes/farm.$b_id_farm.$calendar.field.$b_id.soil.analysis.new.upload.tsx (1)
1-1: LGTM - Consistent migration pattern.The file-storage migration follows the same pattern as other upload routes in this PR. The storage initialization and usage are consistent.
Also applies to: 121-121
fdm-app/app/routes/farm.create.$b_id_farm.$calendar.fields.$b_id.soil.analysis.upload.tsx (1)
1-1: LGTM - Consistent migration pattern.The file-storage migration is consistent with other upload routes. The implementation correctly replaces
LocalFileStoragewithcreateFsFileStorage.Also applies to: 122-122
.github/workflows/tests.yml (1)
56-56: pnpm 10.26.0 is the latest stable version with no known issues.The version 10.26.0 is the latest pnpm version and was published 2 days ago. It introduces stricter security defaults for git-hosted dependencies, adds allowBuilds for granular script permissions, and includes a new setting to block exotic transitive dependencies. No security advisories or critical problems have been identified with this version.
fdm-app/app/routes/farm.create.$b_id_farm.$calendar.upload.tsx (1)
1-1: The @remix-run/file-storage v0.13.0 migration to createFsFileStorage is correctly implemented.The import from
@remix-run/file-storage/fs, the API usage withcreateFsFileStorage("./uploads/shapefiles"), and the storage operations (set, get, remove) all align with v0.13.0 specifications. The code properly implements resource cleanup with a try-finally block that callsstorage.remove(key)for all uploaded files.
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## development #382 +/- ##
============================================
Coverage 87.20% 87.20%
============================================
Files 91 91
Lines 4542 4542
Branches 1385 1385
============================================
Hits 3961 3961
Misses 581 581
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Summary by CodeRabbit
New Features
Chores
✏️ Tip: You can customize this high-level summary in your review settings.