Skip to content

feat(cli): add configurable status line fields - #17654

Open
majal wants to merge 1 commit into
NousResearch:mainfrom
majal:feat/configurable-cli-status-line-20260429223757
Open

feat(cli): add configurable status line fields#17654
majal wants to merge 1 commit into
NousResearch:mainfrom
majal:feat/configurable-cli-status-line-20260429223757

Conversation

@majal

@majal majal commented Apr 29, 2026

Copy link
Copy Markdown

Summary

  • add optional display.status_line field ordering for the live CLI status bar
  • preserve the existing responsive Hermes status bar when status_line is empty or unset
  • support Codex-style field names such as model-with-reasoning, current-dir, project-root, git-branch, context-usage, five-hour-limit, weekly-limit, fast-mode, used-tokens, and thread-title
  • fetch account-usage/quota data off-thread and cache it so status rendering does not block
  • document the new setting in the configuration guide

Test Plan

  • python -m compileall -q cli.py hermes_cli/config.py
  • python -m pytest tests/cli/test_cli_status_bar.py -q

@alt-glitch alt-glitch added type/feature New feature or request P3 Low — cosmetic, nice to have comp/cli CLI entry point, hermes_cli/, setup wizard area/config Config system, migrations, profiles labels Apr 29, 2026

@teknium1 teknium1 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Thanks for the configurable classic-CLI status-bar work. The feature is still absent on current main (cli.py:5055-5243; hermes_cli/config.py:1837-1854), but the implementation needs two corrections during salvage.

Problems

  • cli.py:2529 falls back to the first account-usage window for five-hour-limit, and cli.py:2550 labels it 5h. Current main creates an OpenRouter window named API key quota in agent/account_usage.py:653-657, so this can mislabel a non-time-based quota.
  • cli.py:1981-1983 caches the reasoning label only at startup. /reasoning changes self.reasoning_config and replaces the agent in hermes_cli/cli_commands_mixin.py:2541-2544, so model-with-reasoning can become stale.

Suggested changes

  • Gate five-hour/weekly rendering on provider/window semantics and cover the OpenRouter case.
  • Source the reasoning label from live state, with an in-session /reasoning regression test.
  • Port the feature onto current status-bar/config locations rather than the April layout.

Automated hermes-sweeper review.

Comment thread cli.py
label = _label(window)
if "session" in label or "five hour" in label or label.startswith("5h") or "primary" in label:
return window
return windows[0]

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Do not fall back to windows[0] here. fetch_account_usage() also returns OpenRouter's API key quota window on current main (agent/account_usage.py:653-657), which this path will label as 5h at line 2550. Only render this field when the provider/window establishes five-hour semantics.

Comment thread cli.py
self.status_line_fields = _normalize_status_line_fields(
CLI_CONFIG["display"].get("status_line", [])
)
self.reasoning_effort_label = str(

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

/reasoning changes self.reasoning_config and resets the agent without updating this cached value (hermes_cli/cli_commands_mixin.py:2541-2544 on current main). Derive the label from live state or update it in the handler so model-with-reasoning does not remain stale.

@teknium1 teknium1 added sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades sweeper:blast-moderate Sweeper blast radius: moderate — a subsystem or single platform labels Jul 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/config Config system, migrations, profiles comp/cli CLI entry point, hermes_cli/, setup wizard P3 Low — cosmetic, nice to have sweeper:blast-moderate Sweeper blast radius: moderate — a subsystem or single platform sweeper:risk-compatibility Sweeper risk: may break existing users, config, migrations, defaults, or upgrades type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants