No description
Find a file
Konstantin Fickel 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
.forgejo/workflows chore(deps): update https://git.konstantinfickel.de/actions/checkout digest to de0fac2 2026-02-03 22:10:23 +01:00
.vscode chore: improve dev setup 2025-06-22 12:52:15 +02:00
src fix: resolve all basedpyright warnings 2026-02-15 17:33:21 +01:00
test fix: resolve all basedpyright warnings 2026-02-15 17:33:21 +01:00
.envrc feat: add initial parser data structure & test 2025-06-22 12:52:15 +02:00
.gitignore chore: ignore test-report.xml 2025-10-12 10:10:45 +02:00
.pre-commit-config.yaml chore: improve dev setup 2025-06-22 12:52:15 +02:00
.python-version chore(deps): update python docker tag to v3.14.3 2026-02-05 00:04:08 +00:00
flake.lock feat: add home-manager module output 2026-02-14 18:00:42 +01:00
flake.nix feat: add home-manager module output 2026-02-14 18:00:42 +01:00
LICENSE.md docs: license under AGPL 2025-10-12 11:19:03 +02:00
pyproject.toml fix(deps): update dependency typer to v0.23.1 2026-02-15 01:07:42 +01:00
README.md docs: expand README with project overview, concepts, and usage 2026-02-14 18:00:41 +01:00
renovate.json ci: allow major upgrades from renovate 2026-01-18 17:42:16 +01:00
uv.lock fix(deps): update dependency typer to v0.23.1 2026-02-15 01:07:42 +01:00

streamer

Streamer 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 @tags like @Task, @Done, @Waiting, or @Timesheet that 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 Streamer.md

Within files, @-prefixed markers at the beginning of paragraphs or headings define how a shard is categorized.

Commands

  • streamer / streamer new — Create a new timestamped markdown entry, opening your editor
  • streamer todo — Show all open tasks (shards with @Task markers)
  • streamer edit [number] — Edit a stream file by index (most recent first)
  • streamer timesheet — Generate time reports from @Timesheet markers

Configuration

Streamer reads its configuration from ~/.config/streamer/config.yaml (XDG standard). The main setting is base_folder, which points to the directory containing your stream files (defaults to the current working directory).

Usage

Running streamer 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 streamer todo finds all shards marked as open tasks and displays them as rich-formatted panels in your terminal.