Add sysmte info in analysis view

This commit is contained in:
Beingpax 2025-07-11 19:11:34 +05:45
parent 62c421c0df
commit 9968ac3dcc
2 changed files with 87 additions and 6 deletions

View File

@ -446,7 +446,7 @@
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 138;
CURRENT_PROJECT_VERSION = 140;
DEVELOPMENT_ASSET_PATHS = "\"VoiceInk/Preview Content\"";
DEVELOPMENT_TEAM = V6J6A3VWY2;
ENABLE_HARDENED_RUNTIME = YES;
@ -461,7 +461,7 @@
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 14.0;
MARKETING_VERSION = 1.38;
MARKETING_VERSION = 1.40;
PRODUCT_BUNDLE_IDENTIFIER = com.prakashjoshipax.VoiceInk;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = YES;
@ -479,7 +479,7 @@
"CODE_SIGN_IDENTITY[sdk=macosx*]" = "Apple Development";
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 138;
CURRENT_PROJECT_VERSION = 140;
DEVELOPMENT_ASSET_PATHS = "\"VoiceInk/Preview Content\"";
DEVELOPMENT_TEAM = V6J6A3VWY2;
ENABLE_HARDENED_RUNTIME = YES;
@ -494,7 +494,7 @@
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 14.0;
MARKETING_VERSION = 1.38;
MARKETING_VERSION = 1.40;
PRODUCT_BUNDLE_IDENTIFIER = com.prakashjoshipax.VoiceInk;
PRODUCT_NAME = "$(TARGET_NAME)";
SWIFT_EMIT_LOC_STRINGS = YES;

View File

@ -21,6 +21,8 @@ struct PerformanceAnalysisView: View {
VStack(alignment: .leading, spacing: 30) {
summarySection
systemInfoSection
if !analysis.transcriptionModels.isEmpty {
transcriptionPerformanceSection
}
@ -32,13 +34,13 @@ struct PerformanceAnalysisView: View {
.padding()
}
}
.frame(minWidth: 550, idealWidth: 600, maxWidth: 700, minHeight: 450, idealHeight: 600, maxHeight: 800)
.frame(minWidth: 550, idealWidth: 600, maxWidth: 700, minHeight: 600, idealHeight: 750, maxHeight: 900)
.background(Color(.windowBackgroundColor))
}
private var header: some View {
HStack {
Text("Performance Benchmark")
Text("Performance Analysis")
.font(.title2)
.fontWeight(.bold)
Spacer()
@ -74,6 +76,20 @@ struct PerformanceAnalysisView: View {
}
}
private var systemInfoSection: some View {
VStack(alignment: .leading, spacing: 16) {
Text("System Information")
.font(.system(.title2, design: .default, weight: .bold))
.foregroundColor(.primary)
HStack(spacing: 12) {
SystemInfoCard(label: "Device", value: getMacModel())
SystemInfoCard(label: "Processor", value: getCPUInfo())
SystemInfoCard(label: "Memory", value: getMemoryInfo())
}
}
}
private var transcriptionPerformanceSection: some View {
VStack(alignment: .leading, spacing: 16) {
Text("Transcription Models")
@ -193,6 +209,30 @@ struct PerformanceAnalysisView: View {
}
}
// MARK: - Helper Functions for System Info
private func getMacModel() -> String {
var size = 0
sysctlbyname("hw.model", nil, &size, nil, 0)
var machine = [CChar](repeating: 0, count: size)
sysctlbyname("hw.model", &machine, &size, nil, 0)
return String(cString: machine)
}
private func getCPUInfo() -> String {
var size = 0
sysctlbyname("machdep.cpu.brand_string", nil, &size, nil, 0)
var buffer = [CChar](repeating: 0, count: size)
sysctlbyname("machdep.cpu.brand_string", &buffer, &size, nil, 0)
return String(cString: buffer)
}
private func getMemoryInfo() -> String {
let totalMemory = ProcessInfo.processInfo.physicalMemory
return ByteCountFormatter.string(fromByteCount: Int64(totalMemory), countStyle: .memory)
}
// MARK: - Subviews
struct SummaryCard: View {
@ -215,6 +255,47 @@ struct SummaryCard: View {
}
}
struct InfoRow: View {
let label: String
let value: String
var body: some View {
HStack {
Text(label)
.font(.headline)
.foregroundColor(.secondary)
Spacer()
Text(value)
.font(.body)
.foregroundColor(.primary)
}
}
}
struct SystemInfoCard: View {
let label: String
let value: String
var body: some View {
VStack(alignment: .leading, spacing: 4) {
Text(label)
.font(.caption.weight(.medium))
.foregroundColor(.secondary)
.textCase(.uppercase)
Text(value)
.font(.system(.body, design: .default, weight: .semibold))
.foregroundColor(.primary)
.lineLimit(2)
.fixedSize(horizontal: false, vertical: true)
}
.padding(12)
.frame(maxWidth: .infinity, minHeight: 60, alignment: .leading)
.background(CardBackground(isSelected: false))
.cornerRadius(8)
}
}
struct TranscriptionModelCard: View {
let modelStat: PerformanceAnalysisView.ModelStat