- Add mkWindowsCraneLib using x86_64-pc-windows-gnu target
- Add mkStreamdWindows using mingw-w64 toolchain for cross-compilation
- Export streamd-windows package from flake
- Add Windows build step and .exe artifact to release workflow
- Use directories::BaseDirs for config path fallback instead of hardcoded Unix path
- Default to notepad on Windows instead of vi for editor commands
- Skip +N line argument for notepad in todo edit (notepad doesn't support it)
Adds a -m/--minutes flag to `streamd timesheet` that displays time
in HH:MM format (e.g., 8:30) instead of decimal hours (e.g., 8.5h).
Includes unit tests for both formatting functions.
Document the three installation methods:
- Debian/Ubuntu .deb package with shell completions
- Statically-linked binary for any Linux system
- Nix flake and Home Manager module
Add Forgejo Actions workflow that builds and publishes releases:
- Triggers on tag push (v*) or manual workflow dispatch
- Builds static binary using musl target
- Creates .deb package with shell completions
- Uploads artifacts to Forgejo Releases
Requires RELEASE_TOKEN secret to be configured in repository settings.
Add mkStreamdDeb function that uses nfpm to create a .deb package
containing the statically-linked binary and shell completions for
bash, zsh, and fish.
Add mkMuslCraneLib and mkStreamdMusl functions to create a
statically-linked binary using the x86_64-unknown-linux-musl target.
This enables portable binaries that don't depend on system glibc.
Document the new todo command features:
- Numbered task display
- `streamd todo N edit` for editing tasks
- `streamd todo N done` for marking tasks done
- `--show-future` flag for including future tasks
- Add R21 specification for todo command behavior
Add tests for:
- @Done insertion at various line positions
- Future task filtering with show_future flag
- Task sorting by moment ascending
- Error message formatting for all new error variants
- Trailing newline preservation
Implement smoother todo editing with the following features:
- Display numbered tasks [1], [2], etc. in `streamd todo`
- Add `streamd todo N edit` to open editor at task line
- Add `streamd todo N done` to insert @Done after @Task
- Add `--show-future` flag to include future tasks (hidden by default)
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.