feat(website): add SvelteKit landing site#2
Conversation
* Add SvelteKit static-site setup with adapter-static * Include Hero, Pitch, Rules, Install, Changelog sections * Wire BASE_PATH support for GitHub Pages subpath hosting * Add Pages workflow that builds and deploys on master push Co-Authored-By: Claude <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
🚧 Files skipped from review as they are similar to previous changes (2)
📝 WalkthroughWalkthroughAdds a SvelteKit + Vite website in ChangesWebsite Landing Page & Deployment
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~25 minutes Poem
🚥 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)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (1)
website/src/lib/components/Rules.svelte (1)
55-65: ⚡ Quick winAdd semantic table headers for accessibility.
The rule table currently renders unlabeled cells only. Add a hidden header row (and optional caption) so assistive tech can announce column meaning.
♿ Suggested patch
- <table class="rule-table"> + <table class="rule-table"> + <thead class="sr-only"> + <tr> + <th scope="col">Rule #</th> + <th scope="col">Trigger</th> + <th scope="col">Note</th> + </tr> + </thead> <tbody> {`#each` tier.rules as rule, ri}<style> + .sr-only { + position: absolute; + width: 1px; + height: 1px; + padding: 0; + margin: -1px; + overflow: hidden; + clip: rect(0, 0, 0, 0); + white-space: nowrap; + border: 0; + }🤖 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/lib/components/Rules.svelte` around lines 55 - 65, The table rendered by Rules.svelte (the <table class="rule-table"> that iterates tier.rules and renders rule.trigger and rule.note) lacks semantic headers; add a <caption> (optional) and a <thead> with a header row containing three <th scope="col"> cells for the index, trigger, and note so screen readers know each column meaning, and hide the visual appearance using an existing or new utility CSS class (e.g., "sr-only" or "visually-hidden") so the headers are announced but not shown; keep the existing tbody and {`#each` tier.rules as rule, ri} block unchanged.
🤖 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 `@website/src/app.css`:
- Line 44: The CSS custom property --serif currently lists "Georgia" capitalized
which triggers stylelint's value-keyword-case rule; update the font-family
fallback to use lowercase "georgia" (i.e., change --serif: 'Fraunces', Georgia,
'Times New Roman', serif; to use georgia) so the value-keyword-case lint error
is resolved while keeping the same font order and fallbacks.
In `@website/src/lib/components/Install.svelte`:
- Around line 4-8: The copy function uses navigator.clipboard.writeText without
handling failures; wrap the writeText call in a try/catch, first guard for
navigator.clipboard availability, and on failure fall back to a legacy copy
approach or surface an error (e.g., set copied to an error state and/or
console.error) so the promise rejection is handled; update the function named
copy and the copied state updates to reflect success vs failure and ensure the
timeout still clears the status.
---
Nitpick comments:
In `@website/src/lib/components/Rules.svelte`:
- Around line 55-65: The table rendered by Rules.svelte (the <table
class="rule-table"> that iterates tier.rules and renders rule.trigger and
rule.note) lacks semantic headers; add a <caption> (optional) and a <thead> with
a header row containing three <th scope="col"> cells for the index, trigger, and
note so screen readers know each column meaning, and hide the visual appearance
using an existing or new utility CSS class (e.g., "sr-only" or
"visually-hidden") so the headers are announced but not shown; keep the existing
tbody and {`#each` tier.rules as rule, ri} block unchanged.
🪄 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: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: d3e1e46b-27be-4a93-bf83-915e6b476410
⛔ Files ignored due to path filters (2)
website/pnpm-lock.yamlis excluded by!**/pnpm-lock.yamlwebsite/static/favicon.svgis excluded by!**/*.svg
📒 Files selected for processing (21)
.github/workflows/pages.ymlwebsite/.gitignorewebsite/og-template.htmlwebsite/package.jsonwebsite/src/app.csswebsite/src/app.htmlwebsite/src/lib/components/Changelog.sveltewebsite/src/lib/components/Footer.sveltewebsite/src/lib/components/Hero.sveltewebsite/src/lib/components/Install.sveltewebsite/src/lib/components/Nav.sveltewebsite/src/lib/components/Pitch.sveltewebsite/src/lib/components/Rules.sveltewebsite/src/lib/components/Terminal.sveltewebsite/src/lib/data/showcase-rules.jswebsite/src/lib/data/terminal-script.jswebsite/src/routes/+layout.jswebsite/src/routes/+layout.sveltewebsite/src/routes/+page.sveltewebsite/svelte.config.jswebsite/vite.config.js
* normalize CSS serif fallback keyword casing * handle clipboard copy failures in install commands
Summary
website/with Hero, Pitch, Rules, Install, and Changelog sections.BASE_PATHsupport so the site can live at the/unsloppifysubpath on GitHub Pages.pages.ymlworkflow that builds and deploys on every push tomasterthat toucheswebsite/**or the workflow itself.Test plan
cd website && pnpm install && pnpm run buildsucceeds locallypnpm run devrenders the page without console errors🤖 Generated with Claude Code
Summary by CodeRabbit