diff --git a/src/public/app/widgets/llm_chat_panel.ts b/src/public/app/widgets/llm_chat_panel.ts
index 3bba7c91e..5c9238f8b 100644
--- a/src/public/app/widgets/llm_chat_panel.ts
+++ b/src/public/app/widgets/llm_chat_panel.ts
@@ -530,8 +530,23 @@ export default class LlmChatPanel extends BasicWidget {
const defaultIsEnabled = enabledProviders.includes(defaultProvider);
const allPrecedenceEnabled = precedenceList.every((p: string) => enabledProviders.includes(p));
+ // Get embedding queue status
+ const embeddingStats = await server.get('embeddings/stats') as {
+ success: boolean,
+ stats: {
+ totalNotesCount: number;
+ embeddedNotesCount: number;
+ queuedNotesCount: number;
+ failedNotesCount: number;
+ lastProcessedDate: string | null;
+ percentComplete: number;
+ }
+ };
+ const queuedNotes = embeddingStats?.stats?.queuedNotesCount || 0;
+ const hasEmbeddingsInQueue = queuedNotes > 0;
+
// Show warning if there are issues
- if (!defaultInPrecedence || !defaultIsEnabled || !allPrecedenceEnabled) {
+ if (!defaultInPrecedence || !defaultIsEnabled || !allPrecedenceEnabled || hasEmbeddingsInQueue) {
let message = 'AI Provider Configuration Issues';
message += '
';
@@ -549,6 +564,10 @@ export default class LlmChatPanel extends BasicWidget {
message += `- The following providers in your precedence list are not enabled: ${disabledProviders.join(', ')}.
`;
}
+ if (hasEmbeddingsInQueue) {
+ message += `- Currently processing embeddings for ${queuedNotes} notes. Some AI features may produce incomplete results until processing completes.
`;
+ }
+
message += '
';
message += '';
diff --git a/src/public/app/widgets/type_widgets/options/ai_settings.ts b/src/public/app/widgets/type_widgets/options/ai_settings.ts
index 694f0b020..fb91d28dd 100644
--- a/src/public/app/widgets/type_widgets/options/ai_settings.ts
+++ b/src/public/app/widgets/type_widgets/options/ai_settings.ts
@@ -1366,6 +1366,9 @@ export default class AiSettingsWidget extends OptionsWidget {
if (!silent) {
await this.refreshIndexRebuildStatus(silent);
}
+
+ // Update validation warnings as embeddings status may have changed
+ await this.displayValidationWarnings();
}
} catch (error) {
console.error("Error fetching embedding stats:", error);
@@ -1599,6 +1602,8 @@ export default class AiSettingsWidget extends OptionsWidget {
if (!this.$widget) return;
const $warningDiv = this.$widget.find('.provider-validation-warning');
+ let hasWarnings = false;
+ let message = 'There are issues with your AI provider configuration:';
try {
// Get required data from current settings
@@ -1658,9 +1663,9 @@ export default class AiSettingsWidget extends OptionsWidget {
const defaultIsEnabled = enabledProviders.includes(defaultProvider);
const allPrecedenceEnabled = precedenceList.every(p => enabledProviders.includes(p));
- // Build warning message if there are issues
+ // Check for provider configuration issues
if (!defaultInPrecedence || !defaultIsEnabled || !allPrecedenceEnabled) {
- let message = 'There are issues with your AI provider configuration:';
+ hasWarnings = true;
if (!defaultInPrecedence) {
message += `
• The default embedding provider "${defaultProvider}" is not in your provider precedence list.`;
@@ -1674,9 +1679,19 @@ export default class AiSettingsWidget extends OptionsWidget {
const disabledProviders = precedenceList.filter(p => !enabledProviders.includes(p));
message += `
• The following providers in your precedence list are not enabled: ${disabledProviders.join(', ')}.`;
}
+ }
+ // Check if embeddings are still being processed
+ const queuedNotes = parseInt(this.$widget.find('.embedding-queued-notes').text(), 10);
+ if (!isNaN(queuedNotes) && queuedNotes > 0) {
+ hasWarnings = true;
+ message += `
• There are currently ${queuedNotes} notes in the embedding processing queue.`;
+ message += ` Some AI features may produce incomplete results until processing completes.`;
+ }
+
+ // Show warning message if there are any issues
+ if (hasWarnings) {
message += '
Please check your AI settings.';
-
$warningDiv.html(message);
$warningDiv.show();
} else {