Skip to content

Commit dd5d4b4

Browse files
alari76claude
andauthored
fix: persist OpenCode provider when saving workflow config (#377)
The POST /config/repos endpoint destructured the `provider` field from the request body but never included it in the object passed to addReviewRepo(), silently dropping it. This caused workflows saved with OpenCode provider to lose their provider setting, defaulting back to 'claude' on edit. Also adds provider inference in EditWorkflowModal for legacy configs that have a non-Claude model but no provider field — if the model doesn't start with 'claude-', infer provider as 'opencode'. Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
1 parent 721ad59 commit dd5d4b4

File tree

2 files changed

+6
-1
lines changed

2 files changed

+6
-1
lines changed

server/workflow-routes.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -324,6 +324,7 @@ export function createWorkflowRouter(
324324
kind,
325325
customPrompt,
326326
model,
327+
provider,
327328
})
328329

329330
// Re-sync schedules and commit hooks with updated config

src/components/EditWorkflowModal.tsx

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,18 @@ interface Props {
3333

3434
export function EditWorkflowModal({ token, repo, onClose, onSave }: Props) {
3535
const parsed = parseCron(repo.cronExpression)
36+
// Infer provider from model when provider field is missing (legacy configs)
37+
const inferredProvider: CodingProvider =
38+
repo.provider ?? (repo.model && !repo.model.startsWith('claude-') ? 'opencode' : 'claude')
39+
3640
const [form, setForm] = useState({
3741
kind: repo.kind ?? 'coverage.daily',
3842
cronHour: parsed.hour,
3943
cronMinute: parsed.minute,
4044
cronDow: parsed.dow,
4145
customPrompt: repo.customPrompt ?? '',
4246
model: repo.model ?? '',
43-
provider: (repo.provider ?? 'claude') as CodingProvider,
47+
provider: inferredProvider,
4448
})
4549
const [saving, setSaving] = useState(false)
4650
const [formError, setFormError] = useState<string | null>(null)

0 commit comments

Comments
 (0)