Skip to content

Commit 2fa6889

Browse files
author
Shaw
committed
chore: checkpoint cloud checkout redirect
1 parent ff0f057 commit 2fa6889

5 files changed

Lines changed: 91 additions & 14 deletions

File tree

packages/cloud-frontend/src/App.tsx

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,6 @@ function preloadAll(...preloads: PreloadFn[]): PreloadFn {
5252
}
5353

5454
const Home = lazyWithPreload(() => import("./pages/page"));
55-
const CheckoutPage = lazyWithPreload(() => import("./pages/checkout/page"));
5655
const TermsOfService = lazyWithPreload(
5756
() => import("./pages/terms-of-service/page"),
5857
);
@@ -194,7 +193,6 @@ const AdminRedemptionsPage = lazyWithPreload(
194193
* because `/dashboard/apps/:id` also matches `/dashboard/apps/create`.
195194
*/
196195
const PRELOAD_ROUTES: ReadonlyArray<RoutePreload> = [
197-
{ path: "/checkout", preload: CheckoutPage.preload },
198196
{
199197
path: "/dashboard/admin/infrastructure",
200198
preload: preloadAll(
@@ -534,17 +532,28 @@ function DashboardRedirect({ to }: { to: string }) {
534532
return <Navigate to={`${to}${location.search}`} replace />;
535533
}
536534

535+
function ElizaOsCheckoutRedirect() {
536+
const location = useLocation();
537+
538+
useEffect(() => {
539+
window.location.replace(`https://elizaos.ai/checkout${location.search}`);
540+
}, [location.search]);
541+
542+
return (
543+
<main className="min-h-screen bg-black p-8 font-poppins text-white">
544+
Redirecting to elizaOS checkout.
545+
</main>
546+
);
547+
}
548+
537549
function App() {
538550
useRenderGuard("CloudFrontendApp");
539551
useLinkChunkPreload();
540552
return (
541553
<Routes>
542554
<Route element={<RootLayout />}>
543555
<Route index element={<SuspenseRoute component={Home} />} />
544-
<Route
545-
path="checkout"
546-
element={<SuspenseRoute component={CheckoutPage} />}
547-
/>
556+
<Route path="checkout" element={<ElizaOsCheckoutRedirect />} />
548557
<Route
549558
path="terms-of-service"
550559
element={<SuspenseRoute component={TermsOfService} />}

packages/cloud-frontend/tests/e2e/brand-flows.spec.ts

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,19 @@ test.describe("brand flows", () => {
2727
await expect(page.locator("h1")).toContainText(/sign in/i);
2828
});
2929

30-
test("checkout route renders preorder UI", async ({ page }) => {
30+
test("checkout route redirects preorder UI to elizaOS", async ({ page }) => {
31+
await page.route("https://elizaos.ai/**", (route) =>
32+
route.fulfill({
33+
body: "<html><body>elizaOS checkout</body></html>",
34+
contentType: "text/html",
35+
}),
36+
);
37+
3138
await page.goto("/checkout?collection=elizaos-hardware");
32-
await expect(page.locator("h1")).toBeVisible();
33-
await expect(page.getByText(/preorder/i).first()).toBeVisible();
39+
await expect(page).toHaveURL(
40+
"https://elizaos.ai/checkout?collection=elizaos-hardware",
41+
);
42+
await expect(page.getByText("elizaOS checkout")).toBeVisible();
3443
});
3544

3645
test("dashboard agents route renders without redirecting to login", async ({

packages/cloud-frontend/tests/e2e/cloud-routes.spec.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,6 @@ const publicRoutes = [
100100
"/terms-of-service",
101101
"/privacy-policy",
102102
"/docs",
103-
"/checkout?collection=elizaos-hardware",
104103
"/payment/pay_req_1",
105104
"/payment/app-charge/app_1/charge_1",
106105
"/payment/success?payment_request_id=pay_req_1",

packages/os-homepage/src/components/OsDownloads.tsx

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -101,7 +101,11 @@ function ArtifactCard({ artifact }: { artifact: OsArtifact }) {
101101
const isAvailable = artifact.downloadUrl !== null;
102102

103103
return (
104-
<div className="artifact-card" data-kind={artifact.kind} data-available={isAvailable}>
104+
<div
105+
className="artifact-card"
106+
data-kind={artifact.kind}
107+
data-available={isAvailable}
108+
>
105109
<div className="artifact-card-head">
106110
<div className="artifact-badges">
107111
<span className="artifact-badge artifact-badge-kind">
@@ -128,9 +132,7 @@ function ArtifactCard({ artifact }: { artifact: OsArtifact }) {
128132
)}
129133

130134
<div className="artifact-card-foot">
131-
{sizeLabel && (
132-
<span className="artifact-size">{sizeLabel}</span>
133-
)}
135+
{sizeLabel && <span className="artifact-size">{sizeLabel}</span>}
134136

135137
<div className="artifact-actions">
136138
{artifact.checksumUrl && (

packages/os/DOWNLOADS.md

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# elizaOS Distribution Channels
2+
3+
## Linux Desktop
4+
5+
### Live USB (recommended for new users)
6+
- **ISO download**: Build via CI, flash to 8 GB+ USB with the USB installer app
7+
- **Debian package**: For installing elizaOS on an existing Debian/Ubuntu system
8+
9+
### Virtual Machine
10+
- **OVA image**: Import into VirtualBox, VMware Fusion, or UTM (Mac)
11+
- **QCOW2 image**: For QEMU/KVM on Linux hosts
12+
13+
## Android
14+
15+
### elizaOS AOSP (full OS replacement)
16+
- **AOSP Flasher app**: GUI tool for Mac/Linux/Windows to flash your Pixel device
17+
- Supported devices: Pixel 9 Pro (caiman), others via community builds
18+
- Requires: USB debugging enabled, bootloader unlocked
19+
20+
### elizaOS Android App (no AOSP required)
21+
- **APK sideload**: Install on any Android device without AOSP flashing
22+
23+
## Install Tools
24+
25+
### USB Installer
26+
Cross-platform app for creating elizaOS USB boot drives:
27+
- macOS: uses diskutil + dd with native authorization
28+
- Linux: uses lsblk + dd via pkexec
29+
- Windows: uses PowerShell disk management
30+
31+
### AOSP Flasher
32+
Cross-platform GUI for flashing elizaOS AOSP onto Pixel devices:
33+
- Detects connected devices via ADB
34+
- Downloads elizaOS AOSP build artifacts
35+
- Guides through bootloader unlock + flashing
36+
37+
## Release Channels
38+
39+
| Channel | Cadence | Stability |
40+
|---------|---------|-----------|
41+
| `stable` | Major releases | Production-ready |
42+
| `beta` | Pre-release | Feature complete, may have bugs |
43+
| `nightly` | Daily automated builds | Latest, may break |
44+
45+
## Generating homepage artifact data
46+
47+
The OS artifact list shown on the homepage is generated from the release manifest at
48+
`packages/os/release/<date>/manifest.json`. To regenerate the data for a new manifest:
49+
50+
```sh
51+
node packages/os/scripts/generate-os-homepage-data.mjs \
52+
--manifest packages/os/release/beta-2026-05-16/manifest.json \
53+
--output packages/os-homepage/src/generated/os-artifacts.ts
54+
```
55+
56+
The `write-homepage-release-data.mjs` script also reads the manifest directly at build
57+
time and merges manifest artifacts with the static artifact list before writing
58+
`packages/homepage/src/generated/release-data.ts`.

0 commit comments

Comments
 (0)