3429f2e65d
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-03-29 22:06:44 +02:00
282d83bedb
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-03-29 22:05:05 +02:00
7abf056609
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-03-29 22:04:29 +02:00
86433ca3dc
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-03-29 22:03:24 +02:00
8d07a86fc4
chore: switch from yaml to toml
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
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
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
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
ce5e476b23
ci: split workflow into check and build jobs
2026-02-15 17:33:25 +01:00
b4848bb661
build: migrate to devenv
...
- Add devenv.nix with Python/uv setup and git-hooks
- Add devenv.yaml and devenv.lock
- Refactor flake.nix to use devenv integration
- Update .envrc from flake to devenv
- Add devenv artifacts to .gitignore
2026-02-15 17:33:24 +01:00
f9ed0463f7
refactor: rename test/ to tests/
2026-02-15 17:33:23 +01:00
af2debc19b
refactor!: rename package from streamer to streamd
...
- Rename src/streamer/ to src/streamd/
- Update all internal imports
- Update pyproject.toml project name and entry point
- Update README branding (Streamer -> Strea.md)
- Switch from pyright to basedpyright
- Bump requires-python to >=3.13
2026-02-15 17:33:22 +01:00
49cd9bcfa0
fix: resolve all basedpyright warnings
...
- Use collections.abc.Generator/Iterable instead of deprecated typing imports
- Replace Optional with union syntax (X | None)
- Add explicit type annotations to eliminate reportUnknownVariableType
- Use typing.cast for untyped mistletoe attributes (content, level, line_number)
- Replace mutable default arguments with None defaults (reportCallInDefaultInitializer)
- Add ClassVar annotation for model_config (reportIncompatibleVariableOverride)
- Add @override decorator for settings_customise_sources (reportImplicitOverride)
- Annotate class attributes in Tag (reportUnannotatedClassAttribute)
- Add parameter type annotations in test (reportMissingParameterType)
- Assign unused call result to _ (reportUnusedCallResult)
2026-02-15 17:33:21 +01:00
1e203d9db3
fix(deps): update dependency typer to v0.23.1
Continuous Integration / Lint, Check & Test (push) Successful in 44s
2026-02-15 01:07:42 +01:00
2298bdaa8f
chore(deps): update dependency ruff to v0.15.1
Continuous Integration / Lint, Check & Test (push) Has been cancelled
2026-02-15 00:06:41 +00:00
646241f355
feat: add home-manager module output
Continuous Integration / Lint, Check & Test (push) Successful in 1m19s
2026-02-14 18:00:42 +01:00
c0911307fd
docs: expand README with project overview, concepts, and usage
2026-02-14 18:00:41 +01:00
34ba9869d1
fix(deps): update dependency typer to v0.23.0
Continuous Integration / Lint, Check & Test (push) Successful in 42s
2026-02-12 00:06:12 +00:00
82796c37df
fix(deps): update dependency typer to v0.21.2
Continuous Integration / Lint, Check & Test (push) Successful in 1m12s
2026-02-11 00:06:23 +00:00
13c4186ca5
chore(deps): update dependency faker to v40.4.0
Continuous Integration / Lint, Check & Test (push) Successful in 43s
2026-02-07 00:06:13 +00:00
e0c3079ace
chore(deps): update python docker tag to v3.14.3
Continuous Integration / Lint, Check & Test (push) Successful in 41s
2026-02-05 00:04:08 +00:00
1212bf9ba1
chore(deps): update https://git.konstantinfickel.de/actions/checkout digest to de0fac2
Continuous Integration / Lint, Check & Test (push) Successful in 42s
2026-02-03 22:10:23 +01:00
278340ce9b
chore(deps): update dependency ruff to v0.15.0
Continuous Integration / Lint, Check & Test (push) Successful in 44s
2026-02-03 21:09:32 +00:00
ecf2f091d0
chore(deps): lock file maintenance ( #32 )
...
Continuous Integration / Lint, Check & Test (push) Successful in 1m8s
Co-authored-by: Renovate Bot <renovate@konstantinfickel.de>
Co-committed-by: Renovate Bot <renovate@konstantinfickel.de>
2026-02-02 11:47:42 +01:00
42a378f7f7
fix(deps): update dependency rich to v14.3.2
Continuous Integration / Lint, Check & Test (push) Successful in 56s
2026-02-02 00:04:00 +00:00
0a554aae14
feat: implement basic timesheet command
...
Continuous Integration / Lint, Check & Test (push) Successful in 44s
Signed-off-by: Konstantin Fickel <mail@konstantinfickel.de>
2026-02-01 21:56:20 +01:00
22630773ab
feat: add timecard extraction
...
Continuous Integration / Lint, Check & Test (push) Successful in 45s
Signed-off-by: Konstantin Fickel <mail@konstantinfickel.de>
2026-02-01 17:45:56 +01:00
260400fa34
feat: add overwrite configuration
...
Signed-off-by: Konstantin Fickel <mail@konstantinfickel.de>
2026-02-01 12:09:38 +01:00
a088057b17
ci: remove type testing from pipeline
...
Continuous Integration / Lint, Check & Test (push) Successful in 45s
Signed-off-by: Konstantin Fickel <mail@konstantinfickel.de>
2026-02-01 10:32:34 +01:00
eaca24b8ae
feat: implement edit-command
...
Continuous Integration / Lint, Check & Test (push) Failing after 47s
Signed-off-by: Konstantin Fickel <mail@konstantinfickel.de>
2026-02-01 10:01:40 +01:00
a662077831
test: implement tests for find
...
Signed-off-by: Konstantin Fickel <mail@konstantinfickel.de>
2026-02-01 10:01:27 +01:00
027bf531ce
feat: base task command on position instead of tags
...
Signed-off-by: Konstantin Fickel <mail@konstantinfickel.de>
2026-02-01 10:01:13 +01:00
84ad91d4c4
feat: add preconfigured repository configurations
...
Signed-off-by: Konstantin Fickel <mail@konstantinfickel.de>
2026-01-31 19:51:03 +01:00
84843aea12
fix: attach_markdown type issue
...
Signed-off-by: Konstantin Fickel <mail@konstantinfickel.de>
2026-01-31 19:50:47 +01:00
1040c060f6
feat: add merge for repository configuration
...
Signed-off-by: Konstantin Fickel <mail@konstantinfickel.de>
2026-01-31 19:50:36 +01:00
4dbd142c74
feat: better localization of shards
...
Signed-off-by: Konstantin Fickel <mail@konstantinfickel.de>
2026-01-31 17:54:50 +01:00
79095bad4a
refactor: store file in position, rename filename to file_name
...
Signed-off-by: Konstantin Fickel <mail@konstantinfickel.de>
2026-01-31 17:22:05 +01:00
d5b1541436
feat: extract date & time from tags
...
Signed-off-by: Konstantin Fickel <mail@konstantinfickel.de>
2026-01-31 17:15:01 +01:00
ee91b2e8db
feat: add all_files iterator to simplify searching
...
Signed-off-by: Konstantin Fickel <mail@konstantinfickel.de>
2026-01-31 17:14:31 +01:00
1ce0790c0c
feat: add attach_markdown
...
Signed-off-by: Konstantin Fickel <mail@konstantinfickel.de>
2026-01-30 18:03:44 +01:00
6bc92ef59c
chore(deps): lock file maintenance
renovate/artifacts Artifact file update failure
Continuous Integration / Lint, Check & Test (push) Successful in 1m32s
2026-01-26 00:17:57 +00:00
fb25ef68c7
fix(deps): update dependency rich to v14.3.1
Continuous Integration / Lint, Check & Test (push) Successful in 47s
2026-01-25 00:05:45 +00:00
e9b6eb3cf9
chore(deps): update dependency ruff to v0.14.14 ( #25 )
...
Continuous Integration / Lint, Check & Test (push) Successful in 1m2s
Co-authored-by: Renovate Bot <renovate@konstantinfickel.de>
Reviewed-on: kfickel/streamer#25
2026-01-23 19:29:49 +01:00
bd65fd5403
chore(deps): update https://git.konstantinfickel.de/actions/checkout action to v6 ( #22 )
...
Continuous Integration / Lint, Check & Test (push) Successful in 1m44s
This PR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [https://git.konstantinfickel.de/actions/checkout ](https://git.konstantinfickel.de/actions/checkout ) | action | major | `v4` → `v6` |
---
### Release Notes
<details>
<summary>actions/checkout (https://git.konstantinfickel.de/actions/checkout )</summary>
### [`v6`](https://git.konstantinfickel.de/actions/checkout/blob/HEAD/CHANGELOG.md#v602 )
[Compare Source](https://git.konstantinfickel.de/actions/checkout/compare/v5...v6 )
- Fix tag handling: preserve annotations and explicit fetch-tags by [@​ericsciple](https://github.com/ericsciple ) in [#​2356](https://github.com/actions/checkout/pull/2356 )
### [`v5`](https://git.konstantinfickel.de/actions/checkout/blob/HEAD/CHANGELOG.md#v501 )
[Compare Source](https://git.konstantinfickel.de/actions/checkout/compare/v4...v5 )
- Port v6 cleanup to v5 by [@​ericsciple](https://github.com/ericsciple ) in [#​2301](https://github.com/actions/checkout/pull/2301 )
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate ).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0Mi44NC4yIiwidXBkYXRlZEluVmVyIjoiNDIuODQuMiIsInRhcmdldEJyYW5jaCI6Im1haW4iLCJsYWJlbHMiOltdfQ==-->
Co-authored-by: kfickel <kfickel@noreply.git.konstantinfickel.de>
Reviewed-on: kfickel/streamer#22
Co-authored-by: Renovate Bot <renovate@konstantinfickel.de>
Co-committed-by: Renovate Bot <renovate@konstantinfickel.de>
2026-01-19 21:22:12 +01:00
67fa45b828
chore(deps): update dependency pytest to v9
Continuous Integration / Lint, Check & Test (push) Successful in 1m21s
2026-01-19 00:02:33 +00:00
43e8a829bb
fix: update imports
Continuous Integration / Lint, Check & Test (push) Successful in 57s
2026-01-18 18:20:21 +01:00
b47a22842f
fix(deps): update dependency mistletoe to v1.5.1
2026-01-18 18:20:21 +01:00
3f3c47d26b
chore(deps): update dependency faker to v40
Continuous Integration / Lint, Check & Test (push) Successful in 56s
2026-01-18 18:12:49 +01:00
86b3fbefcc
chore(deps): update dependency ruff to v0.14.13
Continuous Integration / Lint, Check & Test (push) Successful in 56s
2026-01-18 18:05:55 +01:00