-
-
Notifications
You must be signed in to change notification settings - Fork 22
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Summary
Break down the 500-line main event loop in PackageCurator into smaller, testable components.
Current Architecture
PackageCurator.run()
├─ 500-line switch statement
├─ View mode handling
├─ Input processing
├─ State mutations
└─ Rendering logic
Proposed Architecture
PackageCurator
├─ ViewRouter (handles view transitions)
├─ InputHandler (processes keyboard input)
├─ RenderEngine (manages screen updates)
└─ StateManager (coordinates state changes)
Design
// ViewRouter.swift
actor ViewRouter {
func route(_ key: Key, state: AppState) -> ViewTransition?
}
// InputHandler.swift
struct InputHandler {
func handleInput(_ key: Key, viewMode: ViewMode, state: AppState) -> InputAction
}
// RenderEngine.swift
actor RenderEngine {
func render(viewMode: ViewMode, state: AppState, screen: Screen) async
}Tasks
- Design router/handler interfaces
- Extract view routing logic into ViewRouter
- Extract input handling into InputHandler
- Extract rendering logic into RenderEngine
- Update PackageCurator to use new components
- Add tests for each component
- Ensure no behavioral changes (refactor only)
Files
Sources/TUI/Routing/ViewRouter.swift(new)Sources/TUI/Routing/InputHandler.swift(new)Sources/TUI/Routing/RenderEngine.swift(new)Sources/TUI/PackageCurator.swift
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request