1jehuang / 1jehuang/jcode

Failed model switch over the socket is silent; 'another server running' omits owning PID/version

Open
#590 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

autonomous: no bug priority: medium triage: needs-decision
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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.