timewarrior/doc/intro.txt
2016-04-21 21:12:12 -04:00

129 lines
3.7 KiB
Text

Introduction
============
Timewarrior is a time tracking application, which allows you to record your
time spent on activities. You may be tracking time for pure curiosity, or your
work may require it. At its simplest, you tell it to start and stop
tracking time:
$ timew start
...
$ timew stop
This will record a block of time as active, between the two timestamps that
were recorded when the 'start' and 'stop' commands were run. By using tags, you
can label the blocks of active time:
$ timew start Home Cleaning
...
$ timew stop
This tags the block of time with the two tags 'Home' and 'Cleaning'. The tags
allow you to identify how you spent that time, and is used by the reporting
system to summarize time. You can also record time retroactively. If you forgot
ito start recording this morning, you can do this:
$ timew start 8:30am Home Cleaning
Or if you forgot a whole activity:
$ timew track 8:00am - 8:30am Exercise
$ timew start 8:30am Home Cleaning
More sophisticated use is possible if you have defined your work week with:
define exclusions:
monday = <8:00:00 12:00:00-12:45:00 >17:30:00
tuesday = <8:00:00 12:00:00-12:45:00 >18:30:00
wednesday = <8:00 12:00-13:30 >17:30
thursday = <8:00 12:00-12:45 >17:30
friday = <8:00 12:00-12:45 >17:30
$ timew track yesterday Home Painting
Note that the second (':00') are optional. Once the work week is recorded,
vague terms like 'yesterday' can be resolved into actual start/stop timestamps.
If you define holidays, then it knows not to track time on those days:
import /path/to/holidays/holidays.en-US
Furthermore, Timewarrior can fill in gaps. For example:
$ timew track last tuesday :fill Research
There is a :backfill and :fill hint that tells Timewarrior how to fill the time,
for example:
$ timew track yesetrday 8am - 10am Meeting
$ timew track yesterday 3pm - 17:00:00 Training
$ timew track yesterday 2pm ProjectA :backfill
$ timew track yesterday ProjectB :fill
And the 'ProjectB' tagged interval will range from 2pm - 3pm.
Tags may have their own metadata, for example you can make a tag valid for a
given time range:
$ timew config tag ProjectA end 2016-06-30
$ timew config tag ProjectA budget '400 hours total'
This is managed by a rules system that can impose constraints.
To see the currently active interval:
| $ timew
| (TBD)
Reporting tracked time can be done with a simple report:
| $ timew report today
| $ timew report week Home
| $ timew report summary last week
Some early report mockups:
| http://picpaste.com/week-zWdSp3UI.png
| http://picpaste.com/day-kAqffFmZ.png
Or the data can be exported in JSON:
$ timew export last month > February.json
Some or all of the reports are written using an extension mechanism, and
will be examples of how to write other reports. Report extensions can be shared
and enhanced by the community. It should be possible to implement any kind of
report using the extension mechanism.
There is an 'undo' command for reversing changes, and a 'clear' command to
free up slots:
$ timew clear yesterday
$ timew clear 8am - 11am
You can start, stop and resume tracking:
$ timew start Training
...
$ timew stop
...
$ timew continue
There is also a rules system that can impose constraints on the data, such as
automatically shutting off tracking after 40 hours is tracked per week, warnings
about overtime, and more.
There is built-in configuration support and assorted tools to help you enact
policy.
The data will be stored as plain text, and there will a way to merge data from
multiple sources.
--- Raw Notes ---
- add more report mockups
- demo 'config' command
- demo 'tags' command
- demo 'gaps' command
- demo interval adjustment, corrections