hermes - ✅(Solved) Fix [TUI] /resume and /model picker overlay invisible due to rendering logic conflict (v0.11.0) [1 pull requests, 1 comments, 2 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
NousResearch/hermes-agent#15094Fetched 2026-04-25 06:24:38
View on GitHub
Comments
1
Participants
2
Timeline
5
Reactions
0
Author
Participants
Timeline (top)
labeled ×3commented ×1cross-referenced ×1

Root Cause

In the TUI React rendering layer (ui-tui/src/app/appLayout.tsx), the rendering logic has a self-contradicting condition:

  1. When /resume executes, it sets picker = true
  2. The isBlocked state becomes true (because picker is a blocking overlay)
  3. The FloatingOverlays component (which contains the picker) is nested inside a region gated by !isBlocked
  4. Result: picker active → isBlocked=true → FloatingOverlays not rendered → picker invisible

Fix Action

Workaround

Use /resume SESSION_ID with an explicit session ID to bypass the picker entirely.

PR fix notes

PR #15140: fix(tui): fix invisible slash-command overlays and FormattedText display serialization

Description (problem / solution / changelog)

Fix two remaining gaps that kept /resume and /model picker overlays invisible in TUI v0.11.0.

What changed and why

  • ui-tui/src/components/appLayout.tsx: pass completions={isBlocked ? [] : composer.completions} to FloatingOverlays. When a blocking overlay (session picker, model picker, pager, skills hub) is open, the normal autocomplete dropdown must not also appear. Previously all completions were passed unconditionally, which could cause the dropdown to overlap the picker.
  • tui_gateway/server.py: in complete.slash, replace c.display or c.text with to_plain_text(c.display) if c.display else c.text. prompt_toolkit Completion.display is a FormattedText object, not a str; the to_plain_text helper was already imported for display_meta but was not applied to display, causing broken rendering in the TUI completion dropdown.
  • tests/test_tui_gateway_server.py: new test test_complete_slash_display_is_plain_string verifies that a FormattedText display value is serialized to a plain str in the RPC response.

How to test

  • Start Hermes TUI and run /resume with no argument — the session picker overlay should appear.
  • Run /model with no argument — the model picker overlay should appear.
  • Type /res in the composer — slash completion dropdown appears; selecting a command should work normally.
  • pytest tests/test_tui_gateway_server.py -q — all 56 tests pass including the new one.

What platforms tested on

  • macOS on darwin-arm64 (local)

Fixes #15094 Fixes #14907

<!-- autocontrib:worker-id=issue-new-3d1034b8 kind=pr-open -->

Changed files

  • tests/test_tui_gateway_server.py (modified, +35/-0)
  • tui_gateway/server.py (modified, +1/-1)
  • ui-tui/src/components/appLayout.tsx (modified, +1/-1)
RAW_BUFFERClick to expand / collapse

Bug Description

In Hermes TUI v0.11.0, the /resume and /model picker overlays are never rendered on screen, despite the underlying logic correctly setting picker: true and the gateway RPC returning valid data.

Root Cause

In the TUI React rendering layer (ui-tui/src/app/appLayout.tsx), the rendering logic has a self-contradicting condition:

  1. When /resume executes, it sets picker = true
  2. The isBlocked state becomes true (because picker is a blocking overlay)
  3. The FloatingOverlays component (which contains the picker) is nested inside a region gated by !isBlocked
  4. Result: picker active → isBlocked=true → FloatingOverlays not rendered → picker invisible

Expected Behavior

/resume should display an interactive session picker overlay with a list of recent sessions.

Actual Behavior

Screen shows nothing after entering /resume. No overlay appears. The command executes but the picker is invisible.

Environment

  • Hermes Agent v0.11.0 (2026.4.23)
  • WSL2 + Windows Terminal
  • TUI mode

Workaround

Use /resume SESSION_ID with an explicit session ID to bypass the picker entirely.

Verification

  • Gateway session.list RPC returns 20 sessions correctly
  • Database contains 401 sessions
  • The bug is in the TUI React rendering layer, not the backend

Suggested Fix

Move FloatingOverlays rendering outside the !isBlocked conditional, or change the picker overlay to not set isBlocked=true.

extent analysis

TL;DR

Move the FloatingOverlays component outside the !isBlocked conditional to ensure the picker overlay is rendered when picker is true.

Guidance

  • Verify that the isBlocked state is being set to true when the picker is active, causing the FloatingOverlays component to be skipped.
  • Check the rendering logic in ui-tui/src/app/appLayout.tsx to confirm the self-contradicting condition.
  • Consider changing the picker overlay to not set isBlocked=true as an alternative solution.
  • Test the workaround by using /resume SESSION_ID with an explicit session ID to bypass the picker.

Example

No code snippet is provided as the issue is well-explained and a specific code change is not implied.

Notes

The suggested fix assumes that moving the FloatingOverlays component or changing the picker overlay's behavior will resolve the issue. However, additional testing and verification may be necessary to ensure the fix does not introduce other problems.

Recommendation

Apply the workaround by using /resume SESSION_ID until the rendering logic can be updated to fix the issue, as this allows users to bypass the picker and still access recent sessions.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING