Repository navigation
Show the same conversation as the VS Code extension: agents, session list, thinking, commands - #220
Open
LalaLolLucky wants to merge 2 commits into
Open
LalaLolLucky wants to merge 2 commits into
LalaLolLucky wants to merge 2 commits into
Conversation
…list, thinking, commands
A conversation is one set of files that both clients read, so wherever the two draw it
differently one of them is wrong. Fixed on the Eclipse side, checked against the VS Code
extension's own code and against real transcripts.
Agent map
- Token counts were summed over every message, which counts the whole context again on each
call (30M for an agent the CLI reports at 296k). The CLI's figure is the latest message's usage.
A reopened conversation now takes the totals and outcome the transcript records in each
agent's task notice or result (a stale "didn't finish" notice does not undo a finish).
- A reopened conversation lost whether an agent was stopped or failed; it now keeps it.
- Agents started by an agent are listed under it, each with its own log, tokens and clock.
- Durations count whole seconds, tokens read "296.1k tokens", none shows none.
Session list
- Titles follow the extension: rename, AI title, last prompt, summary, first message (skipping
commands, tags, interruptions and meta lines), then Image or Document.
- A conversation's time is its last user or assistant message, never later than the file.
- Left out as the extension leaves them out: sub-agent files, SDK and print-mode runs,
background workers, and conversations continued in another file.
- The CLI's config folder (CLAUDE_CONFIG_DIR) is honoured wherever transcripts are read or written.
History and labels
- A slash command keeps its arguments (/review 123); a command's output shows as a note.
- Tool labels match (Update Todos, Web Fetch, Web Search, Search tools), the Todo list shows
each item's content, and the tool-calls fold counts failures and skips ToolSearch.
- A fork is named for its parent plus " (fork)" and no longer carries the parent's titles.
- A teleport writes the extension's marker too and either client's marker shows one divider.
Thinking
- A reopened conversation says how long the model thought ("Thought for 1s") and draws the
model's narration (a thinking block whose signature says so) as a line with "· summary".
- Live, the page is told when a thinking block starts and when one is narration, so the
rows come out as they do after a reload.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…in the project
Dropping files on the view attaches them as a paste or "Attach file…" does: an image as an image,
a PDF or a text file as a document. A file type that cannot go in inline (an archive, a binary)
is named in a note that points to "Attach file…", which can send its path, and a file over 32MB
or one that cannot be read is refused with a note. A file with no type of its own is typed from
its name. A drag of a tab carries text and is left alone, and a file let go over the view no
longer replaces the whole view by opening it.
A dropped file that is one of the project's is mentioned (`@src/Foo.java`, as picking it from the
`@` list writes it) and not attached, so Claude reads it where it is; the extension does the same
for a file dragged from its explorer. A page is told a dropped file's name, size and time of last
write but not where it lives, so the core looks in the `@` list for a file of that name with that
size, written within two seconds of that time: a same-named file from elsewhere is not taken for the
project's, nor is one of two files that both fit.
The CLI's notes on where it saved the images of a message ("[Image: source: …]", one meta line
with a block for each) showed as a bubble of their own when a conversation was reopened; they are
for the model and are now left out, whether they are a line of their own or sit in a message.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed and why
Both clients read the same files (the CLI's transcripts and settings), so wherever the same conversation is drawn differently one of them is wrong. This brings the Eclipse view in line with the VS Code extension. Each rule was taken from the extension's own code (the list and title functions were also run against real transcripts) and checked against real conversations.
Agent map
Session list
sdk-*), background workers, and conversations continued in another file. Eclipse's own conversations (claude-eclipse-ide) are unaffected.CLAUDE_CONFIG_DIRis honoured wherever transcripts are read or written (list, history, teleport, rewind and fork, the usage-probe cleanup). It was hard-coded to~/.claude, so nothing was listed when it is set.History and labels
/review 123, not/review), and a command's output shows as a note when a conversation is reopened.Thinking
onThinkingBlock, a default method on the callback interface), so the rows come out the same as after a reload, including a "Thought for Ns" row before the narration line.Attachments
@mention (@src/Foo.java, as picking it from the@list writes it) and is not attached, as the extension does for a file dragged from its explorer. A page is told only a dropped file's name, size and last-write time, so the core looks in the@list for a file of that name with that size, written within two seconds: a same-named file from elsewhere is not taken for the project's, and neither is one of two files that both fit.[Image: source: …]) showed as a bubble of their own when a conversation was reopened. They are for the model, and are now left out.Not changed, on purpose
parentUuidfrom the newest leaf).How was this tested?
cargo test: 537 pass. New tests cover the title and time rules, the filters, config folder resolution, task notice parsing (including decoy tags in an agent's own result, a stale stopped notice, and nested agents), argument retention, the teleport markers, narration signatures and thinking durations.RewindServiceTest, run against the real Eclipse jars with the JUnit launcher; the changed classes compile.Checklist
MANIFEST.MF,feature.xml, orsite.xml— the maintainer sets these on release.CHANGELOG.mdentry — the maintainer adds this on release.com.anthropic.claudecode.eclipse.site/.claude-eclipse-core: I rancargo test, and for any platform I can build and run on, rebuilt the native library and exercised it in a running Eclipse instance.The rebuilt macOS library is not part of this PR; the maintainer's build produces it.