Frank 1 ماه پیش
والد
کامیت
d7500b25b8

+ 2 - 0
packages/console/app/src/i18n/ar.ts

@@ -499,6 +499,8 @@ export const dict = {
   "workspace.lite.subscription.monthlyUsage": "الاستخدام الشهري",
   "workspace.lite.subscription.resetsIn": "إعادة تعيين في",
   "workspace.lite.subscription.useBalance": "استخدم رصيدك المتوفر بعد الوصول إلى حدود الاستخدام",
+  "workspace.lite.subscription.selectProvider":
+    'اختر "OpenCode Go" كمزود في إعدادات opencode الخاصة بك لاستخدام نماذج Go.',
   "workspace.lite.other.title": "اشتراك Go",
   "workspace.lite.other.message":
     "عضو آخر في مساحة العمل هذه مشترك بالفعل في OpenCode Go. يمكن لعضو واحد فقط لكل مساحة عمل الاشتراك.",

+ 2 - 0
packages/console/app/src/i18n/br.ts

@@ -505,6 +505,8 @@ export const dict = {
   "workspace.lite.subscription.monthlyUsage": "Uso Mensal",
   "workspace.lite.subscription.resetsIn": "Reinicia em",
   "workspace.lite.subscription.useBalance": "Use seu saldo disponível após atingir os limites de uso",
+  "workspace.lite.subscription.selectProvider":
+    'Selecione "OpenCode Go" como provedor na sua configuração do opencode para usar os modelos Go.',
   "workspace.lite.other.title": "Assinatura Go",
   "workspace.lite.other.message":
     "Outro membro neste workspace já assina o OpenCode Go. Apenas um membro por workspace pode assinar.",

+ 2 - 0
packages/console/app/src/i18n/da.ts

@@ -503,6 +503,8 @@ export const dict = {
   "workspace.lite.subscription.monthlyUsage": "Månedligt forbrug",
   "workspace.lite.subscription.resetsIn": "Nulstiller i",
   "workspace.lite.subscription.useBalance": "Brug din tilgængelige saldo, når du har nået forbrugsgrænserne",
+  "workspace.lite.subscription.selectProvider":
+    'Vælg "OpenCode Go" som udbyder i din opencode-konfiguration for at bruge Go-modeller.',
   "workspace.lite.other.title": "Go-abonnement",
   "workspace.lite.other.message":
     "Et andet medlem i dette workspace abonnerer allerede på OpenCode Go. Kun ét medlem pr. workspace kan abonnere.",

+ 2 - 0
packages/console/app/src/i18n/de.ts

@@ -505,6 +505,8 @@ export const dict = {
   "workspace.lite.subscription.monthlyUsage": "Monatliche Nutzung",
   "workspace.lite.subscription.resetsIn": "Setzt zurück in",
   "workspace.lite.subscription.useBalance": "Nutze dein verfügbares Guthaben, nachdem die Nutzungslimits erreicht sind",
+  "workspace.lite.subscription.selectProvider":
+    'Wähle "OpenCode Go" als Anbieter in deiner opencode-Konfiguration, um Go-Modelle zu verwenden.',
   "workspace.lite.other.title": "Go-Abonnement",
   "workspace.lite.other.message":
     "Ein anderes Mitglied in diesem Workspace hat OpenCode Go bereits abonniert. Nur ein Mitglied pro Workspace kann abonnieren.",

+ 2 - 0
packages/console/app/src/i18n/en.ts

@@ -497,6 +497,8 @@ export const dict = {
   "workspace.lite.subscription.monthlyUsage": "Monthly Usage",
   "workspace.lite.subscription.resetsIn": "Resets in",
   "workspace.lite.subscription.useBalance": "Use your available balance after reaching the usage limits",
+  "workspace.lite.subscription.selectProvider":
+    'Select "OpenCode Go" as the provider in your opencode configuration to use Go models.',
   "workspace.lite.other.title": "Go Subscription",
   "workspace.lite.other.message":
     "Another member in this workspace is already subscribed to OpenCode Go. Only one member per workspace can subscribe.",

+ 2 - 0
packages/console/app/src/i18n/es.ts

@@ -506,6 +506,8 @@ export const dict = {
   "workspace.lite.subscription.monthlyUsage": "Uso Mensual",
   "workspace.lite.subscription.resetsIn": "Se reinicia en",
   "workspace.lite.subscription.useBalance": "Usa tu saldo disponible después de alcanzar los límites de uso",
+  "workspace.lite.subscription.selectProvider":
+    'Selecciona "OpenCode Go" como proveedor en tu configuración de opencode para usar los modelos Go.',
   "workspace.lite.other.title": "Suscripción Go",
   "workspace.lite.other.message":
     "Otro miembro de este espacio de trabajo ya está suscrito a OpenCode Go. Solo un miembro por espacio de trabajo puede suscribirse.",

+ 2 - 0
packages/console/app/src/i18n/fr.ts

@@ -515,6 +515,8 @@ export const dict = {
   "workspace.lite.subscription.resetsIn": "Réinitialisation dans",
   "workspace.lite.subscription.useBalance":
     "Utilisez votre solde disponible après avoir atteint les limites d'utilisation",
+  "workspace.lite.subscription.selectProvider":
+    'Sélectionnez "OpenCode Go" comme fournisseur dans votre configuration opencode pour utiliser les modèles Go.',
   "workspace.lite.other.title": "Abonnement Go",
   "workspace.lite.other.message":
     "Un autre membre de cet espace de travail est déjà abonné à OpenCode Go. Un seul membre par espace de travail peut s'abonner.",

+ 2 - 0
packages/console/app/src/i18n/it.ts

@@ -505,6 +505,8 @@ export const dict = {
   "workspace.lite.subscription.monthlyUsage": "Utilizzo Mensile",
   "workspace.lite.subscription.resetsIn": "Si resetta tra",
   "workspace.lite.subscription.useBalance": "Usa il tuo saldo disponibile dopo aver raggiunto i limiti di utilizzo",
+  "workspace.lite.subscription.selectProvider":
+    'Seleziona "OpenCode Go" come provider nella tua configurazione opencode per utilizzare i modelli Go.',
   "workspace.lite.other.title": "Abbonamento Go",
   "workspace.lite.other.message":
     "Un altro membro in questo workspace è già abbonato a OpenCode Go. Solo un membro per workspace può abbonarsi.",

+ 2 - 0
packages/console/app/src/i18n/ja.ts

@@ -503,6 +503,8 @@ export const dict = {
   "workspace.lite.subscription.monthlyUsage": "月間利用量",
   "workspace.lite.subscription.resetsIn": "リセットまで",
   "workspace.lite.subscription.useBalance": "利用限度額に達したら利用可能な残高を使用する",
+  "workspace.lite.subscription.selectProvider":
+    "Go モデルを使用するには、opencode の設定で「OpenCode Go」をプロバイダーとして選択してください。",
   "workspace.lite.other.title": "Goサブスクリプション",
   "workspace.lite.other.message":
     "このワークスペースの別のメンバーが既に OpenCode Go を購読しています。ワークスペースにつき1人のメンバーのみが購読できます。",

+ 2 - 0
packages/console/app/src/i18n/ko.ts

@@ -498,6 +498,8 @@ export const dict = {
   "workspace.lite.subscription.monthlyUsage": "월간 사용량",
   "workspace.lite.subscription.resetsIn": "초기화까지 남은 시간:",
   "workspace.lite.subscription.useBalance": "사용 한도 도달 후에는 보유 잔액 사용",
+  "workspace.lite.subscription.selectProvider":
+    'Go 모델을 사용하려면 opencode 설정에서 "OpenCode Go"를 공급자로 선택하세요.',
   "workspace.lite.other.title": "Go 구독",
   "workspace.lite.other.message":
     "이 워크스페이스의 다른 멤버가 이미 OpenCode Go를 구독 중입니다. 워크스페이스당 한 명의 멤버만 구독할 수 있습니다.",

+ 2 - 0
packages/console/app/src/i18n/no.ts

@@ -503,6 +503,8 @@ export const dict = {
   "workspace.lite.subscription.monthlyUsage": "Månedlig bruk",
   "workspace.lite.subscription.resetsIn": "Nullstilles om",
   "workspace.lite.subscription.useBalance": "Bruk din tilgjengelige saldo etter å ha nådd bruksgrensene",
+  "workspace.lite.subscription.selectProvider":
+    'Velg "OpenCode Go" som leverandør i opencode-konfigurasjonen din for å bruke Go-modeller.',
   "workspace.lite.other.title": "Go-abonnement",
   "workspace.lite.other.message":
     "Et annet medlem i dette arbeidsområdet abonnerer allerede på OpenCode Go. Kun ett medlem per arbeidsområde kan abonnere.",

+ 2 - 0
packages/console/app/src/i18n/pl.ts

@@ -504,6 +504,8 @@ export const dict = {
   "workspace.lite.subscription.monthlyUsage": "Użycie miesięczne",
   "workspace.lite.subscription.resetsIn": "Resetuje się za",
   "workspace.lite.subscription.useBalance": "Użyj dostępnego salda po osiągnięciu limitów użycia",
+  "workspace.lite.subscription.selectProvider":
+    'Wybierz "OpenCode Go" jako dostawcę w konfiguracji opencode, aby używać modeli Go.',
   "workspace.lite.other.title": "Subskrypcja Go",
   "workspace.lite.other.message":
     "Inny członek tego obszaru roboczego już subskrybuje OpenCode Go. Tylko jeden członek na obszar roboczy może subskrybować.",

+ 2 - 0
packages/console/app/src/i18n/ru.ts

@@ -509,6 +509,8 @@ export const dict = {
   "workspace.lite.subscription.monthlyUsage": "Ежемесячное использование",
   "workspace.lite.subscription.resetsIn": "Сброс через",
   "workspace.lite.subscription.useBalance": "Использовать доступный баланс после достижения лимитов",
+  "workspace.lite.subscription.selectProvider":
+    'Выберите "OpenCode Go" в качестве провайдера в настройках opencode для использования моделей Go.',
   "workspace.lite.other.title": "Подписка Go",
   "workspace.lite.other.message":
     "Другой участник в этом рабочем пространстве уже подписан на OpenCode Go. Только один участник в рабочем пространстве может оформить подписку.",

+ 2 - 0
packages/console/app/src/i18n/th.ts

@@ -502,6 +502,8 @@ export const dict = {
   "workspace.lite.subscription.monthlyUsage": "การใช้งานรายเดือน",
   "workspace.lite.subscription.resetsIn": "รีเซ็ตใน",
   "workspace.lite.subscription.useBalance": "ใช้ยอดคงเหลือของคุณหลังจากถึงขีดจำกัดการใช้งาน",
+  "workspace.lite.subscription.selectProvider":
+    'เลือก "OpenCode Go" เป็นผู้ให้บริการในการตั้งค่า opencode ของคุณเพื่อใช้โมเดล Go',
   "workspace.lite.other.title": "การสมัครสมาชิก Go",
   "workspace.lite.other.message":
     "สมาชิกคนอื่นใน Workspace นี้ได้สมัคร OpenCode Go แล้ว สามารถสมัครได้เพียงหนึ่งคนต่อหนึ่ง Workspace เท่านั้น",

+ 2 - 0
packages/console/app/src/i18n/tr.ts

@@ -505,6 +505,8 @@ export const dict = {
   "workspace.lite.subscription.monthlyUsage": "Aylık Kullanım",
   "workspace.lite.subscription.resetsIn": "Sıfırlama süresi",
   "workspace.lite.subscription.useBalance": "Kullanım limitlerine ulaştıktan sonra mevcut bakiyenizi kullanın",
+  "workspace.lite.subscription.selectProvider":
+    'Go modellerini kullanmak için opencode yapılandırmanızda "OpenCode Go"\'yu sağlayıcı olarak seçin.',
   "workspace.lite.other.title": "Go Aboneliği",
   "workspace.lite.other.message":
     "Bu çalışma alanındaki başka bir üye zaten OpenCode Go abonesi. Çalışma alanı başına yalnızca bir üye abone olabilir.",

+ 2 - 0
packages/console/app/src/i18n/zh.ts

@@ -489,6 +489,8 @@ export const dict = {
   "workspace.lite.subscription.monthlyUsage": "每月用量",
   "workspace.lite.subscription.resetsIn": "重置于",
   "workspace.lite.subscription.useBalance": "达到使用限额后使用您的可用余额",
+  "workspace.lite.subscription.selectProvider":
+    "在你的 opencode 配置中选择「OpenCode Go」作为提供商,即可使用 Go 模型。",
   "workspace.lite.other.title": "Go 订阅",
   "workspace.lite.other.message": "此工作区中的另一位成员已经订阅了 OpenCode Go。每个工作区只有一名成员可以订阅。",
   "workspace.lite.promo.title": "OpenCode Go",

+ 2 - 0
packages/console/app/src/i18n/zht.ts

@@ -489,6 +489,8 @@ export const dict = {
   "workspace.lite.subscription.monthlyUsage": "每月使用量",
   "workspace.lite.subscription.resetsIn": "重置時間:",
   "workspace.lite.subscription.useBalance": "達到使用限制後使用您的可用餘額",
+  "workspace.lite.subscription.selectProvider":
+    "在您的 opencode 設定中選擇「OpenCode Go」作為提供商,即可使用 Go 模型。",
   "workspace.lite.other.title": "Go 訂閱",
   "workspace.lite.other.message": "此工作區中的另一位成員已訂閱 OpenCode Go。每個工作區只能有一位成員訂閱。",
   "workspace.lite.promo.title": "OpenCode Go",

+ 16 - 0
packages/console/app/src/routes/workspace/[id]/billing/lite-section.module.css

@@ -140,6 +140,22 @@
     }
   }
 
+  [data-slot="beta-notice"] {
+    padding: var(--space-3) var(--space-4);
+    border: 1px solid var(--color-border);
+    border-radius: var(--border-radius-sm);
+    background-color: var(--color-bg-surface);
+    font-size: var(--font-size-sm);
+    color: var(--color-text-secondary);
+    line-height: 1.5;
+    margin-top: var(--space-3);
+
+    a {
+      color: var(--color-accent);
+      text-decoration: none;
+    }
+  }
+
   [data-slot="other-message"] {
     font-size: var(--font-size-sm);
     color: var(--color-text-muted);

+ 9 - 0
packages/console/app/src/routes/workspace/[id]/billing/lite-section.tsx

@@ -11,6 +11,7 @@ import { withActor } from "~/context/auth.withActor"
 import { queryBillingInfo } from "../../common"
 import styles from "./lite-section.module.css"
 import { useI18n } from "~/context/i18n"
+import { useLanguage } from "~/context/language"
 
 const queryLiteSubscription = query(async (workspaceID: string) => {
   "use server"
@@ -135,6 +136,7 @@ const setLiteUseBalance = action(async (form: FormData) => {
 export function LiteSection() {
   const params = useParams()
   const i18n = useI18n()
+  const language = useLanguage()
   const lite = createAsync(() => queryLiteSubscription(params.id!))
   const sessionAction = useAction(createSessionUrl)
   const sessionSubmission = useSubmission(createSessionUrl)
@@ -181,6 +183,13 @@ export function LiteSection() {
                 </button>
               </div>
             </div>
+            <div data-slot="beta-notice">
+              {i18n.t("workspace.lite.subscription.selectProvider")}{" "}
+              <a href={language.route("/docs/providers/#opencode-go")} target="_blank" rel="noopener noreferrer">
+                {i18n.t("common.learnMore")}
+              </a>
+              .
+            </div>
             <div data-slot="usage">
               <div data-slot="usage-item">
                 <div data-slot="usage-header">

+ 33 - 1
packages/web/src/content/docs/providers.mdx

@@ -57,7 +57,39 @@ tested and verified to work well with OpenCode. [Learn more](/docs/zen).
 If you are new, we recommend starting with OpenCode Zen.
 :::
 
-1. Run the `/connect` command in the TUI, select opencode, and head to [opencode.ai/auth](https://opencode.ai/auth).
+1. Run the `/connect` command in the TUI, select `OpenCode Zen`, and head to [opencode.ai/auth](https://opencode.ai/zen).
+
+   ```txt
+   /connect
+   ```
+
+2. Sign in, add your billing details, and copy your API key.
+
+3. Paste your API key.
+
+   ```txt
+   ┌ API key
+   │
+   │
+   └ enter
+   ```
+
+4. Run `/models` in the TUI to see the list of models we recommend.
+
+   ```txt
+   /models
+   ```
+
+It works like any other provider in OpenCode and is completely optional to use.
+
+---
+
+## OpenCode Go
+
+OpenCode Go is a low cost subscription plan that provides reliable access to popular open coding models provided by the OpenCode team that have been
+tested and verified to work well with OpenCode.
+
+1. Run the `/connect` command in the TUI, select `OpenCode Go`, and head to [opencode.ai/auth](https://opencode.ai/zen).
 
    ```txt
    /connect