Expand HyperTwist protected workflow guidance

This commit is contained in:
axiomlogicnexus 2026-06-30 00:39:36 +00:00
parent d81339fde6
commit 4e5f48f0c1
4 changed files with 86 additions and 1 deletions

View file

@ -223,6 +223,8 @@ describe('DashboardOverviewPage', () => {
expect(screen.getByText('First simulator session')).toBeTruthy()
expect(screen.getByText('1. Resolve access and choose the right build')).toBeTruthy()
expect(screen.getByText('4. Open the higher-dimensional lanes and read the control boundary honestly')).toBeTruthy()
expect(screen.getByText('Software workflows after access is resolved')).toBeTruthy()
expect(screen.getByText('2. Run a recognition and correction workflow')).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()

View file

@ -198,6 +198,8 @@ describe('protected app pages', () => {
expect(screen.getByText(/Magic120Cell dedicated-family training map: passed/i)).toBeTruthy()
expect(screen.getByText('Protected browser-versus-desktop reality')).toBeTruthy()
expect(screen.getByText('Why the browser is intentionally narrower')).toBeTruthy()
expect(screen.getByText('Desktop workflows behind the browser handoff')).toBeTruthy()
expect(screen.getByText('4. Open the higher-dimensional family lanes')).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()
@ -390,10 +392,12 @@ describe('protected app pages', () => {
expect(screen.getByText('Current packaged desktop proof')).toBeTruthy()
expect(screen.getAllByText('Packaged validation passed').length).toBeGreaterThan(0)
expect(screen.getByText('Protected operator quick routes')).toBeTruthy()
expect(screen.getByText('What the downloaded software already supports')).toBeTruthy()
expect(screen.getByText('3. Review replay, coaching, and analytics')).toBeTruthy()
expect(screen.getByText('Protected browser-versus-desktop reality')).toBeTruthy()
expect(screen.getByText('What the desktop runtime is for')).toBeTruthy()
expect(screen.getByRole('link', { name: 'Open account' }).getAttribute('href')).toBe('/app/account')
expect(screen.getByRole('link', { name: 'Open browser access' }).getAttribute('href')).toBe('/app/browser-access')
expect(screen.getAllByRole('link', { name: 'Open browser access' }).every((link) => link.getAttribute('href') === '/app/browser-access')).toBe(true)
expect(screen.getByText('Download and rollout escalation')).toBeTruthy()
expect(screen.getByText('Current product-surface map')).toBeTruthy()
expect(screen.getByText('Protected browser dashboard')).toBeTruthy()
@ -419,6 +423,8 @@ describe('protected app pages', () => {
expect(screen.getByText('Current simulator control ownership')).toBeTruthy()
expect(screen.getByText('Current release action')).toBeTruthy()
expect(screen.getByRole('link', { name: 'Download Windows package' }).getAttribute('href')).toBe('https://downloads.hypertwist.app/windows.exe')
expect(screen.getByText('Desktop workflows available to this account')).toBeTruthy()
expect(screen.getByText('2. Run a recognition and correction workflow')).toBeTruthy()
expect(screen.getAllByText(/classic-wca-keyboard\/v1/i).length).toBeGreaterThan(0)
expect(screen.getByText('XR reopen requirements')).toBeTruthy()
expect(screen.getByText('It would also need user-facing settings and controller-rebinding ownership instead of leaving that lane at inspect-surface truth only.')).toBeTruthy()

View file

@ -22,6 +22,7 @@ import {
controlProfileRosterCards,
desktopDownloadSteps,
desktopFirstLaunchCards,
desktopWorkflowTracks,
inputAndDevicePostureCards,
operatorDesktopQuickstartCards,
productSurfaceMatrixRows,
@ -1027,6 +1028,50 @@ function OperatorDesktopQuickstartPanel({
)
}
function ProtectedSoftwareWorkflowPanel({
title,
kicker,
description,
limit,
}: {
title: string
kicker: string
description: string
limit?: number
}) {
const cards = typeof limit === 'number' ? desktopWorkflowTracks.slice(0, limit) : desktopWorkflowTracks
return (
<Panel title={title} kicker={kicker}>
<p>{description}</p>
<div className="card-grid top-gap">
{cards.map((card) => (
<article key={card.title} className="card card--compact">
<h3>{card.title}</h3>
<p>{card.description}</p>
<ul className="list top-gap">
{card.steps.map((step) => (
<li key={step}>{step}</li>
))}
</ul>
</article>
))}
</div>
<div className="button-row top-gap">
<Link className="button button--ghost" to="/app/downloads">
Open downloads
</Link>
<Link className="button button--ghost" to="/app/browser-access">
Open browser access
</Link>
<Link className="button button--ghost" to="/docs">
Open public manual
</Link>
</div>
</Panel>
)
}
function SupportEscalationChecklist({
title,
kicker,
@ -1313,6 +1358,13 @@ export function DashboardOverviewPage() {
description="The protected dashboard now also condenses the real operator journey into one place so account state, desktop-link pairing, first launch, native training verification, and the current XR/controller boundary can be reviewed together instead of reconstructed from scattered cards."
/>
<ProtectedSoftwareWorkflowPanel
title="Software workflows after access is resolved"
kicker="Protected simulator-use manual"
description="The protected dashboard should also say what the installed software is actually for once access, pairing, and release posture are already settled."
limit={4}
/>
<Panel title="Billing and entitlement state" kicker="Release access">
<ul className="list">
<li>Source: {user?.billing?.source || 'session'}</li>
@ -1627,6 +1679,13 @@ export function DownloadCenterPage() {
/>
</Panel>
<ProtectedSoftwareWorkflowPanel
title="What the downloaded software already supports"
kicker="Protected simulator-use manual"
description="Protected package access is more useful when the same route also teaches the real desktop workflows that follow immediately after install."
limit={4}
/>
<ProtectedOperatorQuickRoutesPanel
title="Protected operator quick routes"
kicker="Signed-in help lanes"
@ -1747,6 +1806,12 @@ export function BrowserAccessPage() {
</Link>
</div>
</Panel>
<ProtectedSoftwareWorkflowPanel
title="Desktop workflows behind the browser handoff"
kicker="Protected simulator-use manual"
description="Once browser access has done its job, these are the actual desktop workflows HyperTwist already supports today."
limit={4}
/>
<ProtectedReleaseActionPanel
title="Current release action"
kicker="Protected access guidance"
@ -1957,6 +2022,13 @@ export function AccountPage() {
/>
</Panel>
<ProtectedSoftwareWorkflowPanel
title="Desktop workflows available to this account"
kicker="Protected simulator-use manual"
description="Account, plan, and entitlement posture exist to unlock real native workflows. This panel keeps those practical simulator uses visible after sign-in."
limit={4}
/>
<DesktopFirstLaunchChecklist
title="Desktop access follow-through"
kicker="After sign-in"

View file

@ -1143,6 +1143,11 @@ export const publicManualRouteAtlasCards = [
] as const
export const changelogEntries = [
{
date: 'June 30, 2026',
title: 'Protected browser routes now teach the concrete desktop workflows too',
details: 'The signed-in dashboard, browser-access, download, and account routes now share a first-party protected workflow manual for classic-cube practice, recognition and correction, replay/coaching review, and higher-dimensional session use. Protected browser access now explains not only release and entitlement posture, but also what the installed software is actually used for once the browser handoff is complete.',
},
{
date: 'June 30, 2026',
title: 'Public manual now teaches concrete desktop workflows across the main operator routes',