Giter Club home page Giter Club logo

tasklite's Introduction

tasklite's People

Contributors

ad-si avatar dotkuro avatar naggie avatar yeldirium avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tasklite's Issues

Suggestion: Bulk complete tasks

You can bulk change the due dates on tasks which is great. Would be also nice to be able to bulk complete tasks e.g. tl do 4kd 32d tkd

tasklite should create .config/tasklite

I built tasklite from source, following the instructions here:
https://tasklite.org/installation/cli.html

It says to test the installation run tasklite help. I did so, and it failed:

jdietrch@saturn:~$ tasklite help
tasklite: /home/jdietrch/.config/tasklite: copyFile:atomicCopyFileContents:withReplacementFile:openBinaryTempFile: d
oes not exist (No such file or directory)
jdietrch@saturn:~$

Yes, a quick mkdir .config/tasklite/ solved that problem, but perhaps tasklite could create that directory itself if it doesn't exist?

My personal tasks for TaskLite

Here is a list of all my personal tasks for TaskLite sorted by priority:

  • (24wj) Fix command "duplicate" for closed tasks +bug
  • (z8kj) Fix tagging several issues where a task already has the tag +bug
  • (40gs) Use state:open per default for the tl get command
  • (kt11) Add command modified to list recently modified tasks
  • (tkwh) Don't edit a task if nothing changed +bug
  • (ew9j) Fix incorrect git commit hash in help output +bug
  • (01b0) Fix line breaks in notes +bug
  • (snnt) Ensure that a task can only be repeating or recurring +bug
  • (57a5) Fix date in info view when note ulid starts with 0s +bug
  • (vjjz) Set correct timestamp when adding a note via the "edit"command +bug
  • (2dmp) Add flag to only get ulids of command
  • (4wwe) Add system for hooks
  • (zb2t) Move changes to views and triggers into migrations code
  • (6j68) Use purebred-email instead of hsemail
  • (c63k) Add command "generate" to generate an example database with x entries
  • (987w) Order tasks with same priority ascending by due date
  • (1k4k) Show number of additional tasks in truncated views
  • (qkd6) Let all commands only accept one id per default and add *all commands for several ids
  • (mrq0) Allow list of strings for notes during edit
  • (8rgp) Add command to send task via email +feature
  • (5nnq) Let user fix invalid YAML files after editing a task
  • (hyyg) Add a burndown chart view
  • (fz7q) Add a calendar view
  • (s2xv) Implement SQLite to JSON module and use in TaskLite
  • (ya1t) Read https://unterwaditzer.net/2016/sync-algorithm.html +read
  • (2tr8) Adapt query for several tasks instead of running the query several times +performance
  • (2z3y) Only use short ULIDs for open tasks
  • (3abn) Add history view
  • (d5h7) Show calculation steps for priority in info view
  • (wsa6) Support descriptions for tags
  • (3emb) Add command to mark a task as a duplicate of another task
  • (jbzd) Outsource tagsViewQueryand helper functions into a package
  • (g4p3) Maybe use https://github.com/pmarsceill/just-the-docs for documentation
  • (xqym) Check if Tasklite can be conntected to https://radicle.xyz
  • (d861) Add tl uninstall command
  • (5tjv) Add tl infos command to print infos about the installation
  • (s993) Add support for checklists
  • (mpky) Let users specify aliases in the config file
  • (0tvd) Mention https://github.com/coleifer/sqlite-web in documentation
  • (m3vf) Evaluate pgloader.io + postgrest.org as backend
  • (exb2) Add command to import another TaskLite database
  • (axqa) Create uldb package as file based backend
  • (80gg) Add access rights management table
  • (g75a) Add public = NULL, read, write field to tasks
  • (adyg) Add ssh based storage backend
  • (p3vz) Support read-only tasks for syncing with providers like GitHub. Open original page on tl do.
  • (3e8x) Print warning when a new tag is entered
  • (rm86) Create new open task when already closed task is set to repeat
  • (3zk8) Usage based pricing: 0.002 € / action, max 0.2 € / day, 2000 initial actions
  • (4m5q) Create a browser plugin
  • (y0fr) Push latest image to Docker Hub during CI
  • (9w8b) Check out https://paddle.com as payments provider
  • (cyq6) Add support for data types like int, string, enum, … for metadata
  • (kbv0) Timeline view a la taskbook
  • (5gy3) Check out https://saasbox.net
  • (jqj7) Add flag to do a dry run
  • (1hpk) Add upsert command to update task if exists during import
  • (1jcn) Use ULID type instead of Text for Notes
  • (d9s5) Support editing tags and notes
  • (afzt) Figure out if it can handle ULID collisions
  • (jm3p) Add a import_utc field
  • (rh76) Add command to edit notes
  • (cwkq) Add a "stuck" command to show projects with no recent progress
  • (fq86) Change width of output for dashboards
  • (xf6v) Rename state to final_state or terminal_state +db
  • (hkec) Also show all TODOs, FIXMEs, … when run in a git repository
  • (fyxd) Display if task is overdue in info view
  • (54zx) Add documentation for "constraints" as a better version of "contexts"
  • (b3x2) Think about supporting tagged connections between tasks, and not just blocked tasks (e.g. duplicate, related, successor, …) +db
  • (9gap) Add support for encrypted tasks
  • (dp2h) Add an archive functionality to remove old tasks from database
  • (m8td) Use monochrome illustrations from drawkit.io/free for landing page
  • (sqwg) Model documentation based on awareness ladder
  • (58xj) Return a Result and putDoc to stdout / stderr accordingly
  • (pyav) Add Joplin to section of related tools https://joplinapp.org
  • (1zn1) https://github.com/MichaelMure/git-bug +related
  • (e1d6) Show tertiary state in info view
  • (a3q3) Use https://hackage.haskell.org/package/taskwarrior for importing Taskwarrior tasks
  • (2gv4) Add support for subcommand "metadata" as described in https://tasklite.org/usage/cli.html#metadata
  • (8vr1) Show UTC time offset in header
  • (90y2) Don't show priority in listings of closed tasks
  • (15t8) Add command to check if URLs still resolve
  • (d8sc) https://github.com/kitplummer/clikan +related
  • (gzc4) Check out https://gumroad.com as an option to sell TaskLite +money
  • (4f9v) Enable deleting tags via the "edit" command
  • (0kz1) Support editing notes
  • (z6ag) Show comments and human readable versions of fields in edit view
  • (bjds) Rename "notes" to "comments" and introduce the "tasknote"
  • (7wdf) Add field to overwrite creation_utc (to allow dates before 1970)
  • (f3ph) Display next review date in confirmation message for "reviewin" command
  • (yjda) Display more human readable text for duration in info view
  • (ww1m) Add config flag to define minimum number of tasks in project
  • (bvbq) Add option to hide / shorten URLs through terminal hyperlinks as described in https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda
  • (nhvc) Add subcommand "verify" to check if all database fields are set correctly
  • (jsme) Reduce priority if task is not yet ready
  • (23bx) Reduce priority if task is waiting
  • (yr07) Show priority adjustment in info view
  • (9843) Set waiting_utc if "review" is called on a task which isn't waiting yet
  • (7eek) Nodewood - Javascript SaaS Starter Kit https://nodewood.com +saas
  • (w23p) Abort on version mismatch between client and database
  • (5z5s) Add command "unreview"
  • (v3v9) SuperPay - Effortless one-time and recurring payments https://superpayit.com +money +payments +saas
  • (atb4) sjl/t - CLI todo list manager for people that want to finish tasks, not organize them https://github.com/sjl/t +competitor
  • (y62c) Add option to edit imported task in editor before saving it
  • (etc8) Evaluate https://github.com/bradleyboy/tuql as API provider

