Chat with AI

feat~ai.chatting~1

Description: this feature represents the AI chat, which can be a chat with an entry or a group.

Needs: impl

Covers: feat~ai~1

General AI chat requirements

feat~ai.chat.general~1

Rationale: common functionalities are required across all chat modes (single entry or group) to ensure a standard user experience

Covers: feat~ai.chatting~1

Support deletion of messages in AI chat

req~ai.chat.delete-messages~1

Rationale: users should be able to remove specific messages to clean up the conversation or correct context

Needs: impl, utest

Covers: feat~ai.chat.general~1

Support regeneration of AI responses in AI chat

req~ai.chat.regenerate-response~1

Rationale: users may want a different answer if the previous one was unsatisfactory or hallucinated

Needs: impl, utest

Covers: feat~ai.chat.general~1

Provide a smart prompt input field in AI chat

req~ai.chat.smart-prompt-field~1

Rationale: the input field should support multi-line input, auto-resizing, keyboard shortcuts, and history

Needs: impl

Covers: feat~ai.chat.general~1

Support clearing of chat history in AI chat

req~ai.chat.clear-history~1

Rationale: allows the user to reset the context completely and start a fresh conversation without previous biases

Needs: impl, guard, utest

Display the status of ingested files in AI chat

req~ai.chat.ingestion-status~1

Rationale: the user needs to know if the context files are fully indexed/embedded

Needs: impl

Covers: feat~ai.chat.general~1

Display the currently used AI model in AI chat

req~ai.chat.model-visibility~1

Rationale: provides transparency regarding which LLM is generating the text

Needs: impl

Covers: feat~ai.chat.general~1

Allow user to cancel AI response generation in AI chat

req~ai.chat.cancel-generation~1

Rationale: saves resources/tokens and time if the user realizes the prompt was incorrect while the answer is streaming

Needs: impl

Covers: feat~ai.chat.general~1

Display errors in AI chat

req~ai.chat.show-errors~1

Rationale: feedback must be provided within the chat interface if the API fails, the network drops, or rate limits are hit

Needs: impl

Covers: feat~ai.chat.general~1

Support retry of AI response generation after error in AI chat

req~ai.chat.retry-error~1

Rationale: provides a quick way to re-attempt the request without re-typing the prompt if the failure was transient

Needs: impl

Covers: feat~ai.chat.general~1

Allow user to cancel AI response generation after an error in AI chat

req~ai.chat.cancel-error-state~1

Rationale: allows the user to dismiss the error state or stop a retry loop to regain control of the interface

Needs: impl

Covers: feat~ai.chat.general~1

Support customization of the system prompt in AI chat

req~ai.chat.customize-system-prompt~1

Rationale: users should be able to modify the AI behavior by changing the system prompt to better suit their needs

Needs: impl

Covers: feat~ai.chat.general~1, feat~ai.expert-settings~1

Ensure that an answer engine is used in AI chat

req~ai.chat.uses-answer-engine~1

Rationale: this requirement ensures that the AI has context to answer a question

Needs: impl

Covers: feat~ai-answer-engines~1

AI chat with entries

feat~ai.chatting.entries~1

Rationale: specific requirements for chatting with a single bibliography entry

Needs: impl, pp

Covers: feat~ai.chatting~1

Support hiding of the AI chat tab

req~ai.chat.entries.hide-tab~1

Rationale: users who do not use AI features should be able to declutter their interface

Needs: impl

Covers: feat~ai.chatting.entries~1

Persist AI chat history for AI chat with entries

req~ai.chat.entries.history-storage~1

Rationale: history must be persisted per entry, so the user can resume the conversation later

Needs: dsn, model, impl, utest

Covers: feat~ai.chatting.entries~1

AI chat with groups

feat~ai.chatting.groups~1

Rationale: specific requirements for chatting with a collection/group of entries simultaneously

Needs: impl, pp

Covers: feat~ai.chatting~1

Support hiding of the context menu entry for AI chat with group

req~ai.chat.groups.hide-context-menu~1

Rationale: allows customization of the context menu to remove “Chat with group” if the user does not use it

Needs: impl

Covers: feat~ai.chatting.groups~1

Persist AI chat history for AI chat with groups

req~ai.chat.groups.history-storage~1

Rationale: history must be persisted per group, so the conversation context is preserved across sessions

Needs: dsn, model, impl, utest

Covers: feat~ai.chatting.groups~1

Display library name and group name in AI group chat

req~ai.chat.groups.display-names~1

Rationale: essential for user orientation, ensuring that users can distinguish between different chats of a group that has the same name in different libraries

Needs: impl

Covers: feat~ai.chatting.groups~1