kalvium-worklog
v1.3.2
Published
Auto-submit your daily Kalvium worklog without opening the website
Maintainers
Readme
kalvium-worklog
Auto-submit your daily Kalvium worklog without opening the website.
Install
npm install -g kalvium-worklogQuick Start
# Full setup (login + discover position + schedule)
kalvium-worklog install
# Or step by step:
kalvium-worklog login # log in via browser (Google + 2FA)
kalvium-worklog discover # auto-discover your position ID
kalvium-worklog schedule 14:00 # daily auto-submit at 2 PMCommands
| Command | Description |
|---------|-------------|
| kalvium-worklog install | Full setup: login + discover + schedule |
| kalvium-worklog login | Log in to Kalvium (opens browser, waits for Google + 2FA) |
| kalvium-worklog discover | Auto-discover your internship position ID |
| kalvium-worklog submit [text] | Submit worklog (default: "Working on assigned task") |
| kalvium-worklog submit "built a feature" | Submit with custom text |
| kalvium-worklog submit --dry-run | Test without submitting |
| kalvium-worklog status | Check recent worklog entries |
| kalvium-worklog schedule 14:00 | Set up daily auto-submit at 2 PM |
| kalvium-worklog schedule --remove | Remove daily auto-submit |
| kalvium-worklog daily | Run daily submit (used by scheduler) |
| kalvium-worklog catchup | Check if today's worklog is missing and submit if needed |
Features
- Cross-platform: macOS (launchd), Windows (Task Scheduler), Linux (cron)
- Auto re-login: If the token expires, automatically opens browser, waits for login, and retries
- Token auto-refresh: Refresh token rotates on each use, lasts 6 days
- Auto-discovers position ID: Works for any user, no hardcoded IDs
- Weekend skipping: Auto-submit skips Saturdays and Sundays
- Network retry: Retries up to 5 times on network failure (covers laptop waking up, internet reconnecting)
- Catch-up on wake: If the scheduled time was missed (laptop asleep/offline), submits when the device wakes up
How It Works
One-time setup:
Browser login → capture refresh token → discover position ID
Daily auto-submit (scheduler):
Refresh token → PUT worklog API → done
If token expired → auto open browser → re-login → retry
If network fails → retry up to 5 times (1 min apart)
Catch-up (on login/wake, every 30 min):
Check if today's worklog is submitted → if not, submit itToken Lifecycle
- Access token: 3 days
- Refresh token: 6 days, rotates on each use
- As long as you submit at least once every 6 days, the token never expires
- If expired:
kalvium-worklog login(or it auto-triggers)
Files
~/.kalvium/
├── refresh_token.json # Current token (auto-rotates)
├── config.json # Position ID + API URL
├── daily_submit.js # Scheduler entry point
├── catchup_submit.js # Catch-up entry point
└── worklog.log # Log file
~/.kalvium_profile/ # Browser profile (saved login)Uninstall
kalvium-worklog schedule --remove
npm uninstall -g kalvium-worklog
rm -rf ~/.kalvium ~/.kalvium_profileRequirements
- Node.js 18+
- npm
License
MIT
