From 58cbee61ad0cf21a4d342eee1363bf924ff4cebc Mon Sep 17 00:00:00 2001 From: Trevor Richards Date: Fri, 4 Nov 2022 06:53:49 -0700 Subject: [PATCH] expand on features update nancy target and remove copied template update screenshot --- README.md | 21 ++++++++++++++++----- billable.nimble | 4 ++-- screenshot.png | Bin 0 -> 15657 bytes src/billable.nim | 10 ---------- 4 files changed, 18 insertions(+), 17 deletions(-) create mode 100644 screenshot.png diff --git a/README.md b/README.md index 5c4988b..f3674ed 100644 --- a/README.md +++ b/README.md @@ -4,17 +4,28 @@ A [Timewarrior](https://timewarrior.net/) report script that will help you organ This project was inspired by the venerable Emacs org-mode and its built-in clock tables. The goal is to create some of those features for Timewarrior. +![A screenshot of billable](./screenshot.png) + Requires Nim with Nimble, version 1.6.6 or compatible. Version 0.1.0 ## Contents -1. Getting Started -2. Configuration -3. Example -4. Caveats -5. Contributing +1. Features +2. Getting Started +3. Configuration +4. Example +5. Caveats +6. Contributing + +
+ +## Features + +- Generates nested reports for structured projects/subtasks +- Pretty terminal table output +- CSV export/file dump
diff --git a/billable.nimble b/billable.nimble index 83ede53..f54857e 100644 --- a/billable.nimble +++ b/billable.nimble @@ -1,6 +1,6 @@ # Package -version = "0.2.0" +version = "0.2.1" author = "Trevor Richards " description = "timew-billable" license = "GPL3" @@ -11,5 +11,5 @@ srcDir = "src" requires "nim >= 1.6.6 & < 2.0", "csvtools >= 0.2.1 & < 1.0", "jsony >= 1.1.3 & < 2.0", - "nancy >= 0.1.0 & < 1.0", + "nancy >= 0.1.1 & < 1.0", "termstyle >= 0.1.0 & < 1.0" diff --git a/screenshot.png b/screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..7b9ccf2abab11a5f928fdbc0cb17221f950179b0 GIT binary patch literal 15657 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