From c4ea11fef3dc3ac6bd2e3c55d1c8179457eace5d Mon Sep 17 00:00:00 2001
From: Frank
Date: Wed, 25 Feb 2026 23:06:16 -0500
Subject: [PATCH] wip: zen
---
packages/console/app/src/routes/black/index.tsx | 13 +++++++++----
.../black/{_subscribe => subscribe}/[plan].tsx | 11 +++++++++--
2 files changed, 18 insertions(+), 6 deletions(-)
rename packages/console/app/src/routes/black/{_subscribe => subscribe}/[plan].tsx (98%)
diff --git a/packages/console/app/src/routes/black/index.tsx b/packages/console/app/src/routes/black/index.tsx
index 382832e8f..8bce3cd46 100644
--- a/packages/console/app/src/routes/black/index.tsx
+++ b/packages/console/app/src/routes/black/index.tsx
@@ -1,16 +1,21 @@
-import { A, useSearchParams } from "@solidjs/router"
+import { A, createAsync, query, useSearchParams } from "@solidjs/router"
import { Title } from "@solidjs/meta"
import { createMemo, createSignal, For, Match, onMount, Show, Switch } from "solid-js"
import { PlanIcon, plans } from "./common"
import { useI18n } from "~/context/i18n"
import { useLanguage } from "~/context/language"
+import { Resource } from "@opencode-ai/console-resource"
-const paused = true
+const getPaused = query(async () => {
+ "use server"
+ return Resource.App.stage === "production"
+}, "black.paused")
export default function Black() {
const [params] = useSearchParams()
const i18n = useI18n()
const language = useLanguage()
+ const paused = createAsync(() => getPaused())
const [selected, setSelected] = createSignal((params.plan as string) || null)
const [mounted, setMounted] = createSignal(false)
const selectedPlan = createMemo(() => plans.find((p) => p.id === selected()))
@@ -44,7 +49,7 @@ export default function Black() {
<>
{i18n.t("black.title")}
- {i18n.t("black.paused")}
}>
+ {i18n.t("black.paused")}}>
@@ -108,7 +113,7 @@ export default function Black() {
-
+
{i18n.t("black.finePrint.beforeTerms")} ยท{" "}
{i18n.t("black.finePrint.terms")}
diff --git a/packages/console/app/src/routes/black/_subscribe/[plan].tsx b/packages/console/app/src/routes/black/subscribe/[plan].tsx
similarity index 98%
rename from packages/console/app/src/routes/black/_subscribe/[plan].tsx
rename to packages/console/app/src/routes/black/subscribe/[plan].tsx
index 644d87d9b..19b56eabe 100644
--- a/packages/console/app/src/routes/black/_subscribe/[plan].tsx
+++ b/packages/console/app/src/routes/black/subscribe/[plan].tsx
@@ -17,6 +17,12 @@ import { Billing } from "@opencode-ai/console-core/billing.js"
import { useI18n } from "~/context/i18n"
import { useLanguage } from "~/context/language"
import { formError } from "~/lib/form-error"
+import { Resource } from "@opencode-ai/console-resource"
+
+const getEnabled = query(async () => {
+ "use server"
+ return Resource.App.stage !== "production"
+}, "black.subscribe.enabled")
const plansMap = Object.fromEntries(plans.map((p) => [p.id, p])) as Record
const stripePromise = loadStripe(import.meta.env.VITE_STRIPE_PUBLISHABLE_KEY!)
@@ -269,6 +275,7 @@ export default function BlackSubscribe() {
const params = useParams()
const i18n = useI18n()
const language = useLanguage()
+ const enabled = createAsync(() => getEnabled())
const planData = plansMap[(params.plan as PlanID) ?? "20"] ?? plansMap["20"]
const plan = planData.id
@@ -359,7 +366,7 @@ export default function BlackSubscribe() {
}
return (
- <>
+
{i18n.t("black.subscribe.title")}