Releases: jonathanabennett/projectwarrior
0.3.2 Supporting Documents
Version 0.3.2 Focuses mostly on adding support for two new commands
project new
: This command allows you to create tasks in taskwarrior that use the data from the selected project. Imagine a project called "Make sales plan" which had the slug "sales-plan", an ID# of 3, and the inherited tags "@work", "planning" and "@BOSS". Running the command project id:3 new Make slide deck for pitch meeting due:friday
would run the following command in taskwarrior: task add project:sales-plan +@work +planning +@boss Make slide deck for pitch meeting due:friday
project open
: A new slot has been added to projects called filepath
. Filepath is location of a file where you are storing your reference material for this project. Personally, I use emacs and org-roam for all my notes, so in my case this points to a file in my org-roam folder (~/nextcloud/org/roam/project-document.org). When you run project <filter> open
, it will check whether or not a file has been saved for this project or not. If one has, it will run the command $EDITOR filepath
where $EDITOR is the environmental variable on your command line and filepath is what is stored in that project's filepath slot.
The filepath can be set by file:path/to/file
in the project new
or project mod
commands.
Additionally, this release sees the birth of the project's wiki on GitHub. Stubs have been created for most pages and they will be expanded and added to over the next few weeks, including GIFs of commands being run.
v0.3.1 Extended Options
This release adds the ability to configure projectwarrior using the file projectrc.lisp
. This file can be located in your home directory or inside ~/.config/projects. The first time you run projectwarrior, it will create a config file for you at ~/.projectrc.lisp
.
This is a proper Lisp file and can run arbitrary Lisp commands. The file contains a brief explanation of the Lisp needed for most basic configurations. The most likely change that a user will need to make is to delete the nil
on line 37 and replace it with t
to enable taskwarrior support.
The report views used to list projects are also created and defined in the configuration file. Two reports are provided, one which lists out the project's details and one which lists the projects with a count of how many tasks are associated with each project in taskwarrior. With large numbers of projects, this can take a few seconds to run (as it is effectively running taskwarrior once for every project). A better version of this may be provided in the future if I can figure one out.
0.3.2 will add the ability to create files associated with projects for tracking reference material related to the project. It will also allow user-customizable reviews. If anyone is using this, please submit any issues or pull requests to help improve it!
Projectwarrior
This is a rewrite of how this program thinks about projects. See the README for detailed information, but in short projectwarrior now stores projects in the same manner that taskwarrior stores tasks: as json objects which map to a slots in a Project class.
This allows you to treat your projects the same way that taskwarrior allows you to treat your tasks.
Projects have the following metadata associated with them (in addition to the Description).
- Slug: A string suitable for use as a project in taskwarrior.
- Area: A string with no whitespace which describes the Area of Focus for a project.
- Tags: A series of tags describing a project
- Inherited Tags: A series of tags which every project that projectwarrior creates for you "under" this project should have within taskwarrior.
- ID and UUID: Used to identify projects for commands.
v0.3.0-alpha
Initial release adding full project management and converting to the new name projectwarrior
.
ALPHA DISCLAIMER: This version is an alpha release. Several key features are still under revision and it may break. Because of the name change, you can safely compile this version and use it along side the older version safely if you want.
Major New Feature: Projects
The biggest addition this time around is the project
class. Project objects allow you to capture metadata about projects beyond the simple string captured by taskwarrior. Projects are stored as json objects in files named active.json
, completed.json
, and deleted.json
. Additional fields will be added later, but for now the project class has the following slots:
- Description: This is exactly the same as the description field in Taskwarrior. A string which contains description of the project. Spaces and punctuation are allowed, unlike the project field in taskwarrior. This field is meant to describe the project to you clearly and succinctly.
- Slug: This is a string with no whitespace which goes into the project field in taskwarrior. It follows the same rules for taskwarrior. Any slug strings which are incompatible with taskwarrior represent bugs.
- Area of Focus: This is a string with no whitespace, similar to a project in taskwarrior, but represents the over-arching category to which this project belongs. For example, the project "Lose 20 pounds by summer break" would likely belong to the
health
AOF while the project "Prepare documents for annual performance review" likely belongs towork
. For a deeper treatment of Areas of Focus, review David Allen's GTD. - Tags: Tags are a list of strings with no whitespace which are used to provide additional, contextual information about projects. This could include contexts in which the project need to be done, priority levels, or any other information the user may wish to attach to a project which doesn't fit into the Description, the Slug, or the Area of Focus.
- Inherited Tags: These are tags which are automatically applied to any tasks created by
projectwarrior
. For example, almost every task under a project like "Clean up garage" should have the tag @home because you probably cannot clean up your garage from your desk at the office. Inherited tags can be removed when creating a specific task by simply typing-<tag>
, which tells projectwarrior to remove it from this task (In the garage example, if the task is "Buy new shelf at Lowes").
The core loop of using projectwarrior
is adding, viewing, and completing or deleting these projects. The interface will mirror that of taskwarrior
as much as is sensible.
project
will print a list of your active projectsproject add <project information>
will add a new active project.project complete x
will complete project number x.project mod x <project information>
will modify project x to reflect the new information.project delete x
will delete project x.project review
will review all of your projects to see if they are still active or not and to see if any new tasks need to be added under that project.project weekly
will guide you through a GTD-style weekly review using an adapted checklist.
New Name
When I first named this gtd-review
, it was centered more on guiding you through a weekly review. That's why I chose that name. But now, it has evolved to have a greater focus on managing your projects (as opposed to managing your tasks). Therefore I have given it a new name, projectwarrior
, in line with names like bugwarrior
and timewarrior
.
Guided Weekly Review
This release is the feature that inspired me to create this program in the first place. It is a guided weekly review.
The principle is very simple, it presents a series of prompts to the user one by one that are intended to trigger tasks which need to be captured. It follows the flow seen [https://gettingthingsdone.com/wp-content/uploads/2014/10/Weekly_Review_Checklist.pdf](on the GTD website) with specific prompts adapted from a version of [https://gettingthingsdone.com/wp-content/uploads/2014/10/Mind_Sweep_Trigger_List.pdf](this trigger list) that I can sadly no longer locate.
It allows you to enter tasks from the weekly review exactly as if you were entering them in taskwarrior. Just enter the task and its data. So to add "Buy milk +@errands priority:H" during the review, just entered that string, which will be passed as is directly to the task add
command.
If you installed this following the previous instructions, I recommend you delete the previous binary manually. The new make build
followed by make install
will put the file in the .bin folder on your home directory, but if you have installed it elsewhere, it could lead to confusing behavior.
BUGFIX for projects not syncing
Merge pull request #7 from jonathanabennett/development 0.1.0 Release
v0.1.0 Command Line Interface
This release adds the following:
make build
replacesmake install
because it is more semantically correct.- Presentation of projects and their associated tasks cleaned up by separating them out and by using exact matching in the taskwarrior query.
- CLI added which allows the user to add projects to the projects.txt file from the command line. This does not add anything to taskwarrior, but said project will come up during the next project review.
- Updated build instructions in README to make them more clear.
GTD-Review Tool
This release adds a gtd-review tool (compiled using make install
). Running this program will read your projects.txt list and present each project to you one a time for you to review. You can also make hook
which will make and install the hook in your ~/.task/hooks directory.
Taskwarrior Hook
This is part one of the GTD tool I am trying to build. It is an on-exit hook that maintains a list of projects in ~/.cl-gtd/projects.txt. This list of projects adds projects from tasks in taskwarrior but does not delete them. The purpose of this is maintaining a list of projects which you're currently working on to use in your Weekly Review.
When conducting your weekly review, check that each project in the list is still an active project. If it is, ensure there is a next action for it in taskwarrior. If it isn't, delete that line from the projects.txt file. The next release will automate some of that process.
Installation
Clone this release into your local-projects directory.
Open Steel Bank Common Lisp sbcl
(Not tested with any other Lisps, but it should work as long as you have Quicklisp installed).
Run (asdf:make "gtd-review")
Move the on-exit-projects-list executable into your ~/.tasks/hooks
folder.
Execute mkdir ~/.cl-gtd
and touch ~/.cl-gtd/projects.txt
.
WARNING: This is still very early software and therefore is not to be considered bug-free. As written, it performs no write operations with taskwarrior and so therefore should be safe but use at your own risk!