fix(tui): respect model-agent selection in the home screen
This PR restores the agent-model tuple switching behavior of pre-v1.0.
Closes https://github.com/sst/opencode/issues/4344
Overlaps with https://github.com/sst/opencode/pull/4514 - please close this one if that one is the desired fix.
@ucirello is this still a wip?
Also if you wanna get it into the correct state ill just close the AI one that was a one shot and a poor one
@rekram1-node - it is good, in the sense that I think it is write. But I didn't want to crowd the AI attempt out. I am going to mark this as ready to review.
@rekram1-node -- I will make one more set of tests, and then I'd ping you, if that's OK.
yeah no problem ping me anytime
@rekram1-node I think it is OK now.
This does introduce a regression, and note that none of my agents have a hardcoded model id.
Now my model selections are persisted but not used
https://github.com/user-attachments/assets/4545ae61-fe8c-4ff8-b58a-722e3d917fed
@rekram1-node -- moving this to WIP, and digging harder for the issue.
@rekram1-node -- I dug further - and I think I validated the behavior thoroughly.
But now if I switch agents and don't have a model set in my config, it resets the model each time.
Also it isn't a huge deal but it wipes your last used model for people so if someone upgraded and opened opencode it wouldnt start up with their actual last used model
@rekram1-node -- thank you for working with me. Let me try it harder - thank you.
OK - as of https://github.com/sst/opencode/pull/4741/commits/c427adaaeaa32ef2648d042ee18393be20a3e581, I think each agent remembers its own model selection independently, so switching between agents no longer causes one agent's model to leak into another. I tested this by assigning different models to Build, Plan, and Docs, then cycling through them repeatedly to confirm no cross-contamination. I also verified that agents with hard-coded models in their config files cannot be overridden through the UI. Then, I sent messages to each agent and confirmed the responses matched the expected model. At last, I check for the persistence across restarts and simulated an upgrade scenario where an existing user with only recent history (no per-agent selections) correctly falls back to their last-used model while hard-coded agents would still take precedence.
@rekram1-node I should be closer - I tried to test more scenarios, and I tried to find some more. If there is a regression, then I guess it wouldn't be an obvious one. We are getting closer - thanks for working with me.
sounds good, want me to take another look?
@rekram1-node -- yes please.
Now if I hardcode a model and switch to the agent with hardcoded model the model doesnt change to the specified one
Now if I hardcode a model and switch to the agent with hardcoded model the model doesnt change to the specified one
~Also it seems I found a bug in current release that models set in opencode.json aren't being used as default either.~
I will try and address these two additional cases.
@rekram1-node
I covered these scenarios:
- no model in opencode.json
- model in opencode.json
- seeing agents-models pairs correctly switching in home screen, and confirming that agents with hard-coded models can't be overriden.
- seeing agents-models pairs correctly switching in chat screen, and confirming that agents with hard-coded models can't be overriden.
- one upgrade path (when only recent model is declared)
- corner-case: hard-coded model in agent file set after model has been chosen for the given agent.
Is there any other scenario that I should cover?
@ucirello so close this is almost perfect. Only thing now is that if I hardcode an agent model, then i have that agent selected, then try to change models. It is impossible to do now
@rekram1-node -- thank you for checking it and for working with me. We'll get there! Ping when I am done with this round of changes.
@rekram1-node - Please take a look at 07c448b08f4d5ed227e73f9df00d39183b2efaae ?
I had a bit of a hard time to think what the appropriate behavior would be to address this:
Only thing now is that if I hardcode an agent model, then i have that agent selected, then try to change models. It is impossible to do now
Yeah this still has bugs:
switch model, tab through agents, 2 agents will have the new model, 3rd one wont. (None of the agents have hardcoded models and "model" isn't set in config).
The agents I am referring to are ones in this repo: build, plan, docs
I plan to get back to this at a later date. I will close this PR and re-open it when I pick this up.