CronTally
A local-first time tracking, session logging, and billing extension for VS Code and Cursor.
CronTally runs inside your editor. Start a timer from the status bar, log work against clients, and review sessions in a unified ledger. CronTally Pro unlocks native invoicing, PDF/HTML export, and unlimited clients.
Product site: jinryx.com/crontally
Features
Free tier
- Status-bar timer: Track time with client and project tags from your workspace.
- Activity capture: Logs file activity while the timer runs.
- Session ledger: View, edit, and delete logged time entries.
- Client management: Up to 2 clients on the free plan.
- Metrics preview: Total tracked time, workspace split, and a 14-day trend sparkline.
- Invoice preview: Build a watermarked print-ready invoice from real sessions (export and finalize require Pro).
CronTally Pro
- Unlimited clients
- Native invoicing: Export PDF/HTML, finalize invoices, and mark sessions billed.
- Invoice ledger: Track paid vs. pending status and invoice numbering per client.
- Work log export: Markdown and CSV export from the session ledger.
- Full billing metrics: Revenue ready to invoice, client time share, git branch breakdown, and effective rate (EHR).
- Ledger grouping: Group sessions by client or project (day grouping is free).
- Brand customization: Logo, company details, and optional watermark removal on invoices.
- Block billing & carryover: Contractor-style block billing with banked hours.
Getting started
- Install CronTally from your editor's extension marketplace (publisher: jinryx), then reload if prompted.
- VS Code: VS Marketplace — jinryx.crontally
- Cursor: search CronTally in Extensions (
Ctrl+Shift+X). Cursor uses Open VSX by default — the extension must be published there to appear in search. If you don't see it yet, use Extensions: Switch Marketplace (Cursor 1.1.3+) to use the VS Marketplace temporarily, or install from a VSIX (see Releases).
- Add a client via the status bar quick-pick, sidebar Create first client, or Clients in the ledger.
- Click Start CronTally in the status bar (or use the sidebar timer with client + project tag).
- Work as usual. CronTally records a plain-English summary when you stop.
- Run CronTally: Open Ledger for sessions, invoicing, and settings.
Shortcut: Ctrl+Shift+9 (Cmd+Shift+9 on macOS) toggles start/stop while the editor is focused.
| Surface |
Best for |
| Status bar |
Fastest start/stop while coding |
| Activity bar sidebar |
Client, project tag, and timer at a glance |
| Ledger panel |
Sessions, clients, invoices, settings |
Activate CronTally Pro
- Purchase at jinryx.com/crontally.
- Open the ledger, go to Settings (or the invoice upgrade panel), paste your license key, and click Activate.
Or set tally.license.key in your user settings.
Privacy (CronTally)
CronTally stores session history, clients, and invoices locally in your editor global storage (SQLite tally.db). Core tracking does not require a jinryx account.
- Updates replace extension code only. Your database and logo assets stay in global storage.
- Pro licenses may validate against Lemon Squeezy when activating or re-checking a key. Results can be cached locally for offline use.
- Before uninstall: back up
tally.db if you want to keep your history. Uninstalling may remove the extension global storage folder.
Default database path (Linux, Cursor):
~/.config/Cursor/User/globalStorage/jinryx.crontally/tally.db
CronTally migrates data from older dev install IDs (local.crontally, local.tally) on first run when the database is empty. It does not overwrite an existing database.
Full policy: Privacy Policy | Terms | Refunds
Work logs and invoices
When you stop a timer, CronTally adds a plain-English work summary to the session ledger. Technical audit detail stays in the database.
On invoices, Include work log on invoice in the style toolbar:
- Off (default): Line items use a brief service label from the project tag.
- On: Line items include the plain-English summary for each session.
Development
Build and test locally:
npm install
npm run compile
npm test
npm run install:cursor # installs a VSIX into Cursor (recommended)
Reload Cursor after installing. Use F5 → Run CronTally Extension for extension development.
CronTally disappeared after install?
If the extension folder exists under ~/.cursor/extensions/jinryx.crontally-* but CronTally no longer loads, Cursor has likely marked it obsolete in ~/.cursor/extensions/.obsolete (common after uninstalling from the Extensions UI).
Fix:
npm run install:cursor
Then Developer: Reload Window. Confirm with:
cursor --list-extensions --show-versions | grep -i crontally
You should see jinryx.crontally@<version>.
Ledger / Open Ledger errors after install: older VSIX builds shipped without @vscode/sqlite3 (the local database). Version 1.0.2+ fixes packaging. Reinstall with npm run install:cursor or install the latest VSIX from the Marketplace, then reload.
Releases
Why Cursor can't find it: Cursor switched to Open VSX in 2025. CronTally was only on the VS Marketplace, so it does not show up in Cursor's extension search until it is also published to Open VSX.
One-time Open VSX setup (publisher)
- Create an account at open-vsx.org.
- Sign the publisher agreement.
- Create an access token under your profile.
- Claim the namespace (first publish only):
npx ovsx create-namespace jinryx -p YOUR_OVSX_TOKEN
Ship an update (both marketplaces)
- Confirm jinryx.com/crontally and the legal pages match the build you are shipping.
- Bump
version in package.json.
- Publish locally (tokens live in
.env — copy from .env.example, never commit):
cp .env.example .env # first time only; paste VSCE_PAT and OVSX_PAT
npm run publish:all # or publish:marketplace / publish:openvsx
CI: add GitHub repo secrets VSCE_PAT and OVSX_PAT (Settings → Secrets → Actions), then run the Publish extension workflow or push a v* tag.
In Cursor, search CronTally → Install → Developer: Reload Window.
For local dev installs without the marketplace: npm run install:cursor
License & Pro
Proprietary. Copyright (c) 2026 jinryx. All rights reserved.
This repository is public for transparency. Viewing source does not grant permission to copy, redistribute, or sell the software. See LICENSE.
CronTally Pro is sold separately via jinryx.com/crontally. Free-tier features are available without a license key.
Support: support@jinryx.com