From 8f2d28c032fd2a374cb41035de85438589ac46d8 Mon Sep 17 00:00:00 2001 From: ajnart Date: Wed, 12 Aug 2026 01:35:55 +0200 Subject: [PATCH] docs: finish assistant coverage --- apps/docs/docs/management/assistant.mdx | 56 +++++++++++++----- .../docs/management/img/assistant-widget.png | Bin 0 -> 56233 bytes apps/docs/docs/widgets/assistant/index.mdx | 25 +++++++- 3 files changed, 64 insertions(+), 17 deletions(-) create mode 100644 apps/docs/docs/management/img/assistant-widget.png diff --git a/apps/docs/docs/management/assistant.mdx b/apps/docs/docs/management/assistant.mdx index 43c56278c..93c6cc42a 100644 --- a/apps/docs/docs/management/assistant.mdx +++ b/apps/docs/docs/management/assistant.mdx @@ -7,6 +7,7 @@ tags: --- import assistantConfigImage from "./img/assistant-config.png"; +import assistantWidgetImage from "./img/assistant-widget.png"; # Assistant @@ -20,9 +21,12 @@ focus whenever the command menu opens, including when it is opened by an assista command menu preserves any draft in the expanded conversation. The local result is temporarily disabled while the assistant is responding or waiting for an approval. -Availability follows the setup state: signed-out users see **Sign in**; configured-but-disabled users cannot use the -user-menu or `Shift + A` entry points; and `Cmd/Ctrl + K` keeps the assistant result visible but unavailable and -non-interactive until an administrator enables it. +Availability follows the setup state. Signed-out users do not get an assistant action in the user menu or from +`Shift + A`; the always-visible command-menu result is disabled and says **Sign in**. If the provider connection or +model is configured but **Enable Assistant** is off, the user-menu and `Shift + A` entry points do not open the +assistant, while `Cmd/Ctrl + K` keeps its result visible but disabled with an explanation that an administrator must +configure and enable it. Saving a working connection, model, and enabled state makes all three entry points +available again. While a response is running, a compact activity bar appears at the bottom of the page and the user-menu avatar shows a thinking indicator. The activity bar can be opened to follow the response. Completed @@ -40,7 +44,19 @@ The **Assistant** board widget embeds the same persisted conversation and full i on a dashboard. By default it follows the current conversation. Widget settings can instead pin a specific conversation; the conversation picker stays hidden until **Pinned conversation** is selected. If the pinned conversation was deleted or cannot be opened, the widget shows an **Open conversation** recovery action -and retry state instead of silently losing the widget content. +and retry state instead of silently losing the widget content or falling back to another thread. **Open conversation** +retries the same pinned thread after a failed switch. + +Assistant widget embedded on a dashboard with its conversation header, automatic approvals control, model selector, and composer + +The current preview capture shows the board-embedded surface, including its conversation header, automatic-approval +control, model and thinking controls, and composer. These controls operate on the same persisted thread as the +floating assistant while keeping this surface's draft and focus independent. + The Shift+A panel is non-modal: opening it focuses its composer, but it does not capture focus from the board. Users can continue typing in an Assistant widget or interacting with other dashboard controls while the panel is open. Every visible assistant surface keeps its own draft, attachment list, selection, and focus while sharing @@ -84,8 +100,13 @@ working provider, model, and enabled state are saved. stores and sends the provider's exact model ID. Context-window sizes use compact labels such as `1M`. 5. Enable the assistant and save the configuration. -Changing the provider, base URL, or discovery path clears the selected model and disables the assistant. Save the -connection again, refresh or enter a model ID, then enable the assistant and save the configuration once more. +Changing the provider or base URL immediately resets the unsaved credential/header draft, selected model, and +enabled state, and puts the model section into a **save connection first** state. Saving that destination change also +clears stored credentials for the previous destination. Changing the discovery path resets the selected model and +enabled state; save the new path before relying on its discovery results. For an unsaved provider or base-URL change, +the model controls, **Refresh models**, web-search switch, enable switch, and **Save assistant** remain unavailable. +After the connection is saved, refresh the model list and select a model; if discovery is blank or returns no models, +the manual model-ID field is the supported fallback. Only then enable the assistant and save the configuration. The model discovery path defaults to `/models` and is appended to the API base URL. Leave the custom path blank when the service does not expose a usable discovery endpoint. A manual model ID can still be used when discovery is @@ -93,8 +114,9 @@ unavailable or returns no models. API keys and additional header values are encrypted in the Homarr database. They are decrypted only on the server for discovery and model requests, and they are never returned to the browser. Changing the -provider or base URL clears existing credentials. This prevents credentials for one service from being sent -to another endpoint. Additional headers are write-only; saving them replaces the complete stored header set. Use the +provider or base URL, then saving the connection, clears existing credentials. This prevents credentials for one +service from being sent to another endpoint. Additional headers are write-only; saving them replaces the complete +stored header set. Use the explicit clear/remove flow when you want to remove previously saved headers. When a key is already stored, the page shows its protected state instead of an ambiguous empty password @@ -176,7 +198,10 @@ stored app or integration icon when one is available. Type `/` for common prompt shortcuts. Both menus support keyboard navigation and keep the active result visible while moving through long lists. The selector below the composer combines searchable, provider-grouped models with their description, context size and image-input capability, plus the thinking-level control. Model selection is -saved to the current conversation when selected. Thinking mode can be left on **Auto**, disabled, or set +saved to the current conversation when selected. For a persisted thread, changing the model updates that thread's +preference without changing the administrator's configured default; switching threads restores each thread's saved +model, while a new thread starts from the configured default until the user changes it. Thinking mode can be left on +**Auto**, disabled, or set from minimal through high; explicit levels are sent using the AI SDK's provider-neutral reasoning setting and still depend on support from the chosen model and endpoint. Reasoning text is shown live when the provider streams it through assistant-ui's grouped-parts and chain-of-thought primitives. The compact **Thinking** trace groups @@ -275,7 +300,8 @@ reference set. Supplied samples and successful preview responses are treated as instructed to render the requested fields, guard optional nested data, preserve every returned item, expose freshness when timestamps are available, and provide a refresh path for recoverable empty or error states. -The shield control in the conversation header can enable automatic approvals for the current conversation. +The shield control in the conversation header can enable automatic approvals for the current conversation; they are +off by default. While enabled, Homarr accepts every affirmative approval step as it arrives: protected mutations are approved, presented app details and board changes are used, and structured questions with an explicitly categorized **Confirm** answer choose that answer. Neutral choices such as selecting a board still wait for input because @@ -285,8 +311,9 @@ floating assistant are visible. When the assistant genuinely needs missing information or a choice, it can pause with a structured question. Each proposed answer is visibly categorized as **Confirm**, **Decline**, or **Option**, so the effect -of automatic approval is unambiguous. When enabled by the tool, users can select **Other** and -enter their own response. While a question is unanswered, its controls stay in a dedicated area immediately +of automatic approval is unambiguous. **Other** is shown only when the tool allows it (`allowOther` is not `false`); +selecting it opens a freeform response and is always a manual alternative, not an automatic approval choice. While a +question is unanswered, its controls stay in a dedicated area immediately above the composer instead of requiring the user to find the tool call in the transcript. The question temporarily uses the available conversation body, with its own scrolling when necessary, rather than squeezing a long option list into a short dock beside part of the transcript. The answered choice then remains in the conversation history. @@ -305,12 +332,13 @@ to invent external icon CDN URLs. Board appearance changes use a similar review flow. The assistant first reads the board's current settings, including its complete custom stylesheet, and then opens an editable form with Custom CSS, Appearance, Background, and General tabs. The form highlights how many fields were proposed, preserves settings the -assistant did not change, and returns only values that differ from the current board. Custom CSS can be +assistant did not change, and returns only values that differ from the current board. If nothing differs, the review +cancels without creating a mutation or approval. Custom CSS can be copied or restored before continuing, and Homarr warns when it contains an imported stylesheet or remote resource URL. Continuing from the form opens the normal mutation approval before anything is saved. The board-settings tool covers General, Background, Appearance, Custom CSS, and app-status settings. It does not edit -responsive layouts, board access control, or Danger zone actions. +responsive layouts, board access control, or Danger zone actions; those remain outside this review scope. Ask for changes such as “make the cards denser on my Home board,” “add a mobile CSS rule without removing my existing styles,” or “change the board colors and disable app status checks.” The current user must have diff --git a/apps/docs/docs/management/img/assistant-widget.png b/apps/docs/docs/management/img/assistant-widget.png new file mode 100644 index 0000000000000000000000000000000000000000..960d9ab4097d9bb9e445862b206f3dfa4a2a3cc1 GIT binary patch literal 56233 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 literal 0 HcmV?d00001 diff --git a/apps/docs/docs/widgets/assistant/index.mdx b/apps/docs/docs/widgets/assistant/index.mdx index fc0d8df81..52b89ce8d 100644 --- a/apps/docs/docs/widgets/assistant/index.mdx +++ b/apps/docs/docs/widgets/assistant/index.mdx @@ -8,6 +8,7 @@ import { AddingWidget } from "@site/src/components/widgets/adding"; import { WidgetConfig } from "@site/src/components/widgets/configuration"; import { WidgetHeader } from "@site/src/components/widgets/header"; import { assistantWidget } from "."; +import assistantWidgetImage from "../../management/img/assistant-widget.png"; @@ -16,7 +17,18 @@ board. Messages, conversations, tool calls, approvals, files, mentions, model co usage details, and response actions remain synchronized with the app-wide assistant. The assistant must be enabled by an administrator in **Management → Assistant**. Signed-out users and users -on an instance without an enabled model see an unavailable state instead of a broken composer. +on an instance without an enabled model see an unavailable state instead of a broken composer. Signed-out users see +**Sign in**; a configured provider without a saved model or with **Enable Assistant** off remains unavailable until +the administrator saves a working connection, selects a model, and enables the assistant. + +Assistant widget embedded on a dashboard with its conversation header, automatic approvals control, model selector, and composer + +The current preview capture labels the board-embedded surface: its header exposes conversation history, refresh, +automatic approvals, and new-conversation controls, while the footer exposes the model, thinking mode, and composer. ### Adding the widget @@ -37,7 +49,8 @@ the command menu. This is the default and keeps every assistant entry point sync **Pinned conversation** reveals a searchable conversation selector. A pinned widget never changes the active conversation silently: select **Open conversation** inside the widget before continuing that thread. If the pinned -thread was deleted or cannot be opened, the widget shows the same recovery action and a retry state. +thread was deleted or cannot be opened, the widget keeps the pinned selection, shows the same recovery action and a +retry state, and retries that thread when **Open conversation** is selected again. ### Conversation features @@ -51,10 +64,16 @@ thread was deleted or cannot be opened, the widget shows the same recovery actio - Edit user messages and copy, regenerate, branch, quote, export, or rate responses. - Inspect syntax-highlighted Markdown, sources, generated files, tool results, streaming chain-of-thought, cumulative conversation usage, per-turn token and context use, timing, speed, provider routing, and cost. -- Change the model and reasoning effort for the active conversation. +- Change the model and reasoning effort for the active conversation. A model choice is saved per persisted thread, + does not change the administrator's default, and is restored when that thread is selected again; a new thread + starts from the configured default. - Refresh the current board from the conversation header. Approved mutations also refresh visible board data automatically. The expanded assistant and board widget use the same persisted thread runtime. A response continues in the background when the widget leaves the viewport or the expanded panel is minimized. Each visible surface keeps an independent draft, attachments, selection, and focus, so typing in a board widget cannot move or overwrite the floating panel composer. + +Automatic approvals are off by default, reset when switching conversations, and never select a neutral choice. A +structured question shows **Other** only when the tool allows it (`allowOther` is not `false`); selecting **Other** +opens a manual freeform response even when automatic approvals are enabled.