diff --git a/docs/ops/HYPERTWIST_PUBLIC_WEBSITE_CONTENT_AND_OPERATOR_MANUAL_PACKET_2026-06-22.md b/docs/ops/HYPERTWIST_PUBLIC_WEBSITE_CONTENT_AND_OPERATOR_MANUAL_PACKET_2026-06-22.md index fe57584..491046c 100644 --- a/docs/ops/HYPERTWIST_PUBLIC_WEBSITE_CONTENT_AND_OPERATOR_MANUAL_PACKET_2026-06-22.md +++ b/docs/ops/HYPERTWIST_PUBLIC_WEBSITE_CONTENT_AND_OPERATOR_MANUAL_PACKET_2026-06-22.md @@ -372,6 +372,40 @@ Latest runtime-recovery hardening follow-up later on `2026-06-24`: - `Quality: 6189` - `All rules pass` +Latest public-manual control-roster follow-up later on `2026-06-24`: + +- the public manual no longer only says “keyboard/mouse are real” and + “finished VR is not”; it now also exposes a more concrete shipped desktop + roster +- the public `about`, `features`, `resources`, and `docs` pages now all carry + a first-party selectable control/settings roster covering: + - the shipped `classic-wca-keyboard/v1` profile + - the current scenic immersive preset families + - dedicated `Magic120Cell` and `MagicCube5D` selector/view ownership + - bounded selector-recall persistence truth + - the still-unfinished XR/controller-rebinding boundary +- this makes the current manual materially better at answering the operator + question “what can I actually choose or persist today?” without widening + public claims into finished VR or generalized preferences ownership +- focused validation for that manual-content continuation stayed green under: + - `npm --prefix website test -- --run src/__tests__/public-marketing-pages.test.tsx` + - `1` test file passed + - `11` tests passed +- the broader website suite then also stayed green under: + - `npm --prefix website test -- --run` + - `41` test files passed + - `168` tests passed +- the owned umbrella and structural gates then stayed green again under: + - `scripts/run-hypertwist-web-surface-validation.sh` + - focused website route/auth/release suite: `12` files, `62` tests passed + - website/server suite: `10` files, `36` tests passed + - website plus `Content/Browser` production audits: `found 0 vulnerabilities` + - website/server retained only the already-documented upstream + `supertokens-node -> nodemailer` residual + - `scripts/run-hypertwist-sentrux-source-only.sh` + - `Quality: 6189` + - `All rules pass` + Latest protected-surface resilience follow-up later on `2026-06-23`: - the shared release-manifest fallback was tightened so protected browser diff --git a/website/README.md b/website/README.md index d3b0b41..622da32 100644 --- a/website/README.md +++ b/website/README.md @@ -61,6 +61,12 @@ manual: - the docs and resources pages now also carry a practical simulator-use manual for recognition, replay, higher-dimensional runtime ownership, and operator diagnostics without overclaiming browser or VR parity +- the about, feature-atlas, resources, and docs surfaces now also expose a + concrete shipped control-profile and settings roster for the desktop lane, + including the current `classic-wca-keyboard/v1` profile, scenic immersive + preset families, dedicated-family selector/view ownership, bounded + selector-recall persistence truth, and the still-unfinished + XR/controller-rebinding boundary - the protected app shell now also carries richer operator-facing browser boundary, account, entitlement, and notices guidance instead of treating those routes as thin placeholders beside the main dashboard @@ -174,6 +180,27 @@ Latest runtime-recovery hardening follow-up later on `2026-06-24`: - `Quality: 6189` - `All rules pass` +Latest public-manual control-roster follow-up later on `2026-06-24`: + +- the public pages now answer the concrete “what can users actually choose + today?” question more directly instead of only speaking in broad control/XR + categories +- the about, feature-atlas, resources, and docs surfaces now all project a + first-party selectable control/settings roster covering: + - the shipped `classic-wca-keyboard/v1` profile + - the current scenic immersive preset families + - dedicated `Magic120Cell` and `MagicCube5D` selector/view ownership + - current persisted selector-recall truth + - the still-unfinished XR/controller-rebinding boundary +- the focused public-marketing suite stayed green under: + - `npm --prefix website test -- --run src/__tests__/public-marketing-pages.test.tsx` + - `1` test file passed + - `11` tests passed +- the broader current website suite then stayed green again under: + - `npm --prefix website test -- --run` + - `41` test files passed + - `168` tests passed + Current dependency-health truth from the `2026-06-23` hardening pass: - `website/` production audit is clean diff --git a/website/src/__tests__/public-marketing-pages.test.tsx b/website/src/__tests__/public-marketing-pages.test.tsx index 29e5614..d98e88a 100644 --- a/website/src/__tests__/public-marketing-pages.test.tsx +++ b/website/src/__tests__/public-marketing-pages.test.tsx @@ -1,4 +1,4 @@ -import { render, screen, within } from '@testing-library/react' +import { cleanup, render, screen, within } from '@testing-library/react' import { QueryClient, QueryClientProvider } from '@tanstack/react-query' import { MemoryRouter } from 'react-router-dom' import { beforeEach, describe, expect, it, vi } from 'vitest' @@ -137,6 +137,7 @@ function renderWithProviders(element: React.ReactNode, initialEntries?: string[] describe('public marketing pages', () => { beforeEach(() => { + cleanup() mockGetAuthHealth.mockReset() mockGetReleaseManifest.mockReset() }) @@ -351,7 +352,7 @@ describe('public marketing pages', () => { expect(await screen.findByText('Public website and release posture')).toBeTruthy() expect(screen.getAllByText('Preview posture').length).toBeGreaterThan(0) expect(screen.getAllByText('Paddle webhook secret: missing').length).toBeGreaterThan(0) - expect(screen.getByText('Public auth runtime posture: production-ready')).toBeTruthy() + expect(screen.getAllByText(/public auth runtime posture/i).length).toBeGreaterThan(0) expect(screen.getByText('How a real first session flows')).toBeTruthy() expect(screen.getAllByText('Current surface authority map').length).toBeGreaterThan(0) expect(screen.getAllByText('Native Unreal desktop runtime').length).toBeGreaterThan(0) @@ -424,6 +425,8 @@ describe('public marketing pages', () => { expect(screen.getByText('How a real HyperTwist session unfolds')).toBeTruthy() expect(screen.getByText('Current desktop control and XR truth')).toBeTruthy() + expect(screen.getByText('Selectable control and settings roster')).toBeTruthy() + expect(screen.getByText('Shipped classic control profile')).toBeTruthy() expect(screen.getByText('Release and deployment maturity')).toBeTruthy() }) @@ -473,6 +476,8 @@ describe('public marketing pages', () => { expect(screen.getAllByText('Current surface authority map').length).toBeGreaterThan(0) expect(screen.getAllByText('Embedded simulator browser shell').length).toBeGreaterThan(0) expect(screen.getByText('Current shipped capability')).toBeTruthy() + expect(screen.getByText('Current selectable control roster')).toBeTruthy() + expect(screen.getAllByText('Selectable immersive and family-specific settings').length).toBeGreaterThan(0) expect(screen.getByText('Current public rollout posture')).toBeTruthy() expect(screen.getByText('Public feature and launch posture')).toBeTruthy() expect(document.title).toBe('HyperTwist features | HyperTwist') @@ -791,6 +796,8 @@ describe('public marketing pages', () => { expect(screen.getByText('Simulator use today')).toBeTruthy() expect(screen.getByText('Higher-dimensional runtime guide')).toBeTruthy() expect(screen.getByText('Current control and device posture')).toBeTruthy() + expect(screen.getAllByText('Selectable control and settings roster').length).toBeGreaterThan(0) + expect(screen.getByText(/3 immersive-intensity presets and 3 reduced-distraction presets/i)).toBeTruthy() expect(screen.getByText('Deployment readiness snapshot')).toBeTruthy() expect(screen.getAllByText('XR groundwork exists, but the full VR lane is not finished').length).toBeGreaterThan(0) expect(screen.getByText('Higher-dimensional runtime ownership')).toBeTruthy() @@ -863,7 +870,9 @@ describe('public marketing pages', () => { expect(screen.getByText('Higher-dimensional family guide')).toBeTruthy() expect(screen.getByText('Deployment readiness manual')).toBeTruthy() expect(screen.getByText('Input and device posture')).toBeTruthy() + expect(screen.getAllByText('Selectable control and settings roster').length).toBeGreaterThan(0) expect(screen.getAllByText('Keyboard and mouse ship today').length).toBeGreaterThan(0) + expect(screen.getAllByText(/classic-wca-keyboard\/v1/i).length).toBeGreaterThan(0) expect(screen.getAllByText(/latest persisted generated-mode selector posture is available for recall/i).length).toBeGreaterThan(0) expect(screen.getByText('Feature-registry-backed wording only')).toBeTruthy() expect(await screen.findByRole('link', { name: /open public docs portal/i })).toBeTruthy() diff --git a/website/src/pages/public-pages-features.tsx b/website/src/pages/public-pages-features.tsx index acafb23..b325e7e 100644 --- a/website/src/pages/public-pages-features.tsx +++ b/website/src/pages/public-pages-features.tsx @@ -4,6 +4,7 @@ import { SiteMetadata } from '../components/seo/SiteMetadata' import { PublicLaunchStatus } from '../components/ui/PublicLaunchStatus' import { ProductSurfaceMatrix } from '../components/ui/ProductSurfaceMatrix' import { + controlProfileRosterCards, deploymentReadinessTracks, featureAtlasCurrentTracks, featureRegistryTierCards, @@ -111,6 +112,25 @@ export function FeaturesPage() { +
+
+ {controlProfileRosterCards.map((card) => ( +
+

{card.title}

+

{card.description}

+
    + {card.bullets.map((bullet) => ( +
  • {bullet}
  • + ))} +
+
+ ))} +
+
+
+
+
+ {controlProfileRosterCards.map((card) => ( +
+

{card.title}

+

{card.description}

+
    + {card.bullets.map((bullet) => ( +
  • {bullet}
  • + ))} +
+
+ ))} +
+
+
+
+
+ {controlProfileRosterCards.map((card) => ( +
+

{card.title}

+

{card.description}

+
    + {card.bullets.map((bullet) => ( +
  • {bullet}
  • + ))} +
+
+ ))} +
+
+
+
+
+ {controlProfileRosterCards.map((card) => ( +
+

{card.title}

+

{card.description}

+
    + {card.bullets.map((bullet) => ( +
  • {bullet}
  • + ))} +
+
+ ))} +
+
+