diff --git a/Components/ChatMessageList.razor b/Components/ChatMessageList.razor index 53afe92239..c412ae8519 100644 --- a/Components/ChatMessageList.razor +++ b/Components/ChatMessageList.razor @@ -280,8 +280,27 @@ internal static string FormatUserMessage(string content) { - var escaped = System.Net.WebUtility.HtmlEncode(content); - return escaped.Replace("\n", "
"); + if (string.IsNullOrEmpty(content)) return ""; + var lines = content.Split('\n'); + var sb = new System.Text.StringBuilder(); + foreach (var line in lines) + { + var trimmed = line.Trim(); + if (trimmed.StartsWith('/') && ImageExtensions.Any(ext => + trimmed.EndsWith(ext, StringComparison.OrdinalIgnoreCase)) && + System.IO.File.Exists(trimmed)) + { + var dataUri = FileToDataUri(trimmed); + if (dataUri != null) + { + sb.Append($"
\"{System.Net.WebUtility.HtmlEncode(System.IO.Path.GetFileName(trimmed))}\"{System.Net.WebUtility.HtmlEncode(System.IO.Path.GetFileName(trimmed))}
"); + continue; + } + } + if (sb.Length > 0) sb.Append("
"); + sb.Append(System.Net.WebUtility.HtmlEncode(line)); + } + return sb.ToString(); } internal static int LineCount(string? text) diff --git a/Components/ChatMessageList.razor.css b/Components/ChatMessageList.razor.css index 797543eb53..debbdb4f89 100644 --- a/Components/ChatMessageList.razor.css +++ b/Components/ChatMessageList.razor.css @@ -296,3 +296,34 @@ @keyframes spin { to { transform: rotate(360deg); } } ::deep .spin { animation: spin 1s linear infinite; } + +/* === User image attachments inline === */ +::deep .user-image-attachment { + display: inline-block; + margin: 0.3rem 0.2rem 0.3rem 0; + border-radius: 8px; + overflow: hidden; + border: 1px solid rgba(255,255,255,0.15); + background: rgba(0,0,0,0.2); + max-width: 300px; + vertical-align: top; +} + +::deep .user-image-attachment img { + max-width: 300px; + max-height: 200px; + object-fit: contain; + display: block; + border-radius: 8px 8px 0 0; +} + +::deep .user-image-name { + display: block; + font-size: 0.65rem; + color: rgba(255,255,255,0.4); + padding: 2px 6px 4px; + text-align: center; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} diff --git a/Components/Pages/Home.razor b/Components/Pages/Home.razor index 25c3504835..f0b562a878 100644 --- a/Components/Pages/Home.razor +++ b/Components/Pages/Home.razor @@ -68,7 +68,7 @@ } -
+
@if (!string.IsNullOrEmpty(currentIntent)) {
@currentIntent
@@ -92,7 +92,26 @@ }
} + @if (pendingImages.Count > 0) + { +
+ @for (var i = 0; i < pendingImages.Count; i++) + { + var idx = i; + var img = pendingImages[i]; +
+ @img.FileName + + @TruncateFileName(img.FileName, 15) +
+ } +
+ }
+ +