Cse 403#103
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Warning Review limit reached
Next review available in: 28 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?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 reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. 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, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (7)
📝 WalkthroughWalkthroughChangesCGPA career insights
University hero flow animation
Privacy interactive path
RGPV academic datasets
Public page and utility updates
Estimated code review effort: 5 (Critical) | ~120 minutes Sequence Diagram(s)sequenceDiagram
participant UniversityFlowBanner
participant ActiveStepMeasurement
participant PremiumAnimatedBoy
UniversityFlowBanner->>ActiveStepMeasurement: measure active step and calculate targetX
ActiveStepMeasurement-->>UniversityFlowBanner: return centered step position
UniversityFlowBanner->>PremiumAnimatedBoy: update position and jump state
PremiumAnimatedBoy-->>UniversityFlowBanner: complete jump animation
UniversityFlowBanner->>UniversityFlowBanner: render final-step completion effect
Possibly related PRs
Suggested reviewers: 🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ 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 |
🎉 Congratulations @RamuuXfree!Thank you for contributing to HyperLearningTech. Your pull request has been successfully merged into main. 📦 Merge Summary
🚀 Keep Contributing
Thank you for helping make HyperLearningTech better. Happy Coding! 🚀 |
There was a problem hiding this comment.
Actionable comments posted: 13
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
app/(public)/cgpa-calculator/page.tsx (1)
555-585: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick winTier toggle buttons lack focus indication and selection state for assistive tech.
The button className (Line 560) has no
focus/focus-visiblering classes — unlike the numeric inputs elsewhere in this file which do (e.g. Line 167focus:ring-4 focus:ring-blue-500/20) — so keyboard users get no visible focus indicator when tabbing through tiers. The buttons also don't exposearia-pressedto announce the selected tier to screen readers.♿ Proposed fix
<button key={tier.id} + aria-pressed={radarTier === tier.id} onClick={() => setRadarTier(radarTier === tier.id ? null : tier.id) } - className={`group flex items-center justify-between p-4 rounded-2xl text-left transition-all duration-300 ${ + className={`group flex items-center justify-between p-4 rounded-2xl text-left transition-all duration-300 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500 focus-visible:ring-offset-2 ${ radarTier === tier.id🤖 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 `@app/`(public)/cgpa-calculator/page.tsx around lines 555 - 585, Update the tier toggle buttons in the radarTier mapping to add a visible focus or focus-visible ring and suitable focus styling to their className, then add aria-pressed reflecting whether radarTier equals tier.id. Preserve the existing toggle behavior and visual selected-state classes.content/rgpv/csit/semester-3/csit-302/syllabus.json (1)
2-15: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
subjectblock is using pyqs metadata in a syllabus file.
gradingSystem,maxMarks,time, andcommonInstructionsmatchcontent/rgpv/csit/semester-3/csit-302/pyqs.json, while the sibling syllabus files use curriculum fields likeuniversity,scheme, andbranch. Replace thissubjectblock with the syllabus schema.🤖 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 `@content/rgpv/csit/semester-3/csit-302/syllabus.json` around lines 2 - 15, Replace the subject metadata in the syllabus file with the established syllabus schema used by sibling syllabus files, removing pyqs-specific fields such as gradingSystem, maxMarks, time, and commonInstructions and using the appropriate curriculum fields like university, scheme, and branch while preserving the course identity fields.
🧹 Nitpick comments (3)
app/(public)/cgpa-calculator/page.tsx (1)
356-415: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winDuplicate success-state markup — extract a shared component.
The
result <= 0andresult <= currentCgpablocks are structurally identical (glow, icon badge, pill heading, big number, description), differing only in text/value. Extracting a smallSuccessResultCardreduces duplication and future drift risk.♻️ Proposed extraction
function SuccessResultCard({ badgeLabel, value, description, }: { badgeLabel: string; value: string; description: React.ReactNode; }) { return ( <div className="space-y-6 flex flex-col items-center"> <div className="relative"> <div className="absolute inset-0 bg-emerald-500/20 blur-xl rounded-full" /> <div className="relative w-24 h-24 mx-auto rounded-full bg-emerald-50 dark:bg-emerald-500/10 flex items-center justify-center border-2 border-emerald-400 dark:border-emerald-400/50 shadow-[0_0_30px_rgba(16,185,129,0.3)]"> <CheckCircle2 className="w-12 h-12 text-emerald-600 dark:text-emerald-400 drop-shadow-md" /> </div> </div> <div className="inline-flex items-center gap-2 px-4 py-1.5 rounded-full bg-emerald-50 dark:bg-emerald-500/10 border border-emerald-200 dark:border-emerald-500/30"> <h3 className="text-[13px] font-bold uppercase tracking-widest text-emerald-700 dark:text-emerald-400"> {badgeLabel} </h3> </div> <div className="text-[80px] md:text-[100px] leading-none font-black text-transparent bg-clip-text bg-gradient-to-b from-emerald-500 to-emerald-700 dark:from-emerald-300 dark:to-emerald-600 tracking-tighter drop-shadow-[0_0_40px_rgba(16,185,129,0.3)]"> {value} </div> <p className="text-[16px] font-medium leading-relaxed text-slate-600 dark:text-slate-300 max-w-sm mx-auto"> {description} </p> </div> ); }- ) : result <= 0 ? ( - <div className="space-y-6 flex flex-col items-center">...</div> - ) : result <= parseFloat(currentCgpa) ? ( - <div className="space-y-6 flex flex-col items-center">...</div> + ) : result <= 0 ? ( + <SuccessResultCard badgeLabel="Goal Surpassed" value="0.00" description={<>Your current performance is so strong ...</>} /> + ) : result <= parseFloat(currentCgpa) ? ( + <SuccessResultCard badgeLabel="Target Secured" value={result.toFixed(2)} description={<>You are currently pacing ahead ...</>} />🤖 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 `@app/`(public)/cgpa-calculator/page.tsx around lines 356 - 415, Extract the duplicated success-state markup from the result <= 0 and result <= parseFloat(currentCgpa) branches into a shared SuccessResultCard component. Parameterize the badge label, displayed value, and description as props, including React.ReactNode for descriptions, then replace both branches with the component while preserving their existing text and formatting.components/university/premium-animated-boy.tsx (2)
266-300: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick winAdd
aria-hiddento the decorative SVG character.This is a purely decorative, non-lucide SVG figure (no text alternative possible), so screen readers shouldn't traverse its many
<path>/<circle>/<g>nodes.♿ Proposed fix
<motion.div className="w-20 h-20 sm:w-28 sm:h-28 overflow-visible relative" initial={false} animate={currentVariant} + aria-hidden="true" variants={{🤖 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 `@components/university/premium-animated-boy.tsx` around lines 266 - 300, Add aria-hidden="true" to the decorative motion.svg element inside the animated character component, ensuring screen readers skip the SVG and all nested path, circle, and group nodes.
61-173: 🚀 Performance & Scalability | 🔵 Trivial | ⚡ Quick winMemoize the kinematics-derived variants; they're recomputed on every render for no reason.
getFK/getLimbPath/getEndObj/buildLimbVars/buildEndVarstake only the static per-limb constant arrays (fl_h_ra,L_THIGH, etc. — none of which depend on props) plus the sharedttransition object. The variant shape (paths, rotations, endpoints) never changes across renders; onlyt.transitiondepends onisJumping/jumpType. Right now, every one of the 8 call sites (Lines 361, 377, 418, 434, 676, 692, 727, 743) re-runs the full trig pipeline on every render — including the internalstridetick that fires every 450ms indefinitely while running (Lines 40-46), and any re-render forced by the parent (UniversityFlowBannerre-renders ontargetX/resize updates too, since this component isn't memoized). None of that recomputation changes the output unlessisJumping/jumpTypeactually change.Also note the
_h(happy) keyframe arrays (e.g.fl_h_h,bl_h_h,fa_s_h,ba_s_h, Lines 196-198/213-215/226-227/238-239) are all length-2, but only index[0]is ever read in the happy branches ofbuildLimbVars/buildEndVars— worth a quick check on whether the second element was meant to drive a repeating happy-pose bounce (matching the torso'sht-based loop) or is just dead data.⚡ Suggested pattern
-import React, { useState, useEffect } from "react"; +import React, { useState, useEffect, useMemo } from "react"; ... -export const PremiumAnimatedBoy = ({ +export const PremiumAnimatedBoy = React.memo(function PremiumAnimatedBoy({ isJumping = false, ... -}: {...}) => { +}: {...}) { ... - variants={buildLimbVars(ba_s_ra, ba_e_ra, ba_s_rb, ba_e_rb, ba_s_j, ba_e_j, ba_s_rj, ba_e_rj, ba_s_h, ba_e_h, L_UPARM, L_FOREARM)} + variants={useMemo( + () => buildLimbVars(ba_s_ra, ba_e_ra, ba_s_rb, ba_e_rb, ba_s_j, ba_e_j, ba_s_rj, ba_e_rj, ba_s_h, ba_e_h, L_UPARM, L_FOREARM), + [t] + )} ... -}; +});(Repeat for the other 7
buildLimbVars/buildEndVarscall sites, keyed ont.)🤖 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 `@components/university/premium-animated-boy.tsx` around lines 61 - 173, Memoize the eight variant-building call sites so the kinematics calculations are reused across renders: wrap each buildLimbVars/buildEndVars result in useMemo with all static limb arrays and lengths as dependencies, and include the shared transition object t so variants refresh when isJumping or jumpType changes. Also verify whether the second elements of the _h happy keyframe arrays are intentionally unused; preserve the existing single-pose behavior unless the animation requires consuming them.
🤖 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 `@app/`(public)/cgpa-calculator/page.tsx:
- Around line 680-822: Create a module-level CAREER_TIERS configuration
containing each tier’s id, label, cutoff, and tips, with a derived CareerTierId
literal type. Refactor the tier button list, cutoffs lookup, radarTier
state/handling, and tips selection around this single configuration, removing
duplicated tier-id maps and render-time tip recreation while preserving default
tips and existing display behavior.
In `@app/`(public)/privacy/InteractivePath.tsx:
- Line 16: Update the reverse-jump timing around jumpBackEndTimeRef and
jumpStyleX so the anchor remains locked until the reverse animation fully
completes, using the same duration boundary as the animation rather than the
shorter 850ms window. Also gate the triggerJump() condition on the lock state
and the animation-driving value instead of allowing clampedVal changes during
the lock to retrigger the jump.
In `@components/university/university-flow-banner.tsx`:
- Around line 275-337: Add a dark-mode border color utility to the mobile
separator div within the steps map, preserving its existing light-mode
border-slate-300 styling and matching the component’s established dark divider
color pattern.
In `@content/rgpv/cscy/semester-4/cy-402/pyqs.json`:
- Around line 8-17: Update the subject blocks in
content/rgpv/cscy/semester-4/cy-402/pyqs.json (lines 8-17) and
content/rgpv/cscy/semester-4/cy-405/pyqs.json (lines 8-16) to include semester,
maxMarks, time, and commonInstructions, using values from the corresponding
actual exam papers and matching the complete shape in cs-302/pyqs.json.
In `@content/rgpv/cscy/semester-4/cy-405/pyqs.json`:
- Around line 380-391: Correct the typo in the q5a question text by replacing
“closer” with “closure,” leaving the rest of the question unchanged.
In `@content/rgpv/cse/semester-3/cs-302/pyqs.json`:
- Around line 328-340: Normalize the multi-unit "unit" fields for q8 and the
corresponding entries at the referenced occurrences by removing duplicate unit
names and using the slash-delimited convention used by sibling subject files.
Preserve the complete set of units represented by each question while ensuring
each value remains concise enough for the single-pill display.
- Around line 274-283: Update the affected subquestions q5b, q7b, q6a, q6b, and
q8b to replace the flat hasImage/imagePath/imageAlt fields with an attachments
array containing an attachment object with id, type, path, title, alt, caption,
and aiContext. Preserve each image’s existing path and descriptive text while
using the schema expected by SubQuestion.
In `@content/rgpv/cse/semester-4/bt-401/pyqs.json`:
- Around line 692-710: Verify the source paper and correct the garbled text of
sub-question q1b in the Q.1 entry, replacing “Find f(g) from the given table”
with the accurately transcribed numeric argument while preserving the existing
interpolation metadata.
In `@content/rgpv/cse/semester-4/cs-403/pyqs.json`:
- Around line 817-841: Replace the June 2025 Q1 entry in the CS-403 PYQs data
with the correct CS-403 question set for that paper, ensuring its questions and
metadata match the intended subject rather than the current Operating Systems
content. Preserve the existing June 2025 exam structure and update only the
mismatched Q1 data.
In `@content/rgpv/cse/semester-4/cs-404/syllabus.json`:
- Around line 13-78: Restore real per-module numeric hour values in
content/rgpv/cse/semester-4/cs-404/syllabus.json lines 13-78 and its modules 2-6
at lines 79-403, and in content/rgpv/cse/semester-4/cs-405/syllabus.json lines
13-50 and its modules 2-5 at lines 51-253. Preserve the required numeric
Module.hours contract used by the syllabus page; only make hours optional and
update the Module type if these values are intentionally unknown.
In `@content/rgpv/csit/semester-3/csit-302/pyqs.json`:
- Around line 279-282: Update the affected diagram question entries in pyqs.json
to use the runtime’s attachments[] schema, with each image resolved under the
subject’s diagrams directory and the existing alt text preserved. Apply the same
conversion to the entries near the referenced ranges, and remove the legacy
hasImage/imagePath/imageAlt fields unless the loader is explicitly updated to
map them.
In `@features/landing/ai-demo.tsx`:
- Around line 186-189: In the feature card className within the landing page
component, replace the deprecated flex-shrink-0 and flex-shrink utilities with
their Tailwind v4 shrink equivalents, preserving the existing responsive sizing
and layout behavior.
In `@features/landing/faq.tsx`:
- Around line 196-207: Update the Contact Support and Get Started Free elements
in the FAQ section to apply their existing button styles directly to each Link,
removing the nested button elements while preserving their destinations, labels,
icons, and interaction states.
---
Outside diff comments:
In `@app/`(public)/cgpa-calculator/page.tsx:
- Around line 555-585: Update the tier toggle buttons in the radarTier mapping
to add a visible focus or focus-visible ring and suitable focus styling to their
className, then add aria-pressed reflecting whether radarTier equals tier.id.
Preserve the existing toggle behavior and visual selected-state classes.
In `@content/rgpv/csit/semester-3/csit-302/syllabus.json`:
- Around line 2-15: Replace the subject metadata in the syllabus file with the
established syllabus schema used by sibling syllabus files, removing
pyqs-specific fields such as gradingSystem, maxMarks, time, and
commonInstructions and using the appropriate curriculum fields like university,
scheme, and branch while preserving the course identity fields.
---
Nitpick comments:
In `@app/`(public)/cgpa-calculator/page.tsx:
- Around line 356-415: Extract the duplicated success-state markup from the
result <= 0 and result <= parseFloat(currentCgpa) branches into a shared
SuccessResultCard component. Parameterize the badge label, displayed value, and
description as props, including React.ReactNode for descriptions, then replace
both branches with the component while preserving their existing text and
formatting.
In `@components/university/premium-animated-boy.tsx`:
- Around line 266-300: Add aria-hidden="true" to the decorative motion.svg
element inside the animated character component, ensuring screen readers skip
the SVG and all nested path, circle, and group nodes.
- Around line 61-173: Memoize the eight variant-building call sites so the
kinematics calculations are reused across renders: wrap each
buildLimbVars/buildEndVars result in useMemo with all static limb arrays and
lengths as dependencies, and include the shared transition object t so variants
refresh when isJumping or jumpType changes. Also verify whether the second
elements of the _h happy keyframe arrays are intentionally unused; preserve the
existing single-pose behavior unless the animation requires consuming them.
🪄 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: defaults
Review profile: CHILL
Plan: Pro
Run ID: 83260de3-c2c8-409e-8354-37bf06311a6e
📒 Files selected for processing (31)
app/(public)/cgpa-calculator/page.tsxapp/(public)/creators/page.tsxapp/(public)/privacy/InteractivePath.tsxapp/(public)/privacy/page.tsxapp/api/heartbeat/route.tsapp/dashboard/page.tsxapp/rgpv/page.tsxcomponents/contact/ContactSection.tsxcomponents/university/premium-animated-boy.tsxcomponents/university/university-flow-banner.tsxcomponents/university/university-hero.tsxcontent/rgpv/aiml/semester-3/al-302/pyqs.jsoncontent/rgpv/aiml/semester-4/al-401/pyqs.jsoncontent/rgpv/cscy/semester-4/cy-402/pyqs.jsoncontent/rgpv/cscy/semester-4/cy-405/pyqs.jsoncontent/rgpv/cse/semester-3/cs-302/pyqs.jsoncontent/rgpv/cse/semester-3/cs-302/syllabus.jsoncontent/rgpv/cse/semester-4/bt-401/pyqs.jsoncontent/rgpv/cse/semester-4/bt-401/syllabus.jsoncontent/rgpv/cse/semester-4/cs-402/pyqs.jsoncontent/rgpv/cse/semester-4/cs-402/syllabus.jsoncontent/rgpv/cse/semester-4/cs-403/pyqs.jsoncontent/rgpv/cse/semester-4/cs-403/syllabus.jsoncontent/rgpv/cse/semester-4/cs-404/pyqs.jsoncontent/rgpv/cse/semester-4/cs-404/syllabus.jsoncontent/rgpv/cse/semester-4/cs-405/pyqs.jsoncontent/rgpv/cse/semester-4/cs-405/syllabus.jsoncontent/rgpv/csit/semester-3/csit-302/pyqs.jsoncontent/rgpv/csit/semester-3/csit-302/syllabus.jsonfeatures/landing/ai-demo.tsxfeatures/landing/faq.tsx
There was a problem hiding this comment.
Caution
Inline review comments failed to post. This is likely due to GitHub's internal server error or limits when posting large numbers of comments. If you are seeing this consistently it is likely a permissions issue. Please check "Moderation" -> "Code review limits" under your organization settings.
Actionable comments posted: 13
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
app/(public)/cgpa-calculator/page.tsx (1)
555-585: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick winTier toggle buttons lack focus indication and selection state for assistive tech.
The button className (Line 560) has no
focus/focus-visiblering classes — unlike the numeric inputs elsewhere in this file which do (e.g. Line 167focus:ring-4 focus:ring-blue-500/20) — so keyboard users get no visible focus indicator when tabbing through tiers. The buttons also don't exposearia-pressedto announce the selected tier to screen readers.♿ Proposed fix
<button key={tier.id} + aria-pressed={radarTier === tier.id} onClick={() => setRadarTier(radarTier === tier.id ? null : tier.id) } - className={`group flex items-center justify-between p-4 rounded-2xl text-left transition-all duration-300 ${ + className={`group flex items-center justify-between p-4 rounded-2xl text-left transition-all duration-300 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-indigo-500 focus-visible:ring-offset-2 ${ radarTier === tier.id🤖 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 `@app/`(public)/cgpa-calculator/page.tsx around lines 555 - 585, Update the tier toggle buttons in the radarTier mapping to add a visible focus or focus-visible ring and suitable focus styling to their className, then add aria-pressed reflecting whether radarTier equals tier.id. Preserve the existing toggle behavior and visual selected-state classes.content/rgpv/csit/semester-3/csit-302/syllabus.json (1)
2-15: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
subjectblock is using pyqs metadata in a syllabus file.
gradingSystem,maxMarks,time, andcommonInstructionsmatchcontent/rgpv/csit/semester-3/csit-302/pyqs.json, while the sibling syllabus files use curriculum fields likeuniversity,scheme, andbranch. Replace thissubjectblock with the syllabus schema.🤖 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 `@content/rgpv/csit/semester-3/csit-302/syllabus.json` around lines 2 - 15, Replace the subject metadata in the syllabus file with the established syllabus schema used by sibling syllabus files, removing pyqs-specific fields such as gradingSystem, maxMarks, time, and commonInstructions and using the appropriate curriculum fields like university, scheme, and branch while preserving the course identity fields.
🧹 Nitpick comments (3)
app/(public)/cgpa-calculator/page.tsx (1)
356-415: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winDuplicate success-state markup — extract a shared component.
The
result <= 0andresult <= currentCgpablocks are structurally identical (glow, icon badge, pill heading, big number, description), differing only in text/value. Extracting a smallSuccessResultCardreduces duplication and future drift risk.♻️ Proposed extraction
function SuccessResultCard({ badgeLabel, value, description, }: { badgeLabel: string; value: string; description: React.ReactNode; }) { return ( <div className="space-y-6 flex flex-col items-center"> <div className="relative"> <div className="absolute inset-0 bg-emerald-500/20 blur-xl rounded-full" /> <div className="relative w-24 h-24 mx-auto rounded-full bg-emerald-50 dark:bg-emerald-500/10 flex items-center justify-center border-2 border-emerald-400 dark:border-emerald-400/50 shadow-[0_0_30px_rgba(16,185,129,0.3)]"> <CheckCircle2 className="w-12 h-12 text-emerald-600 dark:text-emerald-400 drop-shadow-md" /> </div> </div> <div className="inline-flex items-center gap-2 px-4 py-1.5 rounded-full bg-emerald-50 dark:bg-emerald-500/10 border border-emerald-200 dark:border-emerald-500/30"> <h3 className="text-[13px] font-bold uppercase tracking-widest text-emerald-700 dark:text-emerald-400"> {badgeLabel} </h3> </div> <div className="text-[80px] md:text-[100px] leading-none font-black text-transparent bg-clip-text bg-gradient-to-b from-emerald-500 to-emerald-700 dark:from-emerald-300 dark:to-emerald-600 tracking-tighter drop-shadow-[0_0_40px_rgba(16,185,129,0.3)]"> {value} </div> <p className="text-[16px] font-medium leading-relaxed text-slate-600 dark:text-slate-300 max-w-sm mx-auto"> {description} </p> </div> ); }- ) : result <= 0 ? ( - <div className="space-y-6 flex flex-col items-center">...</div> - ) : result <= parseFloat(currentCgpa) ? ( - <div className="space-y-6 flex flex-col items-center">...</div> + ) : result <= 0 ? ( + <SuccessResultCard badgeLabel="Goal Surpassed" value="0.00" description={<>Your current performance is so strong ...</>} /> + ) : result <= parseFloat(currentCgpa) ? ( + <SuccessResultCard badgeLabel="Target Secured" value={result.toFixed(2)} description={<>You are currently pacing ahead ...</>} />🤖 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 `@app/`(public)/cgpa-calculator/page.tsx around lines 356 - 415, Extract the duplicated success-state markup from the result <= 0 and result <= parseFloat(currentCgpa) branches into a shared SuccessResultCard component. Parameterize the badge label, displayed value, and description as props, including React.ReactNode for descriptions, then replace both branches with the component while preserving their existing text and formatting.components/university/premium-animated-boy.tsx (2)
266-300: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick winAdd
aria-hiddento the decorative SVG character.This is a purely decorative, non-lucide SVG figure (no text alternative possible), so screen readers shouldn't traverse its many
<path>/<circle>/<g>nodes.♿ Proposed fix
<motion.div className="w-20 h-20 sm:w-28 sm:h-28 overflow-visible relative" initial={false} animate={currentVariant} + aria-hidden="true" variants={{🤖 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 `@components/university/premium-animated-boy.tsx` around lines 266 - 300, Add aria-hidden="true" to the decorative motion.svg element inside the animated character component, ensuring screen readers skip the SVG and all nested path, circle, and group nodes.
61-173: 🚀 Performance & Scalability | 🔵 Trivial | ⚡ Quick winMemoize the kinematics-derived variants; they're recomputed on every render for no reason.
getFK/getLimbPath/getEndObj/buildLimbVars/buildEndVarstake only the static per-limb constant arrays (fl_h_ra,L_THIGH, etc. — none of which depend on props) plus the sharedttransition object. The variant shape (paths, rotations, endpoints) never changes across renders; onlyt.transitiondepends onisJumping/jumpType. Right now, every one of the 8 call sites (Lines 361, 377, 418, 434, 676, 692, 727, 743) re-runs the full trig pipeline on every render — including the internalstridetick that fires every 450ms indefinitely while running (Lines 40-46), and any re-render forced by the parent (UniversityFlowBannerre-renders ontargetX/resize updates too, since this component isn't memoized). None of that recomputation changes the output unlessisJumping/jumpTypeactually change.Also note the
_h(happy) keyframe arrays (e.g.fl_h_h,bl_h_h,fa_s_h,ba_s_h, Lines 196-198/213-215/226-227/238-239) are all length-2, but only index[0]is ever read in the happy branches ofbuildLimbVars/buildEndVars— worth a quick check on whether the second element was meant to drive a repeating happy-pose bounce (matching the torso'sht-based loop) or is just dead data.⚡ Suggested pattern
-import React, { useState, useEffect } from "react"; +import React, { useState, useEffect, useMemo } from "react"; ... -export const PremiumAnimatedBoy = ({ +export const PremiumAnimatedBoy = React.memo(function PremiumAnimatedBoy({ isJumping = false, ... -}: {...}) => { +}: {...}) { ... - variants={buildLimbVars(ba_s_ra, ba_e_ra, ba_s_rb, ba_e_rb, ba_s_j, ba_e_j, ba_s_rj, ba_e_rj, ba_s_h, ba_e_h, L_UPARM, L_FOREARM)} + variants={useMemo( + () => buildLimbVars(ba_s_ra, ba_e_ra, ba_s_rb, ba_e_rb, ba_s_j, ba_e_j, ba_s_rj, ba_e_rj, ba_s_h, ba_e_h, L_UPARM, L_FOREARM), + [t] + )} ... -}; +});(Repeat for the other 7
buildLimbVars/buildEndVarscall sites, keyed ont.)🤖 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 `@components/university/premium-animated-boy.tsx` around lines 61 - 173, Memoize the eight variant-building call sites so the kinematics calculations are reused across renders: wrap each buildLimbVars/buildEndVars result in useMemo with all static limb arrays and lengths as dependencies, and include the shared transition object t so variants refresh when isJumping or jumpType changes. Also verify whether the second elements of the _h happy keyframe arrays are intentionally unused; preserve the existing single-pose behavior unless the animation requires consuming them.
🤖 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 `@app/`(public)/cgpa-calculator/page.tsx:
- Around line 680-822: Create a module-level CAREER_TIERS configuration
containing each tier’s id, label, cutoff, and tips, with a derived CareerTierId
literal type. Refactor the tier button list, cutoffs lookup, radarTier
state/handling, and tips selection around this single configuration, removing
duplicated tier-id maps and render-time tip recreation while preserving default
tips and existing display behavior.
In `@app/`(public)/privacy/InteractivePath.tsx:
- Line 16: Update the reverse-jump timing around jumpBackEndTimeRef and
jumpStyleX so the anchor remains locked until the reverse animation fully
completes, using the same duration boundary as the animation rather than the
shorter 850ms window. Also gate the triggerJump() condition on the lock state
and the animation-driving value instead of allowing clampedVal changes during
the lock to retrigger the jump.
In `@components/university/university-flow-banner.tsx`:
- Around line 275-337: Add a dark-mode border color utility to the mobile
separator div within the steps map, preserving its existing light-mode
border-slate-300 styling and matching the component’s established dark divider
color pattern.
In `@content/rgpv/cscy/semester-4/cy-402/pyqs.json`:
- Around line 8-17: Update the subject blocks in
content/rgpv/cscy/semester-4/cy-402/pyqs.json (lines 8-17) and
content/rgpv/cscy/semester-4/cy-405/pyqs.json (lines 8-16) to include semester,
maxMarks, time, and commonInstructions, using values from the corresponding
actual exam papers and matching the complete shape in cs-302/pyqs.json.
In `@content/rgpv/cscy/semester-4/cy-405/pyqs.json`:
- Around line 380-391: Correct the typo in the q5a question text by replacing
“closer” with “closure,” leaving the rest of the question unchanged.
In `@content/rgpv/cse/semester-3/cs-302/pyqs.json`:
- Around line 328-340: Normalize the multi-unit "unit" fields for q8 and the
corresponding entries at the referenced occurrences by removing duplicate unit
names and using the slash-delimited convention used by sibling subject files.
Preserve the complete set of units represented by each question while ensuring
each value remains concise enough for the single-pill display.
- Around line 274-283: Update the affected subquestions q5b, q7b, q6a, q6b, and
q8b to replace the flat hasImage/imagePath/imageAlt fields with an attachments
array containing an attachment object with id, type, path, title, alt, caption,
and aiContext. Preserve each image’s existing path and descriptive text while
using the schema expected by SubQuestion.
In `@content/rgpv/cse/semester-4/bt-401/pyqs.json`:
- Around line 692-710: Verify the source paper and correct the garbled text of
sub-question q1b in the Q.1 entry, replacing “Find f(g) from the given table”
with the accurately transcribed numeric argument while preserving the existing
interpolation metadata.
In `@content/rgpv/cse/semester-4/cs-403/pyqs.json`:
- Around line 817-841: Replace the June 2025 Q1 entry in the CS-403 PYQs data
with the correct CS-403 question set for that paper, ensuring its questions and
metadata match the intended subject rather than the current Operating Systems
content. Preserve the existing June 2025 exam structure and update only the
mismatched Q1 data.
In `@content/rgpv/cse/semester-4/cs-404/syllabus.json`:
- Around line 13-78: Restore real per-module numeric hour values in
content/rgpv/cse/semester-4/cs-404/syllabus.json lines 13-78 and its modules 2-6
at lines 79-403, and in content/rgpv/cse/semester-4/cs-405/syllabus.json lines
13-50 and its modules 2-5 at lines 51-253. Preserve the required numeric
Module.hours contract used by the syllabus page; only make hours optional and
update the Module type if these values are intentionally unknown.
In `@content/rgpv/csit/semester-3/csit-302/pyqs.json`:
- Around line 279-282: Update the affected diagram question entries in pyqs.json
to use the runtime’s attachments[] schema, with each image resolved under the
subject’s diagrams directory and the existing alt text preserved. Apply the same
conversion to the entries near the referenced ranges, and remove the legacy
hasImage/imagePath/imageAlt fields unless the loader is explicitly updated to
map them.
In `@features/landing/ai-demo.tsx`:
- Around line 186-189: In the feature card className within the landing page
component, replace the deprecated flex-shrink-0 and flex-shrink utilities with
their Tailwind v4 shrink equivalents, preserving the existing responsive sizing
and layout behavior.
In `@features/landing/faq.tsx`:
- Around line 196-207: Update the Contact Support and Get Started Free elements
in the FAQ section to apply their existing button styles directly to each Link,
removing the nested button elements while preserving their destinations, labels,
icons, and interaction states.
---
Outside diff comments:
In `@app/`(public)/cgpa-calculator/page.tsx:
- Around line 555-585: Update the tier toggle buttons in the radarTier mapping
to add a visible focus or focus-visible ring and suitable focus styling to their
className, then add aria-pressed reflecting whether radarTier equals tier.id.
Preserve the existing toggle behavior and visual selected-state classes.
In `@content/rgpv/csit/semester-3/csit-302/syllabus.json`:
- Around line 2-15: Replace the subject metadata in the syllabus file with the
established syllabus schema used by sibling syllabus files, removing
pyqs-specific fields such as gradingSystem, maxMarks, time, and
commonInstructions and using the appropriate curriculum fields like university,
scheme, and branch while preserving the course identity fields.
---
Nitpick comments:
In `@app/`(public)/cgpa-calculator/page.tsx:
- Around line 356-415: Extract the duplicated success-state markup from the
result <= 0 and result <= parseFloat(currentCgpa) branches into a shared
SuccessResultCard component. Parameterize the badge label, displayed value, and
description as props, including React.ReactNode for descriptions, then replace
both branches with the component while preserving their existing text and
formatting.
In `@components/university/premium-animated-boy.tsx`:
- Around line 266-300: Add aria-hidden="true" to the decorative motion.svg
element inside the animated character component, ensuring screen readers skip
the SVG and all nested path, circle, and group nodes.
- Around line 61-173: Memoize the eight variant-building call sites so the
kinematics calculations are reused across renders: wrap each
buildLimbVars/buildEndVars result in useMemo with all static limb arrays and
lengths as dependencies, and include the shared transition object t so variants
refresh when isJumping or jumpType changes. Also verify whether the second
elements of the _h happy keyframe arrays are intentionally unused; preserve the
existing single-pose behavior unless the animation requires consuming them.
🪄 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: defaults
Review profile: CHILL
Plan: Pro
Run ID: 83260de3-c2c8-409e-8354-37bf06311a6e
📒 Files selected for processing (31)
app/(public)/cgpa-calculator/page.tsxapp/(public)/creators/page.tsxapp/(public)/privacy/InteractivePath.tsxapp/(public)/privacy/page.tsxapp/api/heartbeat/route.tsapp/dashboard/page.tsxapp/rgpv/page.tsxcomponents/contact/ContactSection.tsxcomponents/university/premium-animated-boy.tsxcomponents/university/university-flow-banner.tsxcomponents/university/university-hero.tsxcontent/rgpv/aiml/semester-3/al-302/pyqs.jsoncontent/rgpv/aiml/semester-4/al-401/pyqs.jsoncontent/rgpv/cscy/semester-4/cy-402/pyqs.jsoncontent/rgpv/cscy/semester-4/cy-405/pyqs.jsoncontent/rgpv/cse/semester-3/cs-302/pyqs.jsoncontent/rgpv/cse/semester-3/cs-302/syllabus.jsoncontent/rgpv/cse/semester-4/bt-401/pyqs.jsoncontent/rgpv/cse/semester-4/bt-401/syllabus.jsoncontent/rgpv/cse/semester-4/cs-402/pyqs.jsoncontent/rgpv/cse/semester-4/cs-402/syllabus.jsoncontent/rgpv/cse/semester-4/cs-403/pyqs.jsoncontent/rgpv/cse/semester-4/cs-403/syllabus.jsoncontent/rgpv/cse/semester-4/cs-404/pyqs.jsoncontent/rgpv/cse/semester-4/cs-404/syllabus.jsoncontent/rgpv/cse/semester-4/cs-405/pyqs.jsoncontent/rgpv/cse/semester-4/cs-405/syllabus.jsoncontent/rgpv/csit/semester-3/csit-302/pyqs.jsoncontent/rgpv/csit/semester-3/csit-302/syllabus.jsonfeatures/landing/ai-demo.tsxfeatures/landing/faq.tsx
🛑 Comments failed to post (13)
app/(public)/cgpa-calculator/page.tsx (1)
680-822: 📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win
New
tierTipsmap adds a third duplicated copy of the tier-id set.The tier ids (
tier1/core/tier2/mass) are now defined in three places: the button array (Line 533-553), the pre-existingcutoffslookup (Line 601-606), and this newtierTipsrecord. If a tier is ever renamed/added/removed in only one of these,cutoffs[radarTier]can resolve toundefinedand the eligibility branch'srequired.toFixed(1)call would throw at render time. Consolidating into a singleCAREER_TIERSconfig (id, label, cutoff, tips) used to derive the button list, the cutoff lookup, and the tips lookup removes this drift risk and would also letradarTierbe typed as a literal union instead ofstring | null(Line 33). As a secondary note,defaultTips/tierTipsare recreated on every render inside this IIFE — hoisting the config to module scope avoids that too.♻️ Sketch of a single source of truth
const CAREER_TIERS = [ { id: "tier1", label: "Tier-1 Product (Google, Microsoft)", cutoff: 8.0, tips: [...] }, { id: "core", label: "Core Engineering & PSUs", cutoff: 7.5, tips: [...] }, { id: "tier2", label: "Tier-2 Tech & Consulting", cutoff: 7.0, tips: [...] }, { id: "mass", label: "Mass Recruiters (TCS, Infosys)", cutoff: 6.0, tips: [...] }, ] as const; type CareerTierId = (typeof CAREER_TIERS)[number]["id"]; // derive button list, cutoffs, and tierTips from CAREER_TIERS instead of separate literals🤖 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 `@app/`(public)/cgpa-calculator/page.tsx around lines 680 - 822, Create a module-level CAREER_TIERS configuration containing each tier’s id, label, cutoff, and tips, with a derived CareerTierId literal type. Refactor the tier button list, cutoffs lookup, radarTier state/handling, and tips selection around this single configuration, removing duplicated tier-id maps and render-time tip recreation while preserving default tips and existing display behavior.app/(public)/privacy/InteractivePath.tsx (1)
16-16: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash set -euo pipefail # Map the file structure first ast-grep outline 'app/(public)/privacy/InteractivePath.tsx' --view expanded # Show the relevant line ranges around the cited locations nl -ba 'app/(public)/privacy/InteractivePath.tsx' | sed -n '1,180p'Repository: imuniqueshiv/HyperLearningTech
Length of output: 360
🏁 Script executed:
#!/bin/bash set -euo pipefail # Read the component body with line numbers via awk (nl is unavailable) awk 'NR>=1 && NR<=220 { printf "%4d: %s\n", NR, $0 }' 'app/(public)/privacy/InteractivePath.tsx'Repository: imuniqueshiv/HyperLearningTech
Length of output: 9321
Reverse-jump timing should stay in sync with the jump animation. The anchor unlocks after 850ms, but
jumpStyleXstill returns for 1050ms, so the tracker can start following scroll again before the man finishes sliding back. Also, the trigger still keys offclampedVal, so a quick 0.97→0.99 flick during that lock can re-firetriggerJump()while the reverse animation is in progress.🤖 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 `@app/`(public)/privacy/InteractivePath.tsx at line 16, Update the reverse-jump timing around jumpBackEndTimeRef and jumpStyleX so the anchor remains locked until the reverse animation fully completes, using the same duration boundary as the animation rather than the shorter 850ms window. Also gate the triggerJump() condition on the lock state and the animation-driving value instead of allowing clampedVal changes during the lock to retrigger the jump.components/university/university-flow-banner.tsx (1)
275-337: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Mobile separator missing dark-mode variant.
Every other color utility in this file pairs a light-mode class with a
dark:variant (rope track, node pills, dividers, etc.), but the mobile separator at Line 335 only setsborder-slate-300with no dark counterpart, breaking the otherwise consistent theming pattern in this component.🎨 Proposed fix
- <div className="sm:hidden absolute top-[35px] w-full border-t-2 border-dashed border-slate-300" /> + <div className="sm:hidden absolute top-[35px] w-full border-t-2 border-dashed border-slate-300 dark:border-slate-700" />📝 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.{steps.map((step, index) => ( <React.Fragment key={step}> {/* Node Container */} <div className="relative flex justify-center z-10 shrink-0 node-center-point"> {/* Glass Platform underneath the Node */} <div className="absolute -bottom-4 left-1/2 -translate-x-1/2 w-20 h-5 bg-blue-400/20 rounded-[100%] shadow-[inset_0_0_12px_rgba(59,130,246,0.3)] dark:bg-blue-600/30 dark:shadow-[inset_0_0_12px_rgba(59,130,246,0.6)] -z-10" /> {/* The Node Pill */} <div className={`relative z-10 flex items-center justify-center rounded-full px-5 py-2 text-[13px] md:text-[15px] font-semibold transition-all duration-500 whitespace-nowrap ${ activeStep === index ? "ring-4 ring-blue-400/30 ring-offset-2 dark:ring-offset-background scale-110" : activeStep > index ? "scale-100 opacity-100" : "scale-100 opacity-70" } ${ step === "Hyper AI" ? "bg-gradient-to-b from-blue-500 to-indigo-600 text-white shadow-[0_4px_14px_0_rgb(59,130,246,40%)] border-0" : activeStep === index ? "bg-blue-50 border-2 border-blue-400 text-blue-700 shadow-sm dark:bg-blue-950 dark:border-blue-500/80 dark:text-blue-300" : activeStep > index ? "bg-white border-2 border-blue-200 text-blue-600 shadow-sm dark:bg-slate-900 dark:border-blue-800/60 dark:text-blue-400" : "bg-white border-2 border-slate-200 text-slate-500 shadow-sm dark:bg-slate-900 dark:border-slate-700/80 dark:text-slate-400" }`} > {step} </div> </div> {/* Dynamic Dashed Jump Arc Trail */} {index < steps.length - 1 && ( <div className="flex-1 relative h-[70px] -mt-[35px] mx-[8px] z-0 pointer-events-none"> <AnimatePresence> {jumpGap === index && ( <svg className="absolute inset-0 h-full w-full overflow-visible pointer-events-none" preserveAspectRatio="none" viewBox="0 0 100 100" > <motion.path d="M 0 100 Q 50 -20 100 100" fill="none" stroke="currentColor" strokeWidth="3" strokeDasharray="6 6" vectorEffect="non-scaling-stroke" className="text-blue-400/80" initial={{ pathLength: 0 }} animate={{ pathLength: 1 }} exit={{ opacity: 0, transition: { duration: 0.1 }, }} transition={{ duration: 0.5, ease: "linear" }} /> </svg> )} </AnimatePresence> {/* Mobile Separator */} <div className="sm:hidden absolute top-[35px] w-full border-t-2 border-dashed border-slate-300 dark:border-slate-700" /> </div> )}🤖 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 `@components/university/university-flow-banner.tsx` around lines 275 - 337, Add a dark-mode border color utility to the mobile separator div within the steps map, preserving its existing light-mode border-slate-300 styling and matching the component’s established dark divider color pattern.content/rgpv/cscy/semester-4/cy-402/pyqs.json (1)
8-17: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
subject.maxMarks/subject.timemissing in both CSCY semester-4 files — now user-visible sincepaperswas populated.Both files'
subjectblocks only carryid/code/name/title. The paper detail page (app/rgpv/[branch]/[semester]/[subject]/pyqs/[paper]/page.tsx) unconditionally renderspyqs.subject.maxMarksandpyqs.subject.time(no?.), unlikecommonInstructionswhich is guarded. Previouslypapers: []meant the detail page always hitnotFound(), so this never rendered; now that both files populate real papers in this PR, visiting a paper will show blank "Max Marks: " / "Duration: " labels.content/rgpv/cse/semester-3/cs-302/pyqs.json, changed in this same PR, shows the complete intended shape (semester,maxMarks,time,commonInstructions).
content/rgpv/cscy/semester-4/cy-402/pyqs.json#L8-L17: addmaxMarks,time,semester, andcommonInstructionstosubject(values sourced from the actual CY-402 exam paper).content/rgpv/cscy/semester-4/cy-405/pyqs.json#L8-L16: add the same fields tosubject(values sourced from the actual CY-405 exam paper).🛠️ Shape to replicate (from cs-302/pyqs.json)
"subject": { "id": "cy-402", "code": "CY-402", "name": "Fundamental of Cyber Security", - "title": "CY-402 - Fundamental of Cyber Security" + "title": "CY-402 - Fundamental of Cyber Security", + "semester": "IV", + "maxMarks": 70, + "time": "3 Hours", + "commonInstructions": [ + "Attempt any five questions.", + "All questions carry equal marks." + ] },📍 Affects 2 files
content/rgpv/cscy/semester-4/cy-402/pyqs.json#L8-L17(this comment)content/rgpv/cscy/semester-4/cy-405/pyqs.json#L8-L16🤖 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 `@content/rgpv/cscy/semester-4/cy-402/pyqs.json` around lines 8 - 17, Update the subject blocks in content/rgpv/cscy/semester-4/cy-402/pyqs.json (lines 8-17) and content/rgpv/cscy/semester-4/cy-405/pyqs.json (lines 8-16) to include semester, maxMarks, time, and commonInstructions, using values from the corresponding actual exam papers and matching the complete shape in cs-302/pyqs.json.content/rgpv/cscy/semester-4/cy-405/pyqs.json (1)
380-391: 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win
Typo: "closer" → "closure".
"Compute the closer of the following set of functional dependencies..."— should be "closure of functional dependencies", the standard DBMS term.✏️ Proposed fix
- "text": "Compute the closer of the following set of functional dependencies for a relation scheme. R(A, B, C, D, E), F = { A → BC, CD → E, B → D, E → A } List out the candidate keys of R.", + "text": "Compute the closure of the following set of functional dependencies for a relation scheme. R(A, B, C, D, E), F = { A → BC, CD → E, B → D, E → A } List out the candidate keys of R.",📝 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.{ "id": "q5a", "label": "a)", "text": "Compute the closure of the following set of functional dependencies for a relation scheme. R(A, B, C, D, E), F = { A → BC, CD → E, B → D, E → A } List out the candidate keys of R.", "unit": "Unit 3" }, { "id": "q5b", "label": "b)", "text": "State and explain shadow paging with suitable example.", "unit": "Unit 4" }🤖 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 `@content/rgpv/cscy/semester-4/cy-405/pyqs.json` around lines 380 - 391, Correct the typo in the q5a question text by replacing “closer” with “closure,” leaving the rest of the question unchanged.content/rgpv/cse/semester-3/cs-302/pyqs.json (2)
274-283: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash cat types/pyq.ts rg -n "hasImage|imagePath|imageAlt" --type=ts -C2 rg -n "interface QuestionAttachment" -A 10 --type=tsRepository: imuniqueshiv/HyperLearningTech
Length of output: 1047
Use
attachmentsobjects here
SubQuestiononly acceptsattachments?: QuestionAttachment[], so these flathasImage/imagePath/imageAltfields won't be read. Convert this entry—and the same pattern at Q7b, Q6a, Q6b, and Q8b—toattachmentsobjects withid,type,path,title,alt,caption, andaiContext.🤖 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 `@content/rgpv/cse/semester-3/cs-302/pyqs.json` around lines 274 - 283, Update the affected subquestions q5b, q7b, q6a, q6b, and q8b to replace the flat hasImage/imagePath/imageAlt fields with an attachments array containing an attachment object with id, type, path, title, alt, caption, and aiContext. Preserve each image’s existing path and descriptive text while using the schema expected by SubQuestion.
328-340: 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win
Multi-unit
unitvalues use a comma-separated list that will overflow the single-pill badge, and use a different delimiter than sibling subject files.
"unit": "Unit 1, Unit 2, Unit 3, Unit 1"(and similarly at lines 650, 657, 718, 725, 744, 1003) is rendered verbatim into one compact rounded pill (rounded-full px-3 py-1 text-xs) by the paper page, so long/duplicated lists like this will look cramped or wrap oddly.al-302/al-401in this same PR use a "/" delimiter for mixed units (e.g."Unit 2/5") instead of commas — worth standardizing on one convention across subjects.♻️ Suggested normalization
- "unit": "Unit 1, Unit 2, Unit 3, Unit 1", + "unit": "Unit 1/2/3/1",📝 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.{ "id": "q8", "questionNumber": "Q.8", "subQuestions": [ { "id": "q8a", "label": "", "text": "Discuss in brief any two of the following: i) Partial ordering relation ii) Cosets iii) Disjunctive normal form iv) Pigeonhole principle", "unit": "Unit 1/2/3/1", "type": "theory" } ] }🤖 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 `@content/rgpv/cse/semester-3/cs-302/pyqs.json` around lines 328 - 340, Normalize the multi-unit "unit" fields for q8 and the corresponding entries at the referenced occurrences by removing duplicate unit names and using the slash-delimited convention used by sibling subject files. Preserve the complete set of units represented by each question while ensuring each value remains concise enough for the single-pill display.content/rgpv/cse/semester-4/bt-401/pyqs.json (1)
692-710: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick win
Garbled question text: "Find f(g)" doesn't make sense.
q1bin the December 2024 paper reads "Find f(g) from the given table," which isn't a coherent interpolation prompt — "g" isn't a numeric argument. This looks like an OCR/transcription slip (likely a misread digit, e.g. "f(9)").✏️ Suggested fix (verify against the source paper before applying)
- "text": "Find f(g) from the given table.", + "text": "Find f(9) from the given table.",📝 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."questionNumber": "Q.1", "subQuestions": [ { "id": "q1a", "label": "a)", "text": "Using Newton-Raphson method find the real root of 3x = cos x + 1 correct to five decimal places.", "unit": "Unit 1", "type": "root-finding" }, { "id": "q1b", "label": "b)", "text": "Find f(9) from the given table.", "unit": "Unit 1", "type": "interpolation" } ] }, {🤖 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 `@content/rgpv/cse/semester-4/bt-401/pyqs.json` around lines 692 - 710, Verify the source paper and correct the garbled text of sub-question q1b in the Q.1 entry, replacing “Find f(g) from the given table” with the accurately transcribed numeric argument while preserving the existing interpolation metadata.content/rgpv/cse/semester-4/cs-403/pyqs.json (1)
817-841: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
set -euo pipefail printf '\n== cs-403 pyqs around June 2025 ==\n' sed -n '780,900p' content/rgpv/cse/semester-4/cs-403/pyqs.json printf '\n== search for June 2025 in semester-4 files ==\n' rg -n '"June 2025"|Operating Systems|Software Engineering|\"type\": \"os\"' content/rgpv/cse/semester-4 -g '*.json' printf '\n== cs-405 syllabus snippets ==\n' sed -n '1,220p' content/rgpv/cse/semester-4/cs-405/syllabus.jsonRepository: imuniqueshiv/HyperLearningTech
Length of output: 4068
🏁 Script executed:
set -euo pipefail python3 - <<'PY' import json, pathlib p = pathlib.Path('content/rgpv/cse/semester-4/cs-403/pyqs.json') data = json.loads(p.read_text()) for item in data: if item.get('exam') == 'June 2025': print('FOUND June 2025 entry') print(json.dumps(item, indent=2)[:5000]) break else: print('June 2025 entry not found') PYRepository: imuniqueshiv/HyperLearningTech
Length of output: 293
🏁 Script executed:
set -euo pipefail python3 - <<'PY' import json, pathlib p = pathlib.Path('content/rgpv/cse/semester-4/cs-403/pyqs.json') data = json.loads(p.read_text()) for item in data: if item.get('exam') == 'June 2025': print(json.dumps(item, indent=2)) break PYRepository: imuniqueshiv/HyperLearningTech
Length of output: 293
🏁 Script executed:
set -euo pipefail sed -n '800,870p' content/rgpv/cse/semester-4/cs-403/pyqs.jsonRepository: imuniqueshiv/HyperLearningTech
Length of output: 2290
🏁 Script executed:
set -euo pipefail sed -n '800,870p' content/rgpv/cse/semester-4/cs-403/pyqs.jsonRepository: imuniqueshiv/HyperLearningTech
Length of output: 2290
🏁 Script executed:
set -euo pipefail sed -n '1,40p' content/rgpv/cse/semester-4/cs-403/pyqs.jsonRepository: imuniqueshiv/HyperLearningTech
Length of output: 1302
Fix the June 2025 Q1 subject mismatch June 2025 Q1 in
content/rgpv/cse/semester-4/cs-403/pyqs.jsonis Operating Systems content ("type": "os"), not Software Engineering. Replace it with the correct CS-403 question set for that paper.🤖 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 `@content/rgpv/cse/semester-4/cs-403/pyqs.json` around lines 817 - 841, Replace the June 2025 Q1 entry in the CS-403 PYQs data with the correct CS-403 question set for that paper, ensuring its questions and metadata match the intended subject rather than the current Operating Systems content. Preserve the existing June 2025 exam structure and update only the mismatched Q1 data.content/rgpv/cse/semester-4/cs-404/syllabus.json (1)
13-78: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick win
hours: nullbreaks the non-nullableModule.hours: numbercontract used by the syllabus page. Every module in both files setshourstonull(previously8), while siblingcontent/rgpv/csit/semester-3/csit-302/syllabus.jsonkept realhours: 8values. The downstreamModuleinterface inapp/rgpv/[branch]/[semester]/[subject]/syllabus/page.tsxtypeshoursas a requirednumber, so these two files will likely render "null" (or a falsy/NaN duration) wherever module duration is displayed.
content/rgpv/cse/semester-4/cs-404/syllabus.json#L13-L78(and modules 2-6 at L79-L403): restore real per-module hour counts, or make the field intentionally optional end-to-end (update theModuletype too) if hours are genuinely unknown for this subject.content/rgpv/cse/semester-4/cs-405/syllabus.json#L13-L50(and modules 2-5 at L51-L253): same fix.📍 Affects 2 files
content/rgpv/cse/semester-4/cs-404/syllabus.json#L13-L78(this comment)content/rgpv/cse/semester-4/cs-405/syllabus.json#L13-L50🤖 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 `@content/rgpv/cse/semester-4/cs-404/syllabus.json` around lines 13 - 78, Restore real per-module numeric hour values in content/rgpv/cse/semester-4/cs-404/syllabus.json lines 13-78 and its modules 2-6 at lines 79-403, and in content/rgpv/cse/semester-4/cs-405/syllabus.json lines 13-50 and its modules 2-5 at lines 51-253. Preserve the required numeric Module.hours contract used by the syllabus page; only make hours optional and update the Module type if these values are intentionally unknown.content/rgpv/csit/semester-3/csit-302/pyqs.json (1)
279-282: 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash # Check if PYQ/subquestion types declare hasImage/imagePath/imageAlt rg -n "hasImage|imagePath|imageAlt" --type=ts -C2 # Locate the referenced image assets fd -i "Q.5-b_june-2023.png" -o fd -i "Q.6-a_dec-2023.png" 2>/dev/null fd 'ques-diagrams' --type dRepository: imuniqueshiv/HyperLearningTech
Length of output: 168
🏁 Script executed:
#!/bin/bash set -euo pipefail echo "== PYQ-related files ==" git ls-files | rg '(^|/)(pyqs\.json|.*pyq.*\.(ts|tsx|js|json)|.*migrate.*\.ts|.*schema.*\.(ts|json))$' || true echo echo "== Search for the new image fields ==" rg -n "hasImage|imagePath|imageAlt" . || true echo echo "== Locate the referenced image assets ==" fd -HI 'Q.5-b_june-2023.png|Q.6-a_dec-2023.png|ques-diagrams' . || true echo echo "== Relevant JSON snippets in content/rgpv/csit/semester-3/csit-302/pyqs.json ==" rg -n '"hasImage"|"imagePath"|"imageAlt"|ques-diagrams' content/rgpv/csit/semester-3/csit-302/pyqs.json || trueRepository: imuniqueshiv/HyperLearningTech
Length of output: 18012
🏁 Script executed:
#!/bin/bash set -euo pipefail echo "== types/pyq.ts ==" wc -l types/pyq.ts cat -n types/pyq.ts echo echo "== attachment rendering files ==" for f in components/pyqs/attachment-image.tsx components/pyqs/question-attachments.tsx components/pyq/question-card.tsx lib/db/repositories/pyq.repository.ts app/rgpv/[branch]/[semester]/[subject]/pyqs/[paper]/page.tsx; do echo "--- $f ---" wc -l "$f" done echo echo "== relevant excerpts ==" sed -n '1,220p' components/pyqs/attachment-image.tsx echo sed -n '1,240p' components/pyqs/question-attachments.tsx echo sed -n '1,220p' types/pyq.ts echo sed -n '1,240p' lib/db/repositories/pyq.repository.ts echo echo "== image asset search ==" fd -HI 'ques-diagrams' content public app components . || true fd -HI 'Q.5-b_june-2023.png|Q.7-b_june-2023.png|Q.6-a_dec-2023.png|Q.6-b_dec-2023.png|Q.8-b_dec-2025.png' content public app components . || trueRepository: imuniqueshiv/HyperLearningTech
Length of output: 8123
🏁 Script executed:
#!/bin/bash set -euo pipefail echo "== attachment helpers ==" wc -l lib/content/attachment-path.ts lib/content/attachment-utils.ts app/rgpv/[branch]/[semester]/[subject]/pyqs/[paper]/page.tsx echo sed -n '1,240p' lib/content/attachment-path.ts echo sed -n '1,240p' lib/content/attachment-utils.ts echo sed -n '1,240p' app/rgpv/[branch]/[semester]/[subject]/pyqs/[paper]/page.tsx echo echo "== search for legacy image fields in content loaders ==" rg -n "hasImage|imagePath|imageAlt|attachments" lib app components types content/rgpv -g '!**/pyqs.json' || trueRepository: imuniqueshiv/HyperLearningTech
Length of output: 18412
Use the attachment schema for these diagrams
pyqs.jsonstill useshasImage/imagePath/imageAlt, but the runtime only rendersattachments[]entries and resolves them undercontent/rgpv/<branch>/<semester>/<subject>/diagrams/. Theseques-diagrams/*.pngreferences won’t render as written unless the loader maps the legacy fields or the assets are moved/renamed. Also applies to lines 322-324, 458-471, and 1172-1175.🤖 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 `@content/rgpv/csit/semester-3/csit-302/pyqs.json` around lines 279 - 282, Update the affected diagram question entries in pyqs.json to use the runtime’s attachments[] schema, with each image resolved under the subject’s diagrams directory and the existing alt text preserved. Apply the same conversion to the entries near the referenced ranges, and remove the legacy hasImage/imagePath/imageAlt fields unless the loader is explicitly updated to map them.features/landing/ai-demo.tsx (1)
186-189: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Update deprecated
flex-shrinkutilities toshrink.Tailwind CSS v4 introduces a breaking change that removes the
flex-shrink-*classes in favor ofshrink-*. Theflex-shrink-0 lg:flex-shrinkclasses will be ignored by the v4 compiler, potentially causing unwanted layout shifts in the feature cards.🐛 Proposed fix
- className={`group relative text-left overflow-hidden rounded-[16px] sm:rounded-[20px] p-4 sm:p-5 transition-all duration-300 ease-[cubic-bezier(0.2,0.8,0.2,1)] min-w-[280px] w-[85vw] sm:w-auto lg:w-full snap-center flex-shrink-0 lg:flex-shrink active:scale-[0.98] ${ + className={`group relative text-left overflow-hidden rounded-[16px] sm:rounded-[20px] p-4 sm:p-5 transition-all duration-300 ease-[cubic-bezier(0.2,0.8,0.2,1)] min-w-[280px] w-[85vw] sm:w-auto lg:w-full snap-center shrink-0 lg:shrink active:scale-[0.98] ${ isActive ? "border border-indigo-500/50 bg-indigo-50/60 shadow-sm ring-1 ring-indigo-500/20 dark:border-indigo-400/40 dark:bg-indigo-500/[0.08] dark:ring-indigo-400/20" : "border border-slate-200/70 bg-white/90 shadow-sm hover:bg-white hover:border-slate-300 dark:border-white/[0.06] dark:bg-[`#0f172a`]/40 dark:hover:bg-[`#1e293b`]/60 dark:hover:border-white/[0.1]"📝 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.className={`group relative text-left overflow-hidden rounded-[16px] sm:rounded-[20px] p-4 sm:p-5 transition-all duration-300 ease-[cubic-bezier(0.2,0.8,0.2,1)] min-w-[280px] w-[85vw] sm:w-auto lg:w-full snap-center shrink-0 lg:shrink active:scale-[0.98] ${ isActive ? "border border-indigo-500/50 bg-indigo-50/60 shadow-sm ring-1 ring-indigo-500/20 dark:border-indigo-400/40 dark:bg-indigo-500/[0.08] dark:ring-indigo-400/20" : "border border-slate-200/70 bg-white/90 shadow-sm hover:bg-white hover:border-slate-300 dark:border-white/[0.06] dark:bg-[`#0f172a`]/40 dark:hover:bg-[`#1e293b`]/60 dark:hover:border-white/[0.1]"🤖 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 `@features/landing/ai-demo.tsx` around lines 186 - 189, In the feature card className within the landing page component, replace the deprecated flex-shrink-0 and flex-shrink utilities with their Tailwind v4 shrink equivalents, preserving the existing responsive sizing and layout behavior.features/landing/faq.tsx (1)
196-207: 🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Avoid nesting interactive
<button>elements inside<Link>.In Next.js, the
<Link>component renders an<a>element. Nesting a<button>inside an<a>tag violates the HTML5 specification and can cause hydration mismatches or accessibility issues. To preserve the styling and behavior, apply the classes directly to the<Link>component and remove the wrapping<button>elements.🐛 Proposed fix
- <Link href="/contact"> - <button className="inline-flex h-[52px] w-full sm:w-auto items-center justify-center rounded-full bg-slate-900 px-8 text-[15px] font-[650] text-white shadow-md shadow-slate-900/10 transition-all hover:bg-slate-800 hover:shadow-lg dark:bg-white dark:text-slate-900 dark:hover:bg-slate-100 active:scale-[0.98]"> - Contact Support - </button> - </Link> - <Link href="/auth/signup"> - <button className="group inline-flex h-[52px] w-full sm:w-auto items-center justify-center rounded-full border border-slate-200 bg-white/60 px-8 text-[15px] font-[650] text-slate-700 shadow-sm transition-all hover:bg-slate-50 hover:border-slate-300 dark:border-white/[0.08] dark:bg-transparent dark:text-slate-300 dark:hover:bg-white/[0.04] dark:hover:text-white active:scale-[0.98] backdrop-blur-sm"> - Get Started Free - <ArrowRight className="ml-2 h-4 w-4 transition-transform group-hover:translate-x-1" /> - </button> - </Link> + <Link + href="/contact" + className="inline-flex h-[52px] w-full sm:w-auto items-center justify-center rounded-full bg-slate-900 px-8 text-[15px] font-[650] text-white shadow-md shadow-slate-900/10 transition-all hover:bg-slate-800 hover:shadow-lg dark:bg-white dark:text-slate-900 dark:hover:bg-slate-100 active:scale-[0.98]" + > + Contact Support + </Link> + <Link + href="/auth/signup" + className="group inline-flex h-[52px] w-full sm:w-auto items-center justify-center rounded-full border border-slate-200 bg-white/60 px-8 text-[15px] font-[650] text-slate-700 shadow-sm transition-all hover:bg-slate-50 hover:border-slate-300 dark:border-white/[0.08] dark:bg-transparent dark:text-slate-300 dark:hover:bg-white/[0.04] dark:hover:text-white active:scale-[0.98] backdrop-blur-sm" + > + Get Started Free + <ArrowRight className="ml-2 h-4 w-4 transition-transform group-hover:translate-x-1" /> + </Link>📝 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.<Link href="/contact" className="inline-flex h-[52px] w-full sm:w-auto items-center justify-center rounded-full bg-slate-900 px-8 text-[15px] font-[650] text-white shadow-md shadow-slate-900/10 transition-all hover:bg-slate-800 hover:shadow-lg dark:bg-white dark:text-slate-900 dark:hover:bg-slate-100 active:scale-[0.98]" > Contact Support </Link> <Link href="/auth/signup" className="group inline-flex h-[52px] w-full sm:w-auto items-center justify-center rounded-full border border-slate-200 bg-white/60 px-8 text-[15px] font-[650] text-slate-700 shadow-sm transition-all hover:bg-slate-50 hover:border-slate-300 dark:border-white/[0.08] dark:bg-transparent dark:text-slate-300 dark:hover:bg-white/[0.04] dark:hover:text-white active:scale-[0.98] backdrop-blur-sm" > Get Started Free <ArrowRight className="ml-2 h-4 w-4 transition-transform group-hover:translate-x-1" /> </Link>🤖 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 `@features/landing/faq.tsx` around lines 196 - 207, Update the Contact Support and Get Started Free elements in the FAQ section to apply their existing button styles directly to each Link, removing the nested button elements while preserving their destinations, labels, icons, and interaction states.
Pull Request
Summary
This PR resolves the merge conflicts between
origin/mainand the branchcse-403. The conflicts were present inapp/rgpv/page.tsx,components/university/premium-animated-boy.tsx,components/university/university-flow-banner.tsx, andcomponents/university/university-hero.tsx. All conflicts have been resolved by adopting the typing enhancements, modern animations, and dashboard layout structure from the main branch.Related Issue
Closes #
Type of Change
What Changed?
Merged
origin/maininto the current branch and resolved all conflicts:DashboardPagecomponent implementation and removed the obsoleteQuickAccessimport/reference.origin/main(e.g.,import("framer-motion").TransitionandVariants) to replace fallbackanycasts.Screenshots (UI Changes Only)
N/A (Conflict resolution, styling/animation updates are preserved from main).
Testing
Ran local verification checks on the resolved merge:
npm run typecheckpasses successfully.npm run lintpasses successfully.Checklist
Before requesting a review, confirm the following:
main.npx prettier --write <file>).npm run format:checkpasses.npm run lintpasses.npm run typecheckpasses.npm run buildpasses.Additional Notes
Linter and TypeScript build checks have verified complete type safety and code consistency across all modified files.