A personal time tracker
CLI version of Canrylog, another time tracking system.
Emacs version:
My take on time tracking.
Currently in experimental stage, developed with the assumption that I'm the only user.
- Install the package
- By default, the tracking file will be put under ~/.canrylog. To change this, modify the path.repo configuration option.
- canrylog switch to start tracking time
- canrylog switch Downtime to switch to the task called “Downtime”, which by convention means clocked out.
- canrylog visit to edit the tracking file with your editor. Hand editing is error prone: make sure events are sorted correctly and the timestamps are in the right format. Each event is (two spaces between).
- Using Bun as the package manager and bundler. It's not that Bun has great DX compared to, say, Cargo, it's just that Node and TypeScript's DX is infuriating. Let me import with the normal syntax in your repl! Why does the TS language server not work without a project wide config file?! Please use hard links or symlinks to save space usage!
- Package distributed to npm
- argument handling done with commander
- Prompts with enquirer
- Manages configuration with conf
``sh`
npm install -g canrylog
- [X] canrylog about: print an about message for Canrylogcanrylog help [command]
- [X] : print help text, optionally for [command]
- [X] canrylog config: see all configuration keys. TODO: make this interactivecanrylog config
- [X] : read value of configuration canrylog config
- [X] : set configuration to
- [X] canrylog switch: select a task and switch to itcanrylog switch
- [X] : switch to at the current momentcanrylog switch
- [X] : switch to at the specified moment. should be an ISO 8601 timstamp like 2021-12-30T01:02:03+0900; the format is specifically whatever supported by Luxon's fromISO method.canrylog switch
- [X] : switch to asking for the momentcanrylog clock-out
- [X] : Same as switching to the “Downtime” task, representing the state of not doing anything of note.
- [X] canrylog status: print current task and statuscanrylog task
- [X] : print information about canrylog moment
- [X] : print information about
Git-based tracking file synchonization: removed in favor of just managing it in Emacs because the old implementation was fragile.
Implemented for debugging but might be useful in the future:
- [X] canrylog list-tasks: print all available taskscanrylog visit
- [X] : edit the tracking file with $EDITORcanrylog rename-task
- [ ] : rename to
Incomplete.
- logtime: plain text, very similar in concept
- timeclock.el: C-h f timeclock-in RETwakatime-mode
- Org mode
- WakaTime, on MELPAactivity-watch-mode` on MELPA
- ActivityWatch,
- harvestime: plain text as well, centered around vim