[Questions] Plans and design

Hey @ad-si

I am excited to see this project. I was thinking myself of re-implementing taskwarrior in a more safe language (Rust was on my mind) so this project makes me very curious. I am particularly interested in some architectural/design decisions.

  • What is your plan for sync between different devices? Is it planned? How do you plan to perform merging and conflict-resolution? Is it going to be client-server or p2p?

  • What is your plan about mobile devices? An app like this would benefit greatly from being present not only on desktop/web but on android (and maybe even iOS :) This is my main dissatisfaction with taskwarrior - absence of a supported mobile client. (And also a story around provisoning certs for mobile - PITA).

My knowledge of Haskell is near-zero (sadly), how is it suitable for mobile development? If it is not very well suited I'd imagine that you will need to write a separate client in different language and probably port the data structures (things like protobuf come to mind)...

Command 'recur' broken/removed?

tl recur P1M nrt gives output of invalid argument 'recur'

Has this command been removed? It's no longer shown via the help command but is listed in the online docs?

How to set recurrence_duration?

https://tasklite.org/concepts.html describes the Recurring secondary state, associated with the recurrence_duration field:

Task which needs to be done every day, week, etc. I.e. missed
completions must be caught up immediately. (e.g. paying rent)

How can I set up a monthly paying rent task?

The repeat command isn't suitable for at least two reasons:
1.) it sets repetition_duration, and not recurrence_duration
2.) it takes a certain number of days, and a monthly interval cannot be represented that way

Add blocking/dependency task from CLI

Hi. If I want to simulate subtasks like I do with taskwarrior, how can I do this with TaskLite?

e.g. with taskwarrior I would:

task add Some parent task
task add Some child task
task <parent id> modify depends:<subtask id>

Ideally if I could do this in 2 commands that would be even better.

customizing reports

Would it be possible to customize the reports that tasklite produces? When I run tasklite open the third column is "Opened UTC". I think I would prefer to not show that and move the "Due UTC" information to that place instead.

Of course different people will have different opinions/preferences, and that's exactly why it would be good to have this aspect of tasklite customizeable.

I know you're not trying to make an exact duplicate of taskwarrior, but that program is quite flexible with its handling of reports:
https://taskwarrior.org/docs/report.html

terminal colors

I'm running tasklite in an xterm, which supports 256 colors. Is there a way to specify colors other than the 8 ANSI terminal colors in tasklite's config.yaml? If this is not currently possible, then this issue is a feature request to add 256-color support. I think this would be good because the 8 ANSI terminal colors is a rather limited selection.

Default config contains pre python hook, which is always printed

The default configuration contains the section

hooks:
  #| Is per default the "hooks" directory in the `dataDir`
  # directory: /custom/path/hooks
  launch:
    pre:
      - interpreter: python3
        body: print('Python test')

which will lead an “unconfigured” tasklite to always print Python test when you call it.

'open' command shows closed task

I start with an empty database, add a task, view it with tasklite open, and then mark it done. However, after that when I run tasklite open again, it still shows the task, and running tasklite info shows that the task is "Closed and Done".

Maybe I'm misunderstanding something, but the help for tasklite open says "List all open tasks by priority desc", which makes me think it shouldn't show closed tasks.

The following demonstrates this issue:

jdietrch@arcturus:~$ tasklite
No tasks available. Run `tasklite help` to learn how to create tasks.
jdietrch@arcturus:~$ tasklite add Mow the lawn
🆕 Added task "Mow the lawn" with id "01eper15t77xcsq9078yv66h11"
jdietrch@arcturus:~$ tasklite open
Id   Prio  Opened UTC  Body
h11   0    2020-11-06  Mow the lawn

jdietrch@arcturus:~$ tasklite do h11
✅ Finished task "Mow the lawn" with id "01eper15t77xcsq9078yv66h11"
jdietrch@arcturus:~$ tasklite open
Id   Prio  Opened UTC  Body
h11   0    2020-11-06  Mow the lawn

jdietrch@arcturus:~$ tasklite info h11

Mow the lawn

   State: Closed and Done
Priority: 0.0
    ULID: 01eper15t77xcsq9078yv66h11

🆕  Created   2020-11-06 12:20:51
       ⬇
✏️   Modified  2020-11-06 12:20:51

User: jdietrch


jdietrch@arcturus:~$

compiling error

Hi, how can I resolve this?

        randomIO is not a (visible) method of class R.Random
       |
  98 |     randomIO = getULID
       |     ^^^^^^^^

Thanks!

Piping output of tasklite to file still includes colors

I'm not quite sure if this is a bug or something that needs to be fixed, but I recently piped output of tasklite to a file with tasklite >> file

The file still contains the color symbols though:

�[0;92;1;4mId �[0m  �[0;95;1;4mPrio�[0m  �[0;30;1;4mOpened UTC�[0m  �[0;97;1;4mBody      �[0m  
�[0;92mgq7�[0m  �[0;95m 0  �[0m  �[0;30m2020-11-20�[0m  �[0;97mtest 2�[0m
�[0;92m15h�[0m  �[0;95m 0  �[0m  �[0;30m2020-11-20�[0m  �[0;97mtest 1�[0m

I was able to fix this with a sed command I got, so if this is intended behaviour we can just close the issue (I'm also not sure how this can be fixed from the haskell side 😢 )

Best way to edit a task?

Without having to edit SQLite directly Is there a way to edit a task? So far I have messed up the text of a task and wanted to retag a task

Would you support UDAs?

Hi, I've been using taskwarrior for a long time, but I'm tired of their stagnation, so your project looks awesome.

I was wondering if you will support user defined attributes, for example to define the Kanban state of backlog, todo and doing.

I know you can achieve that same thing with tags, but I think it's a nice way to represent in the cli reports. Furthermore I've got like 7 different UDAs that I wouldn't like to loose

YAML Exception

I get the below when trying to run tasklite version after install using stack.

YAML exception:
Yaml file not found: /home/mac/.config/tasklite/config.yaml

What does a minimal config.yaml have to look like? I have searched the repo but have not been able to find any documentation.

More examples?

Do you have some more examples to get me started?

Say I want, for example, to add a tag to all the tasks that result from some search -- or any bulk action of the sort. How would you go about it?

(If this is not the medium to be asking these things, just let me know, sorry.)

Getting default headCount using tput

While using a floating window, the default of 20 leads to an overflow, where I can't see all the tasks with tasklite ready because I have a limit of 18 lines.

╭─rookie@archlinux ~ 
╰─$ echo $LINES
18

I think the command tput lines can be used to set the default headCount. Something like this in ghci:

Prelude> import System.Process
Prelude System.Process> z = readProcess "tput" ["lines"] ""
Prelude System.Process> z
"18\n"

and then set that value as the default headCount.

Suggestion: "Opened UTC" column vs task age

I'd find displaying the age of the task in this column much more useful than task creation date e.g. "2D". Maybe an option to switch this between the current opened/created date and task age?

What is the semantics of recurring vs repeating?

I experimented with rec(urrence)/rep(etition) a little bit, trying to figure out how they interact.

What I noted so far:

  • You can set none, either, or both on the CLI
  • They seem to only update when marking the previous task as done, according to this code:

else do
logMessageMaybe <-
if Task.repetition_duration task /= Nothing
then createNextRepetition conf connection task
else
if Task.recurrence_duration task /= Nothing
then createNextRecurrence conf connection task
else pure Nothing

No other code seems look at the rec/rep fields (apart from the info and unrecur stuff).
The code also suggests that if both fields are set, rec won’t be looked at because rep takes priority.

Is that the idea? What is the intended workflow/semantics here?

The manual describes rec as:

Recurring - Task which needs to be done every day, week, etc. I.e. missed completions must be caught up immediately. (e.g. paying rent) The number of tasks which will be created in advance can be set via a config.

But I don’t see any code which would create a number of tasks in advance, maybe I’m missing a detail here. There is only a createNextRecurrence function, but none that would create multiple tasks. Also, there is no config option.


Comparing to taskwarrior (which I’m trying to migrate from), they do it a little bit differently. They don’t support repetition, rather recurrence with a config of how many tasks should be generated in advance; they run their task generation logic each time you run the command, regardless of whether that command changes something else. It’s certainly convenient, but not super easy to reason about (since random tasks could change at random times).

I don’t expect tl to be the same as tw, or even support recurrence feature that tw supports.

suggested change in semantics for 'repeat' command

Currently, the definition for tasklite repeat is "Repeat a task x days after its due UTC or after it gets closed (whichever occurs later)".

This definition works well if the task is completed on time or late, but it does not work well if the task is completed early.

Let's suppose I create a task "Take out the trash" and set it to repeat P7D because most of the time it takes about a week to fill up the trash can. Now suppose one week I'm gone for several days, so the trash doesn't need to be taken out until several days later than usual. When I finally do take out the trash and mark that task done, the next task is created with a due date seven days after that. This is just how it should be.

However, the reverse could also happen. Suppose that shortly after I take out the trash, I have a lot of people over to my house for a special meal. Having all those people over generates a lot of trash and so the trash needs to be taken out the next morning, five days before the due date. And so I do that and mark that task done. But because I'm completing the task early, the next task is created with a due date of twelve days from now. That isn't what I want, because if the upcoming week is a normal week, I'll need to take out the trash seven days from now and not twelve days from now. It would really be more appropriate to give the new task a due date of seven days from now.

Therefore, I propose that the definition for tasklite repeat be changed to "Repeat a task x days after it gets closed", regardless of its due date, whether it's closed early or late.

I hope I've explained this clearly enough, but if not, please don't hesitate to ask for clarification.

stack install fails with lts-14.27

Did you mean lts-13?
The versions of gi-haskell and gi-haskell-base in lts-14 are too new for gi-gtk-declarative.

In the dependencies
for gi-gtk-declarative-0.4.2:
    haskell-gi-0.23.0 from stack
                      configuration does
                      not
                      match >=0.21 && <0.22 
                      (latest matching
                      version is 0.21.5)
    haskell-gi-base-0.23.0 from stack
                           configuration
                           does not
                           match >=0.21 && <0.22 
                           (latest
                           matching
                           version
                           is 0.21.5)
needed due to tasklite-app-0.3.0.0
               -> gi-gtk-declarative-0.4.2

Add support for a hook system

Similar to Taskwarrior's hooks: https://taskwarrior.org/docs/hooks_guide.html

  • post- and pre- prefixed lifetime hooks

Example use cases

  • Sync ~/.tasklite folder with git on launch (pull from remote)
    and on exit (push to remote)
  • Sync tasks between TaskLite and Habitica (as in taskwarrior-habitica-bridge)
  • Refresh custom displays whenever a TaskLite command is run
  • Show messages from a message server after each task command

More Ideas

  • Support for hooks to be stored in the database in a scripting language which are then executed by TaskLite.
    They could e.g. be written in Lua (https://hackage.haskell.org/package/hslua) or Nix (https://github.com/haskell-nix/hnix). (Dhall is unfortunately not ergonomic enough).
    I always disliked the system for git hooks, in which they are not part of the project and everybody had to install them themselves.
    It could then even be extended with custom functions.
    This could lead to a collection of useful hook scripts that anyone can use, since they are executed by TaskLite and have no additional requirements for the system setup like installed interpreters and so on.

  • Use Nix as the basis for a TaskLite plugin manager


Tracking issue for @robwhitaker's request in #2 (comment)

Fix parsing error during edit

File:

awake_utc: null
review_utc: null
state: null
repetition_duration: P10W
recurrence_duration: null
body: Check expenses at https://example.org
user: adrian
ulid: 01drhxt9zfc8g077db10gbmeme
modified_utc: 2020-03-15 11:22:26
group_ulid: 01da1s0y23t08jnnch667gjph1
closed_utc: null
priority_adjustment: 2
metadata: null
waiting_utc: null
ready_utc: null
due_utc: 2019-12-30 22:08:46

Error:

tasklite: unimplemened parsing format: Format_Spaces
CallStack (from HasCallStack):
  error, called at ./Data/Hourglass/Format.hs:307:28 in hourglass-0.2.12-333qxqQQ3eK9Jo0nKcpgW5:Data.Hourglass.Format

Extend duration parser

  • Every last Tuesday in a month
  • Every 29. February in a leap year

Let me know in the comments if you have any more useful examples!

Provide fresh builds

Hey there,

I just stumbled upon your project and wish to give it a try, but since the latest GH action builds are old, its artefacts are gone.
Would you mind trigger a fresh build ?

Also, I was wondering what's the roadmap for the near future, if any ? The FAQ mentions a Roadmap page but browsing it returns a 404.

Thanks in advance, and thank you anyway for your time and dedication into this nice project !

Question: Can you use relative due dates?

Hey, I really like the spirit of this project, a taskwarrior backed by SQLite and a reusable Haskell library. Thanks for working on this! I only read through the documentation so far, checking for taskwarrior features that I need, and have a question: In taskwarrior you can do something like due:2d which translates to 2 days from now. I find this very useful because I don't need to think about dates as much then. Is this already supported by tasklite?

[question] sql injection protection

Hey @ad-si
The query command gives user the ability write a part of the sql query, everything after select * from tasks where ...

What would happen if I do tl query '; drop database;'?

First class subcommands

Just like they are supported by git:

$ cat /usr/local/bin/git-grin
#! /usr/bin/env bash

echo '😁'

$ git grin
😁

maxWidth and text wrapping

Hi,
It seems that maxWidth parameter, doesn't mater how high the value is, doesn't do anything?
I assume, when set, for example to 200, it should only wrap the line when combined line character count is larger then 200?
Because right now, even if the character count is lower then that value, the line is wrapped.

Is the Frozen status implemented?

The manual states that there is a tertiary state called Frozen, which stops recurrence and repetition:

Frozen - Was previously repeating or recurring but has been stopped for the time being.

But looking through the commands and the source code the only mention of the word frozen is in this section of the manual, not anywhere in the source code.

Importing recurring task templates from taskwarrior

Probably more of a feature request, but I had quite a bit of recurring tasks in my taskwarrior db, yet after the import (via tasklite import task.json as described in the manual), they are all imported like single (long overdue) tasks.

I guess it would require a special knowledge of taskwarrior’s data model to have a best-effort mapping of the supported recurrence features.

createNextRep vs createNextRec use different iso duration parsing

createNextRecurrence
:: Config -> Connection -> Task -> IO (Maybe (Doc ann))
createNextRecurrence conf connection task = do
newUlidText <- formatUlid getULID
let
taskUlid = primaryKey task
dueUtcMb = (Task.due_utc task) >>= parseUtc
showDateTime :: DateTime -> Text
showDateTime = pack . timePrint (utcFormat conf)
durTextEither = maybeToEither
"Task has no recurrence duration"
(Task.recurrence_duration task)
isoDurEither =
durTextEither
<&> encodeUtf8
>>= Iso.parseDuration

vs

createNextRepetition
:: Config -> Connection -> Task -> IO (Maybe (Doc ann))
createNextRepetition conf connection task = do
newUlidText <- formatUlid getULID
let
taskUlid = primaryKey task
nowMaybe = ulidTextToDateTime newUlidText
dueUtcMb = (Task.due_utc task) >>= parseUtc
showDateTime = pack . timePrint (utcFormat conf)
repIsoDur = (Task.repetition_duration task) >>= parseIsoDuration

which uses

-- TODO: Replace with proper IS08601 duration parser
parseIsoDuration :: Text -> Maybe Duration
parseIsoDuration isoDuration =
if "PT" `T.isPrefixOf` isoDuration && "M" `T.isSuffixOf` isoDuration
then
let
minutes :: Maybe Int64
minutes = readMaybe $ unpack $ (T.drop 2 . T.dropEnd 1) isoDuration
in
fmap
(\mins -> mempty { durationMinutes = Minutes mins })
minutes
else Nothing

Provide a way of exporting data to Taskwarrior

As discussed in #47:

(...) should also be quite easy with TaskLite's JSON export and Taskwarrior's JSON import. Might need a little rewriting with jq, but apart from that it should be pretty straight forward.

I'm willing to dedicate some time to this, with some help to get me started :-)

Potential Bug in listReady

I'm looking at the source code to better understand some things, and looking and listReady, the query's where clause is (

\where (ready_utc is null \
):

    \where (ready_utc is null \
    \or (ready_utc is not null and ready_utc < datetime('now'))) \
    \and closed_utc is null \

whereas the derived state of IsReady has the following (

IsReady -> "(awake_utc is null or awake_utc < datetime('now')) \
):

  IsReady     -> "(awake_utc is null or awake_utc < datetime('now')) \
                  \and ready_utc < datetime('now') \
                  \and closed_utc is null"

I think the derived option contains the appropriate query.
I can work on a PR that uses the IsReady Text as part of the listReady query if this is an actual bug.

`tasklite --help` doesn't format output like `tasklite help`

This happens on the HEAD of master, and on the latest release Version 0.3.0.0+ed428cf2.

tasklite --help
{{header}}

Usage: tasklite ([Basic Commands] | [Shortcuts to Add a Task] | [List Commands]
                | [Visualizations] | [I/O Commands] | [Advanced Commands] |
                [Unset Commands] | [Utils])
  {{examples}}

Available options:
  -h,--help                Show this help text

{{basic_sec}}
  add                      Add a new task
  log                      Log an already completed task
...

vs

tasklite help
TaskLite 0.3.0.0

Task-list manager powered by Haskell and SQLite

Usage: tasklite ([Basic Commands] | [Shortcuts to Add a Task] | [List Commands]
                | [Visualizations] | [I/O Commands] | [Advanced Commands] |
                [Unset Commands] | [Utils])

               Add an alias: `alias tl tasklite`
      Add a task with a tag: `tl add Buy milk +groceries`
     … or with the shortcut: `tl buy milk +groceries`
  List most important tasks: `tl` (same as `tl ready`)
                Complete it: `tl do <id>`

Available options:
  -h,--help                Show this help text

Basic Commands:
  add                      Add a new task
  log                      Log an already completed task
...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.