Pārlūkot izejas kodu

chore: generate

opencode-agent[bot] 1 mēnesi atpakaļ
vecāks
revīzija
ddbc8d3b75

+ 2 - 1
packages/stats/app/src/i18n.ts

@@ -182,7 +182,8 @@ const en = {
   "model.noDataDescription": "Try opening a model from the leaderboard.",
   "model.noMatched": "No model facts or usage rows matched {{id}}.",
   "model.fallback": "Model",
-  "model.catalogFallback": "Model facts from the shared model index. OpenCode Go usage appears once this model has activity.",
+  "model.catalogFallback":
+    "Model facts from the shared model index. OpenCode Go usage appears once this model has activity.",
   "model.unranked": "Unranked across last week's OpenCode Go usage",
   "model.ranked": "Ranked #{{rank}} across last week's OpenCode Go usage",
   "model.observedVolume": "with {{share}} of observed 2M volume.",

+ 2 - 1
packages/stats/app/src/i18n/ar.ts

@@ -163,7 +163,8 @@ export const dict = {
   "model.noDataDescription": "جرّب فتح نموذج من لوحة الترتيب.",
   "model.noMatched": "لم تطابق أي حقائق نموذج أو صفوف استخدام {{id}}.",
   "model.fallback": "نموذج",
-  "model.catalogFallback": "حقائق النموذج من فهرس النماذج المشترك. يظهر استخدام OpenCode Go عندما يصبح لهذا النموذج نشاط.",
+  "model.catalogFallback":
+    "حقائق النموذج من فهرس النماذج المشترك. يظهر استخدام OpenCode Go عندما يصبح لهذا النموذج نشاط.",
   "model.unranked": "غير مصنف ضمن استخدام OpenCode Go للأسبوع الماضي",
   "model.ranked": "مصنف رقم {{rank}} ضمن استخدام OpenCode Go للأسبوع الماضي",
   "model.observedVolume": "مع {{share}} من حجم 2M المرصود.",

+ 6 - 3
packages/stats/app/src/i18n/br.ts

@@ -81,7 +81,8 @@ export const dict = {
   "home.updated": "Atualizado",
   "home.noRows": "Ainda não há linhas",
   "home.justNow": "agora mesmo",
-  "home.heroCopy": "Veja quais modelos estão vencendo em uso real, como a combinação está mudando e o que isso significa para o custo.",
+  "home.heroCopy":
+    "Veja quais modelos estão vencendo em uso real, como a combinação está mudando e o que isso significa para o custo.",
   "home.loadingTitle": "Carregando dados",
   "home.loadingDescription": "Lendo agregados de modelos.",
   "home.usageTitle": "Uso",
@@ -135,7 +136,8 @@ export const dict = {
   "lab.notFound": "Nenhum modelo correspondeu a este laboratório.",
   "lab.heroPrefix": "Explore {{count}} modelos da {{lab}} usados no OpenCode",
   "lab.heroIncluding": "incluindo {{models}}",
-  "lab.heroSuffix": "Compare uso recente de tokens, janelas de contexto, datas de lançamento e dados específicos de cada modelo.",
+  "lab.heroSuffix":
+    "Compare uso recente de tokens, janelas de contexto, datas de lançamento e dados específicos de cada modelo.",
   "lab.tokensProcessed": "Tokens processados",
   "lab.pending": "Pendente",
   "lab.usageAfterActivity": "O uso aparece depois que a atividade do modelo chega",
@@ -163,7 +165,8 @@ export const dict = {
   "model.noDataDescription": "Tente abrir um modelo pela classificação.",
   "model.noMatched": "Nenhum fato do modelo ou linha de uso correspondeu a {{id}}.",
   "model.fallback": "Modelo",
-  "model.catalogFallback": "Fatos do modelo do índice compartilhado de modelos. O uso no OpenCode Go aparece quando este modelo tiver atividade.",
+  "model.catalogFallback":
+    "Fatos do modelo do índice compartilhado de modelos. O uso no OpenCode Go aparece quando este modelo tiver atividade.",
   "model.unranked": "Sem classificação no uso do OpenCode Go da última semana",
   "model.ranked": "Classificado em #{{rank}} no uso do OpenCode Go da última semana",
   "model.observedVolume": "com {{share}} do volume observado de 2M.",

+ 4 - 2
packages/stats/app/src/i18n/da.ts

@@ -81,7 +81,8 @@ export const dict = {
   "home.updated": "Opdateret",
   "home.noRows": "Ingen rækker endnu",
   "home.justNow": "lige nu",
-  "home.heroCopy": "Se hvilke modeller der vinder reel brug, hvordan mixet skifter, og hvad det betyder for omkostningerne.",
+  "home.heroCopy":
+    "Se hvilke modeller der vinder reel brug, hvordan mixet skifter, og hvad det betyder for omkostningerne.",
   "home.loadingTitle": "Indlæser data",
   "home.loadingDescription": "Læser modelaggregater.",
   "home.usageTitle": "Brug",
@@ -163,7 +164,8 @@ export const dict = {
   "model.noDataDescription": "Prøv at åbne en model fra ranglisten.",
   "model.noMatched": "Ingen modelfakta eller brugsrækker matchede {{id}}.",
   "model.fallback": "Model",
-  "model.catalogFallback": "Modelfakta fra det fælles modelindeks. OpenCode Go-brug vises, når denne model har aktivitet.",
+  "model.catalogFallback":
+    "Modelfakta fra det fælles modelindeks. OpenCode Go-brug vises, når denne model har aktivitet.",
   "model.unranked": "Ikke rangeret i sidste uges OpenCode Go-brug",
   "model.ranked": "Rangeret #{{rank}} i sidste uges OpenCode Go-brug",
   "model.observedVolume": "med {{share}} af observeret 2M-volumen.",

+ 6 - 3
packages/stats/app/src/i18n/de.ts

@@ -81,7 +81,8 @@ export const dict = {
   "home.updated": "Aktualisiert",
   "home.noRows": "Noch keine Zeilen",
   "home.justNow": "gerade eben",
-  "home.heroCopy": "Sieh, welche Modelle echte Nutzung gewinnen, wie sich der Mix verschiebt und was das für die Kosten bedeutet.",
+  "home.heroCopy":
+    "Sieh, welche Modelle echte Nutzung gewinnen, wie sich der Mix verschiebt und was das für die Kosten bedeutet.",
   "home.loadingTitle": "Daten werden geladen",
   "home.loadingDescription": "Modellaggregate werden gelesen.",
   "home.usageTitle": "Nutzung",
@@ -135,7 +136,8 @@ export const dict = {
   "lab.notFound": "Keine Modelle passten zu diesem Lab.",
   "lab.heroPrefix": "Erkunde {{count}} {{lab}}-Modelle, die in OpenCode verwendet werden",
   "lab.heroIncluding": "einschließlich {{models}}",
-  "lab.heroSuffix": "Vergleiche aktuelle Tokennutzung, Kontextfenster, Veröffentlichungsdaten und modellspezifische Daten.",
+  "lab.heroSuffix":
+    "Vergleiche aktuelle Tokennutzung, Kontextfenster, Veröffentlichungsdaten und modellspezifische Daten.",
   "lab.tokensProcessed": "Verarbeitete Tokens",
   "lab.pending": "Ausstehend",
   "lab.usageAfterActivity": "Nutzung erscheint, sobald Modellaktivität vorliegt",
@@ -163,7 +165,8 @@ export const dict = {
   "model.noDataDescription": "Öffne ein Modell aus der Bestenliste.",
   "model.noMatched": "Keine Modellfakten oder Nutzungszeilen passten zu {{id}}.",
   "model.fallback": "Modell",
-  "model.catalogFallback": "Modellfakten aus dem gemeinsamen Modellindex. OpenCode Go-Nutzung erscheint, sobald dieses Modell Aktivität hat.",
+  "model.catalogFallback":
+    "Modellfakten aus dem gemeinsamen Modellindex. OpenCode Go-Nutzung erscheint, sobald dieses Modell Aktivität hat.",
   "model.unranked": "In der OpenCode Go-Nutzung der letzten Woche nicht platziert",
   "model.ranked": "Rang #{{rank}} in der OpenCode Go-Nutzung der letzten Woche",
   "model.observedVolume": "mit {{share}} des beobachteten 2M-Volumens.",

+ 4 - 2
packages/stats/app/src/i18n/es.ts

@@ -135,7 +135,8 @@ export const dict = {
   "lab.notFound": "Ningún modelo coincidió con este laboratorio.",
   "lab.heroPrefix": "Explora {{count}} modelos de {{lab}} usados en OpenCode",
   "lab.heroIncluding": "incluidos {{models}}",
-  "lab.heroSuffix": "Compara uso reciente de tokens, ventanas de contexto, fechas de lanzamiento y datos específicos del modelo.",
+  "lab.heroSuffix":
+    "Compara uso reciente de tokens, ventanas de contexto, fechas de lanzamiento y datos específicos del modelo.",
   "lab.tokensProcessed": "Tokens procesados",
   "lab.pending": "Pendiente",
   "lab.usageAfterActivity": "El uso aparece después de que llegue actividad del modelo",
@@ -163,7 +164,8 @@ export const dict = {
   "model.noDataDescription": "Prueba a abrir un modelo desde la clasificación.",
   "model.noMatched": "Ningún dato del modelo ni fila de uso coincidió con {{id}}.",
   "model.fallback": "Modelo",
-  "model.catalogFallback": "Datos del modelo desde el índice compartido de modelos. El uso de OpenCode Go aparecerá cuando este modelo tenga actividad.",
+  "model.catalogFallback":
+    "Datos del modelo desde el índice compartido de modelos. El uso de OpenCode Go aparecerá cuando este modelo tenga actividad.",
   "model.unranked": "Sin clasificación en el uso de OpenCode Go de la semana pasada",
   "model.ranked": "Clasificado #{{rank}} en el uso de OpenCode Go de la semana pasada",
   "model.observedVolume": "con {{share}} del volumen 2M observado.",

+ 8 - 4
packages/stats/app/src/i18n/fr.ts

@@ -81,7 +81,8 @@ export const dict = {
   "home.updated": "Mis à jour",
   "home.noRows": "Aucune ligne pour l'instant",
   "home.justNow": "à l'instant",
-  "home.heroCopy": "Voyez quels modèles gagnent en usage réel, comment la répartition évolue et ce que cela signifie pour les coûts.",
+  "home.heroCopy":
+    "Voyez quels modèles gagnent en usage réel, comment la répartition évolue et ce que cela signifie pour les coûts.",
   "home.loadingTitle": "Chargement des données",
   "home.loadingDescription": "Lecture des agrégats de modèles.",
   "home.usageTitle": "Utilisation",
@@ -135,7 +136,8 @@ export const dict = {
   "lab.notFound": "Aucun modèle ne correspondait à ce laboratoire.",
   "lab.heroPrefix": "Explorez {{count}} modèles {{lab}} utilisés dans OpenCode",
   "lab.heroIncluding": "dont {{models}}",
-  "lab.heroSuffix": "Comparez l'utilisation récente des tokens, les fenêtres de contexte, les dates de sortie et les données propres aux modèles.",
+  "lab.heroSuffix":
+    "Comparez l'utilisation récente des tokens, les fenêtres de contexte, les dates de sortie et les données propres aux modèles.",
   "lab.tokensProcessed": "Tokens traités",
   "lab.pending": "En attente",
   "lab.usageAfterActivity": "L'utilisation apparaît après l'arrivée de l'activité du modèle",
@@ -144,7 +146,8 @@ export const dict = {
   "lab.usageTitle": "Utilisation des tokens {{lab}}",
   "lab.usageDescription": "Volume quotidien de tokens OpenCode sur les deux derniers mois.",
   "lab.noUsageTitle": "Aucune utilisation pour l'instant",
-  "lab.noUsageDescription": "L'utilisation récente des tokens apparaîtra ici dès que ce laboratoire aura de l'activité.",
+  "lab.noUsageDescription":
+    "L'utilisation récente des tokens apparaîtra ici dès que ce laboratoire aura de l'activité.",
   "lab.dailyTokenChart": "Graphique quotidien d'utilisation des tokens {{lab}}",
   "lab.dailyTokens": "Tokens quotidiens",
   "lab.tokens": "tokens",
@@ -163,7 +166,8 @@ export const dict = {
   "model.noDataDescription": "Essayez d'ouvrir un modèle depuis le classement.",
   "model.noMatched": "Aucun fait de modèle ni aucune ligne d'utilisation ne correspondait à {{id}}.",
   "model.fallback": "Modèle",
-  "model.catalogFallback": "Faits du modèle issus de l'index partagé des modèles. L'utilisation OpenCode Go apparaîtra dès que ce modèle aura de l'activité.",
+  "model.catalogFallback":
+    "Faits du modèle issus de l'index partagé des modèles. L'utilisation OpenCode Go apparaîtra dès que ce modèle aura de l'activité.",
   "model.unranked": "Non classé dans l'utilisation OpenCode Go de la semaine dernière",
   "model.ranked": "Classé #{{rank}} dans l'utilisation OpenCode Go de la semaine dernière",
   "model.observedVolume": "avec {{share}} du volume 2M observé.",

+ 6 - 3
packages/stats/app/src/i18n/it.ts

@@ -81,7 +81,8 @@ export const dict = {
   "home.updated": "Aggiornato",
   "home.noRows": "Ancora nessuna riga",
   "home.justNow": "proprio ora",
-  "home.heroCopy": "Scopri quali modelli stanno vincendo nell'uso reale, come cambia il mix e cosa significa per i costi.",
+  "home.heroCopy":
+    "Scopri quali modelli stanno vincendo nell'uso reale, come cambia il mix e cosa significa per i costi.",
   "home.loadingTitle": "Caricamento dati",
   "home.loadingDescription": "Lettura degli aggregati dei modelli.",
   "home.usageTitle": "Utilizzo",
@@ -135,7 +136,8 @@ export const dict = {
   "lab.notFound": "Nessun modello corrispondeva a questo laboratorio.",
   "lab.heroPrefix": "Esplora {{count}} modelli {{lab}} usati in OpenCode",
   "lab.heroIncluding": "inclusi {{models}}",
-  "lab.heroSuffix": "Confronta l'utilizzo recente dei token, le finestre di contesto, le date di rilascio e i dati specifici del modello.",
+  "lab.heroSuffix":
+    "Confronta l'utilizzo recente dei token, le finestre di contesto, le date di rilascio e i dati specifici del modello.",
   "lab.tokensProcessed": "Token elaborati",
   "lab.pending": "In sospeso",
   "lab.usageAfterActivity": "L'utilizzo appare dopo l'arrivo dell'attività del modello",
@@ -163,7 +165,8 @@ export const dict = {
   "model.noDataDescription": "Prova ad aprire un modello dalla classifica.",
   "model.noMatched": "Nessun fatto modello o riga di utilizzo corrispondeva a {{id}}.",
   "model.fallback": "Modello",
-  "model.catalogFallback": "Fatti del modello dall'indice condiviso dei modelli. L'utilizzo di OpenCode Go appare quando questo modello ha attività.",
+  "model.catalogFallback":
+    "Fatti del modello dall'indice condiviso dei modelli. L'utilizzo di OpenCode Go appare quando questo modello ha attività.",
   "model.unranked": "Non classificato nell'utilizzo OpenCode Go della scorsa settimana",
   "model.ranked": "Posizione #{{rank}} nell'utilizzo OpenCode Go della scorsa settimana",
   "model.observedVolume": "con {{share}} del volume 2M osservato.",

+ 4 - 2
packages/stats/app/src/i18n/ja.ts

@@ -83,7 +83,8 @@ export const dict = {
   "home.updated": "更新済み",
   "home.noRows": "まだ行がありません",
   "home.justNow": "たった今",
-  "home.heroCopy": "実際の利用でどのモデルが伸びているか、利用構成がどう変化しているか、それがコストに何を意味するかを確認できます。",
+  "home.heroCopy":
+    "実際の利用でどのモデルが伸びているか、利用構成がどう変化しているか、それがコストに何を意味するかを確認できます。",
   "home.loadingTitle": "データを読み込み中",
   "home.loadingDescription": "モデル集計を読み込んでいます。",
   "home.usageTitle": "使用量",
@@ -165,7 +166,8 @@ export const dict = {
   "model.noDataDescription": "ランキングからモデルを開いてみてください。",
   "model.noMatched": "{{id}}に一致するモデル情報または使用行はありません。",
   "model.fallback": "モデル",
-  "model.catalogFallback": "共有モデルインデックスのモデル情報です。このモデルにアクティビティが発生するとOpenCode Go使用量が表示されます。",
+  "model.catalogFallback":
+    "共有モデルインデックスのモデル情報です。このモデルにアクティビティが発生するとOpenCode Go使用量が表示されます。",
   "model.unranked": "先週のOpenCode Go使用量では未ランク",
   "model.ranked": "先週のOpenCode Go使用量で#{{rank}}位",
   "model.observedVolume": "観測された2M量の{{share}}。",

+ 4 - 2
packages/stats/app/src/i18n/ko.ts

@@ -83,7 +83,8 @@ export const dict = {
   "home.updated": "업데이트됨",
   "home.noRows": "아직 행이 없습니다",
   "home.justNow": "방금 전",
-  "home.heroCopy": "실제 사용량에서 어떤 모델이 앞서고 있는지, 사용 구성이 어떻게 바뀌는지, 그것이 비용에 어떤 의미인지 확인하세요.",
+  "home.heroCopy":
+    "실제 사용량에서 어떤 모델이 앞서고 있는지, 사용 구성이 어떻게 바뀌는지, 그것이 비용에 어떤 의미인지 확인하세요.",
   "home.loadingTitle": "데이터 로딩 중",
   "home.loadingDescription": "모델 집계를 읽는 중입니다.",
   "home.usageTitle": "사용량",
@@ -165,7 +166,8 @@ export const dict = {
   "model.noDataDescription": "리더보드에서 모델을 열어보세요.",
   "model.noMatched": "{{id}}와 일치하는 모델 정보나 사용 행이 없습니다.",
   "model.fallback": "모델",
-  "model.catalogFallback": "공유 모델 인덱스의 모델 정보입니다. 이 모델에 활동이 생기면 OpenCode Go 사용량이 표시됩니다.",
+  "model.catalogFallback":
+    "공유 모델 인덱스의 모델 정보입니다. 이 모델에 활동이 생기면 OpenCode Go 사용량이 표시됩니다.",
   "model.unranked": "지난주 OpenCode Go 사용량에서 순위 없음",
   "model.ranked": "지난주 OpenCode Go 사용량에서 #{{rank}}위",
   "model.observedVolume": "관측된 2M 볼륨의 {{share}}.",

+ 4 - 2
packages/stats/app/src/i18n/no.ts

@@ -81,7 +81,8 @@ export const dict = {
   "home.updated": "Oppdatert",
   "home.noRows": "Ingen rader ennå",
   "home.justNow": "akkurat nå",
-  "home.heroCopy": "Se hvilke modeller som vinner reell bruk, hvordan miksen endrer seg, og hva det betyr for kostnadene.",
+  "home.heroCopy":
+    "Se hvilke modeller som vinner reell bruk, hvordan miksen endrer seg, og hva det betyr for kostnadene.",
   "home.loadingTitle": "Laster data",
   "home.loadingDescription": "Leser modellaggregater.",
   "home.usageTitle": "Bruk",
@@ -163,7 +164,8 @@ export const dict = {
   "model.noDataDescription": "Prøv å åpne en modell fra rangeringen.",
   "model.noMatched": "Ingen modellfakta eller bruksrader matchet {{id}}.",
   "model.fallback": "Modell",
-  "model.catalogFallback": "Modellfakta fra den delte modellindeksen. OpenCode Go-bruk vises når denne modellen har aktivitet.",
+  "model.catalogFallback":
+    "Modellfakta fra den delte modellindeksen. OpenCode Go-bruk vises når denne modellen har aktivitet.",
   "model.unranked": "Ikke rangert i forrige ukes OpenCode Go-bruk",
   "model.ranked": "Rangert #{{rank}} i forrige ukes OpenCode Go-bruk",
   "model.observedVolume": "med {{share}} av observert 2M-volum.",

+ 2 - 1
packages/stats/app/src/i18n/pl.ts

@@ -163,7 +163,8 @@ export const dict = {
   "model.noDataDescription": "Spróbuj otworzyć model z rankingu.",
   "model.noMatched": "Żadne fakty modelu ani wiersze użycia nie pasowały do {{id}}.",
   "model.fallback": "Model",
-  "model.catalogFallback": "Fakty modelu ze wspólnego indeksu modeli. Użycie OpenCode Go pojawi się, gdy ten model będzie mieć aktywność.",
+  "model.catalogFallback":
+    "Fakty modelu ze wspólnego indeksu modeli. Użycie OpenCode Go pojawi się, gdy ten model będzie mieć aktywność.",
   "model.unranked": "Bez pozycji w użyciu OpenCode Go z zeszłego tygodnia",
   "model.ranked": "Pozycja #{{rank}} w użyciu OpenCode Go z zeszłego tygodnia",
   "model.observedVolume": "z {{share}} obserwowanego wolumenu 2M.",

+ 6 - 3
packages/stats/app/src/i18n/ru.ts

@@ -81,7 +81,8 @@ export const dict = {
   "home.updated": "Обновлено",
   "home.noRows": "Строк пока нет",
   "home.justNow": "только что",
-  "home.heroCopy": "Посмотрите, какие модели выигрывают в реальном использовании, как меняется состав и что это значит для стоимости.",
+  "home.heroCopy":
+    "Посмотрите, какие модели выигрывают в реальном использовании, как меняется состав и что это значит для стоимости.",
   "home.loadingTitle": "Загрузка данных",
   "home.loadingDescription": "Читаем агрегаты моделей.",
   "home.usageTitle": "Использование",
@@ -135,7 +136,8 @@ export const dict = {
   "lab.notFound": "Нет моделей, соответствующих этой лаборатории.",
   "lab.heroPrefix": "Изучайте {{count}} моделей {{lab}}, используемых в OpenCode",
   "lab.heroIncluding": "включая {{models}}",
-  "lab.heroSuffix": "Сравните недавнее использование токенов, контекстные окна, даты релизов и данные конкретных моделей.",
+  "lab.heroSuffix":
+    "Сравните недавнее использование токенов, контекстные окна, даты релизов и данные конкретных моделей.",
   "lab.tokensProcessed": "Обработанные токены",
   "lab.pending": "Ожидает",
   "lab.usageAfterActivity": "Использование появится после активности модели",
@@ -163,7 +165,8 @@ export const dict = {
   "model.noDataDescription": "Попробуйте открыть модель из рейтинга.",
   "model.noMatched": "Нет фактов модели или строк использования для {{id}}.",
   "model.fallback": "Модель",
-  "model.catalogFallback": "Факты модели из общего индекса моделей. Использование OpenCode Go появится, когда у этой модели будет активность.",
+  "model.catalogFallback":
+    "Факты модели из общего индекса моделей. Использование OpenCode Go появится, когда у этой модели будет активность.",
   "model.unranked": "Нет рейтинга по использованию OpenCode Go за прошлую неделю",
   "model.ranked": "Ранг #{{rank}} по использованию OpenCode Go за прошлую неделю",
   "model.observedVolume": "с {{share}} наблюдаемого объема 2M.",

+ 2 - 1
packages/stats/app/src/i18n/th.ts

@@ -165,7 +165,8 @@ export const dict = {
   "model.noDataDescription": "ลองเปิดโมเดลจากลีดเดอร์บอร์ด",
   "model.noMatched": "ไม่มีข้อเท็จจริงของโมเดลหรือแถวการใช้งานที่ตรงกับ {{id}}",
   "model.fallback": "โมเดล",
-  "model.catalogFallback": "ข้อเท็จจริงของโมเดลจากดัชนีโมเดลที่ใช้ร่วมกัน การใช้งาน OpenCode Go จะแสดงเมื่อโมเดลนี้มีกิจกรรม",
+  "model.catalogFallback":
+    "ข้อเท็จจริงของโมเดลจากดัชนีโมเดลที่ใช้ร่วมกัน การใช้งาน OpenCode Go จะแสดงเมื่อโมเดลนี้มีกิจกรรม",
   "model.unranked": "ไม่มีอันดับในการใช้งาน OpenCode Go ของสัปดาห์ที่แล้ว",
   "model.ranked": "อันดับ #{{rank}} ในการใช้งาน OpenCode Go ของสัปดาห์ที่แล้ว",
   "model.observedVolume": "พร้อม {{share}} ของปริมาณ 2M ที่สังเกตได้",

+ 6 - 3
packages/stats/app/src/i18n/tr.ts

@@ -81,7 +81,8 @@ export const dict = {
   "home.updated": "Güncellendi",
   "home.noRows": "Henüz satır yok",
   "home.justNow": "az önce",
-  "home.heroCopy": "Gerçek kullanımda hangi modellerin öne geçtiğini, karışımın nasıl değiştiğini ve bunun maliyet için ne anlama geldiğini görün.",
+  "home.heroCopy":
+    "Gerçek kullanımda hangi modellerin öne geçtiğini, karışımın nasıl değiştiğini ve bunun maliyet için ne anlama geldiğini görün.",
   "home.loadingTitle": "Veriler yükleniyor",
   "home.loadingDescription": "Model toplamları okunuyor.",
   "home.usageTitle": "Kullanım",
@@ -135,7 +136,8 @@ export const dict = {
   "lab.notFound": "Bu laboratuvarla eşleşen model yok.",
   "lab.heroPrefix": "OpenCode'da kullanılan {{count}} {{lab}} modelini keşfedin",
   "lab.heroIncluding": "{{models}} dahil",
-  "lab.heroSuffix": "Son token kullanımını, bağlam pencerelerini, yayın tarihlerini ve modele özel verileri karşılaştırın.",
+  "lab.heroSuffix":
+    "Son token kullanımını, bağlam pencerelerini, yayın tarihlerini ve modele özel verileri karşılaştırın.",
   "lab.tokensProcessed": "İşlenen Tokenlar",
   "lab.pending": "Beklemede",
   "lab.usageAfterActivity": "Kullanım, model etkinliği ulaştıktan sonra görünür",
@@ -163,7 +165,8 @@ export const dict = {
   "model.noDataDescription": "Sıralamadan bir model açmayı deneyin.",
   "model.noMatched": "{{id}} ile eşleşen model bilgisi veya kullanım satırı yok.",
   "model.fallback": "Model",
-  "model.catalogFallback": "Paylaşılan model dizininden model bilgileri. Bu modelde etkinlik olduğunda OpenCode Go kullanımı görünür.",
+  "model.catalogFallback":
+    "Paylaşılan model dizininden model bilgileri. Bu modelde etkinlik olduğunda OpenCode Go kullanımı görünür.",
   "model.unranked": "Geçen haftaki OpenCode Go kullanımında sıralanmamış",
   "model.ranked": "Geçen haftaki OpenCode Go kullanımında #{{rank}} sırada",
   "model.observedVolume": "gözlemlenen 2M hacmin {{share}} payıyla.",

+ 6 - 3
packages/stats/app/src/i18n/uk.ts

@@ -81,7 +81,8 @@ export const dict = {
   "home.updated": "Оновлено",
   "home.noRows": "Рядків поки немає",
   "home.justNow": "щойно",
-  "home.heroCopy": "Подивіться, які моделі перемагають у реальному використанні, як змінюється мікс і що це означає для вартості.",
+  "home.heroCopy":
+    "Подивіться, які моделі перемагають у реальному використанні, як змінюється мікс і що це означає для вартості.",
   "home.loadingTitle": "Завантаження даних",
   "home.loadingDescription": "Читаємо агрегати моделей.",
   "home.usageTitle": "Використання",
@@ -135,7 +136,8 @@ export const dict = {
   "lab.notFound": "Жодна модель не відповідала цій лабораторії.",
   "lab.heroPrefix": "Досліджуйте {{count}} моделей {{lab}}, що використовуються в OpenCode",
   "lab.heroIncluding": "зокрема {{models}}",
-  "lab.heroSuffix": "Порівняйте нещодавнє використання токенів, контекстні вікна, дати релізів і дані конкретних моделей.",
+  "lab.heroSuffix":
+    "Порівняйте нещодавнє використання токенів, контекстні вікна, дати релізів і дані конкретних моделей.",
   "lab.tokensProcessed": "Оброблені токени",
   "lab.pending": "Очікується",
   "lab.usageAfterActivity": "Використання з'явиться після активності моделі",
@@ -163,7 +165,8 @@ export const dict = {
   "model.noDataDescription": "Спробуйте відкрити модель із рейтингу.",
   "model.noMatched": "Жодні факти моделі або рядки використання не відповідали {{id}}.",
   "model.fallback": "Модель",
-  "model.catalogFallback": "Факти моделі зі спільного індексу моделей. Використання OpenCode Go з'явиться, коли ця модель матиме активність.",
+  "model.catalogFallback":
+    "Факти моделі зі спільного індексу моделей. Використання OpenCode Go з'явиться, коли ця модель матиме активність.",
   "model.unranked": "Без рейтингу у використанні OpenCode Go за минулий тиждень",
   "model.ranked": "Ранг #{{rank}} у використанні OpenCode Go за минулий тиждень",
   "model.observedVolume": "з {{share}} спостережуваного обсягу 2M.",

+ 54 - 31
packages/stats/app/src/routes/[lab]/[model].tsx

@@ -107,11 +107,10 @@ export default function StatsModel() {
   const modelName = createMemo(() => catalogEntry()?.name ?? stats()?.model ?? modelParam() ?? i18n.t("model.fallback"))
   const labName = createMemo(() => formatCatalogLabName(catalogEntry()?.lab ?? stats()?.provider ?? labParam()))
   const modelTitle = createMemo(() => i18n.t("model.title", { model: modelName() }))
-  const modelDescription = createMemo(
-    () => i18n.t("model.description", { model: modelName() }),
-  )
+  const modelDescription = createMemo(() => i18n.t("model.description", { model: modelName() }))
   const modelPath = createMemo(
-    () => `/data/${catalogEntry()?.id ?? [labParam(), stats()?.slug ?? modelParam()].filter((part) => part.length > 0).join("/")}`,
+    () =>
+      `/data/${catalogEntry()?.id ?? [labParam(), stats()?.slug ?? modelParam()].filter((part) => part.length > 0).join("/")}`,
   )
   const modelUrl = createMemo(() => localizedUrl(language.locale(), modelPath()))
   const statsUnfurlUrl = new URL(statsUnfurlPath, localizedUrl("en", "/data/")).toString()
@@ -261,17 +260,10 @@ function ModelHero(props: { data: StatsModelData | null; catalog: ModelCatalogEn
             <span data-slot="model-id-tag">{modelId()}</span>
           </div>
           <h1>{props.catalog?.name ?? props.data?.model ?? i18n.t("model.fallback")}</h1>
-          <Show
-            when={props.data}
-            fallback={
-              <p>{i18n.t("model.catalogFallback")}</p>
-            }
-          >
+          <Show when={props.data} fallback={<p>{i18n.t("model.catalogFallback")}</p>}>
             {(data) => (
               <p>
-                {data().rank === null
-                  ? i18n.t("model.unranked")
-                  : i18n.t("model.ranked", { rank: data().rank ?? "" })}{" "}
+                {data().rank === null ? i18n.t("model.unranked") : i18n.t("model.ranked", { rank: data().rank ?? "" })}{" "}
                 {i18n.t("model.observedVolume", { share: formatPercent(data().tokenShare) })}
               </p>
             )}
@@ -322,8 +314,14 @@ function ModelCatalogPanel(props: { data: ModelCatalogEntry }) {
   return (
     <aside data-component="model-catalog" aria-label={i18n.t("model.facts")}>
       <div data-slot="model-catalog-grid">
-        <CatalogDatum label={i18n.t("model.context")} value={formatCatalogLimit(props.data.limit?.context, i18n.t("home.unknown"))} />
-        <CatalogDatum label={i18n.t("model.output")} value={formatCatalogLimit(props.data.limit?.output, i18n.t("home.unknown"))} />
+        <CatalogDatum
+          label={i18n.t("model.context")}
+          value={formatCatalogLimit(props.data.limit?.context, i18n.t("home.unknown"))}
+        />
+        <CatalogDatum
+          label={i18n.t("model.output")}
+          value={formatCatalogLimit(props.data.limit?.output, i18n.t("home.unknown"))}
+        />
         <CatalogDatum
           label={i18n.t("model.knowledge")}
           value={formatCatalogDate(props.data.knowledge, language.tag(language.locale()), i18n.t("home.unknown"))}
@@ -332,7 +330,10 @@ function ModelCatalogPanel(props: { data: ModelCatalogEntry }) {
           label={i18n.t("model.release")}
           value={formatCatalogDate(props.data.releaseDate, language.tag(language.locale()), i18n.t("home.unknown"))}
         />
-        <CatalogDatum label={i18n.t("model.inputs")} value={formatCatalogModalities(props.data.modalities.input, i18n)} />
+        <CatalogDatum
+          label={i18n.t("model.inputs")}
+          value={formatCatalogModalities(props.data.modalities.input, i18n)}
+        />
       </div>
     </aside>
   )
@@ -360,9 +361,21 @@ function ModelOverview(props: { data: StatsModelData | null }) {
       >
         {(data) => (
           <div data-component="model-metric-grid">
-            <MetricCard label={i18n.t("model.tokens")} value={formatTokens(data().totals.tokens)} detail={i18n.t("model.lastTwoMonths")} />
-            <MetricCard label={i18n.t("model.uniqueUsers")} value={formatUsers(data().totals.uniqueUsers)} detail={i18n.t("model.lastTwoMonths")} />
-            <MetricCard label={i18n.t("model.sessions")} value={formatInteger(data().totals.sessions)} detail={i18n.t("model.completedSessions")} />
+            <MetricCard
+              label={i18n.t("model.tokens")}
+              value={formatTokens(data().totals.tokens)}
+              detail={i18n.t("model.lastTwoMonths")}
+            />
+            <MetricCard
+              label={i18n.t("model.uniqueUsers")}
+              value={formatUsers(data().totals.uniqueUsers)}
+              detail={i18n.t("model.lastTwoMonths")}
+            />
+            <MetricCard
+              label={i18n.t("model.sessions")}
+              value={formatInteger(data().totals.sessions)}
+              detail={i18n.t("model.completedSessions")}
+            />
             <MetricCard
               label={i18n.t("model.tokenShare")}
               value={formatPercent(data().tokenShare)}
@@ -388,7 +401,9 @@ function ModelUsageSection(props: { data: ModelUsagePoint[] }) {
       <SectionTitle title={i18n.t("nav.usage")} description={i18n.t("model.usageDescription")} />
       <Show
         when={props.data.some((item) => item.tokens > 0)}
-        fallback={<ModelEmptyState title={i18n.t("model.noUsageTitle")} description={i18n.t("model.noUsageDescription")} />}
+        fallback={
+          <ModelEmptyState title={i18n.t("model.noUsageTitle")} description={i18n.t("model.noUsageDescription")} />
+        }
       >
         <ModelColumnChart data={props.data} metric="tokens" ariaLabel={i18n.t("model.dailyTokenChart")} />
       </Show>
@@ -400,10 +415,7 @@ function ModelUsersSection(props: { data: ModelUsagePoint[] }) {
   const i18n = useI18n()
   return (
     <section id="users" data-section="model-panel">
-      <SectionTitle
-        title={i18n.t("model.uniqueUsers")}
-        description={i18n.t("model.usersDescription")}
-      />
+      <SectionTitle title={i18n.t("model.uniqueUsers")} description={i18n.t("model.usersDescription")} />
       <Show
         when={props.data.some((item) => item.users > 0)}
         fallback={
@@ -541,12 +553,19 @@ function ModelEfficiencySection(props: { data: StatsModelData | null; catalog: M
       <Show
         when={props.data}
         fallback={
-          <ModelEmptyState title={i18n.t("model.noEfficiencyTitle")} description={i18n.t("model.noEfficiencyDescription")} />
+          <ModelEmptyState
+            title={i18n.t("model.noEfficiencyTitle")}
+            description={i18n.t("model.noEfficiencyDescription")}
+          />
         }
       >
         {(data) => (
           <div data-component="model-metric-grid" data-variant="dense">
-            <MetricCard label={i18n.t("model.cost")} value={formatMoney(data().totals.cost)} detail={i18n.t("model.totalSpend")} />
+            <MetricCard
+              label={i18n.t("model.cost")}
+              value={formatMoney(data().totals.cost)}
+              detail={i18n.t("model.totalSpend")}
+            />
             <MetricCard
               label={i18n.t("model.costPerMillion")}
               value={
@@ -564,7 +583,11 @@ function ModelEfficiencySection(props: { data: StatsModelData | null; catalog: M
               value={formatTokens(data().totals.tokensPerSession)}
               detail={i18n.t("model.average")}
             />
-            <MetricCard label={i18n.t("model.cacheRatio")} value={formatPercent(data().totals.cacheRatio)} detail={i18n.t("model.inputTokens")} />
+            <MetricCard
+              label={i18n.t("model.cacheRatio")}
+              value={formatPercent(data().totals.cacheRatio)}
+              detail={i18n.t("model.inputTokens")}
+            />
           </div>
         )}
       </Show>
@@ -602,9 +625,7 @@ function ModelGeoBreakdownSection(props: { data: Record<UsageRange, CountryEntry
       <SectionTitle title={i18n.t("nav.geoBreakdown")} description={i18n.t("model.geoDescription")} />
       <Show
         when={data().length > 0}
-        fallback={
-          <ModelEmptyState title={i18n.t("model.noGeoTitle")} description={i18n.t("model.noGeoDescription")} />
-        }
+        fallback={<ModelEmptyState title={i18n.t("model.noGeoTitle")} description={i18n.t("model.noGeoDescription")} />}
       >
         <div data-component="geo-breakdown">
           <div data-slot="geo-map-panel">
@@ -769,7 +790,9 @@ function ModelPeersSection(props: { data: StatsModelData | null }) {
       <SectionTitle title={i18n.t("nav.peers")} description={i18n.t("model.peersDescription")} />
       <Show
         when={props.data?.peers.length}
-        fallback={<ModelEmptyState title={i18n.t("model.noPeersTitle")} description={i18n.t("model.noPeersDescription")} />}
+        fallback={
+          <ModelEmptyState title={i18n.t("model.noPeersTitle")} description={i18n.t("model.noPeersDescription")} />
+        }
       >
         <ol data-component="model-peer-list">
           <For each={props.data?.peers ?? []}>

+ 5 - 10
packages/stats/app/src/routes/[lab]/index.tsx

@@ -62,9 +62,7 @@ export default function StatsLab() {
   const [themePreference, setThemePreference] = createSignal<ThemePreference>("system")
   const labName = createMemo(() => lab()?.name ?? formatCatalogLabName(labParam()))
   const labTitle = createMemo(() => i18n.t("lab.title", { lab: labName() }))
-  const labDescription = createMemo(
-    () => i18n.t("lab.description", { lab: labName() }),
-  )
+  const labDescription = createMemo(() => i18n.t("lab.description", { lab: labName() }))
   const labPath = createMemo(() => `/data/${lab()?.id ?? labParam()}`)
   const labUrl = createMemo(() => localizedUrl(language.locale(), labPath()))
   const statsUnfurlUrl = new URL(statsUnfurlPath, localizedUrl("en", "/data/")).toString()
@@ -212,7 +210,9 @@ function LabHero(props: { lab: ModelCatalogLab; stats: StatsLabData | null }) {
             {props.stats
               ? i18n.t("lab.shareOfUsage", { share: formatPercent(props.stats.tokenShare) })
               : latest()
-                ? i18n.t("lab.latestRelease", { date: formatCatalogDate(latest(), language.tag(language.locale()), i18n.t("home.unknown")) })
+                ? i18n.t("lab.latestRelease", {
+                    date: formatCatalogDate(latest(), language.tag(language.locale()), i18n.t("home.unknown")),
+                  })
                 : i18n.t("lab.usageAfterActivity")}
           </p>
         </div>
@@ -240,12 +240,7 @@ function LabUsageSection(props: { lab: ModelCatalogLab; data: StatsLabData | nul
       </p>
       <Show
         when={usage().some((item) => item.tokens > 0)}
-        fallback={
-          <LabEmptyState
-            title={i18n.t("lab.noUsageTitle")}
-            description={i18n.t("lab.noUsageDescription")}
-          />
-        }
+        fallback={<LabEmptyState title={i18n.t("lab.noUsageTitle")} description={i18n.t("lab.noUsageDescription")} />}
       >
         <div
           data-component="model-usage-chart"

+ 15 - 13
packages/stats/app/src/routes/index.tsx

@@ -216,8 +216,7 @@ function Hero(props: { updatedAt: string | null }) {
     if (
       formatUpdatedAtLabel(
         formatUpdatedAtParts(props.updatedAt, nextTimeZone, language.tag(language.locale()), i18n.t("home.justNow")),
-      ) ===
-      formatUpdatedAtLabel(updatedAtParts("UTC"))
+      ) === formatUpdatedAtLabel(updatedAtParts("UTC"))
     )
       return
     const timeouts: number[] = []
@@ -993,7 +992,9 @@ function LeaderboardCard(props: {
       data-component="leader-card"
       data-size={props.size}
       data-active={props.active ? "true" : undefined}
-      href={language.route(`${import.meta.env.BASE_URL}${modelSlug(props.entry.provider)}/${modelSlug(props.entry.model)}`)}
+      href={language.route(
+        `${import.meta.env.BASE_URL}${modelSlug(props.entry.provider)}/${modelSlug(props.entry.model)}`,
+      )}
       role="listitem"
       tabIndex={0}
       aria-label={`${String(props.entry.rank).padStart(2, "0")} ${props.entry.model} ${i18n.t("chart.byAuthor", { author: props.entry.author })}`}
@@ -1110,7 +1111,9 @@ function MarketShareSection(props: { data: StatsHomeData["market"] }) {
         <p>
           <span>[*]</span>
           <strong>
-            {inspecting() ? formatMarketDate(activeDay(), i18n.t("home.noData")) : formatMarketRange(data(), i18n.t("home.noData"))}
+            {inspecting()
+              ? formatMarketDate(activeDay(), i18n.t("home.noData"))
+              : formatMarketRange(data(), i18n.t("home.noData"))}
           </strong>
         </p>
         <div hidden>
@@ -1311,7 +1314,9 @@ function GeoBreakdownSection(props: { data: StatsHomeData["country"] }) {
               {(country) => (
                 <div data-slot="geo-active-country">
                   <span>#{String(country().rank).padStart(2, "0")}</span>
-                  <strong>{formatCountryName(country().country, language.tag(language.locale()), i18n.t("home.unknown"))}</strong>
+                  <strong>
+                    {formatCountryName(country().country, language.tag(language.locale()), i18n.t("home.unknown"))}
+                  </strong>
                   <p>
                     <b>{formatGeoTokens(country().tokens)}</b>
                     <em>{formatGeoShare(country().share)}</em>
@@ -1444,7 +1449,9 @@ function GeoCountryList(props: {
             >
               <span>{String(country.rank).padStart(2, "0")}</span>
               <i />
-              <strong>{formatCountryName(country.country, language.tag(language.locale()), i18n.t("home.unknown"))}</strong>
+              <strong>
+                {formatCountryName(country.country, language.tag(language.locale()), i18n.t("home.unknown"))}
+              </strong>
               <em>{formatGeoTokens(country.tokens)}</em>
               <b>{formatGeoShare(country.share)}</b>
             </button>
@@ -1661,9 +1668,7 @@ function CacheRatioSection(props: { data: StatsHomeData["cacheRatio"] }) {
       <SectionTitle title={i18n.t("home.cacheRatioTitle")} description={i18n.t("home.cacheRatioDescription")} />
       <Show
         when={visible().length > 0}
-        fallback={
-          <EmptyState title={i18n.t("home.noCacheTitle")} description={i18n.t("home.noCacheDescription")} />
-        }
+        fallback={<EmptyState title={i18n.t("home.noCacheTitle")} description={i18n.t("home.noCacheDescription")} />}
       >
         <CacheRatioChart data={visible()} activeIndex={selectedIndex()} onActiveIndexChange={setActiveIndex} />
       </Show>
@@ -1790,10 +1795,7 @@ function SessionCostSection(props: { data: StatsHomeData["sessionCost"] }) {
       <Show
         when={visible().length > 0}
         fallback={
-          <EmptyState
-            title={i18n.t("home.noSessionCostTitle")}
-            description={i18n.t("home.noSessionCostDescription")}
-          />
+          <EmptyState title={i18n.t("home.noSessionCostTitle")} description={i18n.t("home.noSessionCostDescription")} />
         }
       >
         <SessionCostChart data={visible()} activeIndex={selectedIndex()} onActiveIndexChange={setActiveIndex} />

+ 23 - 7
packages/stats/app/src/routes/stats-shell.tsx

@@ -102,7 +102,11 @@ export function Header(props: { githubStars: string; links?: readonly HeaderLink
   return (
     <header data-component="top" data-menu-open={menuOpen() ? "true" : undefined}>
       <div data-slot="header-bar">
-        <a data-slot="brand" href={localHref(props.brandHref ?? import.meta.env.BASE_URL)} aria-label={i18n.t("header.brandLabel")}>
+        <a
+          data-slot="brand"
+          href={localHref(props.brandHref ?? import.meta.env.BASE_URL)}
+          aria-label={i18n.t("header.brandLabel")}
+        >
           <DataWordmark />
         </a>
         <nav data-component="section-nav" aria-label={i18n.t("header.sectionNavLabel")}>
@@ -147,7 +151,12 @@ export function Header(props: { githubStars: string; links?: readonly HeaderLink
           </button>
         </div>
       </div>
-      <nav id="stats-mobile-nav" data-slot="mobile-menu" aria-label={i18n.t("header.sectionNavLabel")} hidden={!menuOpen()}>
+      <nav
+        id="stats-mobile-nav"
+        data-slot="mobile-menu"
+        aria-label={i18n.t("header.sectionNavLabel")}
+        hidden={!menuOpen()}
+      >
         <a
           data-slot="mobile-menu-item"
           data-variant="github"
@@ -303,9 +312,7 @@ function FooterLanguageSwitcher() {
           if (href !== current) window.location.assign(href)
         }}
       >
-        <For each={language.locales}>
-          {(locale) => <option value={locale}>{language.label(locale)}</option>}
-        </For>
+        <For each={language.locales}>{(locale) => <option value={locale}>{language.label(locale)}</option>}</For>
       </select>
     </label>
   )
@@ -422,7 +429,12 @@ function SubscribeModal(props: { onClose: () => void }) {
       <div data-slot="modal-panel">
         <div data-slot="modal-brand">
           <img data-slot="modal-logo" src={opencodeWordmarkDark} alt="OpenCode" />
-          <button data-slot="modal-close" type="button" aria-label={i18n.t("modal.closeNewsletter")} onClick={props.onClose}>
+          <button
+            data-slot="modal-close"
+            type="button"
+            aria-label={i18n.t("modal.closeNewsletter")}
+            onClick={props.onClose}
+          >
             <svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true">
               <path d="M4.44 4.44L11.56 11.56M11.56 4.44L4.44 11.56" stroke="currentColor" />
             </svg>
@@ -499,7 +511,11 @@ function FooterColumn(props: {
       <nav aria-label={props.title}>
         <For each={props.links}>
           {(link) => (
-            <a href={props.localHref(link.href)} target={link.href.startsWith("http") ? "_blank" : undefined} rel="noreferrer">
+            <a
+              href={props.localHref(link.href)}
+              target={link.href.startsWith("http") ? "_blank" : undefined}
+              rel="noreferrer"
+            >
               {link.label}
             </a>
           )}