From c9a28dfb0834fa7ce4b7d5f904a4d735801468e0 Mon Sep 17 00:00:00 2001 From: kshitijk4poor <82637225+kshitijk4poor@users.noreply.github.com> Date: Sun, 31 May 2026 13:40:19 +0530 Subject: [PATCH] feat(model-picker): description on group layer, plain labels on members MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit For grouped provider families, the descriptive text now lives only on the collapsed top-level group row. The member sub-picker rows show just the short provider label (no parenthetical tui_desc), so the description is not duplicated one layer down. Ungrouped providers are unaffected — they have no group layer, so their own row keeps its full tui_desc. - main.py: member sub-picker uses provider_labels (label) instead of canonical_descs (tui_desc). - Telegram already showed labels + model count on member buttons; group buttons keep Label ▸ (count) since inline keyboards can't fit a long blurb. Member labels retain their short disambiguators (e.g. 'MiniMax (OAuth)') so the sub-picker rows stay distinguishable. --- hermes_cli/main.py | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/hermes_cli/main.py b/hermes_cli/main.py index 9198ece31..9b9e18580 100644 --- a/hermes_cli/main.py +++ b/hermes_cli/main.py @@ -2485,13 +2485,14 @@ def select_provider_and_model(args=None): selected_members = ordered[provider_idx][2] # Group row → drill into a member sub-picker. Default to the active member - # if the active provider lives in this group. + # if the active provider lives in this group. The descriptive text lives on + # the group row itself, so member rows show only their short label here. if selected_members: member_default = 0 if active in selected_members: member_default = selected_members.index(active) member_labels = [ - canonical_descs.get(m, provider_labels.get(m, m)) for m in selected_members + provider_labels.get(m, m) for m in selected_members ] member_idx = _prompt_provider_choice(member_labels, default=member_default) if member_idx is None: