mirror of
https://github.com/Kilo-Org/kilocode.git
synced 2026-08-29 03:44:06 +08:00
fix: clarify free model training disclosure
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
---
|
||||
"@kilocode/cli": patch
|
||||
"@kilocode/kilo-jetbrains": patch
|
||||
"kilo-code": patch
|
||||
"@kilocode/kilo-ui": patch
|
||||
---
|
||||
|
||||
Use a brain circuit icon for free-model data collection disclosures.
|
||||
Clarify when free-model data may be used for training and identify it with a brain circuit icon.
|
||||
|
||||
@@ -145,7 +145,7 @@ model.picker.no.matches=No matching models
|
||||
model.picker.favorite.add=Add to favorites
|
||||
model.picker.favorite.remove=Remove from favorites
|
||||
model.picker.free=Free
|
||||
model.picker.dataCollected=Data collected
|
||||
model.picker.dataCollected=Data may be used for training
|
||||
model.picker.reset=Reset model to default
|
||||
reasoning.picker.tooltip=Select reasoning effort
|
||||
|
||||
|
||||
+3
-3
@@ -158,9 +158,9 @@ class ModelPickerTest : BasePlatformTestCase() {
|
||||
|
||||
picker.setItems(listOf(item("auto", "Auto Free", "kilo", "Kilo", free = true)))
|
||||
|
||||
assertFalse(picker.text.contains("Data collected"))
|
||||
assertFalse(picker.text.contains("Data may be used for training"))
|
||||
assertSame(ModelPickerIcons.DATA_COLLECTED, picker.icon)
|
||||
assertEquals("Data collected", picker.toolTipText)
|
||||
assertEquals("Data may be used for training", picker.toolTipText)
|
||||
}
|
||||
|
||||
fun `test selected non-kilo free model does not indicate data collection`() {
|
||||
@@ -282,7 +282,7 @@ class ModelPickerTest : BasePlatformTestCase() {
|
||||
assertTrue(renderer.badgeVisible())
|
||||
assertEquals("Free", renderer.badgeText())
|
||||
assertTrue(renderer.warningVisible())
|
||||
assertEquals("Data collected", renderer.warningTooltip())
|
||||
assertEquals("Data may be used for training", renderer.warningTooltip())
|
||||
}
|
||||
|
||||
fun `test renderer hides data collection warning for non-kilo free model`() {
|
||||
|
||||
@@ -98,12 +98,12 @@ describe("sanitizeName", () => {
|
||||
|
||||
describe("freeDataLabel", () => {
|
||||
it("uses the data collection label without repeating free", () => {
|
||||
expect(freeDataLabel("Free", "Data collected")).toBe("Data collected")
|
||||
expect(freeDataLabel("Free", "Data may be used for training")).toBe("Data may be used for training")
|
||||
})
|
||||
})
|
||||
|
||||
describe("isDataCollectedModel", () => {
|
||||
it("only marks free Kilo Gateway models as data collected", () => {
|
||||
it("only marks free Kilo Gateway models with the training disclosure", () => {
|
||||
expect(isDataCollectedModel({ providerID: KILO_GATEWAY_ID, isFree: true })).toBe(true)
|
||||
expect(isDataCollectedModel({ providerID: "openrouter", isFree: true })).toBe(false)
|
||||
expect(isDataCollectedModel({ providerID: KILO_GATEWAY_ID, isFree: false })).toBe(false)
|
||||
|
||||
+1
-1
@@ -174,7 +174,7 @@ export const dict = {
|
||||
"provider.disconnect.toast.disconnected.title": "تم فصل {{provider}}",
|
||||
"provider.disconnect.toast.disconnected.description": "لم تعد نماذج {{provider}} متاحة.",
|
||||
"model.tag.free": "مجاني",
|
||||
"model.tag.dataCollected": "يتم جمع البيانات",
|
||||
"model.tag.dataCollected": "قد تُستخدم البيانات للتدريب",
|
||||
"model.tag.latest": "الأحدث",
|
||||
"model.group.recommended": "موصى به",
|
||||
"model.group.favorites": "المفضلة",
|
||||
|
||||
+1
-1
@@ -175,7 +175,7 @@ export const dict = {
|
||||
"provider.disconnect.toast.disconnected.title": "{{provider}} desconectado",
|
||||
"provider.disconnect.toast.disconnected.description": "Os modelos de {{provider}} não estão mais disponíveis.",
|
||||
"model.tag.free": "Grátis",
|
||||
"model.tag.dataCollected": "Dados coletados",
|
||||
"model.tag.dataCollected": "Os dados podem ser usados para treinamento",
|
||||
"model.tag.latest": "Mais recente",
|
||||
"model.group.recommended": "Recomendado",
|
||||
"model.group.favorites": "Favoritos",
|
||||
|
||||
+1
-1
@@ -176,7 +176,7 @@ export const dict = {
|
||||
"provider.disconnect.toast.disconnected.description": "{{provider}} modeli više nisu dostupni.",
|
||||
|
||||
"model.tag.free": "Besplatno",
|
||||
"model.tag.dataCollected": "Podaci se prikupljaju",
|
||||
"model.tag.dataCollected": "Podaci se mogu koristiti za obuku",
|
||||
"model.tag.latest": "Najnovije",
|
||||
"model.group.recommended": "Preporučeno",
|
||||
"model.group.favorites": "Favoriti",
|
||||
|
||||
+1
-1
@@ -175,7 +175,7 @@ export const dict = {
|
||||
"provider.disconnect.toast.disconnected.title": "{{provider}} frakoblet",
|
||||
"provider.disconnect.toast.disconnected.description": "Modeller fra {{provider}} er ikke længere tilgængelige.",
|
||||
"model.tag.free": "Gratis",
|
||||
"model.tag.dataCollected": "Data indsamles",
|
||||
"model.tag.dataCollected": "Data kan bruges til træning",
|
||||
"model.tag.latest": "Nyeste",
|
||||
"model.group.recommended": "Anbefalet",
|
||||
"model.group.favorites": "Favoritter",
|
||||
|
||||
+1
-1
@@ -179,7 +179,7 @@ export const dict = {
|
||||
"provider.disconnect.toast.disconnected.title": "{{provider}} getrennt",
|
||||
"provider.disconnect.toast.disconnected.description": "Die {{provider}}-Modelle sind nicht mehr verfügbar.",
|
||||
"model.tag.free": "Kostenlos",
|
||||
"model.tag.dataCollected": "Daten erfasst",
|
||||
"model.tag.dataCollected": "Daten können für das Training verwendet werden",
|
||||
"model.tag.latest": "Neueste",
|
||||
"model.group.recommended": "Empfohlen",
|
||||
"model.group.favorites": "Favoriten",
|
||||
|
||||
@@ -176,7 +176,7 @@ export const dict = {
|
||||
"provider.disconnect.toast.disconnected.description": "{{provider}} models are no longer available.",
|
||||
|
||||
"model.tag.free": "Free",
|
||||
"model.tag.dataCollected": "Data collected",
|
||||
"model.tag.dataCollected": "Data may be used for training",
|
||||
"model.tag.latest": "Latest",
|
||||
"model.group.recommended": "Recommended",
|
||||
"model.group.favorites": "Favorites",
|
||||
|
||||
+1
-1
@@ -176,7 +176,7 @@ export const dict = {
|
||||
"provider.disconnect.toast.disconnected.title": "{{provider}} desconectado",
|
||||
"provider.disconnect.toast.disconnected.description": "Los modelos de {{provider}} ya no están disponibles.",
|
||||
"model.tag.free": "Gratis",
|
||||
"model.tag.dataCollected": "Datos recopilados",
|
||||
"model.tag.dataCollected": "Los datos pueden utilizarse para entrenamiento",
|
||||
"model.tag.latest": "Último",
|
||||
"model.group.recommended": "Recomendado",
|
||||
"model.group.favorites": "Favoritos",
|
||||
|
||||
+1
-1
@@ -177,7 +177,7 @@ export const dict = {
|
||||
"provider.disconnect.toast.disconnected.title": "{{provider}} déconnecté",
|
||||
"provider.disconnect.toast.disconnected.description": "Les modèles {{provider}} ne sont plus disponibles.",
|
||||
"model.tag.free": "Gratuit",
|
||||
"model.tag.dataCollected": "Données collectées",
|
||||
"model.tag.dataCollected": "Les données peuvent être utilisées pour l’entraînement",
|
||||
"model.tag.latest": "Dernier",
|
||||
"model.group.recommended": "Recommandé",
|
||||
"model.group.favorites": "Favoris",
|
||||
|
||||
+1
-1
@@ -151,7 +151,7 @@ export const dict = {
|
||||
"provider.disconnect.toast.disconnected.title": "{{provider}} disconnesso",
|
||||
"provider.disconnect.toast.disconnected.description": "I modelli {{provider}} non sono più disponibili.",
|
||||
"model.tag.free": "Gratis",
|
||||
"model.tag.dataCollected": "Dati raccolti",
|
||||
"model.tag.dataCollected": "I dati possono essere utilizzati per l'addestramento",
|
||||
"model.tag.latest": "Più recente",
|
||||
"model.group.recommended": "Consigliati",
|
||||
"model.group.favorites": "Preferiti",
|
||||
|
||||
+1
-1
@@ -174,7 +174,7 @@ export const dict = {
|
||||
"provider.disconnect.toast.disconnected.title": "{{provider}}が切断されました",
|
||||
"provider.disconnect.toast.disconnected.description": "{{provider}}のモデルは利用できなくなりました。",
|
||||
"model.tag.free": "無料",
|
||||
"model.tag.dataCollected": "データ収集あり",
|
||||
"model.tag.dataCollected": "データがトレーニングに使用される場合があります",
|
||||
"model.tag.latest": "最新",
|
||||
"model.group.recommended": "推奨",
|
||||
"model.group.favorites": "お気に入り",
|
||||
|
||||
+1
-1
@@ -178,7 +178,7 @@ export const dict = {
|
||||
"provider.disconnect.toast.disconnected.title": "{{provider}} 연결 해제됨",
|
||||
"provider.disconnect.toast.disconnected.description": "{{provider}} 모델을 더 이상 사용할 수 없습니다.",
|
||||
"model.tag.free": "무료",
|
||||
"model.tag.dataCollected": "데이터 수집됨",
|
||||
"model.tag.dataCollected": "데이터가 학습에 사용될 수 있습니다",
|
||||
"model.tag.latest": "최신",
|
||||
"model.group.recommended": "추천",
|
||||
"model.group.favorites": "즐겨찾기",
|
||||
|
||||
+1
-1
@@ -176,7 +176,7 @@ export const dict = {
|
||||
"provider.disconnect.toast.disconnected.description": "{{provider}} modellen zijn niet langer beschikbaar.",
|
||||
|
||||
"model.tag.free": "Gratis",
|
||||
"model.tag.dataCollected": "Gegevens verzameld",
|
||||
"model.tag.dataCollected": "Gegevens kunnen worden gebruikt voor training",
|
||||
"model.tag.latest": "Nieuwste",
|
||||
"model.group.recommended": "Aanbevolen",
|
||||
"model.group.favorites": "Favorieten",
|
||||
|
||||
+1
-1
@@ -178,7 +178,7 @@ export const dict = {
|
||||
"provider.disconnect.toast.disconnected.title": "{{provider}} frakoblet",
|
||||
"provider.disconnect.toast.disconnected.description": "Modeller fra {{provider}} er ikke lenger tilgjengelige.",
|
||||
"model.tag.free": "Gratis",
|
||||
"model.tag.dataCollected": "Data samles inn",
|
||||
"model.tag.dataCollected": "Data kan brukes til trening",
|
||||
"model.tag.latest": "Nyeste",
|
||||
"model.group.recommended": "Anbefalt",
|
||||
"model.group.favorites": "Favoritter",
|
||||
|
||||
+1
-1
@@ -175,7 +175,7 @@ export const dict = {
|
||||
"provider.disconnect.toast.disconnected.title": "Rozłączono {{provider}}",
|
||||
"provider.disconnect.toast.disconnected.description": "Modele {{provider}} nie są już dostępne.",
|
||||
"model.tag.free": "Darmowy",
|
||||
"model.tag.dataCollected": "Dane zbierane",
|
||||
"model.tag.dataCollected": "Dane mogą być wykorzystywane do trenowania",
|
||||
"model.tag.latest": "Najnowszy",
|
||||
"model.group.recommended": "Zalecane",
|
||||
"model.group.favorites": "Ulubione",
|
||||
|
||||
+1
-1
@@ -175,7 +175,7 @@ export const dict = {
|
||||
"provider.disconnect.toast.disconnected.title": "{{provider}} отключён",
|
||||
"provider.disconnect.toast.disconnected.description": "Модели {{provider}} больше недоступны.",
|
||||
"model.tag.free": "Бесплатно",
|
||||
"model.tag.dataCollected": "Данные собираются",
|
||||
"model.tag.dataCollected": "Данные могут использоваться для обучения",
|
||||
"model.tag.latest": "Последняя",
|
||||
"model.group.recommended": "Рекомендуемые",
|
||||
"model.group.favorites": "Избранное",
|
||||
|
||||
+1
-1
@@ -175,7 +175,7 @@ export const dict = {
|
||||
"provider.disconnect.toast.disconnected.description": "โมเดล {{provider}} ไม่พร้อมใช้งานอีกต่อไป",
|
||||
|
||||
"model.tag.free": "ฟรี",
|
||||
"model.tag.dataCollected": "มีการเก็บข้อมูล",
|
||||
"model.tag.dataCollected": "ข้อมูลอาจถูกนำไปใช้ในการฝึก",
|
||||
"model.tag.latest": "ล่าสุด",
|
||||
"model.group.recommended": "แนะนำ",
|
||||
"model.group.favorites": "รายการโปรด",
|
||||
|
||||
+1
-1
@@ -175,7 +175,7 @@ export const dict = {
|
||||
"provider.disconnect.toast.disconnected.description": "{{provider}} modelleri artık kullanılabilir değil.",
|
||||
|
||||
"model.tag.free": "Ücretsiz",
|
||||
"model.tag.dataCollected": "Veri toplanır",
|
||||
"model.tag.dataCollected": "Veriler eğitim için kullanılabilir",
|
||||
"model.tag.latest": "En yeni",
|
||||
"model.group.recommended": "Önerilen",
|
||||
"model.group.favorites": "Favoriler",
|
||||
|
||||
+1
-1
@@ -176,7 +176,7 @@ export const dict = {
|
||||
"provider.disconnect.toast.disconnected.description": "Моделі {{provider}} більше недоступні.",
|
||||
|
||||
"model.tag.free": "Безкоштовно",
|
||||
"model.tag.dataCollected": "Дані збираються",
|
||||
"model.tag.dataCollected": "Дані можуть використовуватися для навчання",
|
||||
"model.tag.latest": "Остання",
|
||||
"model.group.recommended": "Рекомендовані",
|
||||
"model.group.favorites": "Обране",
|
||||
|
||||
+1
-1
@@ -175,7 +175,7 @@ export const dict = {
|
||||
"provider.disconnect.toast.disconnected.title": "{{provider}} 已断开连接",
|
||||
"provider.disconnect.toast.disconnected.description": "{{provider}} 模型已不再可用。",
|
||||
"model.tag.free": "免费",
|
||||
"model.tag.dataCollected": "已收集数据",
|
||||
"model.tag.dataCollected": "数据可能会用于训练",
|
||||
"model.tag.latest": "最新",
|
||||
"model.group.recommended": "推荐",
|
||||
"model.group.favorites": "收藏夹",
|
||||
|
||||
+1
-1
@@ -175,7 +175,7 @@ export const dict = {
|
||||
"provider.disconnect.toast.disconnected.title": "{{provider}} 已中斷連線",
|
||||
"provider.disconnect.toast.disconnected.description": "{{provider}} 模型已不再可用。",
|
||||
"model.tag.free": "免費",
|
||||
"model.tag.dataCollected": "已收集資料",
|
||||
"model.tag.dataCollected": "資料可能會用於訓練",
|
||||
"model.tag.latest": "最新",
|
||||
"model.group.recommended": "推薦",
|
||||
"model.group.favorites": "我的最愛",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
export const FreeModelDisclosure = {
|
||||
label: "Data collected",
|
||||
panel: "Free - data collected",
|
||||
label: "May train",
|
||||
panel: "Free - may train",
|
||||
collectsData(model: { isFree?: boolean; api?: { npm?: string } }): boolean {
|
||||
return model.isFree === true && model.api?.npm === "@kilocode/kilo-gateway"
|
||||
},
|
||||
|
||||
@@ -2,7 +2,12 @@ import { describe, expect, test } from "bun:test"
|
||||
import { FreeModelDisclosure } from "../../src/kilocode/components/free-model-disclosure"
|
||||
|
||||
describe("FreeModelDisclosure", () => {
|
||||
test("only Kilo Gateway free models collect data", () => {
|
||||
test("uses compact CLI labels", () => {
|
||||
expect(FreeModelDisclosure.label).toBe("May train")
|
||||
expect(FreeModelDisclosure.panel).toBe("Free - may train")
|
||||
})
|
||||
|
||||
test("only Kilo Gateway free models get the training disclosure", () => {
|
||||
expect(
|
||||
FreeModelDisclosure.collectsData({
|
||||
isFree: true,
|
||||
|
||||
Reference in New Issue
Block a user