Desktop app: no way to link or jump to another part of the session transcript (reply links, mods `$.ui.scroll`)
Summary
In the Claude Desktop app's Code tab there is no programmable way to jump to an earlier message or chapter of the same session:
- A link in an assistant reply cannot point at a chapter or message of the current transcript.
- A mod's
$.ui.scroll({ to: { requestId } })is refused for every transcript row with{ deny: "transcript not scrollable here" }, although the same call works in the terminal.
The only jump targets are the entries of the chapter list, and they can only be clicked there. Long sessions would be much easier to navigate if a reply could say "as decided in [chapter 3](#…)" and a mod could offer a list of prompts to jump between.
Steps to reproduce
1. Links in a reply
- In a Desktop Code session, have Claude call
mcp__ccd_session__mark_chapter, so a chapter heading is drawn. - Have Claude write a markdown link whose target is that chapter, e.g.
[jump](#epitaxy-ch-<tool_use id>)(the heading's element id), or[top](#epitaxy-ch-session-start). - Scroll so the heading is off screen and click the link: nothing happens.
Links of the form #<session id>, #project-settings, #connectors/... and #<thread>/<message> (channel threads) are recognised and acted on; a chapter or message of the current session is not.
2. Mods
- Load a mod with a pane that lists prompts and, on a Button press, calls
``ts`
const moved = await $.ui.scroll({ to: { requestId: promptMessageId }, block: 'start' })
promptMessageId
where is the id a ui.render hook on UserMessage saw (also the row's uuid` in the transcript file).
- In a terminal session (
claude --plugin-dir ./mod): the transcript scrolls to the prompt. - In the Desktop app (local session on macOS or a remote Linux host), press the same Button:
moved.deny === "transcript not scrollable here".
UserMessage.onScreen is also never reported on the Desktop, so a mod cannot track the viewport position either. A mod's Link keeps only http(s) targets, so it cannot serve as an in-page link.
Observed with Claude Code 2.1.286 (bundled in Claude Desktop 2.19675.0), 2.1.293 and 2.1.294.
Request
- Reply links: treat a link to a chapter or message of the current session (for example
#<message uuid>or#<tool_use id>of a chapter mark) as "scroll the transcript there", the way#<thread>/<message>links already work for channel threads. The app already scrolls to an entry, a tool call or a chapter for its own controls (chapter list, previous/next prompt shortcut, the sticky prompt bubble), so this is exposing an existing capability. - Mods: let
$.ui.scroll({ to: { requestId } })reveal a transcript row in the Desktop app when it answers the person's input, as it does in the terminal. Today the engine-to-app scroll message only covers a mod's ownPaneand theAbovePromptband. - Mods: report
onScreenforUserMessage/AssistantMessagerenders on the Desktop, so a mod can highlight the current position.
Why it matters
Session navigation is a natural fit for both: a reply that refers back to an earlier answer could link to it, and a mod could list prompts to jump between or link a reply that quotes an earlier answer back to the quoted passage. Both work in the terminal today (via mods) and are impossible in the Desktop app, which is where many people use Claude Code.
The current workaround is to have the model mark a chapter per prompt and refer to chapters by name in plain text, which the person then finds in the chapter list.
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