Anchor feature atlas to packaged proof
This commit is contained in:
parent
886bab3f62
commit
3776688597
2 changed files with 92 additions and 1 deletions
|
|
@ -508,6 +508,62 @@ describe('public marketing pages', () => {
|
|||
errors: [],
|
||||
},
|
||||
})
|
||||
mockGetReleaseManifest.mockResolvedValue({
|
||||
ok: true,
|
||||
manifest: {
|
||||
generated_at: '2026-06-22T12:00:00.000Z',
|
||||
support_email: 'hello@hypertwist.app',
|
||||
public_docs_url: 'https://docs.hypertwist.app',
|
||||
release_notes_url: 'https://notes.hypertwist.app',
|
||||
corresponding_source_url: 'https://hypertwist.app/open-source/source.zip',
|
||||
open_source_repo_url: 'https://github.com/hypertwist/hypertwist',
|
||||
viewer: {
|
||||
authenticated: false,
|
||||
canDownload: false,
|
||||
plan: null,
|
||||
role: null,
|
||||
accessStatus: null,
|
||||
},
|
||||
platforms: [
|
||||
{
|
||||
platform_key: 'windows',
|
||||
platform: 'Windows',
|
||||
subtitle: 'Primary shipping lane',
|
||||
details: 'Current packaged validation is strongest on the Windows Unreal lane.',
|
||||
configured: true,
|
||||
channel: 'candidate',
|
||||
version: '1.0.0',
|
||||
build_id: 'win64-1000',
|
||||
published_at: '2026-06-22T00:00:00.000Z',
|
||||
file_name: 'HyperTwist-Windows.zip',
|
||||
file_size_bytes: 1048576,
|
||||
checksum_sha256: 'abc123',
|
||||
download_url: null,
|
||||
download_available: false,
|
||||
validation_summary: {
|
||||
lane: 'Windows Unreal packaged validation',
|
||||
result: 'passed',
|
||||
generated_at: '2026-06-22T01:43:08.7625247Z',
|
||||
configuration: 'Development',
|
||||
skip_build: true,
|
||||
smoke_map_count: 2,
|
||||
smoke_maps: [
|
||||
{
|
||||
map_url: '/Game/HyperTwistTraining/Maps/L_HyperTwist_Magic120CellTraining',
|
||||
label: 'Magic120Cell dedicated-family training map',
|
||||
result: 'passed',
|
||||
},
|
||||
{
|
||||
map_url: '/Game/HyperTwistTraining/Maps/L_HyperTwist_MagicCube5DTraining',
|
||||
label: 'MagicCube5D dedicated-family training map',
|
||||
result: 'passed',
|
||||
},
|
||||
],
|
||||
},
|
||||
},
|
||||
],
|
||||
},
|
||||
})
|
||||
|
||||
renderWithProviders(<FeaturesPage />, ['/features'])
|
||||
|
||||
|
|
@ -521,6 +577,8 @@ describe('public marketing pages', () => {
|
|||
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(screen.getByText('Current packaged desktop proof')).toBeTruthy()
|
||||
expect(screen.getByText('Packaged validation passed')).toBeTruthy()
|
||||
expect(document.title).toBe('HyperTwist features | HyperTwist')
|
||||
expect(document.head.querySelector('meta[property="og:url"]')?.getAttribute('content')).toBe('https://hypertwist.app/features')
|
||||
})
|
||||
|
|
|
|||
|
|
@ -1,8 +1,13 @@
|
|||
import { useMemo } from 'react'
|
||||
import { useQuery } from '@tanstack/react-query'
|
||||
import { Link } from 'react-router-dom'
|
||||
import { getReleaseManifest } from '../auth/auth-api'
|
||||
import { MarketingShell } from '../components/layout/MarketingShell'
|
||||
import { SiteMetadata } from '../components/seo/SiteMetadata'
|
||||
import { PublicLaunchStatus } from '../components/ui/PublicLaunchStatus'
|
||||
import { ProductSurfaceMatrix } from '../components/ui/ProductSurfaceMatrix'
|
||||
import { ReleaseValidationSummary } from '../components/ui/ReleaseValidationSummary'
|
||||
import { resolveReleaseManifestView } from '../release-manifest'
|
||||
import {
|
||||
controlProfileRosterCards,
|
||||
deploymentReadinessTracks,
|
||||
|
|
@ -14,9 +19,23 @@ import {
|
|||
releaseStoryCards,
|
||||
roadmapHonestyCards,
|
||||
} from '../site-data'
|
||||
import { Section } from './public-page-helpers'
|
||||
import { buildPublicReleaseManifestFallback, Section } from './public-page-helpers'
|
||||
|
||||
export function FeaturesPage() {
|
||||
const releaseManifestQuery = useQuery({
|
||||
queryKey: ['release-manifest', 'public-features'],
|
||||
queryFn: getReleaseManifest,
|
||||
retry: false,
|
||||
})
|
||||
const releaseManifest = useMemo(
|
||||
() => resolveReleaseManifestView(releaseManifestQuery.data?.manifest, buildPublicReleaseManifestFallback()),
|
||||
[releaseManifestQuery.data?.manifest],
|
||||
)
|
||||
const windowsValidationPlatform = useMemo(
|
||||
() => releaseManifest.platforms.find((platform) => platform.platform_key === 'windows' && platform.validation_summary) ?? null,
|
||||
[releaseManifest],
|
||||
)
|
||||
|
||||
return (
|
||||
<>
|
||||
<SiteMetadata
|
||||
|
|
@ -167,6 +186,20 @@ export function FeaturesPage() {
|
|||
<PublicLaunchStatus title="Public feature and launch posture" />
|
||||
</Section>
|
||||
|
||||
{windowsValidationPlatform ? (
|
||||
<Section title="Current packaged desktop proof">
|
||||
<ReleaseValidationSummary platform={windowsValidationPlatform} />
|
||||
<div className="button-row top-gap">
|
||||
<Link className="button button--ghost" to="/download">
|
||||
Open download center
|
||||
</Link>
|
||||
<Link className="button button--ghost" to="/docs">
|
||||
Open public manual
|
||||
</Link>
|
||||
</div>
|
||||
</Section>
|
||||
) : null}
|
||||
|
||||
<Section
|
||||
title="Explicit boundaries"
|
||||
description="These are the product claims HyperTwist refuses to blur. Keeping them visible is part of the product quality bar."
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue