mirror of
https://github.com/AutoMaker-Org/automaker.git
synced 2026-01-31 06:42:03 +00:00
fix: load OpenRouter models on kanban board without visiting settings
Problem: - OpenRouter dynamic models only appeared after visiting settings page - PhaseModelSelector (used in Add/Edit Feature dialogs) only fetched Codex models - dynamicOpencodeModels remained empty until OpencodeSettingsTab mounted Solution: - Add fetchOpencodeModels() action to app-store mirroring fetchCodexModels pattern - Add state tracking: opencodeModelsLoading, opencodeModelsError, timestamps - Call fetchOpencodeModels() in PhaseModelSelector useEffect on mount - Use same caching strategy: 5min success cache, 30sec failure cooldown Files changed: - apps/ui/src/store/app-store.ts - Add OpenCode model loading state properties - Add fetchOpencodeModels action with error handling & caching - apps/ui/src/components/views/settings-view/model-defaults/phase-model-selector.tsx - Add opencodeModelsLoading, fetchOpencodeModels to store hook - Add useEffect to fetch OpenCode models on mount Result: - OpenRouter models now appear in Add/Edit Feature dialogs immediately - No need to visit settings page first - Consistent with Codex model loading behavior
This commit is contained in:
@@ -166,6 +166,8 @@ export function PhaseModelSelector({
|
||||
codexModelsLoading,
|
||||
fetchCodexModels,
|
||||
dynamicOpencodeModels,
|
||||
opencodeModelsLoading,
|
||||
fetchOpencodeModels,
|
||||
} = useAppStore();
|
||||
|
||||
// Detect mobile devices to use inline expansion instead of nested popovers
|
||||
@@ -185,6 +187,15 @@ export function PhaseModelSelector({
|
||||
}
|
||||
}, [codexModels.length, codexModelsLoading, fetchCodexModels]);
|
||||
|
||||
// Fetch OpenCode models on mount
|
||||
useEffect(() => {
|
||||
if (dynamicOpencodeModels.length === 0 && !opencodeModelsLoading) {
|
||||
fetchOpencodeModels().catch(() => {
|
||||
// Silently fail - user will see only static OpenCode models
|
||||
});
|
||||
}
|
||||
}, [dynamicOpencodeModels.length, opencodeModelsLoading, fetchOpencodeModels]);
|
||||
|
||||
// Close expanded group when trigger scrolls out of view
|
||||
useEffect(() => {
|
||||
const triggerElement = expandedTriggerRef.current;
|
||||
|
||||
Reference in New Issue
Block a user