diff --git a/apps/macos/Sources/Clawdis/Resources/WebChat/components/Messages.js b/apps/macos/Sources/Clawdis/Resources/WebChat/components/Messages.js
index 20b3f36fe..ae8f98277 100644
--- a/apps/macos/Sources/Clawdis/Resources/WebChat/components/Messages.js
+++ b/apps/macos/Sources/Clawdis/Resources/WebChat/components/Messages.js
@@ -9,6 +9,7 @@ import { customElement, property } from "lit/decorators.js";
import { renderTool } from "../tools/index.js";
import { formatUsage } from "../utils/format.js";
import { i18n } from "../utils/i18n.js";
+import { formatClock, renderSurfaceChip } from "../utils/message-meta.js";
import "./ThinkingBlock.js";
let UserMessage = class UserMessage extends LitElement {
createRenderRoot() {
@@ -23,6 +24,10 @@ let UserMessage = class UserMessage extends LitElement {
? this.message.content
: this.message.content.find((c) => c.type === "text")?.text || "";
return html `
+
+ ${renderSurfaceChip(this.message.surface, this.message.senderHost, this.message.senderIp)}
+ ${formatClock(this.message.timestamp)}
+
@@ -272,4 +277,4 @@ AbortedMessage = __decorate([
customElement("aborted-message")
], AbortedMessage);
export { AbortedMessage };
-//# sourceMappingURL=Messages.js.map
\ No newline at end of file
+//# sourceMappingURL=Messages.js.map
diff --git a/apps/macos/Sources/Clawdis/Resources/WebChat/utils/message-meta.js b/apps/macos/Sources/Clawdis/Resources/WebChat/utils/message-meta.js
new file mode 100644
index 000000000..b621ba271
--- /dev/null
+++ b/apps/macos/Sources/Clawdis/Resources/WebChat/utils/message-meta.js
@@ -0,0 +1,31 @@
+import { html } from "lit";
+import { i18n } from "./i18n.js";
+
+export function formatClock(ts) {
+ if (!ts) return "";
+ try {
+ const d = new Date(ts);
+ return d.toLocaleTimeString([], { hour: "2-digit", minute: "2-digit" });
+ } catch {
+ return "";
+ }
+}
+
+const palette = {
+ whatsapp: { label: "WhatsApp", class: "bg-emerald-600" },
+ telegram: { label: "Telegram", class: "bg-sky-600" },
+ webchat: { label: "WebChat", class: "bg-indigo-500" },
+ computer: { label: "Computer", class: "bg-slate-600" },
+};
+
+export function renderSurfaceChip(surface, senderHost, senderIp) {
+ const key = (surface || "computer").toLowerCase();
+ const meta = palette[key] ?? { label: surface || i18n("Unknown"), class: "bg-slate-500" };
+ const hostPart = senderHost ? ` • ${senderHost}` : "";
+ const ipPart = senderIp ? ` (${senderIp})` : "";
+
+ return html`
+ ${meta.label}${hostPart}${ipPart}
+ `;
+}
+