native macOS codings agent orchestrator
6
fork

Configure Feed

Select the types of activity you want to include in your feed.

Update code format

onevcat 96411b13 25e779bd

+124 -109
+12 -8
supacode/CLIService/OpenCommandHandler.swift
··· 328 328 createTabAtPath(worktreeID, subpath) 329 329 } 330 330 bringAppToFront() 331 - guard let target = await waitForOpenTarget( 332 - selector: .worktree(worktreeID), 333 - preferredPaneCWD: result.resolvedPath ?? input.path 334 - ) else { 331 + guard 332 + let target = await waitForOpenTarget( 333 + selector: .worktree(worktreeID), 334 + preferredPaneCWD: result.resolvedPath ?? input.path 335 + ) 336 + else { 335 337 return makeFailure(message: "Failed to resolve the focused target for '\(worktreeID)'.") 336 338 } 337 339 return makeSuccess( ··· 365 367 366 368 selectWorktree(worktreeID) 367 369 createTabAtPath(worktreeID, path) 368 - guard let target = await waitForOpenTarget( 369 - selector: .worktree(worktreeID), 370 - preferredPaneCWD: path 371 - ) else { 370 + guard 371 + let target = await waitForOpenTarget( 372 + selector: .worktree(worktreeID), 373 + preferredPaneCWD: path 374 + ) 375 + else { 372 376 return makeFailure(message: "Failed to resolve the newly opened target for '\(path)'.") 373 377 } 374 378
+10 -6
supacode/CLIService/Shared/KeyCommandPayload.swift
··· 289 289 } 290 290 291 291 public static func descriptor(for raw: String) -> KeyTokenDescriptor? { 292 - let normalizedInput = raw 292 + let normalizedInput = 293 + raw 293 294 .trimmingCharacters(in: .whitespacesAndNewlines) 294 295 .replacing("+", with: "-") 295 296 296 297 guard !normalizedInput.isEmpty else { return nil } 297 298 298 - let parts = normalizedInput 299 + let parts = 300 + normalizedInput 299 301 .split(separator: "-", omittingEmptySubsequences: false) 300 302 .map(String.init) 301 303 guard !parts.isEmpty, !parts.contains(where: \.isEmpty) else { return nil } ··· 307 309 for baseLength in baseLengths where parts.count >= baseLength { 308 310 let baseRaw = parts.suffix(baseLength).joined(separator: "-") 309 311 guard let resolvedBase = baseDescriptor(for: baseRaw) else { continue } 310 - guard let modifiers = modifiers( 311 - from: parts.dropLast(baseLength), 312 - implicitModifiers: resolvedBase.implicitModifiers 313 - ) else { 312 + guard 313 + let modifiers = modifiers( 314 + from: parts.dropLast(baseLength), 315 + implicitModifiers: resolvedBase.implicitModifiers 316 + ) 317 + else { 314 318 return nil 315 319 } 316 320
+2 -1
supacode/Clients/CLIInstall/CLIInstallClient.swift
··· 113 113 } 114 114 115 115 // Privilege escalation via osascript 116 - let script = "mkdir -p '\(shellEscape(dir))' && " 116 + let script = 117 + "mkdir -p '\(shellEscape(dir))' && " 117 118 + "rm -f '\(shellEscape(destination))' && " 118 119 + "ln -s '\(shellEscape(source))' '\(shellEscape(destination))'" 119 120 try runPrivileged(script: script)
+2 -2
supacode/Features/CommandPalette/Reducer/CommandPaletteFeature.swift
··· 308 308 subtitle: repository.name, 309 309 kind: .openRepositoryOnCodeHost(selectedWorktreeID), 310 310 priorityTier: 2 311 - ), 311 + ) 312 312 ] 313 313 } 314 314 ··· 394 394 subtitle: pullRequest.title, 395 395 kind: .openPullRequest(worktreeID), 396 396 priorityTier: 2 397 - ), 397 + ) 398 398 ] 399 399 400 400 if let readyItem = makeReadyItem() {
+2 -2
supacode/Features/Repositories/Reducer/RepositoriesFeature+WorktreeOrdering.swift
··· 102 102 var effects: [Effect<Action>] = [ 103 103 .run { _ in 104 104 await repositoryPersistence.savePinnedWorktreeIDs(pinnedWorktreeIDs) 105 - }, 105 + } 106 106 ] 107 107 if didUpdateWorktreeOrder { 108 108 let worktreeOrderByRepository = state.worktreeOrderByRepository ··· 129 129 var effects: [Effect<Action>] = [ 130 130 .run { _ in 131 131 await repositoryPersistence.savePinnedWorktreeIDs(pinnedWorktreeIDs) 132 - }, 132 + } 133 133 ] 134 134 if didUpdateWorktreeOrder { 135 135 let worktreeOrderByRepository = state.worktreeOrderByRepository
+1 -1
supacode/Features/Repositories/Views/WorktreeDetailView.swift
··· 911 911 key: "u", 912 912 modifiers: UserCustomShortcutModifiers() 913 913 ) 914 - ), 914 + ) 915 915 ], 916 916 isUpdateAvailable: true, 917 917 availableUpdateVersion: "2026.5.1"
+4 -2
supacode/Infrastructure/Ghostty/GhosttyRuntime.swift
··· 840 840 } 841 841 } 842 842 843 - let pair = resolvedPair 843 + let pair = 844 + resolvedPair 844 845 ?? GhosttyThemePair(light: "Catppuccin Latte", dark: "Ghostty Default Style Dark") 845 846 ghosttyCLICacheLock.lock() 846 847 cachedFallbackThemePair = pair ··· 1118 1119 } 1119 1120 1120 1121 nonisolated fileprivate convenience init?(ghosttyHexColor: String) { 1121 - let cleaned = ghosttyHexColor 1122 + let cleaned = 1123 + ghosttyHexColor 1122 1124 .trimmingCharacters(in: .whitespacesAndNewlines) 1123 1125 .replacingOccurrences(of: "#", with: "") 1124 1126 guard cleaned.count == 6, let value = Int(cleaned, radix: 16) else {
+10 -10
supacodeTests/AppFeatureCustomCommandTests.swift
··· 21 21 command: "swift test", 22 22 execution: .shellScript, 23 23 shortcut: nil, 24 - ), 24 + ) 25 25 ] 26 26 27 27 let store = TestStore(initialState: state) { ··· 44 44 autoCloseOnSuccess: false, 45 45 customCommandName: "Test", 46 46 customCommandIcon: "checkmark.circle" 47 - ), 47 + ) 48 48 ], 49 49 ) 50 50 } ··· 63 63 command: "pnpm test --watch", 64 64 execution: .terminalInput, 65 65 shortcut: nil, 66 - ), 66 + ) 67 67 ] 68 68 69 69 let store = TestStore(initialState: state) { ··· 99 99 execution: .split, 100 100 splitDirection: .down, 101 101 shortcut: nil, 102 - ), 102 + ) 103 103 ] 104 104 105 105 let store = TestStore(initialState: state) { ··· 122 122 autoCloseOnSuccess: false, 123 123 customCommandName: "Tail", 124 124 customCommandIcon: "doc.text" 125 - ), 125 + ) 126 126 ], 127 127 ) 128 128 } ··· 292 292 autoCloseOnSuccess: false, 293 293 customCommandName: "Five", 294 294 customCommandIcon: "5.circle" 295 - ), 295 + ) 296 296 ], 297 297 ) 298 298 } ··· 311 311 command: "npm test", 312 312 execution: .shellScript, 313 313 shortcut: nil, 314 - ), 314 + ) 315 315 ] 316 316 317 317 let store = TestStore(initialState: state) { ··· 337 337 autoCloseOnSuccess: false, 338 338 customCommandName: "Default", 339 339 customCommandIcon: nil 340 - ), 340 + ) 341 341 ], 342 342 ) 343 343 } ··· 356 356 command: "swift test", 357 357 execution: .shellScript, 358 358 shortcut: nil, 359 - ), 359 + ) 360 360 ] 361 361 362 362 let store = TestStore(initialState: state) { ··· 379 379 autoCloseOnSuccess: false, 380 380 customCommandName: "Blank", 381 381 customCommandIcon: nil 382 - ), 382 + ) 383 383 ], 384 384 ) 385 385 }
+5 -5
supacodeTests/AppFeaturePlainFolderTerminalTests.swift
··· 35 35 command: "pnpm test --watch", 36 36 execution: .terminalInput, 37 37 shortcut: nil 38 - ), 38 + ) 39 39 ] 40 40 ) 41 41 try localStorage.save( ··· 116 116 .createTab( 117 117 makePlainTerminalTarget(repository: repository), 118 118 runSetupScriptIfNew: false 119 - ), 119 + ) 120 120 ] 121 121 ) 122 122 } ··· 154 154 key: "y", 155 155 modifiers: UserCustomShortcutModifiers(command: true, shift: true) 156 156 ) 157 - ), 157 + ) 158 158 ] 159 159 ) 160 160 ··· 193 193 command: "pnpm test --watch", 194 194 execution: .terminalInput, 195 195 shortcut: nil 196 - ), 196 + ) 197 197 ] 198 198 let store = TestStore(initialState: state) { 199 199 AppFeature() ··· 211 211 .insertText( 212 212 makePlainTerminalTarget(repository: repository), 213 213 text: "pnpm test --watch" 214 - ), 214 + ) 215 215 ] 216 216 ) 217 217 }
+1 -1
supacodeTests/AppFeatureSettingsChangedTests.swift
··· 64 64 overrides: [ 65 65 AppShortcuts.CommandID.openSettings: KeybindingUserOverride( 66 66 binding: Keybinding(key: ";", modifiers: .init(command: true)) 67 - ), 67 + ) 68 68 ] 69 69 ) 70 70
+8 -8
supacodeTests/AppShortcutsTests.swift
··· 71 71 AppShortcuts.CommandID.runScript: KeybindingUserOverride( 72 72 binding: nil, 73 73 isEnabled: false 74 - ), 74 + ) 75 75 ] 76 76 ) 77 77 let resolvedDisabled = KeybindingResolver.resolve( ··· 268 268 overrides: [ 269 269 AppShortcuts.CommandID.selectNextTerminalTab: KeybindingUserOverride( 270 270 binding: Keybinding(key: "t", modifiers: .init(command: true, shift: true)) 271 - ), 271 + ) 272 272 ] 273 273 ) 274 274 let resolved = KeybindingResolver.resolve( ··· 288 288 overrides: [ 289 289 AppShortcuts.CommandID.selectWorktree1: KeybindingUserOverride( 290 290 binding: Keybinding(key: "m", modifiers: .init(control: true)) 291 - ), 291 + ) 292 292 ] 293 293 ) 294 294 let resolved = KeybindingResolver.resolve( ··· 308 308 AppShortcuts.CommandID.selectNextTerminalPane: KeybindingUserOverride( 309 309 binding: Keybinding(key: "k", modifiers: .init(command: true)), 310 310 isEnabled: false 311 - ), 311 + ) 312 312 ] 313 313 ) 314 314 let resolved = KeybindingResolver.resolve( ··· 327 327 overrides: [ 328 328 AppShortcuts.CommandID.openSettings: KeybindingUserOverride( 329 329 binding: Keybinding(key: ";", modifiers: .init(command: true)) 330 - ), 330 + ) 331 331 ] 332 332 ) 333 333 let resolved = KeybindingResolver.resolve( ··· 359 359 AppShortcuts.CommandID.openSettings: KeybindingUserOverride( 360 360 binding: Keybinding(key: ";", modifiers: .init(command: true)), 361 361 isEnabled: false 362 - ), 362 + ) 363 363 ] 364 364 ) 365 365 let resolved = KeybindingResolver.resolve( ··· 397 397 overrides: [ 398 398 AppShortcuts.CommandID.openSettings: KeybindingUserOverride( 399 399 binding: Keybinding(key: "space", modifiers: .init(command: true)) 400 - ), 400 + ) 401 401 ] 402 402 ) 403 403 let resolved = KeybindingResolver.resolve( ··· 416 416 overrides: [ 417 417 AppShortcuts.CommandID.openSettings: KeybindingUserOverride( 418 418 binding: Keybinding(key: "digit_1", modifiers: .init(command: true)) 419 - ), 419 + ) 420 420 ] 421 421 ) 422 422 let resolved = KeybindingResolver.resolve(
+1 -1
supacodeTests/CLICommandResponseTests.swift
··· 81 81 "items": [ 82 82 ["id": "a", "value": 1], 83 83 ["id": "b", "value": 2], 84 - ], 84 + ] 85 85 ] 86 86 let rawData = try JSONSerialization.data(withJSONObject: nested) 87 87 let raw = RawJSON(rawData)
+3 -3
supacodeTests/CLIListCommandHandlerTests.swift
··· 35 35 cwd: "/Users/onevcat/Projects/Prowl" 36 36 ), 37 37 ] 38 - ), 38 + ) 39 39 ] 40 40 ), 41 41 .init( ··· 56 56 id: UUID(uuidString: "EF65FF31-1B72-40B2-80DA-3AA87B7B6858")!, 57 57 title: "notes", 58 58 cwd: "/Users/onevcat/Projects/Notes" 59 - ), 59 + ) 60 60 ] 61 - ), 61 + ) 62 62 ] 63 63 ), 64 64 ],
+3 -3
supacodeTests/CommandPaletteFeatureTests.swift
··· 51 51 copyIgnored: false, 52 52 copyUntracked: false 53 53 ) 54 - ), 54 + ) 55 55 ] 56 56 57 57 let items = CommandPaletteFeature.commandPaletteItems(from: state) ··· 76 76 description: "Focus the split to the right.", 77 77 action: "goto_split:right", 78 78 actionKey: "goto_split" 79 - ), 79 + ) 80 80 ] 81 81 ) 82 82 ··· 150 150 description: "", 151 151 action: "goto_split:right", 152 152 actionKey: "goto_split" 153 - ), 153 + ) 154 154 ] 155 155 ) 156 156
+14 -11
supacodeTests/GhosttyUserConfigSnapshotTests.swift
··· 4 4 5 5 struct GhosttyUserConfigSnapshotTests { 6 6 @Test func detectsDualTheme() { 7 - let snapshot = GhosttyUserConfigSnapshot.parse(showConfigOutput: """ 8 - theme = light:Catppuccin Latte,dark:Catppuccin Frappe 9 - background = #1f1f28 10 - """) 7 + let snapshot = GhosttyUserConfigSnapshot.parse( 8 + showConfigOutput: """ 9 + theme = light:Catppuccin Latte,dark:Catppuccin Frappe 10 + background = #1f1f28 11 + """) 11 12 12 13 #expect(snapshot.themeMode == .dual) 13 14 } 14 15 15 16 @Test func detectsSingleTheme() { 16 - let snapshot = GhosttyUserConfigSnapshot.parse(showConfigOutput: """ 17 - theme = kanagawabones 18 - background = #f2f2f2 19 - """) 17 + let snapshot = GhosttyUserConfigSnapshot.parse( 18 + showConfigOutput: """ 19 + theme = kanagawabones 20 + background = #f2f2f2 21 + """) 20 22 21 23 #expect(snapshot.themeMode == .single) 22 24 } 23 25 24 26 @Test func detectsUnsetTheme() { 25 - let snapshot = GhosttyUserConfigSnapshot.parse(showConfigOutput: """ 26 - background = #1f1f28 27 - """) 27 + let snapshot = GhosttyUserConfigSnapshot.parse( 28 + showConfigOutput: """ 29 + background = #1f1f28 30 + """) 28 31 29 32 #expect(snapshot.themeMode == .none) 30 33 }
+16 -16
supacodeTests/KeybindingBehaviorMatrixTests.swift
··· 47 47 policy: .warnAndPreferUserOverride, 48 48 allowOverride: true, 49 49 defaultBinding: binding("a") 50 - ), 50 + ) 51 51 ]) 52 52 let overrides = overrideStore(["cmd.configurable": .init(binding: binding("z"))]) 53 53 let resolved = KeybindingResolver.resolve(schema: schema, userOverrides: overrides) ··· 64 64 policy: .disallowUserOverride, 65 65 allowOverride: false, 66 66 defaultBinding: binding("q") 67 - ), 67 + ) 68 68 ]) 69 69 let overrides = overrideStore(["cmd.fixed": .init(binding: binding("z"))]) 70 70 let resolved = KeybindingResolver.resolve(schema: schema, userOverrides: overrides) ··· 81 81 policy: .disallowUserOverride, 82 82 allowOverride: false, 83 83 defaultBinding: binding("q") 84 - ), 84 + ) 85 85 ]) 86 86 let migrated = ["cmd.fixed": KeybindingUserOverride(binding: binding("z"))] 87 87 let resolved = KeybindingResolver.resolve(schema: schema, migratedOverrides: migrated) ··· 98 98 policy: .localOnly, 99 99 allowOverride: true, 100 100 defaultBinding: binding("r") 101 - ), 101 + ) 102 102 ]) 103 103 let overrides = overrideStore(["cmd.local": .init(binding: binding("t"))]) 104 104 let resolved = KeybindingResolver.resolve(schema: schema, userOverrides: overrides) ··· 115 115 policy: .warnAndPreferUserOverride, 116 116 allowOverride: true, 117 117 defaultBinding: nil 118 - ), 118 + ) 119 119 ]) 120 120 let overrides = overrideStore(["custom_command.build": .init(binding: binding("b", shift: true))]) 121 121 let resolved = KeybindingResolver.resolve(schema: schema, userOverrides: overrides) ··· 134 134 policy: .warnAndPreferUserOverride, 135 135 allowOverride: true, 136 136 defaultBinding: binding("a") 137 - ), 137 + ) 138 138 ]) 139 139 let overrides = overrideStore(["cmd.configurable": .init(binding: nil, isEnabled: false)]) 140 140 let resolved = KeybindingResolver.resolve(schema: schema, userOverrides: overrides) ··· 151 151 policy: .disallowUserOverride, 152 152 allowOverride: false, 153 153 defaultBinding: binding("q") 154 - ), 154 + ) 155 155 ]) 156 156 let overrides = overrideStore(["cmd.fixed": .init(binding: nil, isEnabled: false)]) 157 157 let resolved = KeybindingResolver.resolve(schema: schema, userOverrides: overrides) ··· 168 168 policy: .localOnly, 169 169 allowOverride: true, 170 170 defaultBinding: binding("r") 171 - ), 171 + ) 172 172 ]) 173 173 let overrides = overrideStore(["cmd.local": .init(binding: nil, isEnabled: false)]) 174 174 let resolved = KeybindingResolver.resolve(schema: schema, userOverrides: overrides) ··· 187 187 policy: .warnAndPreferUserOverride, 188 188 allowOverride: true, 189 189 defaultBinding: binding("a") 190 - ), 190 + ) 191 191 ]) 192 192 let migrated = ["cmd.alpha": KeybindingUserOverride(binding: binding("m"))] 193 193 let resolved = KeybindingResolver.resolve(schema: schema, migratedOverrides: migrated) ··· 204 204 policy: .warnAndPreferUserOverride, 205 205 allowOverride: true, 206 206 defaultBinding: binding("a") 207 - ), 207 + ) 208 208 ]) 209 209 let migrated = ["cmd.alpha": KeybindingUserOverride(binding: binding("m"))] 210 210 let overrides = overrideStore(["cmd.alpha": .init(binding: binding("u"))]) ··· 226 226 policy: .warnAndPreferUserOverride, 227 227 allowOverride: true, 228 228 defaultBinding: binding("a") 229 - ), 229 + ) 230 230 ]) 231 231 let migrated = ["cmd.alpha": KeybindingUserOverride(binding: binding("m"))] 232 232 let overrides = overrideStore(["cmd.alpha": .init(binding: nil, isEnabled: false)]) ··· 248 248 policy: .disallowUserOverride, 249 249 allowOverride: false, 250 250 defaultBinding: binding("q") 251 - ), 251 + ) 252 252 ]) 253 253 let migrated = ["cmd.fixed": KeybindingUserOverride(binding: binding("m"))] 254 254 let resolved = KeybindingResolver.resolve(schema: schema, migratedOverrides: migrated) ··· 265 265 policy: .warnAndPreferUserOverride, 266 266 allowOverride: true, 267 267 defaultBinding: binding("a") 268 - ), 268 + ) 269 269 ]) 270 270 // Migrated binding is identical to default — source stays appDefault because didChange is false 271 271 let migrated = ["cmd.alpha": KeybindingUserOverride(binding: binding("a"))] ··· 465 465 policy: .warnAndPreferUserOverride, 466 466 allowOverride: true, 467 467 defaultBinding: binding("a") 468 - ), 468 + ) 469 469 ]) 470 470 let overrides = overrideStore(["cmd.one": .init(binding: binding("z"))]) 471 471 ··· 623 623 policy: .warnAndPreferUserOverride, 624 624 allowOverride: true, 625 625 defaultBinding: binding("a") 626 - ), 626 + ) 627 627 ]) 628 628 let overrides = overrideStore(["cmd.nonexistent": .init(binding: binding("z"))]) 629 629 let resolved = KeybindingResolver.resolve(schema: schema, userOverrides: overrides) ··· 641 641 policy: .warnAndPreferUserOverride, 642 642 allowOverride: true, 643 643 defaultBinding: binding("a") 644 - ), 644 + ) 645 645 ]) 646 646 // isEnabled=true but binding=nil → no change, preserves default 647 647 let overrides = overrideStore(["cmd.one": .init(binding: nil, isEnabled: true)])
+3 -3
supacodeTests/KeybindingSchemaTests.swift
··· 21 21 key: "s", 22 22 modifiers: KeybindingModifiers(command: true, control: true) 23 23 ) 24 - ), 24 + ) 25 25 ] 26 26 ) 27 27 ··· 99 99 let migratedOverrides: [String: KeybindingUserOverride] = [ 100 100 "command.alpha": KeybindingUserOverride( 101 101 binding: Keybinding(key: "m", modifiers: KeybindingModifiers(command: true)) 102 - ), 102 + ) 103 103 ] 104 104 105 105 let userOverrides = KeybindingUserOverrideStore( ··· 207 207 allowUserOverride: true, 208 208 conflictPolicy: .warnAndPreferUserOverride, 209 209 defaultBinding: defaultBinding 210 - ), 210 + ) 211 211 ] 212 212 ) 213 213 let overrides = KeybindingUserOverrideStore(
+5 -4
supacodeTests/OpenCommandHandlerTests.swift
··· 231 231 #expect(target.pane.id == "0FB4DDB4-A797-4315-A00E-8AAFB32BFC95") 232 232 233 233 let json = try jsonObject(from: response) 234 - #expect(Set(json.keys) == [ 235 - "invocation", "requested_path", "resolved_path", "resolution", 236 - "app_launched", "brought_to_front", "created_tab", "target", 237 - ]) 234 + #expect( 235 + Set(json.keys) == [ 236 + "invocation", "requested_path", "resolved_path", "resolution", 237 + "app_launched", "brought_to_front", "created_tab", "target", 238 + ]) 238 239 let jsonTarget = try #require(json["target"] as? [String: Any]) 239 240 #expect(Set(jsonTarget.keys) == ["worktree", "tab", "pane"]) 240 241 let worktree = try #require(jsonTarget["worktree"] as? [String: Any])
+6 -6
supacodeTests/RepositoriesFeatureTests.swift
··· 622 622 [ 623 623 PersistedRepositoryEntry(path: repoRoot, kind: .git), 624 624 PersistedRepositoryEntry(path: plainRoot, kind: .plain), 625 - ], 625 + ] 626 626 ] 627 627 #expect(savedEntries.value == expectedSavedEntries) 628 628 } ··· 1953 1953 id: pendingID, 1954 1954 repositoryID: repository.id, 1955 1955 progress: WorktreeCreationProgress(stage: .loadingLocalBranches) 1956 - ), 1956 + ) 1957 1957 ] 1958 1958 let store = TestStore(initialState: state) { 1959 1959 RepositoriesFeature() ··· 1991 1991 stage: .checkingRepositoryMode, 1992 1992 worktreeName: "swift-otter" 1993 1993 ) 1994 - ), 1994 + ) 1995 1995 ] 1996 1996 let store = TestStore(initialState: state) { 1997 1997 RepositoriesFeature() ··· 2186 2186 addedLines: nil, 2187 2187 removedLines: nil, 2188 2188 pullRequest: makePullRequest(state: "MERGED") 2189 - ), 2189 + ) 2190 2190 ] 2191 2191 let fixedDate = Date(timeIntervalSince1970: 1_000_000) 2192 2192 let store = TestStore(initialState: state) { ··· 2880 2880 id: removedWorktree.id, 2881 2881 repositoryID: repository.id, 2882 2882 progress: WorktreeCreationProgress(stage: .choosingWorktreeName) 2883 - ), 2883 + ) 2884 2884 ] 2885 2885 initialState.pinnedWorktreeIDs = [removedWorktree.id] 2886 2886 initialState.worktreeInfoByID = [ ··· 2967 2967 id: pendingID, 2968 2968 repositoryID: repository.id, 2969 2969 progress: WorktreeCreationProgress(stage: .loadingLocalBranches) 2970 - ), 2970 + ) 2971 2971 ] 2972 2972 initialState.selection = .worktree(pendingID) 2973 2973 initialState.sidebarSelectedWorktreeIDs = [existingWorktree.id, pendingID]
+2 -2
supacodeTests/RepositorySettingsFeatureTests.swift
··· 135 135 key: "b", 136 136 modifiers: UserCustomShortcutModifiers(command: true) 137 137 ) 138 - ), 138 + ) 139 139 ] 140 140 ) 141 141 ··· 167 167 command: "echo updated", 168 168 execution: .shellScript, 169 169 shortcut: nil 170 - ), 170 + ) 171 171 ] 172 172 ) 173 173
+1 -1
supacodeTests/SettingsFeatureTests.swift
··· 348 348 overrides: [ 349 349 AppShortcuts.CommandID.openSettings: KeybindingUserOverride( 350 350 binding: Keybinding(key: ";", modifiers: .init(command: true)) 351 - ), 351 + ) 352 352 ] 353 353 ) 354 354
+2 -2
supacodeTests/TerminalLayoutPersistenceClientTests.swift
··· 72 72 title: nil, 73 73 icon: nil, 74 74 splitRoot: .leaf(surfaceID: "9B2F6D8C-44A4-42C5-8F9E-962108301901") 75 - ), 75 + ) 76 76 ] 77 - ), 77 + ) 78 78 ] 79 79 ) 80 80 }
+5 -5
supacodeTests/TerminalLayoutSnapshotPayloadTests.swift
··· 56 56 worktreeID: "wt-1", 57 57 selectedTabID: "tab-0", 58 58 tabs: tabs 59 - ), 59 + ) 60 60 ] 61 61 ) 62 62 let data = try JSONEncoder().encode(payload) ··· 120 120 tabs: [ 121 121 makeTab(tabID: "tab-1") 122 122 ] 123 - ), 123 + ) 124 124 ] 125 125 ) 126 126 let data = try JSONEncoder().encode(payload) ··· 231 231 worktreeID: "wt-1", 232 232 selectedTabID: "tab-1", 233 233 tabs: [tab] 234 - ), 234 + ) 235 235 ] 236 236 ) 237 237 let data = try JSONEncoder().encode(payload) ··· 251 251 worktreeID: "wt-1", 252 252 selectedTabID: "tab-1", 253 253 tabs: [tab] 254 - ), 254 + ) 255 255 ] 256 256 ) 257 257 let data = try JSONEncoder().encode(payload) ··· 320 320 tabs: [ 321 321 makeTab(tabID: tabID, splitRoot: splitRoot) 322 322 ] 323 - ), 323 + ) 324 324 ] 325 325 ) 326 326 }
+2 -2
supacodeTests/UserRepositorySettingsKeyTests.swift
··· 42 42 key: "u", 43 43 modifiers: UserCustomShortcutModifiers(command: true) 44 44 ) 45 - ), 45 + ) 46 46 ] 47 47 ) 48 48 ··· 77 77 key: "u", 78 78 modifiers: UserCustomShortcutModifiers(command: true) 79 79 ) 80 - ), 80 + ) 81 81 ] 82 82 ) 83 83 let encoder = JSONEncoder()
+4 -4
supacodeTests/WorktreeTerminalManagerTests.swift
··· 77 77 title: "Unread", 78 78 body: "body", 79 79 isRead: false 80 - ), 80 + ) 81 81 ] 82 82 state.onNotificationIndicatorChanged?() 83 83 state.notifications = [ ··· 86 86 title: "Read", 87 87 body: "body", 88 88 isRead: true 89 - ), 89 + ) 90 90 ] 91 91 92 92 let stream = manager.eventStream() ··· 237 237 title: nil, 238 238 icon: nil, 239 239 splitRoot: .leaf(surfaceID: "9B2F6D8C-44A4-42C5-8F9E-962108301901") 240 - ), 240 + ) 241 241 ] 242 - ), 242 + ) 243 243 ] 244 244 ) 245 245 let manager = WorktreeTerminalManager(