Skip to content

Give the terminal an identity of its own, and clear the dead lint - #60

Open
huyedits wants to merge 1 commit into
mainfrom
ui/hermes-identity-and-lint-fixes
Open

huyedits wants to merge 1 commit into
mainfrom
ui/hermes-identity-and-lint-fixes

Conversation

@huyedits

Copy link
Copy Markdown
Owner

The TUI's own docstring called it "Hermes-shaped" while seven places in the code still wore Claude Code's orange (#d97757) — the exact copy-another-product mistake symbio_desktop/DESIGN.md records for the desktop window, which wore Claude's cream and orange until 2026-09-27.

Both halves are now deliberate. The SHAPE is Hermes Agent's and the terminal says so: MARK is the caduceus, GOLD is #ffd700 (Hermes Agent's own gold, and exactly xterm colour 220, so it renders honestly on a 256-colour terminal as well as a truecolour one). The GROUND stays Symbio's, so the window is not a copy of the thing it is modelled on — pond teal and tabby ink, read off the desktop's own :root tokens.

  • symbio_tui/theme.py — new. The palette in one place, with the reasoning for the split written down next to the values.
  • symbio_tui/app.py, widgets.py, faces.py — all seven #d97757 replaced; the banner now leads with the caduceus; the two "Claude Code" docstrings corrected to say Hermes Agent, which is what the code actually borrows.
  • symbio/app/chat_style.py — _ACCENT moved from xterm 173 to 220 (#ffd700) and the caduceus added to the welcome frame and the name row. ANSI-256, hex and CSS are three representations for three media, so the value is repeated, not the meaning.

Verified by running it: the Textual stylesheet parses under textual 8.2.8 (CSS length 951, four gold occurrences, zero orange), the narrow-width banner ladder returns the face alone below 12 columns, and the CLI welcome panel renders the frame in 38;5;220 with the caduceus inside it.

Separately, the genuine lint findings rather than the cosmetic ones:

  • chat_tools.py — how was assigned "pressed" and "clicked" and never read a single time. Deleted; it was doing nothing.
  • chat.py — except Exception as e: bound a name it never used.
  • chat.py — the stream default was a lambda assigned in the call site; it is now _default_stream_chunk, so a traceback in a stream write has something to point at.
  • Plus 33 F541 (f-strings with no placeholder), the E401 one-line import in ops_eval.py, and two duplicate imports in tests.

NOT touched, deliberately: the 134 F401 "unused imports". Most are load bearing — symbio/init.py's are the public API, and chat.web, chat.sandbox and chat.training are monkeypatch anchors in tests/test_gui_launch.py and tests/test_sandbox_remote.py. Ruff cannot see a reference that only exists in another file's test. Same for the 48 E402: deliberate, post-sys.path and inside a try/except for the optional root tag_rag module.

The TUI's own docstring called it "Hermes-shaped" while seven places in the
code still wore Claude Code's orange (#d97757) — the exact copy-another-product
mistake symbio_desktop/DESIGN.md records for the desktop window, which wore
Claude's cream and orange until 2026-09-27.

Both halves are now deliberate. The SHAPE is Hermes Agent's and the terminal
says so: MARK is the caduceus, GOLD is #ffd700 (Hermes Agent's own gold, and
exactly xterm colour 220, so it renders honestly on a 256-colour terminal as
well as a truecolour one). The GROUND stays Symbio's, so the window is not a
copy of the thing it is modelled on — pond teal and tabby ink, read off the
desktop's own :root tokens.

  * symbio_tui/theme.py — new. The palette in one place, with the reasoning
    for the split written down next to the values.
  * symbio_tui/app.py, widgets.py, faces.py — all seven #d97757 replaced;
    the banner now leads with the caduceus; the two "Claude Code" docstrings
    corrected to say Hermes Agent, which is what the code actually borrows.
  * symbio/app/chat_style.py — _ACCENT moved from xterm 173 to 220 (#ffd700)
    and the caduceus added to the welcome frame and the name row. ANSI-256,
    hex and CSS are three representations for three media, so the value is
    repeated, not the meaning.

Verified by running it: the Textual stylesheet parses under textual 8.2.8
(CSS length 951, four gold occurrences, zero orange), the narrow-width banner
ladder returns the face alone below 12 columns, and the CLI welcome panel
renders the frame in 38;5;220 with the caduceus inside it.

Separately, the genuine lint findings rather than the cosmetic ones:

  * chat_tools.py — `how` was assigned "pressed" and "clicked" and never read
    a single time. Deleted; it was doing nothing.
  * chat.py — `except Exception as e:` bound a name it never used.
  * chat.py — the stream default was a lambda assigned in the call site;
    it is now `_default_stream_chunk`, so a traceback in a stream write has
    something to point at.
  * Plus 33 F541 (f-strings with no placeholder), the E401 one-line import in
    ops_eval.py, and two duplicate imports in tests.

NOT touched, deliberately: the 134 F401 "unused imports". Most are load
bearing — symbio/__init__.py's are the public API, and chat.web, chat.sandbox
and chat.training are monkeypatch anchors in tests/test_gui_launch.py and
tests/test_sandbox_remote.py. Ruff cannot see a reference that only exists in
another file's test. Same for the 48 E402: deliberate, post-sys.path and
inside a try/except for the optional root tag_rag module.
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.

1 participant