랜딩페이지#520
Conversation
|
Warning Review limit reached
More reviews will be available in 39 minutes and 28 seconds. Learn how PR review limits work. Your organization has used up its prepaid credits, and credit purchases are no longer available. Enable the review add-on in the billing tab to keep reviews running — you're only billed for reviews past your plan's rate limits ($0.25/file). ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based credits. 🚦 How do rate limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan refill rate. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, the refill rate gradually slows as usage increases. The highest same-day bursts are limited more strictly. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (10)
📒 Files selected for processing (14)
Walkthrough기존의 단일 Possibly related PRs
🚥 Pre-merge checks | ✅ 3 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
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 |
bb65bb8 to
03b9c1d
Compare
There was a problem hiding this comment.
Actionable comments posted: 4
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
src/app/page.tsx (1)
70-76:⚠️ Potential issue | 🟠 Major | ⚡ Quick win불필요한
searchParams의존 제거로 페이지 정적 최적화 복구 필요
src/app/page.tsx(70-76)에서searchParams를await하지만 이후params를 사용하지 않습니다.- Next.js App Router에서는
searchParams를 사용하는 것만으로도 라우트가 동적 렌더링으로 옵트인되어 정적 생성이 디옵트됩니다.Page시그니처에서searchParams와const params = await searchParams;를 제거하세요. 쿼리값이 필요하다면useSearchParams(Client 컴포넌트) 또는 동적 라우트로 분리하는 방식이 맞습니다.🤖 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 70 - 76, The Page function currently declares and awaits searchParams (function Page and const params = await searchParams) but never uses params, which forces dynamic rendering; remove the searchParams parameter from the Page signature and delete the line "const params = await searchParams;" to restore static optimization, and if query values are required later convert to a client component using useSearchParams or a dedicated dynamic route instead.
🧹 Nitpick comments (1)
src/components/layout/Landing/LandingHeader.tsx (1)
14-23: ⚡ Quick winGoogle OAuth 리다이렉트 로직을 공통화해주세요.
동일한
${baseUrl}/oauth2/authorization/google조립/이동 로직이LandingHeader,LandingFooter,GoogleLoginButton에 중복되어 있고, 누락 env 처리도 이미 다르게 동작합니다. 공통 함수(또는GoogleLoginButton재사용)로 모아 드리프트를 막는 게 좋습니다.🤖 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/components/layout/Landing/LandingHeader.tsx` around lines 14 - 23, Duplicate Google OAuth redirect assembly/redirect logic across LandingHeader.handleStart, LandingFooter, and GoogleLoginButton should be centralized; create a shared helper (e.g., getGoogleOAuthUrl or redirectToGoogleOAuth) that reads NEXT_PUBLIC_BASE_API_URL once, throws or returns a Result/error when missing, and returns the full URL (`${baseUrl}/oauth2/authorization/google`) or performs the window.location.href change. Replace handleStart and other inline implementations to call this helper (or reuse GoogleLoginButton) so env missing handling is consistent and the redirect URL assembly is not duplicated.
🤖 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/components/layout/Landing/FAQItem.tsx`:
- Around line 10-30: The root element of the FAQItem component should be changed
from a <div> to an <li> to preserve list semantics when this component is
rendered inside a <ul>; update the JSX root element (the element wrapping the
button and the answer container in the FAQItem component) to <li> and keep all
existing attributes and className values (including aria-expanded on the button
and the grid/overflow structure) so behavior and styling remain unchanged;
ensure there are no invalid nested list/interactive element rules (button stays
as a child of the new <li>) and run the app’s linter/HTML validator to confirm
semantics are fixed.
In `@src/components/layout/Landing/FeatureCard.tsx`:
- Line 23: The Image components using the next/image "fill" prop should include
a responsive sizes prop to avoid oversized image selection; update the Image
usages in FeatureCard (component FeatureCard), ExperienceItem (ExperienceItem),
HowUseItem (HowUseItem), LinkThumbnailTitleSection (component
LinkThumbnailTitleSection) and AddMultiLinks (AddMultiLinks) to add a sizes
string matching the layout (for example: mobile ~100vw, tablet ~50vw, desktop
~33vw) so the browser can pick appropriately sized images for each breakpoint.
In `@src/components/wrappers/ChromeButton.tsx`:
- Around line 18-25: The ChromeButton component is showing google-icon.png while
its text and behavior target the Chrome Web Store; update the Image usage in
ChromeButton (the Image component instance) to use the correct Chrome icon asset
(e.g., change src from "google-icon.png" to the Chrome asset name such as
"chrome-icon.png"), keep a matching alt like "Chrome 로고", and ensure the
referenced chrome icon file exists in the public/images assets so the button
shows the proper Chrome icon.
In `@src/components/wrappers/GoogleLoginButton.tsx`:
- Around line 16-18: The button in the GoogleLoginButton component is missing an
explicit type which can cause it to act as a form submitter; update the JSX for
the button that calls handleGoogleLogin to include type="button" so it won't
trigger form submission (i.e., modify the <button ...> in GoogleLoginButton.tsx
that uses handleGoogleLogin to add the type attribute).
---
Outside diff comments:
In `@src/app/page.tsx`:
- Around line 70-76: The Page function currently declares and awaits
searchParams (function Page and const params = await searchParams) but never
uses params, which forces dynamic rendering; remove the searchParams parameter
from the Page signature and delete the line "const params = await searchParams;"
to restore static optimization, and if query values are required later convert
to a client component using useSearchParams or a dedicated dynamic route
instead.
---
Nitpick comments:
In `@src/components/layout/Landing/LandingHeader.tsx`:
- Around line 14-23: Duplicate Google OAuth redirect assembly/redirect logic
across LandingHeader.handleStart, LandingFooter, and GoogleLoginButton should be
centralized; create a shared helper (e.g., getGoogleOAuthUrl or
redirectToGoogleOAuth) that reads NEXT_PUBLIC_BASE_API_URL once, throws or
returns a Result/error when missing, and returns the full URL
(`${baseUrl}/oauth2/authorization/google`) or performs the window.location.href
change. Replace handleStart and other inline implementations to call this helper
(or reuse GoogleLoginButton) so env missing handling is consistent and the
redirect URL assembly is not duplicated.
🪄 Autofix (Beta)
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: Repository UI
Review profile: CHILL
Plan: Pro
Run ID: 235d7e0e-4f81-4b90-a3ce-c024fc387977
⛔ Files ignored due to path filters (14)
public/images/landing-1.pngis excluded by!**/*.pngpublic/images/landing-2.pngis excluded by!**/*.pngpublic/images/landing-3.pngis excluded by!**/*.pngpublic/images/landing-4.pngis excluded by!**/*.pngpublic/images/landing-5.pngis excluded by!**/*.pngpublic/images/landing-6.pngis excluded by!**/*.pngpublic/images/landing-7.pngis excluded by!**/*.pngpublic/images/landing-add.pngis excluded by!**/*.pngpublic/images/landing-ai.pngis excluded by!**/*.pngpublic/images/landing-chatbot.pngis excluded by!**/*.pngpublic/images/landing-extension.pngis excluded by!**/*.pngpublic/images/landing_icon_bookmark.pngis excluded by!**/*.pngpublic/images/landing_icon_questionmark.pngis excluded by!**/*.pngpublic/images/landing_icon_searchoff.pngis excluded by!**/*.png
📒 Files selected for processing (15)
src/app/LandingPage.tsxsrc/app/layout-client.tsxsrc/app/page.tsxsrc/components/Icons/icons.tssrc/components/layout/Landing/ExperienceItem.tsxsrc/components/layout/Landing/FAQItem.tsxsrc/components/layout/Landing/FeatureCard.tsxsrc/components/layout/Landing/FeatureSection.tsxsrc/components/layout/Landing/HeroSection.tsxsrc/components/layout/Landing/HowUseItem.tsxsrc/components/layout/Landing/LandingFooter.tsxsrc/components/layout/Landing/LandingHeader.tsxsrc/components/layout/Landing/ScrollStackedCards.tsxsrc/components/wrappers/ChromeButton.tsxsrc/components/wrappers/GoogleLoginButton.tsx
💤 Files with no reviewable changes (1)
- src/app/LandingPage.tsx
03b9c1d to
e107998
Compare
e107998 to
9309337
Compare
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/components/wrappers/GoogleLoginButton.tsx`:
- Around line 17-20: The alt text for the Image component in
GoogleLoginButton.tsx incorrectly specifies "Chrome 로고" when it should describe
a Google icon for the Google login button. Update the alt attribute of the Image
component to accurately reflect the actual icon being displayed by changing it
to "Google 로고", or set it to an empty string alt="" if the icon serves only as
decoration.
🪄 Autofix (Beta)
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: Repository UI
Review profile: CHILL
Plan: Pro
Run ID: 673fc36e-de83-4054-8e52-27ccbac42652
⛔ Files ignored due to path filters (10)
public/images/landing-5.pngis excluded by!**/*.pngpublic/images/landing-6.pngis excluded by!**/*.pngpublic/images/landing-7.pngis excluded by!**/*.pngpublic/images/landing-add.pngis excluded by!**/*.pngpublic/images/landing-ai.pngis excluded by!**/*.pngpublic/images/landing-chatbot.pngis excluded by!**/*.pngpublic/images/landing-extension.pngis excluded by!**/*.pngpublic/images/landing_icon_bookmark.pngis excluded by!**/*.pngpublic/images/landing_icon_questionmark.pngis excluded by!**/*.pngpublic/images/landing_icon_searchoff.pngis excluded by!**/*.png
📒 Files selected for processing (14)
src/app/layout-client.tsxsrc/app/page.tsxsrc/components/Icons/icons.tssrc/components/basics/Footer/Footer.tsxsrc/components/layout/Landing/ExperienceItem.tsxsrc/components/layout/Landing/FAQItem.tsxsrc/components/layout/Landing/FeatureCard.tsxsrc/components/layout/Landing/FeatureSection.tsxsrc/components/layout/Landing/HeroSection.tsxsrc/components/layout/Landing/HowUseItem.tsxsrc/components/layout/Landing/LandingHeader.tsxsrc/components/wrappers/ChromeButton.tsxsrc/components/wrappers/GoogleLoginButton.tsxsrc/lib/oauth.ts
💤 Files with no reviewable changes (1)
- src/components/basics/Footer/Footer.tsx
✅ Files skipped from review due to trivial changes (3)
- src/lib/oauth.ts
- src/app/layout-client.tsx
- src/components/Icons/icons.ts
🚧 Files skipped from review as they are similar to previous changes (8)
- src/components/layout/Landing/FeatureCard.tsx
- src/components/wrappers/ChromeButton.tsx
- src/components/layout/Landing/ExperienceItem.tsx
- src/app/page.tsx
- src/components/layout/Landing/FeatureSection.tsx
- src/components/layout/Landing/FAQItem.tsx
- src/components/layout/Landing/HeroSection.tsx
- src/components/layout/Landing/HowUseItem.tsx
9309337 to
3dded84
Compare
관련 이슈
PR 설명