feat(website): add tabbed install selector - #919
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
Greptile SummaryThe PR replaces the landing-page install CTA with an accessible, progressively enhanced tab selector and updates installation and changelog guidance around curl and
Confidence Score: 4/5The PR appears safe to merge, with one non-blocking clipboard-feedback timing issue under rapid repeated activation. The installation selector, generated guidance, and documentation are internally consistent, but overlapping reset timers can clear the most recent copy result too early. Files Needing Attention: website/src/components/marketing/InstallTabs.astro Important Files Changed
Flowchart%%{init: {'theme': 'neutral'}}%%
flowchart LR
Load[Landing page loads] --> Enhance[Enhance install selector]
Enhance --> Select[Select install method]
Select --> Panel[Show matching command panel]
Select --> Fragment[Update URL fragment]
Fragment --> History[Back or forward navigation]
History --> Panel
Panel --> Copy[Copy command]
Copy --> Feedback[Show success or recovery feedback]
Prompt To Fix All With AI### Issue 1
website/src/components/marketing/InstallTabs.astro:157-181
**Overlapping copy feedback timers**
When the same copy button is activated more than once within 2.4 seconds, the earlier timeout clears the latest result prematurely, shortening both the visible feedback and its accessible live-region announcement.
```suggestion
for (const button of picker.querySelectorAll<HTMLButtonElement>("[data-copy-command]")) {
let resetTimer: number | undefined;
button.addEventListener("click", async () => {
const status = button.querySelector<HTMLElement>("[data-copy-status]");
const label = button.querySelector<HTMLElement>("[data-copy-label]");
if (resetTimer !== undefined) window.clearTimeout(resetTimer);
button.classList.remove("copied", "failed");
if (label) label.textContent = "[ copy ]";
try {
await navigator.clipboard.writeText(button.dataset.copyCommand ?? "");
button.classList.add("copied");
if (label) label.textContent = "[ copied ]";
if (status) status.textContent = "Copied to clipboard";
} catch {
button.classList.add("failed");
if (label) label.textContent = "[ select ]";
if (status) status.textContent = "Could not copy. Select the command manually.";
}
resetTimer = window.setTimeout(() => {
button.classList.remove("copied", "failed");
if (label) label.textContent = "[ copy ]";
if (status) status.textContent = "";
resetTimer = undefined;
}, 2400);
});
}
```
---
For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.Reviews (1): Last reviewed commit: "feat(website): add tabbed install select..." | Re-trigger Greptile |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The landing page presents npm as the primary install path, then repeats the available methods in a second section further down the page. Installation and update guidance also does not consistently establish the curl installer and
hunk updateas the canonical paths.Approach
hunk updatecanonical from Hunk 0.20 onward and keep current versus historical changelog install guidance accurateThis does not add a PowerShell installer or change installer/update runtime behavior.
Validation
bun run website:checkbun run website:buildbun run website:test:browser— 87 passed, 1 expected mobile-only skipbun run website:linksbun test scripts/generate-changelog.test.ts— 95 passedbun run typecheckoxfmt --checkfor all changed filesgit diff --check origin/main...HEADManual visual checks covered desktop and 320px mobile layouts in Chromium, including the compact header star control, content-sized tabs, internal tab scrolling, and no page-level horizontal overflow. Automated axe checks passed on desktop and mobile. Safari and physical devices were not tested.
Review
Fresh-context subagent reviews covered frontend correctness/accessibility, documentation and generated changelog semantics, and developer-facing UX. Findings around fragment/history synchronization, clipboard failure feedback, pre-0.20 updates, and conditional checksum verification were addressed; the final focused review found no remaining blockers or fixes worth doing now.
This PR description was generated by Pi using GPT-5.6-sol