Time tracking in the command line. Fast, simple and minimalistic.
npm install -g crytime
Command | Description | Alias * |
---|---|---|
crytime |
Show current week | list |
crytime in |
Start working (log in) | in |
crytime out |
Start working (log out) | out |
crytime pop |
Delete last entry | pop |
crytime sync |
Enable / Disable Sync |
* Alias is optional
To write less and log with less effort, add some aliases
to your shell config file (e.g. ~/.bashrc
or ~/.zshrc
)
and add the following lines:
# Time tracking with crytime
alias list='crytime list' # show week (default: current week)
alias in='crytime in' # log in
alias out='crytime out' # log out
alias pop='crytime pop' # delete entry (default: last entry)
# log in (start working)
crytime in
# log out (stop working)
crytime out
# show current week
crytime list
# show previous week
crytime list prev
# log in today at 8am
crytime in 08:00
# log out today at 5pm
crytime out 17:00
# log in on 2020-01-01 at 8am
crytime in 08:00 --day 11.11.2024
# delete last entry
crytime pop
# delete last 3 entries
crytime pop 3
# enable sync
crytime sync
# disable sync
crytime sync off
# show sync status
crytime sync status
The commands in
, out
, list
, pop
and sync status
also suport JSON output
# show current week in JSON
crytime list --json
The returned JSON format always follows the same structure:
// JSON format of a week
{
// always present
"status": "ok", // `"error"` or `"ok"`
"messages": ["Week logged"], // array of messages
// optional
// updated logged day, as timestampslo.
"data": {
"28693320": { // day stamp
"470": "in", // minute stamp of the entry (in or out, minutes from midnight)
"700": "out",
"840": "in",
"1109": "out"
},
// ...
}
}
Timestamps explained
-
Day timestamp
: Unix timestamp of the week in minutes, to get a real Unix timestamp, multiply with 60 * 1000 -
Minute stamp
: Minutes from midnight (the day stamp), to get a real Unix timestamp, add the day stamp and multiply with 60 * 1000
- [ ] Make it possible to use day, day and month or full day for the day attribute
- [ ] Add support for "yesterday" for day attribute
- [ ] Add support for "monday", "tuesday", etc. for day attribute (takes the last monday, tuesday, etc.)
- [ ] Add support for logging with positionals for day
crytime in 08:00 2020-01-01
- [ ] Add undo command
- [ ] One and two digits should parse as hours not minutes
- [ ] Support ranges
crytime range 08:00-17:00
orcrytime range 8-17 2020-01-01
- [ ] Add support for fallback dates (only supply the day -> use current month and year)
crytime in 08:00 1
- [ ] If the last entry is open and it's today, ad the time to the last entry for the total of the day