Fix debug pane restart button visibility and improve layout

- Always show restart button when in Rust server mode (previously was hidden when server was healthy)
- Move server mode selection above HTTP server status for better UX flow
- Users can now always manually restart the Rust server regardless of health status
This commit is contained in:
Peter Steinberger 2025-06-18 20:08:35 +02:00
parent 36c4f9066c
commit 447a43719d

View file

@ -253,6 +253,46 @@ private struct ServerSection: View {
var body: some View {
Section {
VStack(alignment: .leading, spacing: 12) {
// Server Mode Configuration
HStack {
Text("Server Mode")
Spacer()
Picker("", selection: Binding(
get: { ServerMode(rawValue: serverModeString) ?? .hummingbird },
set: { newMode in
serverModeString = newMode.rawValue
Task {
await serverManager.switchMode(to: newMode)
}
}
)) {
ForEach(ServerMode.allCases, id: \.self) { mode in
VStack(alignment: .leading) {
Text(mode.displayName)
Text(mode.description)
.font(.caption)
.foregroundStyle(.secondary)
}
.tag(mode)
}
}
.pickerStyle(.menu)
.labelsHidden()
.disabled(serverManager.isSwitching)
}
if serverManager.isSwitching {
HStack {
ProgressView()
.scaleEffect(0.8)
Text("Switching server mode...")
.font(.caption)
.foregroundStyle(.secondary)
}
}
Divider()
// Server Status
HStack {
VStack(alignment: .leading, spacing: 4) {
@ -275,8 +315,8 @@ private struct ServerSection: View {
Spacer()
// Show restart button for Rust mode when server is not healthy
if serverModeString == ServerMode.rust.rawValue && (!isServerRunning || !isServerHealthy) {
// Show restart button for Rust mode always
if serverModeString == ServerMode.rust.rawValue {
Button("Restart") {
Task {
await serverManager.manualRestart()
@ -324,46 +364,6 @@ private struct ServerSection: View {
}
}
}
Divider()
// Server Mode Configuration
HStack {
Text("Server Mode")
Spacer()
Picker("", selection: Binding(
get: { ServerMode(rawValue: serverModeString) ?? .hummingbird },
set: { newMode in
serverModeString = newMode.rawValue
Task {
await serverManager.switchMode(to: newMode)
}
}
)) {
ForEach(ServerMode.allCases, id: \.self) { mode in
VStack(alignment: .leading) {
Text(mode.displayName)
Text(mode.description)
.font(.caption)
.foregroundStyle(.secondary)
}
.tag(mode)
}
}
.pickerStyle(.menu)
.labelsHidden()
.disabled(serverManager.isSwitching)
}
if serverManager.isSwitching {
HStack {
ProgressView()
.scaleEffect(0.8)
Text("Switching server mode...")
.font(.caption)
.foregroundStyle(.secondary)
}
}
}
.padding(.vertical, 4)
} header: {