Persist background settings in links - #10
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
📝 WalkthroughWalkthroughThe page now validates background configuration from the ChangesBackground URL State
Estimated code review effort: 2 (Simple) | ~10 minutes Suggested labels: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
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: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@src/app/page.tsx`:
- Around line 95-99: Replace the truthiness-based Number(...) || fallback
expressions in the config restoration logic with finite-number validation that
preserves valid zero values and clamps them normally. Apply this to
gradientAngle, gradientMidpoint, radialCenterX, radialCenterY, and radialSpread;
reject or explicitly parse non-numeric JSON values, while retaining each
DEFAULT_BACKGROUND_CONFIG fallback for invalid inputs.
🪄 Autofix
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 08e84973-ee03-453b-b1fb-7ad88a28be96
📒 Files selected for processing (1)
src/app/page.tsx
| config.gradientAngle = clampNumber(Number(config.gradientAngle) || DEFAULT_BACKGROUND_CONFIG.gradientAngle, 0, 360); | ||
| config.gradientMidpoint = clampNumber(Number(config.gradientMidpoint) || DEFAULT_BACKGROUND_CONFIG.gradientMidpoint, 0, 1); | ||
| config.radialCenterX = clampNumber(Number(config.radialCenterX) || DEFAULT_BACKGROUND_CONFIG.radialCenterX, 0, 100); | ||
| config.radialCenterY = clampNumber(Number(config.radialCenterY) || DEFAULT_BACKGROUND_CONFIG.radialCenterY, 0, 100); | ||
| config.radialSpread = clampNumber(Number(config.radialSpread) || DEFAULT_BACKGROUND_CONFIG.radialSpread, 10, 200); |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Preserve valid zero values before clamping.
Number(...) || fallback treats 0 as missing. A shared link with gradientAngle: 0, gradientMidpoint: 0, radialCenterX: 0, or radialCenterY: 0 restores the default instead of the saved value. radialSpread: 0 becomes 100 instead of being clamped to the minimum 10.
Use a finite-number check that does not use truthiness. Reject non-number JSON values or parse them explicitly.
Proposed fix
+const finiteNumberOrDefault = (value: unknown, fallback: number) =>
+ typeof value === "number" && Number.isFinite(value) ? value : fallback;
+
- config.gradientAngle = clampNumber(Number(config.gradientAngle) || DEFAULT_BACKGROUND_CONFIG.gradientAngle, 0, 360);
- config.gradientMidpoint = clampNumber(Number(config.gradientMidpoint) || DEFAULT_BACKGROUND_CONFIG.gradientMidpoint, 0, 1);
- config.radialCenterX = clampNumber(Number(config.radialCenterX) || DEFAULT_BACKGROUND_CONFIG.radialCenterX, 0, 100);
- config.radialCenterY = clampNumber(Number(config.radialCenterY) || DEFAULT_BACKGROUND_CONFIG.radialCenterY, 0, 100);
- config.radialSpread = clampNumber(Number(config.radialSpread) || DEFAULT_BACKGROUND_CONFIG.radialSpread, 10, 200);
+ config.gradientAngle = clampNumber(finiteNumberOrDefault(config.gradientAngle, DEFAULT_BACKGROUND_CONFIG.gradientAngle), 0, 360);
+ config.gradientMidpoint = clampNumber(finiteNumberOrDefault(config.gradientMidpoint, DEFAULT_BACKGROUND_CONFIG.gradientMidpoint), 0, 1);
+ config.radialCenterX = clampNumber(finiteNumberOrDefault(config.radialCenterX, DEFAULT_BACKGROUND_CONFIG.radialCenterX), 0, 100);
+ config.radialCenterY = clampNumber(finiteNumberOrDefault(config.radialCenterY, DEFAULT_BACKGROUND_CONFIG.radialCenterY), 0, 100);
+ config.radialSpread = clampNumber(finiteNumberOrDefault(config.radialSpread, DEFAULT_BACKGROUND_CONFIG.radialSpread), 10, 200);📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| config.gradientAngle = clampNumber(Number(config.gradientAngle) || DEFAULT_BACKGROUND_CONFIG.gradientAngle, 0, 360); | |
| config.gradientMidpoint = clampNumber(Number(config.gradientMidpoint) || DEFAULT_BACKGROUND_CONFIG.gradientMidpoint, 0, 1); | |
| config.radialCenterX = clampNumber(Number(config.radialCenterX) || DEFAULT_BACKGROUND_CONFIG.radialCenterX, 0, 100); | |
| config.radialCenterY = clampNumber(Number(config.radialCenterY) || DEFAULT_BACKGROUND_CONFIG.radialCenterY, 0, 100); | |
| config.radialSpread = clampNumber(Number(config.radialSpread) || DEFAULT_BACKGROUND_CONFIG.radialSpread, 10, 200); | |
| const finiteNumberOrDefault = (value: unknown, fallback: number) => | |
| typeof value === "number" && Number.isFinite(value) ? value : fallback; | |
| config.gradientAngle = clampNumber(finiteNumberOrDefault(config.gradientAngle, DEFAULT_BACKGROUND_CONFIG.gradientAngle), 0, 360); | |
| config.gradientMidpoint = clampNumber(finiteNumberOrDefault(config.gradientMidpoint, DEFAULT_BACKGROUND_CONFIG.gradientMidpoint), 0, 1); | |
| config.radialCenterX = clampNumber(finiteNumberOrDefault(config.radialCenterX, DEFAULT_BACKGROUND_CONFIG.radialCenterX), 0, 100); | |
| config.radialCenterY = clampNumber(finiteNumberOrDefault(config.radialCenterY, DEFAULT_BACKGROUND_CONFIG.radialCenterY), 0, 100); | |
| config.radialSpread = clampNumber(finiteNumberOrDefault(config.radialSpread, DEFAULT_BACKGROUND_CONFIG.radialSpread), 10, 200); |
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@src/app/page.tsx` around lines 95 - 99, Replace the truthiness-based
Number(...) || fallback expressions in the config restoration logic with
finite-number validation that preserves valid zero values and clamps them
normally. Apply this to gradientAngle, gradientMidpoint, radialCenterX,
radialCenterY, and radialSpread; reject or explicitly parse non-numeric JSON
values, while retaining each DEFAULT_BACKGROUND_CONFIG fallback for invalid
inputs.
Summary by CodeRabbit