feat(memory): per-field info tooltips + name the profile in the full-config modal

Fields can declare a longer 'info' text rendered as an (i) tooltip next to
the label in both the panel and the modal; honcho uses it to spell out the
session strategy, write frequency, and recall mode semantics. The modal
description claimed 'the active profile' without saying which — show the
active gateway profile name.
This commit is contained in:
Erosika 2026-07-07 11:52:25 -04:00
parent 8333b04483
commit a182ddbf9f
8 changed files with 40 additions and 6 deletions

View file

@ -78,6 +78,8 @@ class ProviderField:
env_fallbacks: tuple[str, ...] = ()
inline: bool = False
group: str = ""
# Longer help text surfaced as an info tooltip next to the field label.
info: str = ""
# Host-block placement: "host" (per-profile) or "root"; flat-json ignores it.
scope: str = "host"

View file

@ -100,6 +100,12 @@ CONFIG_SCHEMA = ProviderConfigSchema(
kind=KIND_SELECT,
default="per-directory",
description="How conversations map to Honcho sessions.",
info=(
"Per session: every conversation gets its own Honcho session. "
"Per directory: conversations from the same working directory share one. "
"Per repo: conversations from the same git repo share one. "
"Global: everything shares a single session."
),
options=(
ProviderFieldOption("per-session", "Per session"),
ProviderFieldOption("per-directory", "Per directory"),
@ -181,6 +187,11 @@ CONFIG_SCHEMA = ProviderConfigSchema(
kind=KIND_TEXT,
default="async",
description="When to flush messages: async, turn, session, or every N turns.",
info=(
"async: write in the background as messages arrive. "
"turn: flush after each turn. session: flush when the session ends. "
"A number N flushes every N turns."
),
placeholder="async | turn | session | N",
group="Message writing",
),
@ -259,6 +270,11 @@ CONFIG_SCHEMA = ProviderConfigSchema(
kind=KIND_SELECT,
default="hybrid",
description="How memory retrieval works: hybrid, context-only, or tools-only.",
info=(
"Hybrid: auto-injected context plus on-demand memory tools. "
"Context only: injection without tools. "
"Tools only: the model queries memory explicitly, nothing is injected."
),
options=(
ProviderFieldOption("hybrid", "Hybrid"),
ProviderFieldOption("context", "Context only"),