feat(desktop): polish credentials settings and messaging env routing (#39217)

* feat(desktop): polish credentials settings and messaging env routing

Align Provider API Keys and Tools & Keys with Advanced ListRow inputs,
add Tools & Keys sidebar subnav, move platform env vars to Messaging via
channel_managed discovery, strip toolset emojis, and condense cron actions.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(desktop): align Messaging credential inputs with settings ListRow style

Remove monospace inputs and use CREDENTIAL_CONTROL_CLASS + ListRow layout
to match Provider API Keys and Tools & Keys.

Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Austin Pickett
2026-06-04 14:01:15 -04:00
committed by GitHub
co-authored by Cursor
parent a3fb48b2ce
commit acce1a2452
20 changed files with 826 additions and 668 deletions
+21 -3
View File
@@ -791,6 +791,24 @@ class TestWebServerEndpoints:
for key, info in data.items():
assert info["channel_managed"] is (key in channel_keys)
def test_platform_scoped_messaging_env_vars_are_channel_managed(self):
from hermes_cli.web_server import (
_MESSAGING_KEYS_PAGE_KEYS,
_build_catalog_entry,
_channel_managed_env_keys,
)
discord = _build_catalog_entry("discord")
assert "DISCORD_HOME_CHANNEL" in discord["env_vars"]
assert "DISCORD_ALLOW_ALL_USERS" in discord["env_vars"]
managed = _channel_managed_env_keys()
assert "DISCORD_HOME_CHANNEL" in managed
assert "BLUEBUBBLES_ALLOW_ALL_USERS" in managed
assert "MATTERMOST_ALLOW_ALL_USERS" in managed
assert "GATEWAY_PROXY_URL" not in managed
assert "GATEWAY_PROXY_URL" in _MESSAGING_KEYS_PAGE_KEYS
def test_reveal_env_var(self, tmp_path):
"""POST /api/env/reveal should return the real unredacted value."""
from hermes_cli.config import save_env_value
@@ -1919,7 +1937,7 @@ class TestNewEndpoints:
assert resp.json() == [
{
"name": "web",
"label": "🔍 Web Search & Scraping",
"label": "Web Search & Scraping",
"description": "web_search, web_extract",
"enabled": True,
"available": True,
@@ -1928,7 +1946,7 @@ class TestNewEndpoints:
},
{
"name": "skills",
"label": "📚 Skills",
"label": "Skills",
"description": "list, view, manage",
"enabled": True,
"available": True,
@@ -1937,7 +1955,7 @@ class TestNewEndpoints:
},
{
"name": "memory",
"label": "💾 Memory",
"label": "Memory",
"description": "persistent memory across sessions",
"enabled": False,
"available": False,