Failed model switch over the socket is silent; 'another server running' omits owning PID/version
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 19.9k
- Forks
- 2.3k
- Avg merge
- 2d 7h
- Merged PRs (30d)
- 30
Description
Split out of #514 suggestions 2 and 3. Suggestion 1 (loud client/server version mismatch) is implemented, see #514 for detail.
1. A failed model switch through the socket stays silent
If the server declines or ignores a model switch, the client keeps showing the old model with no error. In the original report, -m claude-sonnet-4-6, /model claude-oauth:claude-sonnet-4-6, and the /model picker all failed silently, and provider-doctor still passed every catalog-tier checkpoint including "Model switch route", so nothing surfaced the failure.
Expected: a model switch that does not take effect must produce a visible error naming the requested model and the reason, rather than leaving stale state on screen. Ideally provider-doctor's "Model switch route" check should be able to fail here too, since it currently passes while the switch is broken.
2. "Another jcode server process is already running" should name the owner
Current message identifies only the runtime dir:
Another jcode server process is already running for runtime dir /run/user/1000
Expected: include the owning PID and that process's version, so the user can immediately tell whether it is a stale old-release daemon and can kill the right thing. In the original report the fix was killing an old 0.52.0 server, which the message gave no hint about.
Context
Both remaining items are about making an already-detected bad state legible instead of silent.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Trace the model-switch socket path and provider-doctor's "Model switch route" check first, then inspect the runtime-dir check that reports another server. Done means failed switches visibly name the requested model and reason, and the running-server message identifies its owning PID and version.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- backend, cli
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 52/100