Problem
54 instances of try? across the app code (23 in SessionService, 17 in IssueTracker, 6 in Scaffolder, 3 in AllowListService, 3 in AppDelegate, 2 in HookConfigGenerator). Most discard errors from file I/O, shell commands, and JSON parsing without any logging. When something breaks in production, there's no diagnostic trail.
Proposed Improvement
Replace try? with either:
do/catch with NSLog for operations where failure matters (file deletion, shell commands, JSON parsing)
- Keep
try? only for truly optional operations (e.g., deleting a backup file that may not exist)
Effort
Low-Medium (1–2 hours). Audit each try?, decide if it should log, wrap in do/catch.
Files Affected
Sources/Crow/App/SessionService.swift (23 instances)
Sources/Crow/App/IssueTracker.swift (17 instances)
Sources/Crow/App/Scaffolder.swift (6 instances)
Sources/Crow/App/AllowListService.swift (3 instances)
Sources/Crow/App/AppDelegate.swift (3 instances)
Priority: 6/10
Problem
54 instances of
try?across the app code (23 in SessionService, 17 in IssueTracker, 6 in Scaffolder, 3 in AllowListService, 3 in AppDelegate, 2 in HookConfigGenerator). Most discard errors from file I/O, shell commands, and JSON parsing without any logging. When something breaks in production, there's no diagnostic trail.Proposed Improvement
Replace
try?with either:do/catchwithNSLogfor operations where failure matters (file deletion, shell commands, JSON parsing)try?only for truly optional operations (e.g., deleting a backup file that may not exist)Effort
Low-Medium (1–2 hours). Audit each
try?, decide if it should log, wrap in do/catch.Files Affected
Sources/Crow/App/SessionService.swift(23 instances)Sources/Crow/App/IssueTracker.swift(17 instances)Sources/Crow/App/Scaffolder.swift(6 instances)Sources/Crow/App/AllowListService.swift(3 instances)Sources/Crow/App/AppDelegate.swift(3 instances)Priority: 6/10