Make auth entry pages explicit about desktop truth

This commit is contained in:
axiomlogicnexus 2026-06-24 23:31:40 +00:00
parent 90e6088ecc
commit 5e4389773e
5 changed files with 58 additions and 2 deletions

View file

@ -391,6 +391,23 @@ That follow-up stayed green under:
- `npm --prefix website test -- --run src/__tests__/protected-app-pages.test.tsx`
- focused Account and Notices coverage stayed green
Latest auth-entry parity follow-up later on `2026-06-24`:
- the public Login and Register routes now also render a compact
browser-versus-desktop reality panel instead of relying only on after-sign-in
next-step notes plus the later protected dashboard to explain the split
- this keeps:
- auth-entry account-access language
- protected follow-through routing
aligned with the same explicit native-runtime and unfinished
XR/controller-boundary truth already present across the public manual and the
signed-in browser shell
That follow-up stayed green under:
- `npm --prefix website test -- --run src/__tests__/public-auth-pages.test.tsx`
- focused Login and Register coverage stayed green
Latest public-surface continuity follow-up later on `2026-06-24`:
- the reusable `Choose the right HyperTwist surface` guide is no longer limited

File diff suppressed because one or more lines are too long

View file

@ -208,6 +208,8 @@ describe('public auth and download pages', () => {
expect(registerLink.getAttribute('href')).toBe('/register?next=%2Fapp')
expect(screen.getByText('Protected operator dashboard')).toBeTruthy()
expect(screen.getAllByText(/After sign-in you will continue to the protected operator dashboard/i).length).toBeGreaterThan(0)
expect(screen.getByText('Browser account access does not replace the simulator.')).toBeTruthy()
expect(screen.getByText('Current input, XR, and settings truth')).toBeTruthy()
expect(screen.getByText('Protected browser dashboard')).toBeTruthy()
expect(screen.getByText('Native Unreal desktop runtime')).toBeTruthy()
@ -232,6 +234,8 @@ describe('public auth and download pages', () => {
expect(loginLink.getAttribute('href')).toBe('/login?next=%2Fapp%2Fdownloads%3Fplatform%3Dwindows')
expect(screen.getByText('Protected Windows release lane')).toBeTruthy()
expect(screen.getAllByText(/After sign-in you will continue to the protected Windows download center/i).length).toBeGreaterThan(0)
expect(screen.getByText('Browser account access does not replace the simulator.')).toBeTruthy()
expect(screen.getByText('Why the browser is intentionally narrower')).toBeTruthy()
expect(screen.getByText('Protected browser dashboard')).toBeTruthy()
expect(screen.getByText('Native Unreal desktop runtime')).toBeTruthy()
@ -291,6 +295,7 @@ describe('public auth and download pages', () => {
expect(screen.getByText('Recommended recovery order')).toBeTruthy()
expect(screen.getByText('Missing auth env: VITE_SUPERTOKENS_API_DOMAIN')).toBeTruthy()
expect(screen.getByText('VITE_AUTH_API_BASE_URL not configured; same-origin auth fallback remains active.')).toBeTruthy()
expect(screen.getByText('Browser account access does not replace the simulator.')).toBeTruthy()
expect(screen.getByRole('link', { name: 'Open support' }).getAttribute('href')).toBe('/support?topic=operator-access')
expect(screen.getByText('Protected operator dashboard')).toBeTruthy()
})

View file

@ -10,7 +10,7 @@ import {
} from '../auth/supertokens-client'
import { SiteMetadata } from '../components/seo/SiteMetadata'
import { OperationalStatusCallout } from '../components/ui/OperationalStatusCallout'
import { deliverySurfaceCards, operatorManualTracks } from '../site-data'
import { browserDesktopRealityCards, deliverySurfaceCards, operatorManualTracks } from '../site-data'
import { buildSupportPath, getDownloadPlatformLabel, normalizeDownloadPlatform } from '../site-routes'
function AuthShell({
@ -165,6 +165,33 @@ function AuthAccessGuide({ nextPath }: { nextPath: string }) {
)
}
function AuthBrowserDesktopRealityPanel() {
return (
<div className="top-gap">
<p className="status-pill status-pill--info">Browser-versus-desktop reality</p>
<h2>Browser account access does not replace the simulator.</h2>
<p>
Sign-in exists so protected release, entitlement, pairing, and account work can stay in the browser.
The real simulator still lives in the desktop runtime, and unfinished XR/controller widening still stays explicit.
</p>
<div className="card-grid top-gap">
{browserDesktopRealityCards.map((card) => (
<article key={card.title} className="card card--compact">
<p className="status-pill status-pill--info">{card.posture}</p>
<h3>{card.title}</h3>
<p>{card.description}</p>
<ul className="list top-gap">
{card.bullets.map((bullet) => (
<li key={bullet}>{bullet}</li>
))}
</ul>
</article>
))}
</div>
</div>
)
}
function AuthRuntimeNotice() {
const authRuntimeValidation = getSuperTokensAuthRuntimeValidation()
if (authRuntimeValidation.ready && authRuntimeValidation.warnings.length === 0) {
@ -294,6 +321,7 @@ export function LoginPage() {
</button>
) : null}
</div>
<AuthBrowserDesktopRealityPanel />
<AuthAccessGuide nextPath={nextPath} />
</AuthShell>
</>
@ -356,6 +384,7 @@ export function RegisterPage() {
{isSubmitting ? 'Creating account...' : 'Create account'}
</button>
</form>
<AuthBrowserDesktopRealityPanel />
<AuthAccessGuide nextPath={nextPath} />
</AuthShell>
</>

View file

@ -821,6 +821,11 @@ export const resourceCollections = [
] as const
export const changelogEntries = [
{
date: 'June 24, 2026',
title: 'Login and register now keep the browser-versus-desktop truth explicit too',
details: 'The public auth entry pages now render a compact browser-versus-desktop reality panel before operators even finish sign-in, so account access, protected release routing, and desktop pairing no longer depend only on the later signed-in dashboard to explain what stays native and what remains outside the current XR/controller boundary.',
},
{
date: 'June 24, 2026',
title: 'Account and notices now keep the same protected browser-versus-desktop truth',