Centralizes date calculation logic into DateColumnDataSource
Improves separation of concerns across rendering components
Key changes:
- Introduces IColumnInfo interface for flexible column data
- Moves date calculation from multiple managers to dedicated datasource
- Removes duplicate date rendering logic
- Prepares architecture for future resource-based views
Replaces date-fns library with day.js to reduce bundle size and improve tree-shaking
- Centralizes all date logic in DateService
- Reduces library footprint from 576 KB to 29 KB
- Maintains 99.4% test coverage during migration
- Adds timezone and formatting plugins for day.js
Improves overall library performance and reduces dependency complexity
Documents two consecutive failed attempts at AllDayManager architectural refactoring, including:
- Detailed analysis of architectural and implementation failures
- Lessons learned about upfront design and systematic debugging
- Root cause identification for repeated refactoring mistakes
- Recommendations for future implementation approaches
Highlights critical issues in code design, DI principles, and functional testing strategies
Extracts workweek preset logic from ViewManager into WorkweekPresetsManager
Improves separation of concerns by:
- Creating a dedicated manager for workweek preset UI
- Simplifying ViewManager to focus only on view selector
- Implementing event-driven CSS updates
- Reducing code duplication in ConfigManager
Follows "each UI element has its own manager" architectural principle