···11-/// Identifies the kind of script that blocks a worktree state transition
22-/// and runs in a dedicated terminal tab. Adding a new case requires handling
33-/// in `AppFeature`'s `.blockingScriptCompleted` event router.
44-enum BlockingScriptKind: Hashable, Sendable {
11+/// Identifies the kind of script that runs in a dedicated terminal tab
22+/// with exit-code tracking. Some kinds (archive, delete) block worktree
33+/// state transitions until the script completes. Adding a new case
44+/// requires handling in `AppFeature`'s `.blockingScriptCompleted` event router.
55+enum BlockingScriptKind: Hashable, Sendable, CaseIterable {
66+ case run
57 case archive
68 case delete
79810 var tabTitle: String {
911 switch self {
1010- case .archive: return "ARCHIVE SCRIPT"
1111- case .delete: return "DELETE SCRIPT"
1212+ case .run: "Run Script"
1313+ case .archive: "Archive Script"
1414+ case .delete: "Delete Script"
1215 }
1316 }
14171518 var tabIcon: String {
1619 switch self {
1717- case .archive: return "archivebox.fill"
1818- case .delete: return "trash.fill"
2020+ case .run: "play.fill"
2121+ case .archive: "archivebox.fill"
2222+ case .delete: "trash.fill"
2323+ }
2424+ }
2525+2626+ var tabColor: TerminalTabTintColor {
2727+ switch self {
2828+ case .run: .green
2929+ case .archive: .orange
3030+ case .delete: .red
1931 }
2032 }
2133}
···11+import SwiftUI
22+33+/// Color token for terminal tab tint indicators, used in place of
44+/// `Color` so that `TerminalTabItem` can remain `Equatable` and `Sendable`.
55+enum TerminalTabTintColor: Hashable, Sendable {
66+ case green
77+ case orange
88+ case red
99+1010+ var color: Color {
1111+ switch self {
1212+ case .green: .green
1313+ case .orange: .orange
1414+ case .red: .red
1515+ }
1616+ }
1717+}