tpmjs/apps/omega-mac/OmegaMac/Views/Sidebar/ConversationRow.swift
Ajax Davis 5ac3beab37 fix(omega-mac): fix enter-to-send, duplicate messages, search parsing + new features
- Replace TextEditor+onKeyPress with NSTextView that properly intercepts
  Return (send) vs Shift+Return (newline)
- Only show streaming content and live tool calls while isStreaming is true,
  preventing duplicate rendering after messages are persisted
- Fix registry search JSON parsing: API returns env as [String] not objects
- Add importUrl from search API response instead of constructing it
- Add message count badge to sidebar conversation rows
- Add "Copy JSON" toolbar button (Cmd+Shift+C) to export full conversation
  with all messages and tool call results as JSON
2026-02-09 22:48:13 +10:00

40 lines
1.2 KiB
Swift

import SwiftUI
struct ConversationRow: View {
let conversation: Conversation
var body: some View {
HStack {
VStack(alignment: .leading, spacing: 4) {
Text(conversation.displayTitle)
.font(.system(.body, design: .default))
.lineLimit(1)
.foregroundStyle(.primary)
Text(timeAgo(conversation.updatedAt))
.font(.caption)
.foregroundStyle(.secondary)
}
Spacer()
let count = conversation.messages.count
if count > 0 {
Text("\(count)")
.font(.caption2.weight(.medium))
.foregroundStyle(.secondary)
.padding(.horizontal, 6)
.padding(.vertical, 2)
.background(.quaternary)
.clipShape(Capsule())
}
}
.padding(.vertical, 2)
}
private func timeAgo(_ date: Date) -> String {
let formatter = RelativeDateTimeFormatter()
formatter.unitsStyle = .abbreviated
return formatter.localizedString(for: date, relativeTo: Date())
}
}