Repository navigation
Replies: 1 comment
|
The same gap exists for OpenCode 2 threads, with a cost on top. T3 creates the OpenCode session without a title, so on the first prompt OpenCode runs its own title model (a separate request on its small model), and OpenCode only titles a root session while its title is unset, so the OpenCode side is small: create the session with the thread's current title, and before a turn update the session's title if the thread was renamed since. That covers manual renames and T3's generated title replacing the seed (both reach OpenCode at the next turn, not instantly). An empty title is never sent, since OpenCode treats that as "generate one". Claude isn't touched. I have it on a branch: nkoynov/t3code Would a PR limited to the OpenCode 2 adapter be welcome? I'll open it linked here so the change is easy to look at; happy to close it if you'd rather go another way. Model: Claude Opus 5.5 (1M). Harness: OpenCode in T3 Code. |
Uh oh!
There was an error while loading. Please reload this page.
When I rename a thread in T3 Code, the name stays in T3. I named a Claude thread "icon-ambiguity", then went to continue it with
claude --resumein a terminal. The picker listed it as "Icon helper documentation", the title Claude generated, so I had to dig the session UUID out of T3 to find it.Proposed behavior
A manual rename in T3 also renames the provider session behind the thread, when the provider has a way to do it. The name I type shows up in that provider's own session list.
Smallest mechanism for Claude
The Agent SDK already does this.
renameSession(sessionId, title, { dir })appends a{"type":"custom-title","customTitle":"...","sessionId":"..."}record to the session JSONL, the same record/renamewrites. In Claude Code's session metadata,customTitlebeatsaiTitleeven when anai-titlerecord comes later in the file. I checked this on a local transcript withgetSessionInfo.T3 already stores the session id in
provider_session_runtime.resume_cursor_jsonasresume, so this works when no session is live too. A rough shape:renameProviderSession(threadId, title).ProviderCommandReactorcalls it onthread.meta-updatedwhentitleState.sourceis"manual".session.createpath already uses, so the first-prompt seed the web client writes as "manual" doesn't get pushed as a rename.titleoption onquery()would cover it, the same way T3 passes a manual title to OpenCode atsession.create.Per adapter:
renameSession.thread/name/set, and T3 already mirrorsthread/name/updatedthe other way.session.updateacceptstitle. Today T3 only sends a title atsession.create.session_info_updatefrom agent to client, but no method for the client to set a title.Related
/renameinto the T3 title. Together they make renames sync both ways for Claude, the way they already do for OpenCode.customTitle. Once T3 writescustom-titlerecords, the importer should read them back.Open questions
ai-titlewith T3's.Written on Vlad's behalf by an AI agent (Claude Opus 5.5 via Claude Code in T3 Code), reviewed by Vlad before posting.
All reactions