# HyperTwist Website
First-party `hypertwist.app` surface for HyperTwist:
- public homepage, about, resources, pricing, support, and legal pages
- dedicated public `/getting-started` onboarding route for the first real browser-to-desktop operator journey
- dedicated public `/launch-status` route for the canonical preview-versus-launch rollout checklist
- public feature-atlas route for current capability and boundary truth
- shared public-manual route atlas across homepage, docs, and resources so each major public page explains its exact job
- browser-facing operator/account dashboard
- protected launch-status, browser-access, account, and notices routes backed by live auth-health and release-manifest authority
- shared SuperTokens auth posture reused from the FamiliarOS and ScriptoriumAI website lane
- route-aware SuperTokens wrapping so public brochure routes do not pay for auth chrome unnecessarily while `/app`, `/login`, `/register`, `/auth/*`, and stored-session continuity still do
- FamiliarOS-style first-party auth-shell backdrop for login/register/auth callback posture, including first-paint HTML fallback plus route-synced runtime ownership
- desktop download posture and desktop-link handshake endpoints
- server-backed release-manifest authority shared by public and protected download surfaces
- Paddle-ready pricing/check-out wiring
- dashboard-side plus dedicated protected launch-status surfaces for download, checkout, auth, and notice configuration
- public launch-status callouts across pricing, download, and notices surfaces
- route-aware metadata, canonical, Open Graph, Twitter-card, and protected-route noindex posture for the live `hypertwist.app` surface
- first-party `robots.txt` plus `sitemap.xml` for the public crawlable route set while keeping `/app`, `/login`, and `/register` out of crawler posture
- a shared public-route registry that now drives marketing navigation, footer links, router entries, and sitemap generation from one source of truth
- top-level browser-shell runtime recovery through a first-party `ErrorBoundary` so unexpected React route failures degrade into a HyperTwist-owned recovery surface instead of a blank shell
- runtime diagnostics that distinguish local, mixed, and public auth deployment posture
- public open-source notices surface required by HyperTwist's MPL distribution doctrine
## Why this app exists
HyperTwist already ships an embedded browser runtime inside Unreal under
`Content/Browser/`. That runtime is not the same thing as a public website,
checkout surface, or browser account shell.
This `website/` directory is the dedicated public and operator-facing web
surface for:
- marketing and product positioning
- account/authentication
- billing/pricing posture
- browser dashboard access
- desktop distribution
- public legal and open-source notices
The website is therefore complementary to the desktop build, not a substitute
for it:
- use `website/` for account, release, pricing, notices, support, and browser
operator access
- use `UnrealHyperTwist/` for the real simulator, native runtime behavior, and
higher-dimensional packaged execution
- do not present the public site as proof that the optional full-browser
simulator branch is live
The public pages now also double as a professional public-facing operator
manual:
- homepage and about explain why both browser and desktop surfaces exist
- the feature-atlas route condenses current capability, retained branches, and release boundaries into one public authority page
- resources and docs describe the safe public learning and rollout lanes
- pricing and download explain entitlement, package proof, and legal posture
- release notes, notices, privacy, terms, and shipping/payment pages now also
explain the real browser-versus-desktop delivery model instead of carrying
generic brochure/legal filler
- support and legal pages clarify rollout, pairing, and distribution duties
- 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 website now also ships a same-origin downloadable operator manual at
`website/public/manual/hypertwist-operator-manual.md` so the desktop-first
onboarding and boundary truth can travel offline with the product
- the protected release-reference surfaces now also expose that same
downloadable operator manual beside docs, release notes, source, and
notices so signed-in operators can carry one offline guide through launch,
account, and download follow-through instead of dropping back to public-only
route fragments
- the public browser-account method lineup is now also visible on the
homepage, pricing, download, support, docs, and getting-started routes so
high-traffic decision pages no longer hide provider truth until the auth
entry forms
- the homepage, docs, and resources surfaces now also share a route atlas that
explains what each major public page owns, so the site reads more like a
professional operator manual than a flatter brochure shell
- the shared-auth lane now also keeps its optional ORCID provider honest
end-to-end: the auth server owns the bounded provider, the same-origin
manifest emits matching runtime env truth, and the browser client registers
ORCID through the supported third-party recipe contract instead of only
exposing the provider in docs or button copy
- 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
- those same public-manual and protected-dashboard roster surfaces now also
state the explicit XR reopen gate rather than only the broad `No-Go`
boundary: dedicated runtime owners, user-facing settings/rebinding
ownership, and Windows packaged controller validation with controller truth
would all still be required before native XR/controller widening could be
reopened honestly
- 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 homepage, docs, and download surfaces now also share a tighter first
serious-session quickstart, and the protected dashboard mirrors that same
end-to-end operator path after sign-in so access, pairing, first launch, and
the current XR/controller boundary do not have to be reconstructed from
scattered cards
- that same first-session story is now also anchored at a dedicated public
`/getting-started` route so the shortest complete onboarding/manual lane is
crawlable, canonical, and easier to hand off than the broader page set alone
- the same launch-authority story is now also anchored at a dedicated public
`/launch-status` route so preview-versus-launch truth, rollout blockers,
packaged proof, and release references have one canonical authority surface
- the protected operator shell now also mirrors that same launch-authority
posture on a dedicated signed-in `/app/launch-status` route, so rollout
truth no longer collapses back down to a single dashboard panel after sign-in
- the surrounding protected release, account, browser-access, download, and
notices surfaces now also keep direct follow-through back to that same
signed-in launch-authority route, so rollout truth does not disappear once
the operator leaves the overview page
- 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
- the auth shell now also behaves more like the sibling first-party sites at
the route/bootstrap layer: auth-specific chrome appears on login/register
posture without wrapping every anonymous public route in the same session
shell
## Local development
```bash
cd /home/dev/src/HyperTwist/website
npm install
npm run dev
```
Frontend default URL:
- `http://localhost:4273`
Environment templates:
- local development: `website/.env.example` plus `website/server/.env.example`
- public deployment scaffold: `website/.env.production.example` plus `website/server/.env.production.example`
- live preview scaffold: `website/.env.preview.example` plus `website/server/.env.preview.example`
- same-origin bundle examples: `website/deploy/hypertwist.same-origin.bundle.example.json` for launch-tier placeholders and `website/deploy/hypertwist.same-origin.preview.bundle.example.json` for the current honest preview lane
## Validation
```bash
scripts/run-hypertwist-web-surface-validation.sh
npm run type-check
npm run test
npm run build
npm run test:e2e:responsive
npm run test:e2e:protected-responsive
npm run check:runtime-readiness -- --frontend-env .env --server-env server/.env --health-url https://hypertwist.app
npm run check:runtime-readiness:preview-live
```
Related validation and audit commands for the adjacent owned surfaces:
```bash
npm --prefix server run type-check
npm --prefix server test -- --run
npm --prefix ../Content/Browser run verify:shell
npm --prefix ../Content/Browser run build
npm audit --omit=dev --audit-level=high
npm --prefix server audit --omit=dev --audit-level=high
npm --prefix ../Content/Browser audit --omit=dev --audit-level=high
```
The preferred current repo-owned umbrella gate is:
```bash
scripts/run-hypertwist-web-surface-validation.sh
```
That command runs the current website type-check, focused auth or release or
route tests, deployment/readiness tooling tests, website build, auth-server
type-check and tests, browser-shell verify/build, and production audits
together. It accepts the current exact
upstream `supertokens-node -> nodemailer` auth-server residual in default mode
and supports `--strict-auth-server-audit` when that residual should block.
It now also checks that the website-facing Windows packaged-validation summary
is fresh against the checked-in authoritative higher-dimensional package report.
The browser-runtime build config now also suppresses the previously noisy
upstream Radix `use client` bundler warnings so real regressions remain visible;
the one remaining accepted browser-build warning is the current upstream
`@khronosgroup/gltf-viewer` `mikktspace_bg.wasm` Vite asset-resolution message,
which does not currently break the owned shell verification or production build.
When responsive browser proof is needed too, pass
`scripts/run-hypertwist-web-surface-validation.sh --with-responsive-e2e` to
run the bounded Playwright public-route and protected-route viewport checks.
Repo-owned structural-tool posture:
- `scripts/bootstrap-hypertwist-gitnexus.sh` now gives HyperTwist a repo-owned
GitNexus runtime landing zone under `tools/gitnexus/runtime/`
- `scripts/run-hypertwist-sentrux-source-only.sh` still prefers
`HYPERTWIST_SENTRUX_BINARY`, repo-local `./sentrux` or `./sentrux.exe`, then
`tools/sentrux/bin/`, then `PATH`
- `scripts/run-hypertwist-gitnexus-analyze.sh` and
`scripts/run-hypertwist-gitnexus-status.sh` now prefer the repo-owned
GitNexus runtime under `tools/gitnexus/runtime/gitnexus`, auto-bootstrap it
through `scripts/bootstrap-hypertwist-gitnexus.sh --if-missing`, then only
fall back to the retained mirror and finally `npx gitnexus@latest` if no
usable local runtime exists
- the current Linux host still shows a fresh-local-analyze post-index quirk
(`free(): invalid pointer` after a correct index write), so the analyze
wrapper now treats that exact case as success when the follow-up local status
proof confirms the fresh index instead of needlessly dropping to `npx`
- `scripts/run-hypertwist-sentrux-gate.sh` now gives the website lane the same
bounded source-only before/after regression loop through the HyperTwist-owned
mirror and a persisted repo baseline at
`.sentrux/source-only-baseline.json`
- `scripts/bootstrap-hypertwist-sentrux.sh` now keeps sibling-repo seed lookup
opt-in behind `HYPERTWIST_ALLOW_SIBLING_SENTRUX_BOOTSTRAP=1`, so ordinary
HyperTwist analyzer recovery does not silently drift back into cross-repo
ownership
Latest refactor-tool ownership follow-up on `2026-06-30`:
- `scripts/run-hypertwist-gitnexus-analyze.sh` now completes locally on this
host through the repo-owned GitNexus runtime path and the new post-index
salvage check instead of defaulting back to `npx`
- `scripts/run-hypertwist-gitnexus-status.sh` then reports the bounded mirror
up to date from that same repo-owned runtime path
- `scripts/run-hypertwist-sentrux-source-only.sh` stayed green at:
- `Quality: 6248`
- the full owned web-surface umbrella also stayed green again under:
- `scripts/run-hypertwist-web-surface-validation.sh`
- focused website route/auth/release suite: `14` files, `84` tests passed
- deployment/readiness tooling suite: `4` files, `34` tests passed
- website/server suite: `10` files, `36` tests passed
- successful website and `Content/Browser` production builds
- clean website and `Content/Browser` production audits
- the same already-documented upstream auth-server residual:
`supertokens-node -> nodemailer`
Latest same-family offline-manual and protected-reference continuity follow-up
on `2026-06-30`:
- the public website now exposes one same-origin downloadable operator manual
across homepage, docs, resources, getting-started, and download so the
desktop-first product story can leave the browser intact
- the protected release-reference bundle now also surfaces that same
downloadable manual inside the signed-in dashboard and protected launch,
browser-access, account, download, and notices lanes beside docs, release
notes, corresponding source, and notices links
- focused continuity validation stayed green under:
- `npm --prefix website test -- --run src/__tests__/public-marketing-pages.test.tsx src/__tests__/protected-app-pages.test.tsx`
- `npm --prefix website run type-check`
- `npm --prefix website run build`
- the owned continuity/tooling rerun also stayed green under:
- `scripts/run-hypertwist-sentrux-source-only.sh` -> `Quality: 6248`
- `scripts/run-hypertwist-gitnexus-analyze.sh` -> `Indexed commit: 1b4adda`
with the already-documented local post-index non-zero exit salvaged by
follow-up status proof
- `scripts/run-hypertwist-gitnexus-status.sh` -> `Status: up-to-date`
- `scripts/run-hypertwist-web-surface-validation.sh`
- focused website route/auth/release suite: `14` files, `84` tests passed
- website deployment/readiness tooling suite: `4` files, `34` tests passed
- website/server suite: `10` files, `36` tests passed
- successful website and `Content/Browser` production builds
Latest auth-shell hardening follow-up on `2026-06-24`:
- the website now carries a first-party HyperTwist auth-shell backdrop module
and route sync layer derived from the FamiliarOS/ScriptoriumAI auth shell
posture, but adapted to HyperTwist truth:
- `/login`
- `/register`
- `/auth/*`
- `App.tsx` no longer wraps the entire website in `SuperTokensWrapper` just
because auth is configured; it now wraps only:
- `/app*`
- `/login*`
- `/register*`
- `/auth/*`
- or public routes when a stored local platform session already exists
- `website/index.html` now also carries a first-paint auth-backdrop fallback
so auth-shell chrome is present before React route effects settle
- focused website auth/bootstrap validation stayed green under:
- `npm --prefix website test -- --run src/__tests__/App.bootstrap.test.tsx src/__tests__/auth-shell-backdrop.test.ts src/__tests__/public-auth-pages.test.tsx src/__tests__/route-shells.test.tsx`
- `4` test files passed
- `21` tests passed
- the broader owned web-surface umbrella 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 and `Content/Browser` production audits: `found 0 vulnerabilities`
- website/server retained only the already-documented upstream
`supertokens-node -> nodemailer` residual
Latest runtime-recovery hardening follow-up later on `2026-06-24`:
- `App.tsx` now wraps the route tree in a first-party HyperTwist
`ErrorBoundary` so unexpected browser-shell render failures fall back to a
product-owned recovery card instead of a blank route
- the default fallback keeps product truth explicit:
- it describes the browser shell as the operator/distribution surface rather
than the simulator itself
- it offers both in-place retry and safe return-to-homepage actions
- focused validation for the new recovery seam stayed green under:
- `npm --prefix website test -- --run src/__tests__/ErrorBoundary.test.tsx src/__tests__/App.bootstrap.test.tsx src/__tests__/auth-shell-backdrop.test.ts src/__tests__/public-auth-pages.test.tsx src/__tests__/route-shells.test.tsx`
- `5` test files passed
- `25` tests passed
- the broader current website suite 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`
- `scripts/run-hypertwist-sentrux-source-only.sh`
- `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
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
Latest browser-versus-desktop reality follow-up on `2026-06-28`:
- the shared browser-versus-desktop public-manual copy now says more directly
why the browser lane is narrower instead of relying only on abstract
boundary language:
- low-latency simulator input remains native
- packaged runtime ownership remains native
- higher-dimensional scene execution remains native
- any future serious controller or VR completion remains native
- that wording now propagates automatically anywhere the shared
`BrowserDesktopRealitySection` is rendered, including homepage, about,
features, pricing, docs, resources, launch-status, and the mirrored
protected operator surfaces
Latest first-session quickstart/manual follow-up on `2026-06-27`:
- the public and protected manual lane now explains the first real operator
journey more directly instead of forcing users to stitch it together from
several adjacent page sections:
- homepage, docs, and download now share a reusable first-session
quickstart covering release-target choice, protected pairing, first native
classic-cube verification, higher-dimensional verification, and the
explicit XR/controller `No-Go` boundary
- the protected dashboard now mirrors that same first-session path after
sign-in so browser account work, desktop-link pairing, first launch, and
runtime-boundary truth remain visible together
- focused validation for that continuation stayed green under:
- `npm --prefix website test -- --run src/__tests__/DashboardOverviewPage.test.tsx src/__tests__/public-marketing-pages.test.tsx`
- `2` test files passed
- `16` tests passed
- `npm --prefix website run type-check`
- the same-family umbrella, structural, and analysis gates then stayed green
again under:
- `scripts/run-hypertwist-web-surface-validation.sh`
- website focused route/auth/release suite: `12` files, `68` tests passed
- website/server suite: `10` files, `36` tests passed
- website and `Content/Browser` production audits: `found 0 vulnerabilities`
- `scripts/run-hypertwist-sentrux-source-only.sh`
- `Quality: 6217`
- `All rules pass`
- `scripts/run-hypertwist-gitnexus-analyze.sh`
- `16,312` nodes, `38,387` edges, `672` clusters, `300` flows
- `scripts/run-hypertwist-gitnexus-status.sh`
- `Status: up-to-date`
Latest shared-auth ORCID frontend-closure follow-up on `2026-06-29`:
- the remaining browser-side ORCID provider drift is now closed end to end:
- `website/src/auth/supertokens-client.ts` now passes ORCID into the
SuperTokens third-party recipe as a bounded custom-provider config object
instead of depending on a guessed runtime helper export
- the helper remains isolated in
`buildEnabledThirdPartyProviders`, so GitHub/Google ordering stays stable
while ORCID is added only when intentionally enabled
- focused regression coverage now exists in
`src/__tests__/supertokens-client.test.ts`
- focused validation for that closure stayed green under:
- `npm --prefix website run type-check`
- `npm --prefix website test -- --run src/__tests__/supertokens-client.test.ts src/__tests__/public-auth-pages.test.tsx src/__tests__/platform-auth.bootstrap.test.tsx`
- `3` test files passed
- `15` tests passed
- the broader current website lane stayed green again under:
- `scripts/run-hypertwist-web-surface-validation.sh`
- website focused route/auth/release suite: `14` files, `81` tests passed
- website/server suite: `10` files, `36` tests passed
Latest responsive proof and live preview-readiness revalidation later on
`2026-06-29`:
- the owned browser/public/product lane was then rechecked under the broader
responsive umbrella instead of relying only on route-unit coverage
- `npm --prefix website run check:runtime-readiness:preview-live` passed again
against `https://hypertwist.app`, confirming:
- live `/health` check green
- live anonymous release-manifest check green
- live first-party website-shell marker check green
- current truthful preview posture remained explicit during that live check:
- Windows download URL still missing in preview env
- operator and studio Paddle checkout URLs still missing in preview env
- Paddle webhook secret still missing in preview env
- `SUPERTOKENS_CORE_URI` still points at a loopback/local-development host
- billing plan maps still rely on webhook `custom_data`
- the broader owned web-surface umbrella then reran green with responsive
browser proof enabled:
- `scripts/run-hypertwist-web-surface-validation.sh --with-responsive-e2e`
- focused website route/auth/release validation:
- `14` files passed
- `81` tests passed
- deployment/readiness tooling validation:
- `3` files passed
- `30` tests passed
- responsive public-route Playwright proof:
- `34` tests passed
- responsive protected-route Playwright proof:
- `12` tests passed
- `website/server` validation:
- `10` files passed
- `36` tests passed
- website plus `Content/Browser` production builds passed
- `website/` and `Content/Browser/` production audits stayed at
`found 0 vulnerabilities`
- `website/server/` again retained only the already-documented upstream
`supertokens-node -> nodemailer` residual advisory
- the public launch-status surface now also names the concrete live preview
blockers from auth-health and billing/runtime posture instead of reducing
the whole state to generic missing-label prose
- the protected dashboard and protected `/app/launch-status` route now mirror
that same concrete blocker detail too, so signed-in operators no longer have
to infer the real preview gap only from the public page or the readiness CLI
- current truthful reading after that rerun:
- the public and protected browser surfaces now have fresh practical
mobile/tablet proof rather than only desktop/unit confidence
- the live site is healthy and real, but it still honestly remains a preview
deployment until checkout, Windows download, billing secret, and
non-loopback shared-auth core posture are configured
Latest exact-source proof and owned validation refresh later on `2026-06-29`:
- the public/browser lane was then re-synced against the refreshed exact-source
native proof instead of leaving the website on older packaged-validation
metadata
- the public packaged-desktop summary was refreshed from the checked-in
higher-dimensional package report, so the website no longer points at the
older June 24 package timestamp
- the HyperTwist-owned analyzer loop stayed green on the same state:
- `scripts/run-hypertwist-sentrux-source-only.sh`
- `Quality: 6235`
- all `7` rules passing
- `scripts/run-hypertwist-gitnexus-analyze.sh`
- bounded mirror refreshed at:
- `16,400` nodes
- `38,759` edges
- `675` clusters
- `300` flows
- retained local GitNexus runtime remained unusable on this Linux host with
the known `invalid ELF header` `LadybugDB` mismatch, so the wrapper
truthfully fell back to `npx gitnexus@latest`
- `scripts/run-hypertwist-gitnexus-status.sh`
- bounded mirror `Status: up-to-date`
- the owned web-surface umbrella then reran cleanly against that refreshed
package proof:
- `scripts/run-hypertwist-web-surface-validation.sh`
- focused website route/auth/release validation:
- `14` files passed
- `81` tests passed
- deployment/readiness tooling validation:
- `3` files passed
- `30` tests passed
- `website/server` validation:
- `10` files passed
- `36` tests passed
- website plus `Content/Browser` production builds passed
- `website/` and `Content/Browser/` production audits stayed at
`found 0 vulnerabilities`
- `website/server/` again retained only the already-documented upstream
`supertokens-node -> nodemailer` residual advisory
- current truthful reading after that refresh:
- the browser shell remains justified and non-superfluous because it owns
account, rollout, billing, release posture, notices, and browser-to-
desktop handoff while the simulator remains package-validated and
desktop-first
- the native XR/controller lane still remains an explicit desktop-hosted
`No-Go` rather than something the public site or protected dashboard
should market as finished
Current dependency-health truth from the `2026-06-23` hardening pass:
- `website/` production audit is clean
- `Content/Browser/` production audit is clean and now has a checked-in
`package-lock.json`
- `website/server/` was upgraded to `supertokens-node@24.0.2`
- `website/server/` still carries one upstream production advisory through the
supported `supertokens-node -> nodemailer@8.0.11` chain
- no unsupported forced major `nodemailer` override was landed just to hide
that remaining upstream advisory
## Release-manifest authority
The website now treats `GET /api/releases/manifest` from `website/server` as
the shared runtime authority for desktop release metadata.
- the public `/download` page reads live version, channel, build, size,
checksum, and release-reference metadata from that manifest
- the public marketing page still keeps raw download URLs behind the protected
dashboard even when a platform is configured
- the protected `/app/downloads` surface reads the same manifest but receives
session-backed download URLs when the current user is actually entitled
- the public `/resources` page now also surfaces the current Windows packaged
validation summary so the live higher-dimensional desktop proof is visible on
a public reference page even before launch-tier release URLs are configured
- the same manifest now also carries public commerce config for operator/studio
checkout URLs plus live plan-price strings, so pricing, notices, and
dashboard launch-readiness surfaces can follow auth-server runtime truth
instead of depending only on frontend build-time config
- the protected dashboard launch-readiness panel and the public launch-status
callouts now also use that manifest-backed Windows download truth instead of
only static frontend config
- the public launch-status surface now also consumes live auth-health webhook
and public-origin readiness truth, so homepage/pricing/download/notices copy
no longer treats static checkout/download config alone as sufficient for
external launch posture
- the same manifest now also carries first-party packaged-validation summary
truth for the Windows higher-dimensional desktop lane, so public and
protected release cards can surface real package proof even before launch
download URLs are configured
The first-party website shell now also carries an explicit deployment marker in
`website/index.html`:
- ``
The runtime-readiness verifier uses that marker to distinguish the real
deployed website from the earlier placeholder rollout page.
Relevant server env keys now include:
- `RELEASE_MANIFEST_VERSION`
- `RELEASE_MANIFEST_CHANNEL`
- `SUPPORT_EMAIL`
- `PUBLIC_DOCS_URL`
- `RELEASE_NOTES_URL`
- `MPL_SOURCE_URL`
- `OPEN_SOURCE_REPO_URL`
- `_DOWNLOAD_URL`
- `_RELEASE_VERSION`
- `_RELEASE_CHANNEL`
- `_RELEASE_BUILD_ID`
- `_RELEASE_PUBLISHED_AT`
- `_RELEASE_FILE_NAME`
- `_RELEASE_FILE_SIZE_BYTES`
- `_RELEASE_SHA256`
## Related surfaces
- frontend app: `website/src/`
- auth server: `website/server/`
- deployment templates: `website/deploy/`
- embedded Unreal browser runtime: `Content/Browser/`
- HyperTwist feature authority: `docs/v6_5_deep_manual_pack/HyperTwist/FEATURE_REGISTRY.md`
- HyperTwist roadmap authority: `docs/v6_5_deep_manual_pack/HyperTwist/ROADMAP.md`
## Deployment note
Before public launch, configure:
- SuperTokens frontend/backend env vars
- production download URLs
- production Paddle checkout URLs
- the public corresponding-source URL for MPL-covered shipped material
For non-public rehearsal, the same bundle/readiness lane also supports an
explicit preview posture through `deploymentTier: "preview"` in the manifest or
`VITE_PUBLIC_DEPLOYMENT_TIER=preview` plus `DEPLOYMENT_TIER=preview` in env.
That preview tier may honestly leave operator checkout, Windows download, and
Paddle webhook-secret values empty while the public launch lane still requires
real values.
Do not launch the public pricing/download pages without a valid open-source
notices and corresponding-source destination.
Recommended production posture is documented in:
- `docs/ops/HYPERTWIST_WEBSITE_RUNTIME_CONFIGURATION_GUIDE_2026-06-22.md`
Use the runtime-readiness command before public launch or deployment approval:
- in `launch` tier, it fails if required public launch values are still missing
- in `preview` tier, it accepts honest empty operator checkout, Windows
download, release-manifest, and billing-webhook values as warnings while
still rejecting placeholder strings
- the checked-in preview example env pair now mirrors the current live
`hypertwist.app` preview posture, and `npm run check:runtime-readiness:preview-live`
replays that proof directly against the public origin
- it can optionally verify live `/api/auth/health` posture from the deployed site
- it now also verifies the anonymous public `GET /api/releases/manifest` route
and the deployed website root shell marker
- it now fails explicitly when the live origin is still serving the placeholder
rollout page instead of the first-party website/auth-server lane
- same-origin preview proof may remain in runtime mode `mixed` when public
origin readiness is true and the only remaining warning is the loopback
SuperTokens-core notice
- the shared marketing shell now also carries a compact first-party
public-site-status banner across public pages, while the homepage keeps a
fuller public-site-status section for the same preview-versus-launch truth
- the website-facing Windows packaged proof now comes from the sanitized
generated file
`website/src/shared/generated/windows-package-validation-summary.json`,
rendered from
`docs/generated/higher_dimensional_training_maps/phase6c_dedicated_family_package_validation_report.json`
by `scripts/render-hypertwist-web-package-validation-summary.mjs`
- that generated summary now carries both the package-helper `skip_build`
posture and the surrounding same-packet `pre_package_editor_build` truth, so
public download and release surfaces do not flatten a fresh editor rebuild
plus receipt-reuse package proof into one misleading build label
- the auth server can now also serve the built `website/dist` bundle directly for same-origin `hypertwist.app` deployment when that build output is present
- the repo now also includes first-party same-origin `nginx` and `systemd`
handoff templates under `website/deploy/`
- the repo now also includes `npm run render:same-origin-deployment` to render
resolved `systemd` and `nginx` files from checkout/user/host inputs instead
of hand-editing deployment examples
- the repo now also includes `npm run render:same-origin-bundle` so one
deployment manifest can own the public origin and emit validated frontend
env, server env, `systemd`, and `nginx` outputs together before VPS cutover
- the shared-VPS deployment defaults now use upstream port `3011` because the
current host already has FamiliarOS bound to `3001`
- the repo now also includes `npm run run:vps-same-origin-staging-proof` so the
current committed `website/` tree can be staged into a temporary VPS checkout
and proven on the real shared host before any root-owned live cutover, with
optional `--archive-source worktree` support when the proof should validate
the in-progress local packet before commit rather than `HEAD`
- the repo now also includes `npm run run:vps-same-origin-live-deploy` so the
same manifest/bundle lane can stage the committed checkout, install env,
build the site, replace the `systemd` plus `nginx` files, and validate the
public origin in one bounded root-owned flow
- it now warns when same-origin public deployment leaves static website serving mode ambiguous
- request-level server tests now also pin that same-origin shell behavior instead of relying only on helper-level assertions
- the public pricing/download/notices pages now also surface preview-versus-launch posture directly from the same bounded launch checklist
- the real `check-runtime-readiness` CLI is now also exercised against the checked-in `.env.production.example` files so placeholder launch scaffolds cannot silently drift away from the documented command
Live site status on `2026-06-22`:
- `https://hypertwist.app` now serves the first-party same-origin preview lane
instead of the older placeholder rollout page
- live `/health`, `/api/auth/health`, `/api/releases/manifest`, and root-shell
verification are green on that public origin
- the new live-deploy helper has also been re-proved idempotently against that
already-cut-over host
The repo bootstrap CI now also validates this lane through:
- frontend `npm ci`, `npm run type-check`, `npm test`, and `npm run build`
- auth-server `npm ci`, `npm run type-check`, and `npm test`
The focused frontend test coverage now also pins:
- route-guard redirect preservation for pathname, query, and hash deep links
- safe `next`-path normalization across custom auth pages and SuperTokens redirect handoff
- auth-bootstrap normalization when fallback/email sessions are re-hydrated
- login/register page continuation behavior and protected-dashboard download gating on the public download page
- platform-preserving `/download -> /app/downloads?platform=...` continuation plus requested-target surfacing inside the protected release lane
- support-topic fallback routing for pricing and launch-readiness actions when live checkout is not configured yet
- protected-route loading/redirect behavior plus auth-aware marketing/app shell actions
- real `AppRouteTree` smoke coverage for `/`, `/features`, `/pricing`, `/download`, `/login`, `/app`, `/app/launch-status`, and `/app/downloads`
- top-level `App` bootstrap coverage for unknown-route redirect and SuperTokens wrapper on/off posture
- login/register unhappy-path coverage for returned form errors, auth-runtime warning callouts, and OAuth-button visibility/invocation
- dashboard launch-readiness plus desktop-link verify-url behavior
- route-aware metadata behavior for public versus protected surfaces plus richer download-lane guidance on both the public and protected release pages
- spawned `website/server` bootstrap proof from production-shaped same-origin env into live `/health`, `/api/auth/health`, static public/app shell delivery, verified webhook reflection into billing state, and bounded session-backed `/api/auth/me` plus `/api/auth/desktop-link` behavior under `TEST_MODE=testing`
The later shared public-launch-status banner continuation on `2026-06-22` then
also passed the full frontend `npm test` suite and a fresh `npm run build`
after an older auth-page mock was widened to include the new shared
`getAuthHealth` dependency used by the marketing shell.
The later launch-summary continuity refinement on `2026-06-29` then also kept
that always-visible marketing-shell banner from drifting back into generic
missing-label prose: when the live site is still in preview posture, the banner
now names the first concrete auth-health or billing-runtime blockers and a
remaining-count summary, while the deeper `/launch-status` surfaces still carry
the full blocker list.
The latest legal/distribution continuity follow-up on `2026-06-30` then also
kept the deeper public commerce pages inside that same richer manual lane:
- `/open-source-notices` now also carries the shared browser-versus-desktop
reality explanation, a live surface-authority map, and the same offline
operator-manual continuity instead of acting like an isolated compliance stub
- `/shipping-payment` now also carries the shared auth-method lineup, the same
surface-authority map, and the same offline operator-manual continuity so the
purchase/delivery lane does not fall back to a thinner shell than the
homepage, pricing, and download routes
- focused validation stayed green under:
- `npm --prefix website test -- --run src/__tests__/public-marketing-pages.test.tsx`
- `npm --prefix website run type-check`
The follow-on public-manual widening on `2026-06-22` then also passed:
- `npm run type-check`
- `npm test -- --run src/__tests__/public-marketing-pages.test.tsx`
- `npm run build`
- `npm test -- --run`
- `npm run type-check` in `website/server`
- `npm test -- --run` in `website/server`
The same-day validation hardening also gave the live-spawned
`website/server` bootstrap suite an explicit `15s` timeout so child-process
boot plus same-origin HTTP proof does not fail spuriously under heavier host
load while keeping the coverage itself unchanged.
Canonical same-origin cutover guide:
- `docs/ops/HYPERTWIST_WEBSITE_SAME_ORIGIN_DEPLOYMENT_HANDOFF_2026-06-22.md`
Latest public manual verification/reporting continuity follow-up on `2026-06-30`:
- the public `/download`, `/getting-started`, `/docs`, and `/support` routes
now carry a stronger same-family first-session verification and
issue-reporting packet instead of leaving that operational guidance scattered
across adjacent sections only
- the same-origin downloadable operator manual at
`public/manual/hypertwist-operator-manual.md` now also mirrors the explicit
browser-limitations truth, the first-session verification checklist, and the
higher-signal reporting checklist so the offline manual no longer trails the
stronger live public routes
- focused validation stayed green under:
- `npm test -- --run src/__tests__/public-marketing-pages.test.tsx src/__tests__/offline-operator-manual.test.ts`
- `npm run type-check`
- `npm run build`
- `../scripts/run-hypertwist-sentrux-source-only.sh`