Skip to content
| Marketplace
Sign in
Visual Studio Code>Other>CronTallyNew to Visual Studio Code? Get it now.
CronTally

CronTally

Jinryx

|
2 installs
| (0) | Free
Local-first time auditor, background file logger, and interactive invoice engine.
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

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

  1. 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).
  2. Add a client via the status bar quick-pick, sidebar Create first client, or Clients in the ledger.
  3. Click Start CronTally in the status bar (or use the sidebar timer with client + project tag).
  4. Work as usual. CronTally records a plain-English summary when you stop.
  5. 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

  1. Purchase at jinryx.com/crontally.
  2. 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

Registry URL Used by
VS Code Marketplace jinryx.crontally VS Code
Open VSX jinryx/crontally Cursor (default), VSCodium, Gitpod

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)

  1. Create an account at open-vsx.org.
  2. Sign the publisher agreement.
  3. Create an access token under your profile.
  4. Claim the namespace (first publish only):
npx ovsx create-namespace jinryx -p YOUR_OVSX_TOKEN

Ship an update (both marketplaces)

  1. Confirm jinryx.com/crontally and the legal pages match the build you are shipping.
  2. Bump version in package.json.
  3. 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
  1. CI: add GitHub repo secrets VSCE_PAT and OVSX_PAT (Settings → Secrets → Actions), then run the Publish extension workflow or push a v* tag.

  2. 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

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft