OpenHands/agent-canvas

Replace the generic “thinking” dots in the conversation view with a richer live activity indicator

Open

#140 opened on May 7, 2026

View on GitHub
 (1 comment) (0 reactions) (0 assignees)TypeScript (26 forks)github user discovery
good first issue

Repository metrics

Stars
 (43 stars)
PR merge metrics
 (PR metrics pending)

Description

Summary

When the agent is running in a conversation, the UI currently shows a generic dot-based thinking indicator above the composer. This confirms that work is in progress, but it does not tell the user what the agent is actually doing.

We should replace that with a small live activity chip that explains the current in-progress state, such as:

  • Thinking
  • Running git status
  • Reviewing README.md
  • Searching for config files
  • Opening page

Problem

The current dots are too opaque during longer or multi-step tasks.

Users cannot tell whether the agent is:

  • still reasoning
  • waiting on a tool call
  • running a terminal command
  • reading or editing a file
  • searching
  • browsing

That makes the conversation feel less transparent than it could be.

Proposed Behavior

Keep the indicator in the same bottom-center area above the composer, but replace the dots with a lightweight status chip.

Behavior:

  • While the conversation is RUNNING, show a live activity chip.
  • If there is a current unresolved action/tool call, show a short action-specific label.
  • If there is no unresolved visible action yet, fall back to Thinking.
  • As actions resolve, update the chip to the next unresolved action or back to Thinking.

Examples

Examples of labels:

  • Thinking
  • Running npm test
  • Reviewing README.md
  • Searching for Docker config
  • Opening page

Technical Approach

This can be derived from the existing V1 event stream without adding a new backend API.

Suggested approach:

  • Inspect the latest unresolved V1 action event while the conversation is RUNNING
  • Reuse action summaries when available
  • Fall back to action-type-specific labels based on:
    • terminal / execute_bash
    • file_editor
    • grep / glob
    • browser actions
    • MCP actions
  • If nothing actionable is unresolved, show Thinking

Acceptance Criteria

  • The generic running dots are replaced with a live activity chip in conversation view
  • The chip appears in the same general location above the composer
  • The chip shows Thinking when the agent is running but no unresolved visible action is available
  • The chip shows a tool/action-specific label when there is an unresolved action
  • The chip updates as actions resolve during a multi-step task
  • Existing paused / error / startup states continue using current status handling
  • Add tests for label derivation from unresolved events

Validation

Test against real conversation flows that trigger multiple steps, for example:

  • initialize a repo
  • create or inspect files
  • run terminal commands
  • search the codebase

This should confirm that the chip is readable and stable in actual runtime behavior.

https://github.com/user-attachments/assets/f0dfeb67-bba4-4cef-9700-e0ebff09ab99

Contributor guide