docs: Add docstrings for project models selection

This commit is contained in:
Monoquark
2026-01-24 21:52:46 +01:00
parent 43d5ec9aed
commit c401bf4e63

View File

@@ -104,7 +104,10 @@ function FeatureDefaultModelOverrideSection({ project }: { project: Project }) {
const hasOverride = !!projectOverride; const hasOverride = !!projectOverride;
const effectiveValue = projectOverride || globalValue; const effectiveValue = projectOverride || globalValue;
// Get display name for a model /**
* Formats a user-friendly model label using provider metadata when available,
* falling back to known Claude aliases or the raw model id.
*/
const getModelDisplayName = (entry: PhaseModelEntry): string => { const getModelDisplayName = (entry: PhaseModelEntry): string => {
if (entry.providerId) { if (entry.providerId) {
const provider = (claudeCompatibleProviders || []).find((p) => p.id === entry.providerId); const provider = (claudeCompatibleProviders || []).find((p) => p.id === entry.providerId);
@@ -127,10 +130,16 @@ function FeatureDefaultModelOverrideSection({ project }: { project: Project }) {
return modelMap[entry.model] || entry.model; return modelMap[entry.model] || entry.model;
}; };
/**
* Clears the project-level model override for this scope.
*/
const handleClearOverride = () => { const handleClearOverride = () => {
setProjectDefaultFeatureModel(project.id, null); setProjectDefaultFeatureModel(project.id, null);
}; };
/**
* Sets the project-level model override for this scope.
*/
const handleSetOverride = (entry: PhaseModelEntry) => { const handleSetOverride = (entry: PhaseModelEntry) => {
setProjectDefaultFeatureModel(project.id, entry); setProjectDefaultFeatureModel(project.id, entry);
}; };
@@ -209,6 +218,10 @@ function FeatureDefaultModelOverrideSection({ project }: { project: Project }) {
); );
} }
/**
* Renders a single phase override row, showing the effective model
* (project override or global default) and wiring selector/reset actions.
*/
function PhaseOverrideItem({ function PhaseOverrideItem({
phase, phase,
project, project,
@@ -225,7 +238,10 @@ function PhaseOverrideItem({
const hasOverride = !!projectOverride; const hasOverride = !!projectOverride;
const effectiveValue = projectOverride || globalValue; const effectiveValue = projectOverride || globalValue;
// Get display name for a model /**
* Formats a user-friendly model label using provider metadata when available,
* falling back to known Claude aliases or the raw model id.
*/
const getModelDisplayName = (entry: PhaseModelEntry): string => { const getModelDisplayName = (entry: PhaseModelEntry): string => {
if (entry.providerId) { if (entry.providerId) {
const provider = (claudeCompatibleProviders || []).find((p) => p.id === entry.providerId); const provider = (claudeCompatibleProviders || []).find((p) => p.id === entry.providerId);
@@ -248,10 +264,16 @@ function PhaseOverrideItem({
return modelMap[entry.model] || entry.model; return modelMap[entry.model] || entry.model;
}; };
/**
* Clears the project-level model override for this scope.
*/
const handleClearOverride = () => { const handleClearOverride = () => {
setProjectPhaseModelOverride(project.id, phase.key, null); setProjectPhaseModelOverride(project.id, phase.key, null);
}; };
/**
* Sets the project-level model override for this scope.
*/
const handleSetOverride = (entry: PhaseModelEntry) => { const handleSetOverride = (entry: PhaseModelEntry) => {
setProjectPhaseModelOverride(project.id, phase.key, entry); setProjectPhaseModelOverride(project.id, phase.key, entry);
}; };
@@ -315,6 +337,10 @@ function PhaseOverrideItem({
); );
} }
/**
* Renders a titled group of phase override rows and resolves each phase's
* global default model with a fallback to DEFAULT_PHASE_MODELS.
*/
function PhaseGroup({ function PhaseGroup({
title, title,
subtitle, subtitle,
@@ -349,6 +375,7 @@ function PhaseGroup({
</div> </div>
); );
} }
/** /**
* Renders the per-project model overrides UI for all phase models. * Renders the per-project model overrides UI for all phase models.
*/ */
@@ -366,6 +393,9 @@ export function ProjectModelsSection({ project }: ProjectModelsSectionProps) {
const hasEnabledProviders = const hasEnabledProviders =
claudeCompatibleProviders && claudeCompatibleProviders.some((p) => p.enabled !== false); claudeCompatibleProviders && claudeCompatibleProviders.some((p) => p.enabled !== false);
/**
* Clears all project-level phase model overrides for this project.
*/
const handleClearAll = () => { const handleClearAll = () => {
clearAllProjectPhaseModelOverrides(project.id); clearAllProjectPhaseModelOverrides(project.id);
}; };