Some checks are pending
build-and-push / image (push) Waiting to run
- Package.swift: add CxARA (via CxLLM-SDK) and CxDrive (via new CxLLM-Drive package dep) so the native shell links every mac-app-shaped module exported by the CxLLM-SDK and CxLLM-Drive families. - Sidebar: surface .repair (CxARA) and .drive (CxDrive) alongside the existing Web/Chat/Agent/MCP/Models/Code/AWS/Git/LangBridge/Telemetry tabs, with matching SF Symbols. - scripts/build-mac-bundle.sh: end-to-end pipeline (release build, .app bundle with rebranded Info.plist studio.cxai.ade 1.2.0, ad-hoc codesign, tar.gz, hdiutil UDZO dmg, publish to share/cxai-mac, write build-info.json with sha256/sizes/modules/git sha). - Makefile targets: swift-app 'make rebuild-mac', CxWebApp root 'make rebuild-mac'. - share/cxai-mac: replace Tauri 0- share/cxai-mac: replace Tauri 0- share/cxai-mac: replace Tauri 0- share/cxai-mac: replace Tauri 0- share/cxai-mac: replace Tauri 0- share/cxai-mac: replace Tauri 0- share/cxai-mac: replace Tauri 0- share/cxai-mac: replace Tauri 0- share/cxai-mac: replace Tauri 0- dge- share/cxai-mac: replace Tauri 0- share/cxai-mac: replace Tauri 0- share/AR- share/cxai-mac: replace Tauri 0- share/cxai-mac: replace Ter refere- share/cxai-mac: replace Tauri 0- origin main 2>&1 | tail -5
98 lines
3.7 KiB
Swift
98 lines
3.7 KiB
Swift
// CxLLMSidebar — sidebar navigation for the CxLLM module surface, alongside the WebView.
|
|
// Phase 4 wiring: each section imports its CxLLM-SDK module and renders a status card.
|
|
// Real per-module UI lands in Phase 3.
|
|
|
|
import SwiftUI
|
|
import CxCode
|
|
import CxAWS
|
|
import CxGit
|
|
import CxAgent
|
|
import CxMCP
|
|
import CxModels
|
|
import CxChat
|
|
import CxInstrument
|
|
import CxLangBridge
|
|
import CxARA
|
|
import CxDrive
|
|
|
|
enum SidebarItem: String, Identifiable, CaseIterable, Hashable {
|
|
case web = "Web"
|
|
case chat = "Chat"
|
|
case agent = "Agent"
|
|
case mcp = "MCP"
|
|
case models = "Models"
|
|
case code = "Code"
|
|
case aws = "AWS"
|
|
case drive = "Drive"
|
|
case git = "Git"
|
|
case bridge = "LangBridge"
|
|
case repair = "Repair"
|
|
case telemetry = "Telemetry"
|
|
|
|
var id: String { rawValue }
|
|
|
|
var systemImage: String {
|
|
switch self {
|
|
case .web: return "globe"
|
|
case .chat: return "bubble.left.and.bubble.right"
|
|
case .agent: return "person.crop.square.filled.and.at.rectangle"
|
|
case .mcp: return "antenna.radiowaves.left.and.right"
|
|
case .models: return "cube.transparent"
|
|
case .code: return "chevron.left.forwardslash.chevron.right"
|
|
case .aws: return "cloud"
|
|
case .drive: return "externaldrive"
|
|
case .git: return "arrow.triangle.branch"
|
|
case .bridge: return "link"
|
|
case .repair: return "wrench.and.screwdriver"
|
|
case .telemetry: return "waveform.path.ecg"
|
|
}
|
|
}
|
|
}
|
|
|
|
struct CxLLMSectionView: View {
|
|
let item: SidebarItem
|
|
|
|
var body: some View {
|
|
VStack(alignment: .leading, spacing: 16) {
|
|
Label(item.rawValue, systemImage: item.systemImage)
|
|
.font(.title)
|
|
Divider()
|
|
switch item {
|
|
case .chat: moduleCard(name: "CxChat", version: "seed")
|
|
case .agent: moduleCard(name: "CxAgent", version: "seed")
|
|
case .mcp: moduleCard(name: "CxMCP", version: "seed")
|
|
case .models: moduleCard(name: "CxModels", version: "seed")
|
|
case .code: moduleCard(name: "CxCode", version: "seed")
|
|
case .aws: moduleCard(name: "CxAWS", version: "seed")
|
|
case .drive: moduleCard(name: "CxDrive", version: "seed")
|
|
case .git: moduleCard(name: "CxGit", version: "seed")
|
|
case .bridge: moduleCard(name: "CxLangBridge", version: "seed")
|
|
case .repair: moduleCard(name: "CxARA", version: "seed")
|
|
case .telemetry: moduleCard(name: "CxInstrument", version: "seed")
|
|
case .web: EmptyView()
|
|
}
|
|
Spacer()
|
|
}
|
|
.padding(24)
|
|
.frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .topLeading)
|
|
}
|
|
|
|
@ViewBuilder
|
|
private func moduleCard(name: String, version: String) -> some View {
|
|
VStack(alignment: .leading, spacing: 8) {
|
|
Text(name).font(.headline)
|
|
Text("Imported from CxLLM-SDK. Phase 3 will replace this card with the real UI surface.")
|
|
.font(.callout).foregroundStyle(.secondary)
|
|
HStack(spacing: 12) {
|
|
Text("module").font(.caption2).foregroundStyle(.tertiary)
|
|
Text(name).font(.caption.monospaced())
|
|
Text("•").font(.caption2).foregroundStyle(.tertiary)
|
|
Text("v\(version)").font(.caption.monospaced())
|
|
}
|
|
.padding(.top, 4)
|
|
}
|
|
.padding(16)
|
|
.background(.quaternary.opacity(0.4), in: RoundedRectangle(cornerRadius: 10))
|
|
}
|
|
}
|