{{ chat.title if chat else "New chat" }} {# Rename, where the name is. A themed dialog through `data-prompt` rather than an inline field: the heading is in a flex row beside the badges and the connection chip, and swapping it for a text box moves all of them. The response is the same out-of-band pair the `done` frame sends, so the sidebar row follows without a second request. #} {% if chat %} {% endif %} {# Beside the title because it describes the chat rather than acting on it. The way out of it is Keep, in the overflow menu. #} {% if chat and chat.temporary %} Temporary {% endif %}
{# Where this chat runs. Beside the title because it describes the chat and cannot be changed -- update_chat refuses the connection and the directory with a 409 -- so it is of a kind with the Temporary badge rather than with the controls on the right. The mode is the one thing here that moves, and it stays down by the message box. #} {% if chat and chat.kind == "agent" %} {% endif %}{{ current_model.description }}
{% endif %} {% if can.get("chat.system_prompt") %}{% if inherited_prompt %} Leave empty to use the {{ inherited_from }} prompt shown above. {% else %} Overrides the model and instance prompts for this chat only. {% endif %}
{% if attached_base_ids %} Searches in this chat are limited to what is ticked. {% else %} Nothing ticked, so this chat can search everything in your library. {% endif %}
{% if crowd_member_ids %} {{ crowd_member_ids|length + 1 }} models answer each turn: this one first, then the others, then back through them asking whether they disagree, ending here. That is {{ crowd_replies }} replies a turn, and up to {{ crowd_rounds }} rounds of it. {% else %} Tick a model to have it answer after this one, then be asked whether it disagrees. Useful for a second opinion; expensive, because each one is a whole reply, and slow on one local endpoint because every change of speaker loads a different model. {% endif %}
{# Outside the two branches above, deliberately. A member whose model has gone is filtered out of `crowd_member_ids`, so if it was the only one this would fall into the "tick a model" branch and never mention the row that is still there -- which is the one thing somebody needs to know to tidy it up. #} {% if crowd_skipped %}
Skipped, because you cannot reach {{ "them" if crowd_skipped|length > 1 else "it" }}
any more: {{ crowd_skipped|join(", ") }}. Untick to clear.
Leave a field empty to let the provider decide. Values outside the allowed range are ignored rather than clamped.
{% endif %}No models available
{% if user.is_admin %} Add an OpenAI-compatible connection and {{ brand.name }} will load its models. {% else %} No model connections have been set up yet. Ask an administrator. {% endif %}
{% if user.is_admin %} {{ icon("server", "icon--sm") }} Set up a connection {% endif %}What would you ask?
{{ brand.text.chat_empty }}
{# Only on a chat that does not exist yet. An empty chat someone opened on purpose already has a model and a prompt chosen. #} {% if not chat and suggestions %}