Problem
Several views exceed 400 LOC with mixed responsibilities:
GhosttySurfaceView.swift (545 LOC) — input handling, rendering, clipboard, all in one NSView
TicketBoardView.swift (520 LOC) — already decomposed into sub-views but all in one file
SessionListView.swift (470 LOC) — sidebar, session rows, status indicators, context menus
SessionDetailView.swift (427 LOC) — header, terminal area, tab bar, readiness overlay
Proposed Improvement
Extract sub-views into separate files:
SessionRow.swift from SessionListView (status indicator logic alone is ~100 LOC)
SessionHeader.swift and TerminalArea.swift from SessionDetailView
- Move TicketBoardView's sub-views (already well-separated within the file) into their own files
Effort
Low-Medium (1–2 hours). These are mostly file-splitting operations.
Files Affected
Packages/CrowUI/Sources/CrowUI/SessionListView.swift
Packages/CrowUI/Sources/CrowUI/SessionDetailView.swift
Packages/CrowUI/Sources/CrowUI/TicketBoardView.swift
- New:
SessionRow.swift, SessionHeader.swift, TerminalArea.swift, etc.
Priority: 7/10
Problem
Several views exceed 400 LOC with mixed responsibilities:
GhosttySurfaceView.swift(545 LOC) — input handling, rendering, clipboard, all in one NSViewTicketBoardView.swift(520 LOC) — already decomposed into sub-views but all in one fileSessionListView.swift(470 LOC) — sidebar, session rows, status indicators, context menusSessionDetailView.swift(427 LOC) — header, terminal area, tab bar, readiness overlayProposed Improvement
Extract sub-views into separate files:
SessionRow.swiftfrom SessionListView (status indicator logic alone is ~100 LOC)SessionHeader.swiftandTerminalArea.swiftfrom SessionDetailViewEffort
Low-Medium (1–2 hours). These are mostly file-splitting operations.
Files Affected
Packages/CrowUI/Sources/CrowUI/SessionListView.swiftPackages/CrowUI/Sources/CrowUI/SessionDetailView.swiftPackages/CrowUI/Sources/CrowUI/TicketBoardView.swiftSessionRow.swift,SessionHeader.swift,TerminalArea.swift, etc.Priority: 7/10