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. |
||
|---|---|---|
| .forgejo/workflows | ||
| .vscode | ||
| src | ||
| .envrc | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| CLAUDE.md | ||
| flake.lock | ||
| flake.nix | ||
| LICENSE.md | ||
| README.md | ||
| renovate.json | ||
| REQUIREMENTS.md | ||
| streamd.svg | ||
strea.md
Strea.md is a personal knowledge management and time-tracking CLI tool. It organizes time-ordered markdown files using @tag annotations, letting you manage tasks, track time, and query your notes from the terminal.
Core Concepts
- Shards — Sections of markdown files, organized hierarchically by headings. Each shard can contain markers, tags, and nested child shards.
- Markers — Special
@tagslike@Task,@Done,@Waiting, or@Timesheetthat give shards semantic meaning and place them into dimensions. - Dimensions — Classification axes (e.g. task state, project, timesheet) that categorize shards. Some dimensions propagate to child shards.
File Format
Markdown files are named with a timestamp: YYYYMMDD-HHMMSS [markers].md
For example: 20260131-210000 Task Streamd.md
Within files, @-prefixed markers at the beginning of paragraphs or headings define how a shard is categorized.
Commands
streamd/streamd new— Create a new timestamped markdown entry, opening your editorstreamd todo— Show all open tasks (shards with@Taskmarkers), numbered for easy referencestreamd todo N edit— Edit task N in your editor, jumping to the task's linestreamd todo N done— Mark task N as done by inserting@Doneafter@Taskstreamd todo --show-future— Include tasks with future dates in the listingstreamd edit [number]— Edit a stream file by index (most recent first)streamd timesheet— Generate time reports from@Timesheetmarkers
Configuration
User Configuration
Streamd reads its user configuration from ~/.config/streamd/config.toml (XDG standard). The main setting is base_folder, which points to the directory containing your stream files (defaults to the current working directory).
Repository Configuration
For timesheet reporting, create a .streamd.toml file in your stream files directory:
timezone = "Europe/Berlin" # Optional: timezone for day boundaries
[timesheet]
[[timesheet.periods]]
start = "2026-01-01"
end = "2026-06-30"
hours_per_week = 38.0
[[timesheet.periods]]
start = "2026-07-01"
end = "2026-12-31"
hours_per_week = 40.0
The timesheet command will calculate expected vs actual working hours based on these periods, showing:
- Daily breakdown with expected/actual hours
- Special day types (sick leave, vacation, holidays, flex days)
- Warnings for missing entries and overlapping timecards
- Monthly and cumulative balance
Usage
Running streamd opens your editor to create a new entry. After saving, the file is renamed based on its timestamp and any markers found in the content.
Running streamd todo finds all shards marked as open tasks and displays them numbered in your terminal. Tasks with future dates are hidden by default (use --show-future to include them). Tasks are sorted by date with oldest first (task 1 is the oldest).
You can quickly edit or complete tasks by number:
streamd todo 1 editopens task 1 in your editor at the correct linestreamd todo 1 donemarks task 1 as done by inserting@Doneafter@Task