Skip to content

Dev application: By the greatest Kevin - #597

Open
Kevinli7673 wants to merge 1 commit into
KnightHacks:mainfrom
Kevinli7673:kevinli
Open

Kevinli7673 wants to merge 1 commit into
KnightHacks:mainfrom
Kevinli7673:kevinli

Conversation

@Kevinli7673

Copy link
Copy Markdown

What changed

  • Adds a /KevinLi page to Blade with a hero recomposed from my Figma poster (bench, leaves, sky strip, drifting cloud).
  • Hovering the cloud (or tabbing to it) lifts it away to reveal LinkedIn, Resume, and GitHub links.
  • Resume links to /kevin-li/resume.pdf.

Scope

Only apps/blade/src/app/KevinLi/ and apps/blade/public/kevin-li/. No shared packages touched.

Checks

  • pnpm --filter=@forge/blade typecheck passes
  • Manually verified in Chrome: hover reveal, keyboard focus reveal, and the cloud resetting after clicking a link and returning

@coderabbitai

coderabbitai Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

📝 Walkthrough

Walkthrough

Adds a responsive poster-style Kevin Li hero page with decorative artwork, text, and a grain overlay. The cloud reveals LinkedIn, Resume, and GitHub links on hover or keyboard focus. The page includes motion effects and reduced-motion handling.

Priority: ⬇️ Low

Merge Risk: 🟡 Moderate · up to 3dcea

Touch visitors may be unable to open the page’s profile links, and the links are too small when available. Fix the touch reveal and target sizes before merging.

🚥 Pre-merge checks | ✅ 6 | ❌ 2

❌ Failed checks (2 warnings)

Check name Status Explanation Resolution
Title check ⚠️ Warning The title describes the page, but it does not start with an issue number in brackets as required. Prefix the title with the associated issue number in brackets, then keep the description under 72 characters.
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 2 functions across 2 files. (1 skipped: 1 … Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (6 passed)
Check name Status Explanation
Description check ✅ Passed The description covers the new page, its link-reveal behavior, scope, and reported checks.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
No Hardcoded Secrets ✅ Passed No hardcoded API keys, passwords, tokens, or secrets appear in the added source or assets. The PDF and PNG assets also contain no matches for secret patterns in their raw or extracted text data.
Validated Env Access ✅ Passed The PR adds nine files. The changed-file patch and changed source files contain no direct process.env usage.
No Typescript Escape Hatches ✅ Passed The changed TypeScript files contain no any types, @ts-ignore or @ts-expect-error directives, or non-null assertions. The only any match is in a comment, and the ! match is user-facing text.
Full details: Docstring Coverage

Explanation

Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 2 functions across 2 files. (1 skipped: 1 unsupported.)

  • Fix all pre-merge checks with AI
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Warning

Some tools did not complete. Review the errors below.

🔧 ESLint

If the error stems from missing dependencies, add them to the package.json file. For unrecoverable errors (e.g., due to private dependencies), disable the tool in the CodeRabbit configuration.

apps/blade/src/app/KevinLi/components/hero.module.css

ESLint skipped: missing config or dependency (missing-dependency). The ESLint configuration references a package that is not available in the sandbox.

apps/blade/src/app/KevinLi/components/hero.tsx

ESLint skipped: the matched ESLint configuration already failed (missing-dependency).

apps/blade/src/app/KevinLi/page.tsx

ESLint skipped: the matched ESLint configuration already failed (missing-dependency).


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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai 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.

Note

Quiet mode is enabled, so only the most important comments were posted inline. Other review comments are grouped below.

🟡 Other comments (2)
apps/blade/src/app/KevinLi/components/hero.tsx-151-152 (1)

151-152: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Give each profile link a 24px minimum height.

At 390px, each unpadded link target is at most 17.1px high, and adjacent target centers are only 21.9px apart. The WCAG 2.2 spacing exception does not apply.

🐛 Suggested fix
-              className={`${jacquesShadow.className} ${styles.link} pointer-events-none rounded-sm leading-none focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-[#214e92] group-hover:pointer-events-auto group-has-[:focus-visible]:pointer-events-auto`}
+              className={`${jacquesShadow.className} ${styles.link} pointer-events-none rounded-sm min-h-[24px] flex items-center leading-none focus-visible:outline-2 focus-visible:outline-offset-4 focus-visible:outline-[#214e92] group-hover:pointer-events-auto group-has-[:focus-visible]:pointer-events-auto`}
apps/blade/src/app/KevinLi/components/hero.tsx-130-155 (1)

130-155: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win

Add an explicit tap-controlled reveal for the cloud links.

On supported iOS Safari, a tap reaches the non-clickable cloud <div> and does not trigger hover. The nav stays hidden and its links stay pointer-disabled, so touch users cannot open these links from the hero.


ℹ️ Review info
⚙️ Run configuration
  • Configuration used: Repository: KnightHacks/forge/.coderabbit.yml
  • Review profile: QUIET
  • Plan: Advanced
  • Run ID: 462d66be-72df-4b5a-ae9b-5b8c77a25771
📥 Commits

Reviewing files that changed from the base of the PR and between 20dca5a and 3dceab7.

⛔ Files ignored due to path filters (6)
  • apps/blade/public/kevin-li/bench.png is excluded by !**/*.png
  • apps/blade/public/kevin-li/cloud-figma.png is excluded by !**/*.png
  • apps/blade/public/kevin-li/leaves-left.png is excluded by !**/*.png
  • apps/blade/public/kevin-li/leaves-right.png is excluded by !**/*.png
  • apps/blade/public/kevin-li/resume.pdf is excluded by !**/*.pdf
  • apps/blade/public/kevin-li/sky-clouds-straight.png is excluded by !**/*.png
📒 Files selected for processing (3)
  • apps/blade/src/app/KevinLi/components/hero.module.css
  • apps/blade/src/app/KevinLi/components/hero.tsx
  • apps/blade/src/app/KevinLi/page.tsx

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.

@ChrisH0125 ChrisH0125 left a comment

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.

sigma

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants