Skip to content

feat(frontend): adding status indicator and unit test#12111

Merged
amanape merged 14 commits intoOpenHands:mainfrom
HeyItsChloe:APP-232/add-chat-status-indicator
Jan 6, 2026
Merged

feat(frontend): adding status indicator and unit test#12111
amanape merged 14 commits intoOpenHands:mainfrom
HeyItsChloe:APP-232/add-chat-status-indicator

Conversation

@HeyItsChloe
Copy link
Copy Markdown
Contributor

@HeyItsChloe HeyItsChloe commented Dec 19, 2025

Summary of PR

  • add status indicator above chat input box
  • displays conversation status
  • indicator changes color and pulsates as status changes
  • Component only conditionally renders - automatically disappear once the conversation is ready.
Screen.Recording.2025-12-22.at.12.18.45.AM.mov

Change Type

  • Bug fix
  • New feature
  • Breaking change
  • Refactor
  • Other (dependency update, docs, typo fixes, etc.)

Checklist

  • I have read and reviewed the code and I understand what the code is doing.
  • I have tested the code to the best of my ability and ensured it works as expected.

Fixes

Resolves #11946

Release Notes

  • Include this change in the Release Notes.

Adding a status indicator above the chatbox until the conversation is ready.

Comment thread frontend/src/components/features/chat/chat-status-indicator.tsx Outdated
Comment thread frontend/__tests__/components/interactive-chat-box.test.tsx Outdated
Comment thread frontend/src/components/features/chat/interactive-chat-box.tsx Outdated
Comment thread frontend/src/components/features/chat/chat-status-indicator.tsx Outdated
Comment thread frontend/src/components/features/chat/interactive-chat-box.tsx Outdated
Comment thread frontend/__tests__/components/interactive-chat-box.test.tsx Outdated
Comment thread frontend/__tests__/components/interactive-chat-box.test.tsx Outdated
@HeyItsChloe HeyItsChloe marked this pull request as ready for review December 22, 2025 16:54
@HeyItsChloe HeyItsChloe requested a review from hieptl as a code owner December 22, 2025 16:54
Copy link
Copy Markdown
Collaborator

@hieptl hieptl left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hello @HeyItsChloe, I encountered some issues while testing the pull request locally.

issue: The state and component transition occurs too quickly. When the state is "Running", we could consider keeping the component visible for a few seconds before applying a fade-out animation. However, this is just my suggestion; you may consult Paul, as he can provide valuable feedback and recommendations. For further reference, please see the video below.

Screen.Recording.2025-12-23.at.18.27.41.mov

issue: When confirmation mode is enabled, the icon appears above the new component, which may not be visually ideal. You may consult Paul for valuable feedback and recommendations. For further reference, please see the image below.

Image

issue: When the agent is waiting for user confirmation (confirmation mode is enabled), the new component may be displayed unexpectedly. If I understand correctly, the component is intended to appear only when starting or resuming conversations. Please refer to the image below for further details.

Image

Thank you! 🙏

Comment thread frontend/src/components/features/chat/interactive-chat-box.tsx Outdated
Comment thread frontend/src/utils/utils.ts Outdated
Comment thread frontend/src/components/features/chat/chat-status-indicator.tsx
Comment thread frontend/src/utils/utils.ts
@amanape
Copy link
Copy Markdown
Contributor

amanape commented Dec 23, 2025

To respond on some of @hieptl’s feedback:

issue: The state and component transition occurs too quickly. When the state is "Running", we could consider keeping the component visible for a few seconds before applying a fade-out animation. However, this is just my suggestion; you may consult Paul, as he can provide valuable feedback and recommendations. For further reference, please see the video below.

I think it is fine to leave as is for now. Hiding this component when everything is ready can serve as an indicator itself that everything is OK. We just need to make sure this shows up when something errors as expected.

issue: When confirmation mode is enabled, the icon appears above the new component, which may not be visually ideal. You may consult Paul for valuable feedback and recommendations.

Make them next to each other, with the lock icon to the start

issue: When the agent is waiting for user confirmation (confirmation mode is enabled), the new component may be displayed unexpectedly.

This is probably related to the fact that one of the conditionals we use to check for status is set to some
“paused” state while we wait for the users confirmation. This might be a little tricky to get right.

@HeyItsChloe
Copy link
Copy Markdown
Contributor Author

HeyItsChloe commented Dec 23, 2025

Few questions cc: paul

Can you confirm the Status Indicator Behavior:
1. The user confirmation icon should display inline and to the left of the status indicator.
2. The status indicator should be visible only:
• during the initial load of the conversation,
• while the conversation is loading, and
• when an error occurs during a conversation.
3. When the conversation state transitions to “Running”, the status indicator should:
• remain visible for a short delay, and
• then fade out smoothly via an animation.

Open Questions:
1. Can any of the existing status states on the page be combined? Could the status indicator be:
• merged with other status messaging,
• Or rendered within the Changes container instead of as a standalone indicator? The Changes container sometimes shows an explicit status (when an error occurs) and sometimes shows loading,
• Or use the server-status dropdown? The status in the server-status dropdown shows the same status text. Should this dropdown open automatically, instead of showing the status above the chatbox?

Screenshot 2025-12-23 at 8 15 49 AM

@FraterCCCLXIII
Copy link
Copy Markdown

@HeyItsChloe this all sounds correct.

…status text, moved unit tests to chat-interface
@HeyItsChloe
Copy link
Copy Markdown
Contributor Author

Addressed feedback:

  1. indicator renders in line with the user confirmation icon
  2. status text fades in/out when changing text
  3. Indicator only renders during init phases, not during other loading / paused states
  4. when status is "running", the indicator is removed from view.
Screen.Recording.2026-01-05.at.11.01.00.AM.mov

Copy link
Copy Markdown
Contributor

@amanape amanape left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking better! Few additional comments:

Comment thread frontend/__tests__/components/interactive-chat-box.test.tsx Outdated
Comment thread frontend/__tests__/components/interactive-chat-box.test.tsx Outdated
Comment thread frontend/__tests__/components/chat/chat-interface.test.tsx Outdated
Comment thread frontend/__tests__/components/interactive-chat-box.test.tsx Outdated
Comment thread frontend/__tests__/components/interactive-chat-box.test.tsx Outdated
Comment thread frontend/__tests__/components/chat-status-indicator.test.tsx Outdated
Comment thread frontend/__tests__/utils/utils.test.ts Outdated
Comment thread frontend/__tests__/utils/utils.test.ts
Comment thread frontend/src/components/features/chat/chat-status-indicator.tsx Outdated
Comment thread frontend/src/components/features/chat/chat-status-indicator.tsx Outdated
Copy link
Copy Markdown
Contributor

@amanape amanape left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you!

@amanape amanape enabled auto-merge (squash) January 6, 2026 12:36
@amanape amanape merged commit d053a3d into OpenHands:main Jan 6, 2026
23 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[UI] Add a Status Indicator Component Above the Chat Input

4 participants