Skip to content
Merged
Show file tree
Hide file tree
Changes from 10 commits
Commits
Show all changes
20 commits
Select commit Hold shift + click to select a range
1cc3fcf
feat(opencode): add inherited default transport
777genius Aug 20, 2026
ad83581
feat(opencode): add inherited default model UX
777genius Aug 20, 2026
22137ac
feat(team): clarify inherited OpenCode model selection
777genius Aug 20, 2026
49bf488
fix(opencode): harden inherited default workflow
777genius Aug 20, 2026
224a4d7
fix(i18n): localize inherited default workflow
777genius Aug 20, 2026
812be26
docs(opencode): make inheritance plan portable
777genius Aug 20, 2026
d1c48df
refactor(opencode): keep default guard within size cap
777genius Aug 20, 2026
0323b61
fix(opencode): satisfy typed capability lint
777genius Aug 20, 2026
677eb52
fix(opencode): close inherited default review gaps
777genius Aug 20, 2026
491f201
fix(opencode): harden inherited default edge cases
777genius Aug 20, 2026
cd24d2d
fix(opencode): restore legacy project context UX
777genius Aug 20, 2026
b7b4bbf
fix(opencode): close final default safety gaps
777genius Aug 20, 2026
b5841e1
fix(opencode): enforce context-safe defaults
777genius Aug 20, 2026
5563bdf
fix(opencode): await project context discovery
777genius Aug 21, 2026
e8b5c65
fix(opencode): show context hydration state
777genius Aug 21, 2026
c6f37d9
fix(opencode): defer tabs until context loads
777genius Aug 21, 2026
8d22ced
fix(opencode): preserve project access evidence
777genius Aug 21, 2026
e74199d
chore(tests): keep default regression focused
777genius Aug 21, 2026
4407637
fix(opencode): retain requested view through hydration
777genius Aug 21, 2026
0696266
docs(opencode): align neutral context lifecycle
777genius Aug 21, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
509 changes: 509 additions & 0 deletions docs/research/opencode-default-model-inheritance-plan.md

Large diffs are not rendered by default.

