Introduction ============ Timewarrior is a time tracking application, which allows you to record your time spent on activities. 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 to 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: $ timew define week mon-fri $ timew define day start 8:30am $ timew define day end 1730 $ timew track yesterday Home Painting 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: $ timew define holidays eng-USA 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 can have their own metadata, for example you can make a tag valid for a given time range: $ timew define tag ProjectA end 2016-06-30 $ timew define 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 a slot: $ 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, logging, 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