Skip to content

feat(bot-mode): roster shows paid vs free/local badges (salvage #88086) - #89723

Closed
teknium1 wants to merge 2 commits into
mainfrom
salvage/88086-roster-cost-badges
Closed

feat(bot-mode): roster shows paid vs free/local badges (salvage #88086)#89723
teknium1 wants to merge 2 commits into
mainfrom
salvage/88086-roster-cost-badges

Conversation

@teknium1

Copy link
Copy Markdown
Contributor

Summary

The Bot Mode roster now shows at a glance which bots run on paid LLMs ($ badge) and which are free or locally hosted (🆓), with a "Locally hosted" declaration in the edit-profile advanced pane.

Salvage of #88086 by @LarryAGuy (the original Hermes-Bot-Mode plugin author; port of his upstream #109), cherry-picked with authorship preserved, plus three review-mandated trims in a follow-up commit.

Changes

  • Cherry-pick (LarryAGuy): fail-closed cost classifier (unknown → paid; free only on :free suffix, local-provider allowlist, or catalog pricing[model].free === true), roster badges, "Locally hosted" checkbox persisted via bot meta, inherit-row classification vs the launch profile's default model
  • Trims (ours):
    • dropped the dead delegation_model/delegation_provider branch (field exists nowhere on main)
    • deleted the 40-entry REGION_CURRENCY map — badge is a plain $ (provider pricing is USD)
    • paid badge color #10b981 → #f59e0b so green stays the free signal
  • contributors/emails/hedrick.larry@gmail.com: attribution mapping

Validation

Result
cost-badge + profile-prewarm 16/16
Plugin suite 299/299 pass

Infographic

infographic

LarryAGuy and others added 2 commits August 18, 2026 21:14
…l + locally-hosted flag)

Port of LarryAGuy/Hermes-Bot-Mode#109 to the in-tree Bot Mode plugin.

Every roster row now shows the user's locale-aware currency symbol
(e.g. $ / £ / €, resolved from the app/OS locale) next to bots whose
LLM costs money, and 🆓 next to bots provably running a free model.
One glance tells you what each teammate is burning.

- Free requires positive evidence — a :free model suffix (OpenRouter/
  Nous convention), a local serving provider (lmstudio, ollama,
  llama.cpp, ...), or $0 catalog pricing from model.options.
  Anything unprovable counts as paid (fail-closed: the roster never
  hides a cost).
- Locally hosted flag — a per-bot checkbox in the edit-profile
  advanced pane ('runs on my own hardware') persisted via bot meta
  (local storage + server ui_meta), overriding every other signal.
- Badge color is inline-styled emerald (#10b981): the plugin class
  pipeline does not generate arbitrary text-[#hex] utilities.
- Bots without their own model classify against the launch profile's
  default model so inherit rows still show the true cost state.
- Delegation model is included: a bot whose own model is free but
  whose subagent model is paid still counts as paid.

Tests: cost-badge.test.mjs (classifier units, locale currency,
locally-hosted override, saveBotMeta persistence, source regressions).
155/155 plugin tests pass.
- Drop the dead delegation_model/delegation_provider branch in
  botCostState — no such field exists anywhere on main, so the
  branch could never fire.
- Replace the REGION_CURRENCY locale map + navigator.language lookup
  with a plain '$' — provider pricing is USD regardless of the user's
  locale.
- Switch the paid badge from emerald (#10b981) to neutral amber
  (#f59e0b) so green stays reserved as the 'free' signal; 🆓 keeps
  marking free/local rows.
- Tests updated to match (currency-map cases dropped, classifier
  cases kept); contributor email mapped for attribution CI.
@github-actions

github-actions Bot commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

૮ >ﻌ< ა ci review

ran on b297c1a — refactor(desktop): review trims for roster cost badges (#880

⚠️ Warnings

CI timings · View report · View job

Wall time 6m20s vs 4m8s (+53.2%). 22 job(s) slower, 12 faster, 4 unchanged.

  • JS & TS checks / apps/desktop / check:test:ui:shard-3of3: +24.0s
  • Python tests / Run tests slice 6/12: -18.0s
  • Python tests / Run tests slice 11/12: -14.0s
  • Python tests / Run tests slice 1/12: +14.0s
  • Python tests / Run tests slice 9/12: +13.0s

OSV vulnerability scan · View job

7 known vulnerabilities found in pinned dependencies.

How to fix:

Review the findings in the Security tab. Update the affected dependencies if a patched version is available.

@teknium1

Copy link
Copy Markdown
Contributor Author

Closing as not planned per maintainer decision (see #88086) — cost badges on the roster aren't a product direction we're taking.

@teknium1 teknium1 closed this Aug 19, 2026
@teknium1
teknium1 deleted the salvage/88086-roster-cost-badges branch August 19, 2026 04:53
@alt-glitch alt-glitch added type/feature New feature or request P3 Low — cosmetic, nice to have comp/desktop Electron desktop app (apps/desktop/*) comp/plugins Plugin system and bundled plugins labels Aug 19, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

comp/desktop Electron desktop app (apps/desktop/*) comp/plugins Plugin system and bundled plugins P3 Low — cosmetic, nice to have type/feature New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants