feat(ag-p05): homepage — all 5 blocks wired to live data#862
Conversation
|
✅ Template check passed after update. Thanks for fixing the PR description. |
|
Warning Review limit reached
More reviews will be available in 54 minutes and 23 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: Repository YAML (base), Organization UI (inherited) Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughHomepage ChangesPhase 05 Homepage Redesign & Onboarding Redirect
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Possibly related PRs
Suggested labels
Suggested reviewers
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 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 |
There was a problem hiding this comment.
Code Review
This pull request redesigns the homepage (index.astro) with a new layout, updated styling, and direct links to the Learning Centre and Cookbook. It also adds a new SVG asset (wapuu-rocket.svg) and a redirect page for onboarding (onboarding.astro). The review feedback suggests optimizing imports and data retrieval in index.astro by reusing the pre-calculated categoryCounts instead of filtering ITEMS directly, and adding -webkit- vendor prefixes to mask-image for better cross-browser compatibility.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
| import AwesomeGithubButton from "../components/AwesomeGithub/AwesomeGithubButton.astro"; | ||
| import AwesomeGithubCard from "../components/AwesomeGithub/AwesomeGithubCard.astro"; | ||
| import Icon from "../components/AwesomeGithub/Icon.astro"; | ||
| import { CATEGORIES, ITEMS, getCategoryCounts } from "../lib/catalogue"; |
There was a problem hiding this comment.
| const promptCount = ITEMS.filter((item) => item.cat === "prompts").length; | ||
| const categoryCounts = getCategoryCounts(); |
There was a problem hiding this comment.
Instead of filtering the entire ITEMS array again to find the count of prompts, you can reuse the already computed categoryCounts object. This avoids an extra full traversal of the ITEMS array, improving performance and consistency.
const categoryCounts = getCategoryCounts();
const promptCount = categoryCounts["prompts"] || 0;
| linear-gradient(90deg, var(--hair) 1px, transparent 1px); | ||
| background-size: 56px 56px; | ||
| opacity: 0.5; | ||
| mask-image: radial-gradient(ellipse 80% 60% at 50% 0%, var(--c-true-black) 0%, transparent 75%); |
There was a problem hiding this comment.
The mask-image property is not fully supported in all browsers (such as older versions of Safari and iOS Safari) without the -webkit- prefix. Adding -webkit-mask-image ensures cross-browser compatibility.
-webkit-mask-image: radial-gradient(ellipse 80% 60% at 50% 0%, var(--c-true-black) 0%, transparent 75%);
mask-image: radial-gradient(ellipse 80% 60% at 50% 0%, var(--c-true-black) 0%, transparent 75%);
ashleyshaw
left a comment
There was a problem hiding this comment.
Codex review: no blockers.
Checks completed:
- Homepage now matches the five-block spec and uses live catalogue data.
- Wapuu assets are present and the new onboarding alias resolves correctly.
- Build passes after the final overlay layering fix.
Residual risk:
- The requested Copilot/Codex/Gemini reviewer identities cannot be assigned via GitHub here because they are not collaborators on this repository.
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 783a4a1ed6
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| </p> | ||
|
|
||
| <div class="hero-ctas"> | ||
| <a class="btn-primary" href={`${base}onboarding/`}> |
There was a problem hiding this comment.
Point the primary CTA at the real destination
In this static Astro build, Astro.redirect() generates /onboarding/index.html as a meta-refresh interstitial with a 2-second delay, so the homepage’s primary “Start here” CTA now sends users to a redirect page before they reach the existing /getting-started/ content. Since the destination is unchanged and the previous CTA linked directly there, point this CTA at ${base}getting-started/ or add a real host-level redirect for /onboarding/.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
🧹 Nitpick comments (2)
website/src/pages/index.astro (2)
6-8: ⚡ Quick winConsider deriving promptCount from categoryCounts to avoid redundant iteration.
Both line 7 and
getCategoryCounts()iterate through the entireITEMSarray. You could swap the order and derivepromptCountfromcategoryCountsinstead:const base = import.meta.env.BASE_URL; -const promptCount = ITEMS.filter((item) => item.cat === "prompts").length; const categoryCounts = getCategoryCounts(); +const promptCount = categoryCounts["prompts"] || 0;This keeps things DRY and performs a single pass over the items. 🎯
🤖 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 `@website/src/pages/index.astro` around lines 6 - 8, Compute categoryCounts first by calling getCategoryCounts() and then derive promptCount from that result (e.g., use categoryCounts["prompts"] or the appropriate property) instead of filtering ITEMS again; this removes the redundant ITEMS iteration done by promptCount and keeps a single pass through ITEMS via getCategoryCounts(), so update the order of the calls and the promptCount assignment to reference categoryCounts.
43-43: ⚡ Quick winUse dynamic catalogue count for better maintainability.
The hardcoded
8matches the current number of categories, but ifCATEGORIESchanges in future, this stat will drift. Consider making it dynamic:- <div class="n">8</div> + <div class="n">{CATEGORIES.length}</div>Keeps it honest if you ever add that ninth catalogue! 📊
🤖 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 `@website/src/pages/index.astro` at line 43, Replace the hardcoded "8" in the statistic element with a dynamic count derived from the CATEGORIES array: import or reference the CATEGORIES constant used by the site and render CATEGORIES.length inside the <div class="n"> element (or compute a derived variable like categoryCount in the frontmatter) so the displayed catalogue count always reflects the actual number of categories.
🤖 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.
Nitpick comments:
In `@website/src/pages/index.astro`:
- Around line 6-8: Compute categoryCounts first by calling getCategoryCounts()
and then derive promptCount from that result (e.g., use
categoryCounts["prompts"] or the appropriate property) instead of filtering
ITEMS again; this removes the redundant ITEMS iteration done by promptCount and
keeps a single pass through ITEMS via getCategoryCounts(), so update the order
of the calls and the promptCount assignment to reference categoryCounts.
- Line 43: Replace the hardcoded "8" in the statistic element with a dynamic
count derived from the CATEGORIES array: import or reference the CATEGORIES
constant used by the site and render CATEGORIES.length inside the <div
class="n"> element (or compute a derived variable like categoryCount in the
frontmatter) so the displayed catalogue count always reflects the actual number
of categories.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Repository YAML (base), Organization UI (inherited)
Review profile: CHILL
Plan: Pro
Run ID: 247f41b5-e3b0-4d92-a7d9-de8290025830
⛔ Files ignored due to path filters (3)
website/public/assets/wapuus/wapuu-astropuu.pngis excluded by!**/*.pngwebsite/public/assets/wapuus/wapuu-rocket.svgis excluded by!**/*.svgwebsite/public/assets/wapuus/wapuu-yoduu.pngis excluded by!**/*.png
📒 Files selected for processing (2)
website/src/pages/index.astrowebsite/src/pages/onboarding.astro
📜 Review details
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (3)
- GitHub Check: Testing
- GitHub Check: check
- GitHub Check: coderabbit-gate
🔇 Additional comments (6)
website/src/pages/onboarding.astro (1)
2-4: LGTM!website/src/pages/index.astro (5)
15-61: LGTM!
91-135: LGTM!
180-471: LGTM!
74-86: Ensure everyCATEGORIES[].idis included in the/c/[type]/static route params
website/src/pages/c/[type]/index.astrogenerates pages fromgetAvailableResourceTypes().map(t => ({ params: { type: t.type } })), while the catalogue cards link to${base}c/${cat.id}/for:agents,instructions,prompts,skills,hooks,workflows,plugins,tools. This will only be safe ifgetAvailableResourceTypes()(viaRESOURCE_TYPES) includes matchingt.typevalues for all of those ids; otherwise some cards could link to routes that aren’t generated.
140-174: Learn/Cookbook cards: check link routes + confirm wapuu image assets 🐾
- The referenced wapuu images are present under
website/public/assets/wapuus/:wapuu-yoduu.pngandwapuu-rocket.svg(so those/assets/wapuus/...URLs won’t explode).- The
href="${base}learn/"andhref="${base}cookbook/"routes depend on Astro pages existing atwebsite/src/pages/learn/index.astroandwebsite/src/pages/cookbook/index.astro; the earlier route check didn’t actually confirm those filenames.
🔍 Reviewer Summary for PR #862CI Status: ✅ Recommendations
|
General Pull Request
Linked issues
Closes #861
Changelog
Added
onboarding/alias that redirects togetting-started/.Changed
Fixed
Start hereCTA resolves to a real page.Removed
Risk Assessment
Risk Level: Low
Potential Impact:
This change only affects the homepage surface and a redirect alias. The risk is limited to visual regressions or broken links on the landing page.
Mitigation Steps:
/onboarding/redirects to/getting-started/.How to Test
Prerequisites
Test Steps
Start hereand confirm it redirects togetting-started/.Browse catalogues, each catalogue card,Learn it at your own pace, andFollow a recipe.Expected Results
Edge Cases to Verify
/onboarding/returns a redirect rather than a 404Checklist (Global DoD / PR)
last_updatedandversion)References