Mirror native control roster into operator shell
This commit is contained in:
parent
02f14da717
commit
8219409959
5 changed files with 129 additions and 1 deletions
|
|
@ -406,6 +406,35 @@ Latest public-manual control-roster follow-up later on `2026-06-24`:
|
|||
- `Quality: 6189`
|
||||
- `All rules pass`
|
||||
|
||||
Latest protected control-roster continuation later on `2026-06-24`:
|
||||
|
||||
- the same signed-in operator shell now also mirrors the native control and
|
||||
settings truth instead of leaving that detail only on the public manual
|
||||
- `website/src/pages/app-pages.tsx` now projects a shared protected
|
||||
control-roster panel into:
|
||||
- `/app`
|
||||
- `/app/browser-access`
|
||||
- `/app/account`
|
||||
- that continuation keeps the signed-in browser shell honest about the current
|
||||
desktop runtime by exposing:
|
||||
- the shipped `classic-wca-keyboard/v1` profile
|
||||
- the scenic immersive preset families
|
||||
- the current `Magic120Cell` and `MagicCube5D` selector/view ownership
|
||||
- selector-recall continuity truth
|
||||
- the explicit unfinished XR/controller-rebinding boundary
|
||||
- this closes the information-quality drop that previously happened after
|
||||
sign-in, where public pages had more concrete simulator-control truth than
|
||||
adjacent protected routes
|
||||
- focused validation for that protected continuation stayed green under:
|
||||
- `npm --prefix website run type-check`
|
||||
- `npm --prefix website test -- --run src/__tests__/protected-app-pages.test.tsx src/__tests__/DashboardOverviewPage.test.tsx`
|
||||
- `2` test files passed
|
||||
- `9` tests passed
|
||||
- the broader website suite also stayed green under:
|
||||
- `npm --prefix website test -- --run`
|
||||
- `41` test files passed
|
||||
- `168` tests passed
|
||||
|
||||
Latest protected-surface resilience follow-up later on `2026-06-23`:
|
||||
|
||||
- the shared release-manifest fallback was tightened so protected browser
|
||||
|
|
|
|||
|
|
@ -67,6 +67,10 @@ manual:
|
|||
preset families, dedicated-family selector/view ownership, bounded
|
||||
selector-recall persistence truth, and the still-unfinished
|
||||
XR/controller-rebinding boundary
|
||||
- the protected dashboard, browser-access, and account routes now also mirror
|
||||
that same native control/settings roster after sign-in, so entitled users do
|
||||
not lose the current simulator-control truth when they move from the public
|
||||
manual into the operator shell
|
||||
- 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
|
||||
|
|
@ -201,6 +205,26 @@ Latest public-manual control-roster follow-up later on `2026-06-24`:
|
|||
- `41` test files passed
|
||||
- `168` tests passed
|
||||
|
||||
Latest protected control-roster follow-up later on `2026-06-24`:
|
||||
|
||||
- the protected operator shell now mirrors the same native control/settings
|
||||
truth after sign-in instead of leaving that detail only on the public manual
|
||||
- `/app`, `/app/browser-access`, and `/app/account` now each carry the shipped
|
||||
desktop roster and the explicit XR/controller boundary:
|
||||
- the shipped `classic-wca-keyboard/v1` profile
|
||||
- the scenic immersive preset families
|
||||
- current `Magic120Cell` and `MagicCube5D` selector/view ownership
|
||||
- persisted selector-recall truth
|
||||
- the still-unfinished XR/controller-rebinding boundary
|
||||
- focused protected validation stayed green under:
|
||||
- `npm --prefix website test -- --run src/__tests__/protected-app-pages.test.tsx src/__tests__/DashboardOverviewPage.test.tsx`
|
||||
- `2` test files passed
|
||||
- `9` tests passed
|
||||
- the broader current website suite 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
|
||||
|
|
|
|||
|
|
@ -187,6 +187,9 @@ describe('DashboardOverviewPage', () => {
|
|||
expect(screen.getByText('Public auth runtime posture: local-or-mixed')).toBeTruthy()
|
||||
expect(screen.getByText('Packaged validation passed')).toBeTruthy()
|
||||
expect(screen.getByText(/Magic120Cell dedicated-family training map: passed/i)).toBeTruthy()
|
||||
expect(screen.getByText('Native control and settings roster')).toBeTruthy()
|
||||
expect(screen.getAllByText(/classic-wca-keyboard\/v1/i).length).toBeGreaterThan(0)
|
||||
expect(screen.getByText('XR groundwork exists, but the full VR lane is not finished')).toBeTruthy()
|
||||
expect(screen.getByText('Desktop rollout follow-through')).toBeTruthy()
|
||||
expect(screen.getByText('Current product-surface map')).toBeTruthy()
|
||||
expect(screen.getByText('Embedded simulator browser shell')).toBeTruthy()
|
||||
|
|
|
|||
|
|
@ -191,6 +191,8 @@ describe('protected app pages', () => {
|
|||
renderPage(<BrowserAccessPage />, '/app/browser-access')
|
||||
|
||||
expect(await screen.findByText('Current browser posture')).toBeTruthy()
|
||||
expect(screen.getByText('Native control and XR boundary')).toBeTruthy()
|
||||
expect(screen.getByText('Shipped classic control profile')).toBeTruthy()
|
||||
expect(await screen.findByText(byExactTextContent('Auth runtime mode: public', 'LI'))).toBeTruthy()
|
||||
expect(await screen.findByText(byExactTextContent('Configured release targets: 1/2', 'LI'))).toBeTruthy()
|
||||
expect(screen.getByText('Operator escalation map')).toBeTruthy()
|
||||
|
|
@ -204,6 +206,8 @@ describe('protected app pages', () => {
|
|||
renderPage(<AccountPage />, '/app/account')
|
||||
|
||||
expect(await screen.findByText('Session profile')).toBeTruthy()
|
||||
expect(screen.getByText('Current simulator control ownership')).toBeTruthy()
|
||||
expect(screen.getAllByText(/classic-wca-keyboard\/v1/i).length).toBeGreaterThan(0)
|
||||
expect(screen.getByText(byExactTextContent('Billing source: session', 'LI'))).toBeTruthy()
|
||||
expect(await screen.findByText(byExactTextContent('Manifest viewer access: active', 'LI'))).toBeTruthy()
|
||||
expect(await screen.findByText(byExactTextContent('Windows: Primary shipping lane (Version 1.0.0, Channel candidate)', 'LI'))).toBeTruthy()
|
||||
|
|
|
|||
|
|
@ -10,7 +10,15 @@ import { resolvePublicLaunchStatusSummary } from '../public-launch'
|
|||
import { downloadTargets, launchReadiness, mplSourceUrl, openSourceRepoUrl, publicDocsUrl, releaseNotesUrl } from '../site-config'
|
||||
import { buildReleaseMetadataItems, resolveReleaseManifestView, type ReleaseManifestView } from '../release-manifest'
|
||||
import { buildSupportPath, getDownloadPlatformLabel, normalizeDownloadPlatform } from '../site-routes'
|
||||
import { desktopDownloadSteps, desktopFirstLaunchCards, productSurfaceMatrixRows, roadmapHonestyCards, supportEscalationCards } from '../site-data'
|
||||
import {
|
||||
controlProfileRosterCards,
|
||||
desktopDownloadSteps,
|
||||
desktopFirstLaunchCards,
|
||||
inputAndDevicePostureCards,
|
||||
productSurfaceMatrixRows,
|
||||
roadmapHonestyCards,
|
||||
supportEscalationCards,
|
||||
} from '../site-data'
|
||||
|
||||
function Panel({
|
||||
title,
|
||||
|
|
@ -255,6 +263,50 @@ function SupportEscalationChecklist({
|
|||
)
|
||||
}
|
||||
|
||||
function ControlRosterManualPanel({
|
||||
title,
|
||||
kicker,
|
||||
description,
|
||||
}: {
|
||||
title: string
|
||||
kicker: string
|
||||
description: string
|
||||
}) {
|
||||
const xrBoundaryCard = inputAndDevicePostureCards.find(
|
||||
(card) => card.title === 'XR groundwork exists, but the full VR lane is not finished',
|
||||
)
|
||||
|
||||
return (
|
||||
<Panel title={title} kicker={kicker}>
|
||||
<p>{description}</p>
|
||||
<div className="card-grid top-gap">
|
||||
{controlProfileRosterCards.map((card) => (
|
||||
<article key={card.title} className="card card--compact">
|
||||
<h3>{card.title}</h3>
|
||||
<p>{card.description}</p>
|
||||
<ul className="list top-gap">
|
||||
{card.bullets.map((bullet) => (
|
||||
<li key={bullet}>{bullet}</li>
|
||||
))}
|
||||
</ul>
|
||||
</article>
|
||||
))}
|
||||
{xrBoundaryCard ? (
|
||||
<article className="card card--compact">
|
||||
<h3>{xrBoundaryCard.title}</h3>
|
||||
<p>{xrBoundaryCard.description}</p>
|
||||
<ul className="list top-gap">
|
||||
{xrBoundaryCard.bullets.map((bullet) => (
|
||||
<li key={bullet}>{bullet}</li>
|
||||
))}
|
||||
</ul>
|
||||
</article>
|
||||
) : null}
|
||||
</div>
|
||||
</Panel>
|
||||
)
|
||||
}
|
||||
|
||||
export function DashboardOverviewPage() {
|
||||
const {
|
||||
user,
|
||||
|
|
@ -456,6 +508,12 @@ export function DashboardOverviewPage() {
|
|||
)}
|
||||
</Panel>
|
||||
|
||||
<ControlRosterManualPanel
|
||||
title="Native control and settings roster"
|
||||
kicker="Desktop runtime truth"
|
||||
description="This protected dashboard now mirrors the native operator and training inspect surfaces so signed-in users can see the shipped control profile, scenic presets, dedicated-family selectors, selector-recall continuity, and the still-bounded XR/controller line without opening the simulator first."
|
||||
/>
|
||||
|
||||
<DesktopFirstLaunchChecklist
|
||||
title="Desktop rollout follow-through"
|
||||
kicker="Post-download operator manual"
|
||||
|
|
@ -695,6 +753,11 @@ export function BrowserAccessPage() {
|
|||
</Link>
|
||||
</div>
|
||||
</Panel>
|
||||
<ControlRosterManualPanel
|
||||
title="Native control and XR boundary"
|
||||
kicker="Desktop handoff truth"
|
||||
description="This protected browser route keeps the simulator handoff honest by showing what the native runtime already owns today and where the later XR/controller completion packet still begins."
|
||||
/>
|
||||
<Panel title="Release authority around the browser shell" kicker="Distribution context">
|
||||
{releaseManifestQuery.isError ? (
|
||||
<p className="form-error">
|
||||
|
|
@ -805,6 +868,11 @@ export function AccountPage() {
|
|||
</ul>
|
||||
) : null}
|
||||
</Panel>
|
||||
<ControlRosterManualPanel
|
||||
title="Current simulator control ownership"
|
||||
kicker="Signed-in runtime posture"
|
||||
description="Your account and entitlement state matter here, but the real simulator still lives on the desktop side. This roster keeps the current control/settings truth visible after sign-in instead of dropping back to a thinner account-only shell."
|
||||
/>
|
||||
<Panel title="Account follow-through" kicker="Next actions">
|
||||
<p>
|
||||
Use the dashboard when you need a desktop-link token, the download center when you need an entitled package, and the notices lane when you need distribution/legal references.
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue