remove trash
This commit is contained in:
@@ -1,61 +0,0 @@
|
|||||||
[sisyphus-bot]
|
|
||||||
|
|
||||||
## Confirmed Bug
|
|
||||||
|
|
||||||
We have identified the root cause of this issue. The bug is in the config writing logic during installation.
|
|
||||||
|
|
||||||
### Root Cause
|
|
||||||
|
|
||||||
**File:** `src/cli/config-manager/write-omo-config.ts` (line 46)
|
|
||||||
|
|
||||||
```typescript
|
|
||||||
const merged = deepMergeRecord(existing, newConfig)
|
|
||||||
```
|
|
||||||
|
|
||||||
When a user runs `oh-my-opencode install` (even just to update settings), the installer:
|
|
||||||
1. Reads the existing config (with user's custom model settings)
|
|
||||||
2. Generates a **new** config based on detected provider availability
|
|
||||||
3. Calls `deepMergeRecord(existing, newConfig)`
|
|
||||||
4. Writes the result back
|
|
||||||
|
|
||||||
**The problem:** `deepMergeRecord` overwrites values in `existing` with values from `newConfig`. This means your custom `"model": "openai/gpt-5.2-codex"` gets overwritten by the generated default model (e.g., `anthropic/claude-opus-4-6` if Claude is available).
|
|
||||||
|
|
||||||
### Why This Happens
|
|
||||||
|
|
||||||
Looking at `deepMergeRecord` (line 24-25):
|
|
||||||
```typescript
|
|
||||||
} else if (sourceValue !== undefined) {
|
|
||||||
result[key] = sourceValue as TTarget[keyof TTarget]
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
Any defined value in the source (generated config) overwrites the target (user's config).
|
|
||||||
|
|
||||||
### Fix Approach
|
|
||||||
|
|
||||||
The merge direction should be reversed to respect user overrides:
|
|
||||||
```typescript
|
|
||||||
const merged = deepMergeRecord(newConfig, existing)
|
|
||||||
```
|
|
||||||
|
|
||||||
This ensures:
|
|
||||||
- User's explicit settings take precedence
|
|
||||||
- Only new/undefined keys get populated from generated defaults
|
|
||||||
- Custom model choices are preserved
|
|
||||||
|
|
||||||
### SEVERITY: HIGH
|
|
||||||
|
|
||||||
- **Impact:** User configuration is overwritten without consent
|
|
||||||
- **Affected Files:**
|
|
||||||
- `src/cli/config-manager/write-omo-config.ts`
|
|
||||||
- `src/cli/config-manager/deep-merge-record.ts`
|
|
||||||
- **Trigger:** Running `oh-my-opencode install` (even for unrelated updates)
|
|
||||||
|
|
||||||
### Workaround (Until Fix)
|
|
||||||
|
|
||||||
Backup your config before running install:
|
|
||||||
```bash
|
|
||||||
cp ~/.config/opencode/oh-my-opencode.jsonc ~/.config/opencode/oh-my-opencode.jsonc.backup
|
|
||||||
```
|
|
||||||
|
|
||||||
We're working on a fix that will preserve your explicit model configurations.
|
|
||||||
Reference in New Issue
Block a user