[Bug]: Mobile model picker: Opus 5.5 under a second Claude instance runs on the default Claude instance

未关闭
#36,126 6 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看

维护者通常 1 天内回复

还没有人认领这个 Issue。

评估

难度
4/5
预计耗时
3-5 天
新手友好度
30/100
Issue 类型
缺陷
描述清晰度
基本清楚
活跃度
活跃
技术栈
typescript
领域
backend, mobile

调研方向

Start in the mobile thread settings sheet, ThreadSettingsSheet.tsx, and follow option.selection into selectThreadModel and draftModelPickMatchesThread, checking whether instanceId survives the pick. Then trace the draft send path and the server-side cross-instance resolution. Done means a mobile pick of Claude Pulse Opus 5.5 runs the turn on the Claude Pulse instance. Open PR #25587 may touch the same path, so check it first.

由索引模型根据 Issue 内容生成。

描述

Before submitting
  • I searched existing issues and did not find a duplicate.
  • I included enough detail to reproduce or investigate the problem.
Area

apps/mobile

Steps to reproduce
  1. On a server with two Claude Code provider instances, the default claudeAgent ("Claude") and a second one with its own CLAUDE_CONFIG_DIR ("Claude Pulse"), both offering Claude Opus 5.5.
  2. Open an existing thread in the mobile app (iPad, split view). The thread was on Codex GPT-6.1 Terra.
  3. Open Thread settings, scroll to the Claude Pulse group and pick Claude Opus 5.5, then confirm with the check button.
  4. Send a message.
Expected behavior

The thread runs on Claude Pulse · Opus 5.5, as the same pick does on web and desktop.

Actual behavior

The thread switches to Claude Opus 5.5 on the default Claude instance instead. The model is right, the provider instance is wrong. In our case the default Claude account had already hit its usage limit, so the turn failed with "Claude API rate limit reached. Try again later." even though Claude Pulse was the account picked. It only happens on mobile; the same pick from web/desktop lands on Claude Pulse.

The picker in the screenshot lists both groups separately, each with its own "Claude Opus 5.5 · Default" row (Claude Pulse's Opus and Fable are starred favorites).

Reading main (7903b48), the sheet itself looks instance-aware: ThreadSettingsSheet.tsx passes option.selection (with instanceId) to selectThreadModel, which keeps a cross-instance pick as a draft until the next message, and draftModelPickMatchesThread compares instanceId. So the instance is probably lost after the pick: when the draft pick is sent with the message, or when the server resolves a cross-instance switch to a model of the same driver.

Impact

Blocks work: with two Claude accounts, mobile cannot move a thread onto the second account, which is the reason to have it.

Version or commit

Server 0.1.3 (macOS); current iOS/iPadOS T3 Code app (November 2026)

Environment

iPad mobile app connected to a macOS desktop server. Providers: Codex, Claude (claudeAgent), Claude Pulse (second Claude Code instance).

Workaround

Pick the Claude Pulse model from web or desktop.

Related
  • #28872: mobile had no way to switch to another Claude login (closed; that setup had only one Claude instance).
  • #25587: mobile model pick applies to the message it was sent with (open PR, may touch the same path).
主要语言
TypeScript
星标
24.8k
派生
6.4k
平均合并
59 分钟
30 天内合并 PR
418

环境准备

在 Codespaces 中打开

在浏览器里用你自己的 GitHub 账号启动这个项目的开发容器。

从这里开始

  1. 先读完整个 Issue,再读项目的贡献指南。
  2. 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
  3. Fork 仓库,在一个分支上完成修改。
  4. 提交 Pull Request,并在描述里引用这个 Issue 编号。

pingdotgg/t3code 的其他 Issue

查看 pingdotgg/t3code 的全部 Issue

相似的 Issue

更多 TypeScript Issue

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。