fix: preserve all configured local models when loading from config (#6180)
Summary
Fixes #6180 - Local ollama models partially missing
When loading models from the config, the code was looking up existing models using the optional model.id field, which could cause models to be inadvertently deduplicated or lost.
Problem
Users configuring multiple local Ollama models with similar names (e.g., devstral-small-2:latest and devstral-small-2:24b-cloud) would find that only some models appeared in the model picker.
Root Cause
In packages/opencode/src/provider/provider.ts line 614, the existing model lookup used:
const existingModel = parsed.models[model.id ?? modelID]
This could cause issues with model merging/deduplication when model.id was undefined.
Solution
Changed the lookup to always use modelID directly:
// Look for existing model only by modelID to ensure we preserve all configured models
const existingModel = parsed.models[modelID]
This ensures each configured model gets its own entry without any unintended merging.
Testing
✅ Added test case verifying multiple Ollama models with similar names are all loaded ✅ All 59 provider tests pass ✅ Verified against live Ollama server with 5 real models - all loaded correctly
Live Integration Test Results:
- nemotron-3-nano:30b ✓
- qwen3:8b ✓
- qwq:latest ✓
- qwen3:32b ✓
- deepseek-r1:32b ✓
All 5 configured models loaded successfully with the fix applied.