diff --git a/app/MindWork AI Studio/Components/AttachDocuments.razor.cs b/app/MindWork AI Studio/Components/AttachDocuments.razor.cs
index 32f2f20d..f006f54f 100644
--- a/app/MindWork AI Studio/Components/AttachDocuments.razor.cs
+++ b/app/MindWork AI Studio/Components/AttachDocuments.razor.cs
@@ -266,9 +266,21 @@ public partial class AttachDocuments : MSGComponentBase
///
private void ClaimDefaultZoneRole()
{
- if (!this.CatchAllDocuments || this.Scope is null)
+ if (!this.CatchAllDocuments)
return;
+ if (this.Scope is null)
+ {
+ //
+ // There is nothing to claim: the surrounding page, assistant, or dialog is not a drop
+ // area at all. The flag would then do nothing, and silently -- which is how a zone ends
+ // up promising a behaviour it cannot deliver. So say it out loud: either the area needs
+ // a DropZoneScope, or the flag does not belong here.
+ //
+ this.Logger.LogWarning("The attachment zone '{Name}' wants to be the default target of its area, but it does not live in a drop zone scope. Dropping next to this zone will do nothing.", this.Name);
+ return;
+ }
+
this.isDefaultZone = this.Scope.TryBecomeDefaultZone(this);
if (!this.isDefaultZone)
this.Logger.LogDebug("The attachment zone '{Name}' asked to be the default target of its area, which another zone already is. It now takes only the drops aimed at itself.", this.Name);
diff --git a/app/MindWork AI Studio/Components/PathDropZone.razor.cs b/app/MindWork AI Studio/Components/PathDropZone.razor.cs
index fa86b320..6b0d6b2d 100644
--- a/app/MindWork AI Studio/Components/PathDropZone.razor.cs
+++ b/app/MindWork AI Studio/Components/PathDropZone.razor.cs
@@ -120,9 +120,21 @@ public partial class PathDropZone : MSGComponentBase
///
private void ClaimDefaultZoneRole()
{
- if (!this.CatchAllDocuments || this.Scope is null)
+ if (!this.CatchAllDocuments)
return;
+ if (this.Scope is null)
+ {
+ //
+ // There is nothing to claim: the surrounding page, assistant, or dialog is not a drop
+ // area at all. The flag would then do nothing, and silently -- which is how a zone ends
+ // up promising a behaviour it cannot deliver. So say it out loud: either the area needs
+ // a DropZoneScope, or the flag does not belong here.
+ //
+ this.Logger.LogWarning("The path drop zone '{ZoneId}' wants to be the default target of its area, but it does not live in a drop zone scope. Dropping next to this zone will do nothing.", this.dropZoneId);
+ return;
+ }
+
this.isDefaultZone = this.Scope.TryBecomeDefaultZone(this);
if (!this.isDefaultZone)
this.Logger.LogDebug("The path drop zone '{ZoneId}' asked to be the default target of its area, which another zone already is. It now takes only the drops aimed at itself.", this.dropZoneId);
diff --git a/app/MindWork AI Studio/Components/ReadFileContent.razor.cs b/app/MindWork AI Studio/Components/ReadFileContent.razor.cs
index 20218590..a64fc4c5 100644
--- a/app/MindWork AI Studio/Components/ReadFileContent.razor.cs
+++ b/app/MindWork AI Studio/Components/ReadFileContent.razor.cs
@@ -244,9 +244,21 @@ public partial class ReadFileContent : MSGComponentBase
///
private void ClaimDefaultZoneRole()
{
- if (!this.CatchAllDocuments || this.Scope is null)
+ if (!this.CatchAllDocuments)
return;
+ if (this.Scope is null)
+ {
+ //
+ // There is nothing to claim: the surrounding page, assistant, or dialog is not a drop
+ // area at all. The flag would then do nothing, and silently -- which is how a zone ends
+ // up promising a behaviour it cannot deliver. So say it out loud: either the area needs
+ // a DropZoneScope, or the flag does not belong here.
+ //
+ this.Logger.LogWarning("The file zone '{ZoneId}' wants to be the default target of its area, but it does not live in a drop zone scope. Dropping next to this zone will do nothing.", this.dropZoneId);
+ return;
+ }
+
this.isDefaultZone = this.Scope.TryBecomeDefaultZone(this);
if (!this.isDefaultZone)
this.Logger.LogDebug("The file zone '{ZoneId}' asked to be the default target of its area, which another zone already is. It now takes only the drops aimed at itself.", this.dropZoneId);
diff --git a/app/MindWork AI Studio/Dialogs/ChatTemplateDialog.razor b/app/MindWork AI Studio/Dialogs/ChatTemplateDialog.razor
index 791eb151..c2b8f965 100644
--- a/app/MindWork AI Studio/Dialogs/ChatTemplateDialog.razor
+++ b/app/MindWork AI Studio/Dialogs/ChatTemplateDialog.razor
@@ -59,7 +59,7 @@
@T("Use the default system prompt")
-
+
@T("Predefined User Input")
@@ -83,6 +83,7 @@
HelperText="@T("Tell the AI your predefined user input.")"
ReadOnly="@this.IsReadOnly"
/>
+
@T("File Attachments")
diff --git a/app/MindWork AI Studio/Dialogs/ProfileDialog.razor b/app/MindWork AI Studio/Dialogs/ProfileDialog.razor
index a711e084..b72d3135 100644
--- a/app/MindWork AI Studio/Dialogs/ProfileDialog.razor
+++ b/app/MindWork AI Studio/Dialogs/ProfileDialog.razor
@@ -47,7 +47,7 @@
HelperText="@T("Tell the AI something about yourself. What is your profession? How experienced are you in this profession? Which technologies do you like?")"
ReadOnly="@this.IsReadOnly"
/>
-
+
-
+
@T("Please be aware that your profile info becomes part of the system prompt. This means it uses up context space — the “memory” the LLM uses to understand and respond to your request. If your profile is extremely long, the LLM may struggle to focus on your actual task.")
diff --git a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBatchProcessing.razor b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBatchProcessing.razor
index 941300f6..abab1c02 100644
--- a/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBatchProcessing.razor
+++ b/app/MindWork AI Studio/Dialogs/Settings/SettingsDialogBatchProcessing.razor
@@ -26,12 +26,12 @@
@if (this.SettingsManager.ConfigurationData.BatchProcessing.PromptSource is BatchProcessingPromptSource.FREE_PROMPT)
{
-
+
}
else if (this.SettingsManager.ConfigurationData.BatchProcessing.PromptSource is BatchProcessingPromptSource.FILE_IMPORT)
{
-
+
}
else