mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-02-04 21:23:07 +00:00
Merge pull request #686 from Monoquark/fix/resolve-claude-required-model-settings
fix: Remove mandatory Claude check for Project Settings -> Models
This commit is contained in:
@@ -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,
|
||||||
@@ -350,8 +376,11 @@ function PhaseGroup({
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Renders the per-project model overrides UI for all phase models.
|
||||||
|
*/
|
||||||
export function ProjectModelsSection({ project }: ProjectModelsSectionProps) {
|
export function ProjectModelsSection({ project }: ProjectModelsSectionProps) {
|
||||||
const { clearAllProjectPhaseModelOverrides, disabledProviders, claudeCompatibleProviders } =
|
const { clearAllProjectPhaseModelOverrides, claudeCompatibleProviders } =
|
||||||
useAppStore();
|
useAppStore();
|
||||||
const [showBulkReplace, setShowBulkReplace] = useState(false);
|
const [showBulkReplace, setShowBulkReplace] = useState(false);
|
||||||
|
|
||||||
@@ -360,25 +389,13 @@ export function ProjectModelsSection({ project }: ProjectModelsSectionProps) {
|
|||||||
const hasDefaultFeatureModelOverride = !!project.defaultFeatureModel;
|
const hasDefaultFeatureModelOverride = !!project.defaultFeatureModel;
|
||||||
const overrideCount = phaseOverrideCount + (hasDefaultFeatureModelOverride ? 1 : 0);
|
const overrideCount = phaseOverrideCount + (hasDefaultFeatureModelOverride ? 1 : 0);
|
||||||
|
|
||||||
// Check if Claude is available
|
|
||||||
const isClaudeDisabled = disabledProviders.includes('claude');
|
|
||||||
|
|
||||||
// Check if there are any enabled ClaudeCompatibleProviders
|
// Check if there are any enabled ClaudeCompatibleProviders
|
||||||
const hasEnabledProviders =
|
const hasEnabledProviders =
|
||||||
claudeCompatibleProviders && claudeCompatibleProviders.some((p) => p.enabled !== false);
|
claudeCompatibleProviders && claudeCompatibleProviders.some((p) => p.enabled !== false);
|
||||||
|
|
||||||
if (isClaudeDisabled) {
|
/**
|
||||||
return (
|
* Clears all project-level phase model overrides for this project.
|
||||||
<div className="text-center py-12 text-muted-foreground">
|
*/
|
||||||
<Workflow className="w-12 h-12 mx-auto mb-3 opacity-50" />
|
|
||||||
<p className="text-sm">Claude not configured</p>
|
|
||||||
<p className="text-xs mt-1">
|
|
||||||
Enable Claude in global settings to configure per-project model overrides.
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
const handleClearAll = () => {
|
const handleClearAll = () => {
|
||||||
clearAllProjectPhaseModelOverrides(project.id);
|
clearAllProjectPhaseModelOverrides(project.id);
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user