Skip to content

Decompose large SwiftUI views into smaller components #144

@dhilgaertner

Description

@dhilgaertner

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

Metadata

Metadata

Assignees

Labels

refactorCode refactoring and cleanup

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions