Merge icon, delete-branch-after-merge setting, floating tab bar; bump to 2.0
Build iOS App / Build .ipa and publish source (push) Successful in 22s

- Merge button: use the proper SF Symbol 'arrow.triangle.merge' instead of
  the download icon 'arrow.down.circle'.
- Add a Settings toggle 'Delete branch after merge'. When on, the merge call
  passes delete_branch_after_merge=true and the head branch is deleted after
  a successful merge (best-effort).
- PR detail bottom tab bar: floating capsule style (regularMaterial + shadow)
  like the latest iOS tab bars, instead of a full-width bar.
- Bump to 2.0.
This commit is contained in:
Hermes committed 2026-08-12 22:37:42 +00:00
1 parent fce0385708
commit 53b3f69d0f
6 files changed
+49 -12

No files matched your search

+5
View File
@@ -23,12 +23,17 @@ final class SettingsStore: ObservableObject {
didSet { UserDefaults.standard.set(mergeGateMode.rawValue,
forKey: "mergeGateMode") }
}
@Published var deleteBranchAfterMerge: Bool {
didSet { UserDefaults.standard.set(deleteBranchAfterMerge,
forKey: "deleteBranchAfterMerge") }
}
private init() {
instanceURL = KeychainHelper.get("instanceURL") ?? "https://gitea.bueso.eu"
token = KeychainHelper.get("token") ?? ""
let raw = UserDefaults.standard.string(forKey: "mergeGateMode")
mergeGateMode = MergeGateMode(rawValue: raw ?? "") ?? .warn
deleteBranchAfterMerge = UserDefaults.standard.bool(forKey: "deleteBranchAfterMerge")
}
var isConfigured: Bool {
+4
View File
@@ -5,6 +5,7 @@ struct SettingsView: View {
@State private var instanceURL: String
@State private var token: String
@State private var mergeGateMode: MergeGateMode
@State private var deleteBranchAfterMerge: Bool
@State private var testResult: TestResult?
@State private var testing = false
@State private var showLogoutConfirm = false
@@ -18,6 +19,7 @@ struct SettingsView: View {
_instanceURL = State(initialValue: SettingsStore.shared.instanceURL)
_token = State(initialValue: SettingsStore.shared.token)
_mergeGateMode = State(initialValue: SettingsStore.shared.mergeGateMode)
_deleteBranchAfterMerge = State(initialValue: SettingsStore.shared.deleteBranchAfterMerge)
}
var body: some View {
@@ -49,6 +51,7 @@ struct SettingsView: View {
Text("Warn mode shows CI status and allows merging a red PR after confirmation. Block mode disables merge while any check is failing.")
.font(.caption)
.foregroundColor(.secondary)
Toggle("Delete branch after merge", isOn: $deleteBranchAfterMerge)
}
Section("Diagnostics") {
@@ -130,6 +133,7 @@ struct SettingsView: View {
instanceURL.trimmingCharacters(in: .whitespacesAndNewlines)
SettingsStore.shared.token = token
SettingsStore.shared.mergeGateMode = mergeGateMode
SettingsStore.shared.deleteBranchAfterMerge = deleteBranchAfterMerge
dismiss()
}
}