Replace CSV output with formatted table display showing:
- Monthly breakdown with expected/actual hours per day
- Day types (Regular, Sick Leave, Vacation, Holiday, Flex Day, etc.)
- Warning indicators for missing days and overlapping timecards
- Monthly summaries with total expected/actual hours
- Cumulative balance across all months
- Detailed warnings section at the end
Shows helpful message when no .streamd.toml configuration is found.
Implement the core report generation that:
- Loads .streamd.toml configuration
- Calculates expected hours based on periods and day types
- Calculates actual hours following day type rules:
- Sick leave: max(expected, worked)
- Vacation: expected + worked
- Flex day: 0
- Holiday: 0 expected
- Generates warnings for missing days, overlapping timecards,
and work outside configured periods
- Calculates monthly and cumulative balances
- Sorts months in descending order
Add DayReport, DayType, DayWarning, MonthReport, and TimesheetReport
structs for generating timesheet reports. These support:
- Day types (Regular, SickLeave, Vacation, Holiday, FlexDay, Weekend, Missing, OutsidePeriod)
- Warnings for missing days, overlapping timecards, and outside-period work
- Monthly and cumulative calculations
Add TimesheetConfig and Period structs for configuring timesheet
periods with expected working hours per week. Include RepositoryConfig
for loading .streamd.toml with timezone and timesheet configuration.
Validation ensures:
- No overlapping periods
- Valid date ranges (start <= end)
Also adds chrono-tz dependency for timezone support.