8 changes: 4 additions & 4 deletions scripts/ci/source-file-size-baseline.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,13 @@
"src/features/organizations/core/domain/organizationGraph.ts": 963,
"src/features/organizations/renderer/adapters/organizationGraphAdapter.ts": 1664,
"src/features/organizations/renderer/ui/OrganizationEditorPanel.tsx": 942,
"src/features/runtime-provider-management/main/infrastructure/AgentTeamsRuntimeProviderManagementCliClient.ts": 2691,
"src/features/runtime-provider-management/main/infrastructure/AgentTeamsRuntimeProviderManagementCliClient.ts": 2689,
"src/features/runtime-provider-management/main/infrastructure/cli-companion/RuntimeProviderCliCompanionService.ts": 838,
"src/features/runtime-provider-management/main/infrastructure/OpenCodeLocalProviderConnector.ts": 1018,
"src/features/runtime-provider-management/renderer/hooks/useRuntimeProviderManagement.ts": 2118,
"src/features/runtime-provider-management/renderer/hooks/useRuntimeProviderManagement.ts": 2101,
"src/features/runtime-provider-management/renderer/RuntimeLocalProviderSetupDialog.tsx": 1676,
"src/features/runtime-provider-management/renderer/RuntimeProviderQuickConnect.tsx": 826,
"src/features/runtime-provider-management/renderer/ui/RuntimeProviderManagementPanelView.tsx": 3309,
"src/features/runtime-provider-management/renderer/ui/RuntimeProviderManagementPanelView.tsx": 2945,
"src/features/terminal-workspace/renderer/ui/TerminalWorkspacePanel.tsx": 4513,
"src/features/token-usage/core/domain/snapshotProjection.ts": 937,
"src/features/token-usage/renderer/view-models/tokenUsageViewModel.ts": 1481,
Expand Down Expand Up @@ -121,7 +121,7 @@
"src/renderer/components/team/dialogs/providerPrepareDiagnostics.ts": 1640,
"src/renderer/components/team/dialogs/ProvisioningProviderStatusList.tsx": 1206,
"src/renderer/components/team/dialogs/TaskDetailDialog.tsx": 1717,
"src/renderer/components/team/dialogs/TeamModelSelector.tsx": 3881,
"src/renderer/components/team/dialogs/TeamModelSelector.tsx": 3864,
"src/renderer/components/team/editor/EditorFileTree.tsx": 907,
"src/renderer/components/team/editor/ProjectEditorOverlay.tsx": 929,
"src/renderer/components/team/kanban/KanbanBoard.tsx": 919,
Expand Down
17 changes: 15 additions & 2 deletions src/features/localization/renderer/locales/ar/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
"test": "الاختبار"
},
"defaults": {
"allProjects": "جميع المشاريع",
"allProjects": "النموذج الافتراضي",
"allProjectsHint": "استخدام الاختبارات {{project}}- ينطبق التقصير ما لم يكن المشروع متجاوزا.",
"loadingContexts": "...سياقات التحمل",
"projectHint": "إنقاذ التجاوزات فقط {{project}}.",
Expand All @@ -43,7 +43,20 @@
"setProjectDefault": "مخطط المشروع",
"thisProject": "هذا المشروع",
"title": "التخلف عن سداد الالتزامات المفتوحة",
"validationContext": "سياق التقييم"
"validationContext": "سياق التقييم",
"inheritanceDescription": "تستخدم المشاريع هذا النموذج ما لم تختر نموذجًا آخر.",
"freeRouterAdvisory": "يختار نموذجًا مجانيًا متاحًا لكل طلب. قد يتغير النموذج الأساسي.",
"change": "تغيير",
"useAnotherModel": "استخدام نموذج آخر",
"inherits": "يستخدم النموذج الافتراضي",
"override": "تجاوز خاص بالمشروع",
"useDefault": "استخدام النموذج الافتراضي",
"choosingAllProjects": "اختر نموذجًا للمشاريع التي ليس لديها تجاوز.",
"choosingProject": "اختر نموذجًا لـ {{project}} فقط.",
"cancelChoosing": "إلغاء",
"testAndUse": "اختبار واستخدام",
"testAndUseAllProjects": "اختبار واستخدام لجميع المشاريع",
"testAndUseProject": "اختبار واستخدام لهذا المشروع"
},
"diagnostics": {
"copied": "أجهزة التشخيص",
Expand Down
4 changes: 3 additions & 1 deletion src/features/localization/renderer/locales/ar/team.json
Original file line number Diff line number Diff line change
Expand Up @@ -899,7 +899,9 @@
"runtime": "ويستخدم التخلف عن الدفع في الوقت المناسب للمزود المختار."
},
"multimodelOff": "مضاعف",
"unavailableInRuntime": "غير متاح في الوقت الحالي"
"unavailableInRuntime": "غير متاح في الوقت الحالي",
"defaultWithResolved": "الافتراضي - {{model}}",
"explicitChoice": "اختيار صريح - {{model}}"
},
"taskDetail": {
"actions": {
Expand Down
17 changes: 15 additions & 2 deletions src/features/localization/renderer/locales/bn/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
"test": "পরীক্ষা"
},
"defaults": {
"allProjects": "সব প্রকল্প",
"allProjects": "ডিফল্ট মডেল",
"allProjectsHint": "পরীক্ষা {{project}}কোনো প্রজেক্ট উপস্থিত না থাকলে ডিফল্ট মান প্রয়োগ করা হবে ।",
"loadingContexts": "কনটেক্সট লোড করা হচ্ছে...",
"projectHint": "শুধুমাত্র সংরক্ষণ করা শূণ্যস্থান {{project}}.",
Expand All @@ -43,7 +43,20 @@
"setProjectDefault": "প্রজেক্ট ডিফল্ট মান নির্ধারণ করুন",
"thisProject": "এই প্রজেক্ট",
"title": "ডিফল্ট অঙ্ক",
"validationContext": "বৈধতা যাচাই"
"validationContext": "বৈধতা যাচাই",
"inheritanceDescription": "প্রকল্পগুলি অন্য কোনো মডেল না বেছে নিলে এই মডেলটি ব্যবহার করে।",
"freeRouterAdvisory": "প্রতিটি অনুরোধের জন্য একটি উপলভ্য বিনামূল্যের মডেল বেছে নেয়। অন্তর্নিহিত মডেলটি পরিবর্তিত হতে পারে।",
"change": "পরিবর্তন করুন",
"useAnotherModel": "অন্য মডেল ব্যবহার করুন",
"inherits": "ডিফল্ট ব্যবহার করে",
"override": "প্রকল্পের ওভাররাইড",
"useDefault": "ডিফল্ট ব্যবহার করুন",
"choosingAllProjects": "ওভাররাইড নেই এমন প্রকল্পগুলির জন্য একটি মডেল বেছে নিন।",
"choosingProject": "শুধু {{project}}-এর জন্য একটি মডেল বেছে নিন।",
"cancelChoosing": "বাতিল করুন",
"testAndUse": "পরীক্ষা করে ব্যবহার করুন",
"testAndUseAllProjects": "সব প্রকল্পের জন্য পরীক্ষা করে ব্যবহার করুন",
"testAndUseProject": "এই প্রকল্পের জন্য পরীক্ষা করে ব্যবহার করুন"
},
"diagnostics": {
"copied": "ডায়াগনস্টিক কপি করেছেন",
Expand Down
4 changes: 3 additions & 1 deletion src/features/localization/renderer/locales/bn/team.json
Original file line number Diff line number Diff line change
Expand Up @@ -899,7 +899,9 @@
"runtime": "নির্বাচিত উপলব্ধকারীর ডিফল্ট পদ্ধতি ব্যবহার করতে ব্যবহৃত হয় ।"
},
"multimodelOff": "মাল্টি মডেল বন্ধ করুন",
"unavailableInRuntime": "বর্তমানে চলমান নয়"
"unavailableInRuntime": "বর্তমানে চলমান নয়",
"defaultWithResolved": "ডিফল্ট - {{model}}",
"explicitChoice": "স্পষ্ট পছন্দ - {{model}}"
},
"taskDetail": {
"actions": {
Expand Down
17 changes: 15 additions & 2 deletions src/features/localization/renderer/locales/de/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
"test": "Prüfung"
},
"defaults": {
"allProjects": "Alle Projekte",
"allProjects": "Standardmodell",
"allProjectsHint": "Anwendung von Tests {{project}}. Default gilt, es sei denn, ein Projekt hat einen Override.",
"loadingContexts": "Kontexte laden...",
"projectHint": "Saving Overrides nur {{project}}.",
Expand All @@ -43,7 +43,20 @@
"setProjectDefault": "Voreinstellung des Projekts",
"thisProject": "Dieses Projekt",
"title": "OpenCode-Standards",
"validationContext": "Validierungskontext"
"validationContext": "Validierungskontext",
"inheritanceDescription": "Projekte verwenden dieses Modell, sofern sie kein anderes auswählen.",
"freeRouterAdvisory": "Wählt für jede Anfrage ein verfügbares kostenloses Modell aus. Das zugrunde liegende Modell kann sich ändern.",
"change": "Ändern",
"useAnotherModel": "Anderes Modell verwenden",
"inherits": "Verwendet den Standard",
"override": "Projektüberschreibung",
"useDefault": "Standard verwenden",
"choosingAllProjects": "Wählen Sie ein Modell für Projekte ohne Überschreibung.",
"choosingProject": "Wählen Sie ein Modell nur für {{project}}.",
"cancelChoosing": "Abbrechen",
"testAndUse": "Testen und verwenden",
"testAndUseAllProjects": "Für alle Projekte testen und verwenden",
"testAndUseProject": "Für dieses Projekt testen und verwenden"
},
"diagnostics": {
"copied": "Diagnostik kopiert",
Expand Down
4 changes: 3 additions & 1 deletion src/features/localization/renderer/locales/de/team.json
Original file line number Diff line number Diff line change
Expand Up @@ -899,7 +899,9 @@
"runtime": "Benutzt die Laufzeiteinstellung für den ausgewählten Anbieter."
},
"multimodelOff": "Multimodel ab",
"unavailableInRuntime": "Nicht verfügbar in der aktuellen Laufzeit"
"unavailableInRuntime": "Nicht verfügbar in der aktuellen Laufzeit",
"defaultWithResolved": "Standard - {{model}}",
"explicitChoice": "Explizite Auswahl - {{model}}"
},
"taskDetail": {
"actions": {
Expand Down
17 changes: 15 additions & 2 deletions src/features/localization/renderer/locales/en/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
"test": "Test"
},
"defaults": {
"allProjects": "All projects",
"allProjects": "Default model",
"allProjectsHint": "Tests use {{project}}. Default applies unless a project has an override.",
"loadingContexts": "Loading contexts...",
"projectHint": "Saving overrides only {{project}}.",
Expand All @@ -43,7 +43,20 @@
"setProjectDefault": "Set project default",
"thisProject": "This project",
"title": "OpenCode defaults",
"validationContext": "Validation context"
"validationContext": "Validation context",
"inheritanceDescription": "Projects use this model unless they choose another.",
"freeRouterAdvisory": "Chooses an available free model for each request. The underlying model may change.",
"change": "Change",
"useAnotherModel": "Use another model",
"inherits": "Uses default",
"override": "Project override",
"useDefault": "Use default",
"choosingAllProjects": "Choose a model for projects without an override.",
"choosingProject": "Choose a model only for {{project}}.",
"cancelChoosing": "Cancel",
"testAndUse": "Test and use",
"testAndUseAllProjects": "Test and use for all projects",
"testAndUseProject": "Test and use for this project"
},
"diagnostics": {
"copied": "Diagnostics copied",
Expand Down
4 changes: 3 additions & 1 deletion src/features/localization/renderer/locales/en/team.json
Original file line number Diff line number Diff line change
Expand Up @@ -934,7 +934,9 @@
"runtime": "Uses the runtime default for the selected provider."
},
"multimodelOff": "Multimodel off",
"unavailableInRuntime": "Unavailable in current runtime"
"unavailableInRuntime": "Unavailable in current runtime",
"defaultWithResolved": "Default - {{model}}",
"explicitChoice": "Explicit choice - {{model}}"
},
"taskDetail": {
"actions": {
Expand Down
17 changes: 15 additions & 2 deletions src/features/localization/renderer/locales/es/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
"test": "Prueba"
},
"defaults": {
"allProjects": "Todos los proyectos",
"allProjects": "Modelo predeterminado",
"allProjectsHint": "Las pruebas usan {{project}}. El incumplimiento se aplica a menos que un proyecto tenga una anulación.",
"loadingContexts": "Cargando contextos...",
"projectHint": "Salvar anula sólo {{project}}.",
Expand All @@ -43,7 +43,20 @@
"setProjectDefault": "Establecer predeterminado del proyecto",
"thisProject": "Este proyecto",
"title": "Por defecto OpenCode",
"validationContext": "Contexto de validación"
"validationContext": "Contexto de validación",
"inheritanceDescription": "Los proyectos usan este modelo a menos que elijan otro.",
"freeRouterAdvisory": "Elige un modelo gratuito disponible para cada solicitud. El modelo subyacente puede cambiar.",
"change": "Cambiar",
"useAnotherModel": "Usar otro modelo",
"inherits": "Usa el predeterminado",
"override": "Anulación del proyecto",
"useDefault": "Usar el predeterminado",
"choosingAllProjects": "Elige un modelo para los proyectos sin una anulación.",
"choosingProject": "Elige un modelo solo para {{project}}.",
"cancelChoosing": "Cancelar",
"testAndUse": "Probar y usar",
"testAndUseAllProjects": "Probar y usar para todos los proyectos",
"testAndUseProject": "Probar y usar para este proyecto"
},
"diagnostics": {
"copied": "Diagnósticos copiados",
Expand Down
4 changes: 3 additions & 1 deletion src/features/localization/renderer/locales/es/team.json
Original file line number Diff line number Diff line change
Expand Up @@ -899,7 +899,9 @@
"runtime": "Utiliza el predeterminado de tiempo de ejecución para el proveedor seleccionado."
},
"multimodelOff": "Multimodel off",
"unavailableInRuntime": "No disponible en tiempo de ejecución actual"
"unavailableInRuntime": "No disponible en tiempo de ejecución actual",
"defaultWithResolved": "Predeterminado - {{model}}",
"explicitChoice": "Elección explícita - {{model}}"
},
"taskDetail": {
"actions": {
Expand Down
17 changes: 15 additions & 2 deletions src/features/localization/renderer/locales/fa/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
"test": "تست"
},
"defaults": {
"allProjects": "همه پروژه‌ها",
"allProjects": "مدل پیش‌فرض",
"allProjectsHint": "تست‌ها از {{project}} استفاده می‌کنند. پیش‌فرض اعمال می‌شود مگر آنکه پروژه‌ای بازنویسی داشته باشد.",
"loadingContexts": "در حال بارگذاری بافت‌ها...",
"projectHint": "ذخیره فقط {{project}} را بازنویسی می‌کند.",
Expand All @@ -43,7 +43,20 @@
"setProjectDefault": "تنظیم پیش‌فرض پروژه",
"thisProject": "این پروژه",
"title": "پیش‌فرض‌های OpenCode",
"validationContext": "بافت اعتبارسنجی"
"validationContext": "بافت اعتبارسنجی",
"inheritanceDescription": "پروژه‌ها از این مدل استفاده می‌کنند، مگر اینکه مدل دیگری را انتخاب کنند.",
"freeRouterAdvisory": "برای هر درخواست یک مدل رایگانِ در دسترس انتخاب می‌کند. مدل زیربنایی ممکن است تغییر کند.",
"change": "تغییر",
"useAnotherModel": "استفاده از مدل دیگر",
"inherits": "از مدل پیش‌فرض استفاده می‌کند",
"override": "بازنویسی پروژه",
"useDefault": "استفاده از مدل پیش‌فرض",
"choosingAllProjects": "برای پروژه‌های بدون بازنویسی یک مدل انتخاب کنید.",
"choosingProject": "فقط برای {{project}} یک مدل انتخاب کنید.",
"cancelChoosing": "لغو",
"testAndUse": "آزمایش و استفاده",
"testAndUseAllProjects": "آزمایش و استفاده برای همه پروژه‌ها",
"testAndUseProject": "آزمایش و استفاده برای این پروژه"
},
"diagnostics": {
"copied": "عیب‌یابی کپی شد",
Expand Down
4 changes: 3 additions & 1 deletion src/features/localization/renderer/locales/fa/team.json
Original file line number Diff line number Diff line change
Expand Up @@ -899,7 +899,9 @@
"runtime": "از پیش‌فرض زمان اجرا برای ارائه‌دهنده انتخاب‌شده استفاده می‌کند."
},
"multimodelOff": "چندمدلی خاموش",
"unavailableInRuntime": "در زمان اجرای فعلی در دسترس نیست"
"unavailableInRuntime": "در زمان اجرای فعلی در دسترس نیست",
"defaultWithResolved": "پیش‌فرض - {{model}}",
"explicitChoice": "انتخاب صریح - {{model}}"
},
"taskDetail": {
"actions": {
Expand Down
17 changes: 15 additions & 2 deletions src/features/localization/renderer/locales/fil/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
"test": "Subukan"
},
"defaults": {
"allProjects": "Lahat ng proyekto",
"allProjects": "Default na modelo",
"allProjectsHint": "Gumagamit ang mga test ng {{project}}. Nalalapat ang default maliban kung may override ang isang proyekto.",
"loadingContexts": "Niloload ang mga context...",
"projectHint": "Ino-override lang ng pag-save ang {{project}}.",
Expand All @@ -43,7 +43,20 @@
"setProjectDefault": "Itakda ang default ng proyekto",
"thisProject": "Proyektong ito",
"title": "Mga OpenCode default",
"validationContext": "Validation context"
"validationContext": "Validation context",
"inheritanceDescription": "Ginagamit ng mga proyekto ang modelong ito maliban kung pumili sila ng iba.",
"freeRouterAdvisory": "Pumipili ng available na libreng modelo para sa bawat request. Maaaring magbago ang aktuwal na modelo.",
"change": "Baguhin",
"useAnotherModel": "Gumamit ng ibang modelo",
"inherits": "Gumagamit ng default",
"override": "Override ng proyekto",
"useDefault": "Gamitin ang default",
"choosingAllProjects": "Pumili ng modelo para sa mga proyektong walang override.",
"choosingProject": "Pumili ng modelo para lamang sa {{project}}.",
"cancelChoosing": "Kanselahin",
"testAndUse": "Subukan at gamitin",
"testAndUseAllProjects": "Subukan at gamitin para sa lahat ng proyekto",
"testAndUseProject": "Subukan at gamitin para sa proyektong ito"
},
"diagnostics": {
"copied": "Nakopya ang diagnostics",
Expand Down
4 changes: 3 additions & 1 deletion src/features/localization/renderer/locales/fil/team.json
Original file line number Diff line number Diff line change
Expand Up @@ -899,7 +899,9 @@
"runtime": "Ginagamit ang runtime default para sa napiling provider."
},
"multimodelOff": "Naka-off ang Multimodel",
"unavailableInRuntime": "Hindi available sa kasalukuyang runtime"
"unavailableInRuntime": "Hindi available sa kasalukuyang runtime",
"defaultWithResolved": "Nakatakda - {{model}}",
"explicitChoice": "Tahasang pinili - {{model}}"
},
"taskDetail": {
"actions": {
Expand Down
17 changes: 15 additions & 2 deletions src/features/localization/renderer/locales/fr/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@
"test": "Essai"
},
"defaults": {
"allProjects": "Tous les projets",
"allProjects": "Modèle par défaut",
"allProjectsHint": "Utilisation des essais {{project}}. La valeur par défaut s'applique à moins qu'un projet ait une priorité.",
"loadingContexts": "Chargement des contextes...",
"projectHint": "Sauvegarder les dépassements seulement {{project}}.",
Expand All @@ -43,7 +43,20 @@
"setProjectDefault": "Définir la valeur par défaut du projet",
"thisProject": "Ce projet",
"title": "Par défaut OpenCode",
"validationContext": "Contexte de validation"
"validationContext": "Contexte de validation",
"inheritanceDescription": "Les projets utilisent ce modèle sauf s’ils en choisissent un autre.",
"freeRouterAdvisory": "Choisit un modèle gratuit disponible pour chaque requête. Le modèle sous-jacent peut changer.",
"change": "Modifier",
"useAnotherModel": "Utiliser un autre modèle",
"inherits": "Utilise le modèle par défaut",
"override": "Remplacement du projet",
"useDefault": "Utiliser le modèle par défaut",
"choosingAllProjects": "Choisissez un modèle pour les projets sans remplacement.",
"choosingProject": "Choisissez un modèle uniquement pour {{project}}.",
"cancelChoosing": "Annuler",
"testAndUse": "Tester et utiliser",
"testAndUseAllProjects": "Tester et utiliser pour tous les projets",
"testAndUseProject": "Tester et utiliser pour ce projet"
},
"diagnostics": {
"copied": "Diagnostic copié",
Expand Down
Loading
Loading