Add persistent app quit control

This commit is contained in:
diyaa 2026-07-26 21:27:51 +02:00
parent e1e8ff89cd
commit 833a9bfec2
2 changed files with 18 additions and 6 deletions

View File

@ -1,3 +1,4 @@
import AppKit
import SwiftUI
@main
@ -38,14 +39,24 @@ private struct RootView: View {
var body: some View {
VStack(spacing: 0) {
Picker("Section", selection: $selectedTab) {
ForEach(AppTab.allCases) { tab in
Label(tab.title, systemImage: tab.icon)
.tag(tab)
HStack(spacing: 8) {
Picker("Section", selection: $selectedTab) {
ForEach(AppTab.allCases) { tab in
Label(tab.title, systemImage: tab.icon)
.tag(tab)
}
}
.pickerStyle(.segmented)
.labelsHidden()
Button {
NSApplication.shared.terminate(nil)
} label: {
Image(systemName: "power")
}
.accessibilityLabel("Quit Fchati")
.help("Quit Fchati")
}
.pickerStyle(.segmented)
.labelsHidden()
.padding()
Divider()

View File

@ -197,6 +197,7 @@
- The relay now defaults to the production Traefik certificate resolver (`myresolver`) and allows a host-specific override through `TRAEFIK_CERT_RESOLVER`.
- Corrected the production hostname to `fchaty.diyaa.de` in the relay route and macOS application HTTP and WebSocket clients.
- `relay-server/Dockerfile` initializes all persistent-data paths as the unprivileged `node` user, preventing pairing, queue, and upload write failures on newly created volumes.
- The macOS app now has an always-visible quit control beside the top-level tabs, in addition to the existing Settings action.
## Bug Fixes — Post-Review ✅