Skip to content

blocker: clarify attached-state input ownership across Gate, tmux, and Hermes #21

Description

@richard950825-sys

Summary

Hermes Gate now defines itself as a temporary local client, not a continuously resident local manager.

Under that model, attached-state behavior must be especially clear: once the local client suspends and attaches into tmux, users need to know which interaction semantics belong to Hermes Gate, which belong to tmux, and which ultimately belong to Hermes.

Right now that boundary is still not clear enough for a stable release.

Current behavior

The current implementation:

  • suspends Textual and performs native tmux attach
  • still applies some Gate-owned attach-time behavior around tmux configuration
  • still presents some product language that reads more like a viewer/control layer than a thin reconnect client

This leaves attached-state control ownership underspecified.

Why this matters

This is a release blocker because unclear control ownership in normal attached use leads directly to user confusion and misoperation.

Examples of the ambiguity users need resolved:

  • what does Ctrl+B mean before attach vs after attach?
  • which keys are truly Gate-owned once attached?
  • are interrupt/escape semantics native attached behavior or Gate features?
  • is attached input mediated by Gate or simply passed through to tmux/Hermes?

A temporary client must be honest about these boundaries. If the attached state is mostly native tmux behavior, the docs and UX must say so plainly.

Evidence

Observed across:

  • hermes_gate/app.py
  • especially _enter_viewer() and attach-time tmux config behavior
  • hermes_gate/session.py:attach_cmd()
  • README feature and control descriptions

Expected behavior

Hermes Gate should clearly describe attached-state interaction ownership.

Users should be able to predict:

  • what the local client owns before attach
  • what happens during native attach
  • which controls remain Gate-defined
  • which controls are just native tmux/Hermes behavior

Suggested direction

A release-safe direction would be to:

  • minimize Gate-specific semantics in attached mode
  • describe attached mode in docs as native tmux attach unless the implementation truly owns more than that
  • align keybinding/help text with the real ownership boundary

Acceptance criteria

  • attached-state docs clearly define which interaction semantics are Gate-owned versus native tmux/Hermes behavior
  • keybinding/help text no longer implies stronger Gate ownership than the implementation provides
  • if attach-time Gate control remains, its boundaries are explicit and testable
  • release docs and UI language describe attached mode consistently

Testing requirements

Automated tests

  • regression tests for any changed attach/help/keybinding behavior
  • doc regression tests for attached-state wording if updated

Manual / integration validation

  • attach to a real remote session and verify the documented input/control model matches reality
  • explicitly validate Ctrl+B and any other advertised attached-state control keys
  • verify user expectations after attach align with what the product claims

Non-goals

  • redesigning the entire attach architecture in this issue unless necessary
  • adding a large new viewer abstraction just to avoid clarifying the current boundary

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions