Commit graph

145 commits

Author SHA1 Message Date
60fac418f8
fix: forgot to bump lock-file
Some checks failed
Continuous Integration / Build Package (push) Successful in 2m31s
Release / Build and Release (push) Successful in 2m44s
Continuous Integration / Lint, Check & Test (push) Failing after 48s
2026-04-07 08:47:32 +02:00
b322c0307d
chore: bump version to 0.2.1
Some checks failed
Continuous Integration / Build Package (push) Failing after 28s
Release / Build and Release (push) Failing after 29s
Continuous Integration / Lint, Check & Test (push) Failing after 49s
2026-04-07 08:42:42 +02:00
0533c7777a
feat: add timesheet debug 2026-04-07 08:42:14 +02:00
d614d678af
chore: switch from h-float to min-int in timesheet
Some checks failed
Release / Build and Release (push) Successful in 6s
Continuous Integration / Lint, Check & Test (push) Failing after 56s
Continuous Integration / Build Package (push) Successful in 1m42s
2026-04-07 08:28:50 +02:00
a79111c650
ci: add cargo audit 2026-04-07 08:16:18 +02:00
a9acd34801
ci: fix release-pipeline running on feature-branches
All checks were successful
Continuous Integration / Build Package (push) Successful in 26s
Continuous Integration / Lint, Check & Test (push) Successful in 56s
Release / Build and Release (push) Successful in 2m37s
2026-04-07 08:09:47 +02:00
9563ff4d93
feat: bump to 0.2.0
All checks were successful
Release / Build and Release (push) Successful in 5s
Continuous Integration / Lint, Check & Test (push) Successful in 2m9s
Continuous Integration / Build Package (push) Successful in 2m43s
2026-04-07 08:06:55 +02:00
42d9ecd3d9
feat: add --minutes flag to timesheet command
All checks were successful
Release / Build and Release (push) Successful in 5s
Continuous Integration / Lint, Check & Test (push) Successful in 1m43s
Continuous Integration / Build Package (push) Successful in 1m56s
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.
2026-04-07 07:57:28 +02:00
e4ed1d839e chore(deps): lock file maintenance
All checks were successful
Release / Build and Release (push) Successful in 6s
Continuous Integration / Lint, Check & Test (push) Successful in 4m20s
Continuous Integration / Build Package (push) Successful in 4m50s
2026-04-06 00:06:43 +00:00
19a9e6a72e
ci: change release pipeline to run on every push
All checks were successful
Release / Build and Release (push) Successful in 6s
Continuous Integration / Lint, Check & Test (push) Successful in 1m31s
Continuous Integration / Build Package (push) Successful in 1m44s
2026-04-03 16:01:15 +02:00
7564ce01d5
chore: update cargo lock to 0.1.1
All checks were successful
Continuous Integration / Build Package (push) Successful in 25s
Continuous Integration / Lint, Check & Test (push) Successful in 49s
2026-04-03 15:47:49 +02:00
4f3c7cc0e4
chore: bump tag to 0.1.1
Some checks failed
Continuous Integration / Build Package (push) Failing after 29s
Continuous Integration / Lint, Check & Test (push) Failing after 52s
2026-04-03 15:42:42 +02:00
1d934b1a0d
chore: add verbose flag to release action
All checks were successful
Continuous Integration / Lint, Check & Test (push) Successful in 1m34s
Continuous Integration / Build Package (push) Successful in 1m47s
2026-04-03 15:39:32 +02:00
9b74f13155
fix: use own release instance
All checks were successful
Continuous Integration / Lint, Check & Test (push) Successful in 1m45s
Continuous Integration / Build Package (push) Successful in 1m58s
2026-04-03 14:57:57 +02:00
16218a8da7
fix: sed not installed, release pipeline fails
All checks were successful
Continuous Integration / Lint, Check & Test (push) Successful in 1m41s
Continuous Integration / Build Package (push) Successful in 1m54s
2026-04-03 14:06:44 +02:00
725ebcfbfd docs: add installation instructions for .deb, binary, and Nix
All checks were successful
Continuous Integration / Lint, Check & Test (push) Successful in 1m50s
Continuous Integration / Build Package (push) Successful in 1m49s
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
2026-04-03 13:57:01 +02:00
0d929b20b7 feat(ci): add release workflow for .deb and static binary
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.
2026-04-03 13:57:01 +02:00
10728a554f feat(flake): expose streamd-musl and streamd-deb packages
Update packages output to include streamd-musl (static binary) and
streamd-deb (.deb package) alongside the default streamd package.
2026-04-03 13:57:01 +02:00
45f8b3503b feat(flake): add .deb packaging with shell completions
Add mkStreamdDeb function that uses nfpm to create a .deb package
containing the statically-linked binary and shell completions for
bash, zsh, and fish.
2026-04-03 13:57:01 +02:00
e242e0cc2c feat(flake): add musl static build for streamd
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.
2026-04-03 13:57:01 +02:00
9d1b47d19e refactor(flake): read version from Cargo.toml
Extract version from Cargo.toml using builtins.fromTOML as single
source of truth instead of hardcoding "0.1.0" in derivations.
2026-04-03 13:57:01 +02:00
02c2310d53 chore(deps): lock file maintenance
All checks were successful
Continuous Integration / Lint, Check & Test (push) Successful in 4m44s
Continuous Integration / Build Package (push) Successful in 5m34s
2026-04-03 10:02:05 +02:00
6453ef7c2a fix(deps): update rust crate chrono-tz to 0.10
All checks were successful
Continuous Integration / Lint, Check & Test (push) Successful in 1m51s
Continuous Integration / Build Package (push) Successful in 2m23s
2026-04-03 02:12:18 +02:00
661a0ce230 chore(deps): update rust crate toml to v1.1.2
Some checks failed
Continuous Integration / Build Package (push) Has been cancelled
Continuous Integration / Lint, Check & Test (push) Has been cancelled
2026-04-03 02:09:50 +02:00
2398bee8d9 chore(deps): update rust crate indexmap to v2.13.1
Some checks failed
Continuous Integration / Lint, Check & Test (push) Has been cancelled
Continuous Integration / Build Package (push) Has been cancelled
2026-04-03 00:06:27 +00:00
aa8f83e321
fix: replace vec! with array to satisfy clippy useless_vec lint
All checks were successful
Continuous Integration / Build Package (push) Successful in 26s
Continuous Integration / Lint, Check & Test (push) Successful in 42s
2026-04-02 18:36:10 +02:00
926a239d7e
docs: add todo edit/done and --show-future documentation
Some checks failed
Continuous Integration / Lint, Check & Test (push) Failing after 51s
Continuous Integration / Build Package (push) Successful in 1m46s
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
2026-04-02 18:29:02 +02:00
e05e9cfd90
test(todo): add comprehensive unit tests for todo features
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
2026-04-02 18:28:13 +02:00
124a5b7e2a
feat(todo): add numbered tasks, edit, done, and future filtering
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)
2026-04-02 18:27:19 +02:00
a8c41ec833
refactor: use chrono for month names
All checks were successful
Continuous Integration / Lint, Check & Test (push) Successful in 1m20s
Continuous Integration / Build Package (push) Successful in 1m40s
2026-04-02 18:18:48 +02:00
d11a35c157
refactor(timesheet): use repeat() for separator lines and sort points before grouping
All checks were successful
Continuous Integration / Build Package (push) Successful in 25s
Continuous Integration / Lint, Check & Test (push) Successful in 41s
2026-04-02 17:07:36 +02:00
b51fb511ac
fix(timesheet): display zero hours as positive instead of negative zero 2026-04-02 17:07:06 +02:00
7bee32886f
feat(timesheet): sort months ascending so newest is at bottom 2026-04-02 17:06:28 +02:00
070a47e241
docs: add timesheet management documentation
Update README.md with:
- Repository configuration section for .streamd.toml
- Timesheet periods configuration example
- Description of timesheet report features

Update REQUIREMENTS.md with:
- R18a: Timesheet report configuration format
- R18b: Day type rules for expected/actual hours calculation
- R18c: Timesheet report warning types
- Updated R20 command description
2026-04-02 16:22:28 +02:00
ca43106486
feat(timesheet): add formatted report output to CLI
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.
2026-04-02 16:22:27 +02:00
1a716f6d0e
feat(timesheet): add report generation logic
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
2026-04-02 16:22:26 +02:00
e0ba2cddf3
feat(timesheet): add overlap detection for timecards
Add find_overlapping_timecards function to detect overlapping time
ranges on the same day. This is used to generate warnings in the
timesheet report.
2026-04-02 16:22:25 +02:00
92ca364e55
feat(timesheet): add report data structures
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
2026-04-02 16:22:24 +02:00
92c8e9712a
feat(timesheet): add configuration model with period validation
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.
2026-04-02 16:22:21 +02:00
38597e9fbb fix(deps): update rust crate directories to v6
All checks were successful
Continuous Integration / Lint, Check & Test (push) Successful in 3m2s
Continuous Integration / Build Package (push) Successful in 3m32s
2026-04-02 16:19:34 +02:00
55d55ffb25 fix(deps): update rust crate toml to v1
Some checks failed
Continuous Integration / Lint, Check & Test (push) Has been cancelled
Continuous Integration / Build Package (push) Has been cancelled
2026-03-31 00:08:52 +00:00
d548842fbb fix(deps): update rust crate toml to 0.9
All checks were successful
Continuous Integration / Lint, Check & Test (push) Successful in 2m18s
Continuous Integration / Build Package (push) Successful in 2m25s
2026-03-30 02:18:22 +02:00
3b2d8c7e63 fix(deps): update rust crate pulldown-cmark to 0.13
Some checks are pending
Continuous Integration / Lint, Check & Test (push) Waiting to run
Continuous Integration / Build Package (push) Waiting to run
2026-03-30 02:18:10 +02:00
a7579a7083 fix(deps): update rust crate itertools to 0.14
Some checks are pending
Continuous Integration / Lint, Check & Test (push) Waiting to run
Continuous Integration / Build Package (push) Waiting to run
2026-03-30 02:15:24 +02:00
f29840313d chore(deps): pin dependencies
All checks were successful
Continuous Integration / Lint, Check & Test (push) Successful in 2m48s
Continuous Integration / Build Package (push) Successful in 3m9s
2026-03-30 00:06:20 +00:00
8d07a86fc4
chore: switch from yaml to toml
All checks were successful
Continuous Integration / Lint, Check & Test (push) Successful in 1m47s
Continuous Integration / Build Package (push) Successful in 2m20s
2026-03-29 19:14:51 +02:00
ed493cff29
refactor: rewrite in rust
All checks were successful
Continuous Integration / Lint, Check & Test (push) Successful in 1m38s
Continuous Integration / Build Package (push) Successful in 1m54s
2026-03-29 18:28:03 +02:00
20a3e8b437
feat: add streamd logo
All checks were successful
Continuous Integration / Build Package (push) Successful in 31s
Continuous Integration / Lint, Check & Test (push) Successful in 47s
2026-02-15 17:40:17 +01:00
d89ad8b131
build: add /result to .gitignore
All checks were successful
Continuous Integration / Build Package (push) Successful in 1m11s
Continuous Integration / Lint, Check & Test (push) Successful in 1m24s
2026-02-15 17:33:27 +01:00
ca6b5bbd4d
fix: include dev deps in basedpyright check environment
Use workspace.deps.all instead of workspace.deps.default so that
basedpyright can resolve test dependencies like faker.
2026-02-15 17:33:26 +01:00