feat: split portal and configurable lab - #6
Merged
Merged
Conversation
added 30 commits
July 30, 2026 00:18
added 4 commits
July 30, 2026 19:46
# Conflicts: # README.md # app/components/labs/LayoutLab.tsx # app/data/ecosystem.ts # package-lock.json # package.json # playwright.config.ts # scripts/build-fixtures.mjs # scripts/verify-export.mjs # tests/browser/site.spec.ts # tests/ecosystem.test.ts # tests/export.test.mjs # tests/fixtures.test.mjs
# Conflicts: # app/components/CombinedWorkbench.tsx # app/components/FeatureShowcase.tsx # app/components/InstallGuide.tsx # app/components/ResponsiveNavigation.tsx # app/components/SiteHeader.tsx # app/components/labs/IconLab.tsx # app/components/labs/IntegrationLab.tsx # app/components/labs/LayoutLab.tsx # app/page.tsx # app/styles/responsive.css # app/styles/shell.css # scripts/verify-export.mjs # tests/browser/accessibility.spec.ts # tests/browser/site.spec.ts # tests/dev-browser/hydration.spec.ts # tests/ecosystem.test.ts # tests/export.test.mjs
Contributor
There was a problem hiding this comment.
Pull request overview
This PR restructures the site into a concise developer-first homepage (/) and a full-featured configurable lab experience under /lab/, while preserving legacy deep links and ensuring GitHub Pages-safe routing, navigation, and export verification.
Changes:
- Split the previous all-in-one homepage into a portal (
/) plus a dedicated lab route (/lab/) with updated metadata, structured data, and sitemap entries. - Introduced typed, data-driven navigation for home vs. lab (responsive vs. disclosure presentation) and added legacy URL redirection to preserve shared configuration links.
- Updated export validation, budgets, and Playwright/unit tests to cover the new route split, structured data separation, and Pages-safe asset/link behavior.
Reviewed changes
Copilot reviewed 34 out of 35 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| tests/structured-data.test.ts | Adds unit coverage for home/lab JSON-LD builders and safe serialization. |
| tests/site-routing.test.ts | Verifies Pages-safe lab URL helpers and legacy redirect destination logic. |
| tests/navigation.test.ts | Asserts the new typed home/lab navigation datasets. |
| tests/export.test.mjs | Updates export-contract checks for separate home vs. lab canonical/JSON-LD and budgets. |
| tests/ecosystem.test.ts | Aligns ecosystem assertions with the new /lab/ page split and copy updates. |
| tests/dev-browser/hydration.spec.ts | Moves dev hydration coverage to the lab route. |
| tests/browser/site.spec.ts | Adjusts end-to-end expectations to treat /lab/ as the full experience route. |
| tests/browser/routes.spec.ts | Adds browser coverage for portal vs. lab behavior and legacy redirect handling. |
| tests/browser/capabilities.spec.ts | Points capability checks at /lab/ and updates heading expectations. |
| tests/browser/accessibility.spec.ts | Splits axe coverage between homepage and lab, updates route/section expectations. |
| scripts/verify-export.mjs | Extends export verification to validate lab/index.html, separate budgets, and schema separation. |
| app/styles/shell.css | Adds disclosure navigation styling and new homepage section styling. |
| app/styles/responsive.css | Updates responsive breakpoint and adds new homepage grid/layout responsiveness. |
| app/sitemap.ts | Adds /lab/ to sitemap with its own priority. |
| app/page.tsx | Replaces the old monolithic experience with the new portal layout and legacy redirect hook. |
| app/lib/structured-data.ts | Introduces shared builders for home vs. lab structured data and safe serialization. |
| app/lib/site.ts | Adds canonical lab path/url helpers for Pages-safe linking. |
| app/lib/legacy-navigation.ts | Implements legacy deep-link preservation by mapping old config/hash URLs to /lab/. |
| app/lab/page.tsx | Adds dedicated lab route page with its own metadata and JSON-LD. |
| app/data/navigation.ts | Adds typed navigation item datasets for home vs. lab. |
| app/components/SiteHeader.tsx | Refactors header to accept typed nav/actions and support different presentations. |
| app/components/ResponsiveNavigation.tsx | Refactors navigation rendering to be data-driven and support disclosure behavior. |
| app/components/QuickStartCopy.tsx | Adds client-side copy-to-clipboard quick-start component for the portal. |
| app/components/LibraryDirectory.tsx | Updates directory labeling and routes the “studio” link back to the homepage. |
| app/components/LegacyLabRedirect.tsx | Adds client redirect to preserve legacy shared configurations and anchors. |
| app/components/labs/UiNativeLab.tsx | Updates disclosure copy/headings to match new wording and navigation labels. |
| app/components/labs/LayoutLab.tsx | Updates headings and disclosure summary labels for clarity/consistency. |
| app/components/labs/InteractionLab.tsx | Updates headings and disclosure labels to the new wording. |
| app/components/labs/IntegrationLab.tsx | Updates headings, disclosure labels, and “studio” link routing. |
| app/components/labs/IconLab.tsx | Updates lab heading copy. |
| app/components/InstallGuide.tsx | Updates headings and disclosure labels to match the new quick-start language. |
| app/components/HeroActions.tsx | Introduces dedicated home vs. lab hero CTA components. |
| app/components/FeatureShowcase.tsx | Replaces proof cards with a package overview grid linking into lab sections. |
| app/components/CombinedWorkbench.tsx | Updates workbench heading copy. |
| .gitignore | Adds Playwright CLI and output directories to ignores. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
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.
Summary
/lab/Why
The previous root page mixed product introduction, configuration, demonstrations, installation, and company conversion into one dense journey. Its inline navigation also allowed labels to collide near the 1249px desktop boundary. This change gives developers a focused adoption path at
/while retaining the full configurable showcase at/lab/.User and developer impact
The homepage now communicates the four-package value proposition and installation path immediately. The lab retains all working demonstrations with clearer section language and an always-disclosed section menu that remains keyboard-, pointer-, and short-height operable. Legacy shared links automatically resolve to the lab without losing configuration state.
Validation
npm.cmd run qualitygit diff --checkNo dependencies, package versions, deployment state, or publishing state changed.